Pluxee Brasil icon

Pluxee Brasil private data API: e-cards and wallet

PLUXEE BENEFÍCIOS BRASIL S.A · Payments 4.7 ★

Pluxee Brasil is the employee-benefits wallet from PLUXEE BENEFÍCIOS BRASIL S.A, the Brazilian arm of Pluxee (the 2024 rebrand of Sodexo Benefits & Rewards), for workers who spend employer-issued PAT meal and food vouchers plus culture, gift, toy, fuel and incentive cards. After the same login used on pluxee.com.br, the home screens show saldo and extrato for every card from a single card number, a geolocated map of accepting merchants, exclusive promotions, PIN recover/change, and block or unblock after loss, theft or a newly issued plastic. Holders of Pluxee Refeição (Vale Refeição), Pluxee Alimentação (Vale Alimentação Sodexo), Pluxee Cultura, Pluxee Gift, Pluxee Premium, Pluxee Gift Brinquedo, Pluxee Combustível and Pluxee Alimentação Natal all use this one app; virtual e-cards, a wallet PIN and NFC tap-to-pay sit beside the plastic. Published for Brazil, it holds a 4.71 rating across 1,675,678 Google Play ratings and 10 million-plus installs, and it competes for the same PAT wallets as Alelo, VR Benefícios, Ticket (Edenred Brasil), Caju and Flash Benefícios.

Virtual card numbers tagged vcnId sit next to PAN tails last4Digits, bin, expiryDate and an Active / Suspended / Deleted status, each bound to a plastic uniqueCardId and a spend cap maxNumberOfPayments. Status writes send TOKEN_ACTIVATED, TOKEN_SUSPENDED or TOKEN_DELETED and come back with newVcnStatus; PIN reveal returns a payLoad after a walletCertificate proof; wallet-code reset keys off the CIAM subject ciamID.

Google Pay MDES enrolment posts nameOnCard, deviceWalletId and uniqueConsumerId and reads back enrollmentData plus an opc; 3-D Secure outcomes carry callerAuthenticationId, respondingWalletId and authenticationDate. Payroll, expense and MDM tools can sync live virtual cards and token state for PAT meal and food benefits, and openData Studio turns that ledger into callable open data.

Screenshots

  • Pluxee Brasil screenshot 1
  • Pluxee Brasil screenshot 2
  • Pluxee Brasil screenshot 3
  • Pluxee Brasil screenshot 4
  • Pluxee Brasil screenshot 5

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • List virtual e-cards

    GET /v1/virtual-cards openfinance

    Returns every virtual card number issued against a uniqueCardId — vcnId, PAN bin/last4Digits, expiry, payment cap and Active/Suspended/Deleted status — for the e-card list screen.

    Auth: x-Issuer-Id issuer header identifies the benefit issuer; uniqueCardId query selects the plastic the VCNs were issued against.

    • vcnId
    • providerId
    • name
    • bin
    • last4Digits
    • expiryDate
    • maxNumberOfPayments
    • maxValidityDate
    • status
    • creationDate
    • card.bin
    • card.last4Digits
    GET /v1/virtual-cards?uniqueCardId=CARD-88100214 HTTP/1.1
    x-Issuer-Id: <issuer-id>
    [
      {
        "vcnId": "vcn-7f2a9c11",
        "providerId": "benefit-issuer-br",
        "name": "Almoço",
        "payload": "",
        "bin": "516292",
        "last4Digits": "4419",
        "expiryDate": "2027-08",
        "maxNumberOfPayments": 12,
        "maxValidityDate": "2027-08-31",
        "status": "Active",
        "creationDate": "2026-03-12T11:04:00Z",
        "card": {
          "bin": "516292",
          "last4Digits": "4419",
          "expiryDate": "2027-08",
          "creationDate": "2026-03-12T11:04:00Z"
        }
      }
    ]
  • Get e-card details

    POST /v1/virtual-cards/{vcnId} openfinance

    Loads one VCN's full record (bin, last4Digits, expiryDate, status, nested card) after the wallet proves possession with walletCertificate — the e-card detail screen.

    Auth: x-Issuer-Id issuer header; vcnId path; body carries walletCertificate.

    • vcnId
    • providerId
    • name
    • payload
    • bin
    • last4Digits
    • expiryDate
    • maxNumberOfPayments
    • status
    • walletCertificate
    • clipboardCopyAllowed
    POST /v1/virtual-cards/vcn-7f2a9c11 HTTP/1.1
    x-Issuer-Id: <issuer-id>
    Content-Type: application/json
    
    {"walletCertificate": "<device-wallet-cert>", "clipboardCopyAllowed": false}
    {
      "vcnId": "vcn-7f2a9c11",
      "providerId": "benefit-issuer-br",
      "name": "Almoço",
      "payload": "",
      "bin": "516292",
      "last4Digits": "4419",
      "expiryDate": "2027-08",
      "maxNumberOfPayments": 12,
      "maxValidityDate": "2027-08-31",
      "status": "Active",
      "creationDate": "2026-03-12T11:04:00Z",
      "card": {
        "bin": "516292",
        "last4Digits": "4419",
        "expiryDate": "2027-08",
        "creationDate": "2026-03-12T11:04:00Z"
      }
    }
  • Create virtual e-card

    POST /v1/virtual-cards openfinance

    Issues a new VCN against UniqueCardId with a display Name, payment cap and ValidityDuration, returning the minted vcnId, last4Digits and Active status.

    Auth: x-Issuer-Id issuer header.

    • UniqueCardId
    • Name
    • MaxNumberOfPayments
    • ValidityDuration
    • WalletCertificate
    • ClipboardCopyAllowed
    • vcnId
    • last4Digits
    • status
    POST /v1/virtual-cards HTTP/1.1
    x-Issuer-Id: <issuer-id>
    Content-Type: application/json
    
    {"UniqueCardId": "CARD-88100214", "Name": "Almoço", "MaxNumberOfPayments": 12, "ValidityDuration": "P6M", "WalletCertificate": "<device-wallet-cert>", "ClipboardCopyAllowed": false}
    {
      "vcnId": "vcn-7f2a9c11",
      "providerId": "benefit-issuer-br",
      "name": "Almoço",
      "bin": "516292",
      "last4Digits": "4419",
      "expiryDate": "2027-08",
      "maxNumberOfPayments": 12,
      "maxValidityDate": "2027-08-31",
      "status": "Active",
      "creationDate": "2026-03-12T11:04:00Z"
    }
  • Update e-card status

    POST /v1/virtual-cards/{vcnId}/status openfinance

    Activates, freezes or deletes a VCN via TOKEN_ACTIVATED / TOKEN_SUSPENDED / TOKEN_DELETED and returns newVcnStatus (Active, Suspended or Deleted).

    Auth: x-Issuer-Id issuer header; vcnId path.

    • action
    • reason
    • comments
    • customerServiceUser.id
    • customerServiceUser.name
    • customerServiceUser.organization
    • newVcnStatus
    POST /v1/virtual-cards/vcn-7f2a9c11/status HTTP/1.1
    x-Issuer-Id: <issuer-id>
    Content-Type: application/json
    
    {"action": "TOKEN_SUSPENDED", "reason": "lost_device", "comments": "phone stolen", "customerServiceUser": {"id": "cs-1044", "name": "Ana Costa", "organization": "Pluxee Brasil"}}
    {
      "newVcnStatus": "Suspended"
    }
  • Display card PIN

    POST /v1/cards/{cardId}/pin openfinance

    Reveals the card PIN (and optional static cryptogram) as payLoad after the wallet certificate proof — the in-app senha / PIN screen.

    Auth: x-Issuer-Id issuer header; cardId path; body carries walletCertificate.

    • cardId
    • walletCertificate
    • type
    • clipboardCopyAllowed
    • payLoad
    POST /v1/cards/CARD-88100214/pin HTTP/1.1
    x-Issuer-Id: <issuer-id>
    Content-Type: application/json
    
    {"walletCertificate": "<device-wallet-cert>", "type": "CARD_DETAILS_AND_STATIC_CRYPTOGRAM", "clipboardCopyAllowed": false}
    {
      "payLoad": "<ciphered-pin-payload>"
    }
  • Reset wallet code

    POST /v1/wallets/{wallet_id}/access-code openfinance

    Resets the on-device wallet code for wallet_id, keyed by the CIAM subject ciamID, and returns a boolean result.

    Auth: x-Issuer-Id issuer header; wallet_id path.

    • wallet_id
    • ciamID
    • result
    POST /v1/wallets/wlt-44c1/access-code HTTP/1.1
    x-Issuer-Id: <issuer-id>
    Content-Type: application/json
    
    {"ciamID": "ciam-9b0e12f4"}
    {
      "result": true
    }
  • Prepare digital-card enrolment

    POST /v1/cards/{id}/wallet-enrolment openfinance

    Starts digital-wallet enrolment for a card id, posting nameOnCard, deviceWalletId, uniqueConsumerId and lifetime, and returns enrollmentData for the wallet SDK.

    Auth: x-Issuer-Id issuer header plus Country header (BRA); id path.

    • nameOnCard
    • deviceWalletId
    • uniqueConsumerId
    • lifetime
    • enrollmentData
    POST /v1/cards/CARD-88100214/wallet-enrolment HTTP/1.1
    x-Issuer-Id: <issuer-id>
    Country: BRA
    Content-Type: application/json
    
    {"nameOnCard": "MARIA SILVA", "deviceWalletId": "dwid-88a1", "uniqueConsumerId": "ucid-12ab", "lifetime": 1440}
    {
      "enrollmentData": "<opaque-enrolment-blob>"
    }
  • Start in-app token provisioning

    POST /v1/cards/{id}/tokenization/session openfinance

    Starts the issuer's in-app token provisioning for card id and returns auth plus cipheredCardData for the payment SDK.

    Auth: x-Issuer-Id issuer header; id path.

    • id
    • auth
    • cipheredCardData
    POST /v1/cards/CARD-88100214/tokenization/session HTTP/1.1
    x-Issuer-Id: <issuer-id>
    {
      "auth": "<provisioning-auth>",
      "cipheredCardData": "<ciphered-card-blob>"
    }
  • Start Google Pay MDES provisioning

    POST /v1/cards/{id}/tokenization/push openfinance

    Starts Mastercard MDES push-provisioning into Google Pay for card id, posting PanSource and returning opc for the TapAndPay SDK.

    Auth: x-Issuer-Id issuer header; id path.

    • id
    • PanSource
    • opc
    POST /v1/cards/CARD-88100214/tokenization/push HTTP/1.1
    x-Issuer-Id: <issuer-id>
    Content-Type: application/json
    
    {"PanSource": "CARD_ADDED_MANUALLY"}
    {
      "opc": "<opaque-payment-card>"
    }
  • Push 3-D Secure authentication outcome

    POST /v1/authentications/outcome openfinance

    Posts the wallet's 3-D Secure / SCA decision (result, reason, authenticationMethodTypes, respondingWalletId, authenticationDate) back to the issuer after the confirm-transaction screen.

    Auth: x-Issuer-Id issuer header.

    • id
    • callerAuthenticationId
    • context
    • result
    • reason
    • data
    • proof
    • authenticationMethodTypes
    • respondingWalletId
    • authenticationDate
    • riskInfo
    POST /v1/authentications/outcome HTTP/1.1
    x-Issuer-Id: <issuer-id>
    Content-Type: application/json
    
    {"id": "sca-10044", "callerAuthenticationId": "3ds-88a1", "context": "PAYMENT", "result": "AUTHENTICATED", "reason": "BIOMETRIC", "data": "", "proof": "", "authenticationMethodTypes": "BIOMETRIC", "respondingWalletId": 4419, "authenticationDate": "2026-10-16T14:02:11Z", "riskInfo": ""}
    {}

Data categories

  • e-cards
  • virtual cards
  • card PAN
  • tokenization
  • 3-D Secure
  • wallet PIN

Where teams use this data

  • PAT card inventory for payroll

    HR and benefits platforms pull the e-card list by uniqueCardId to see every live VCN — vcnId, last4Digits, expiryDate, maxNumberOfPayments and Active/Suspended/Deleted — without opening the employee app.

  • Expense tools on virtual PAN tails

    Corporate-card expense products match receipts to bin and last4Digits, and honour maxNumberOfPayments and maxValidityDate so a single-use lunch VCN cannot be reused after its cap.

  • Lost-device freeze

    MDM or a help-desk bot posts TOKEN_SUSPENDED with a reason and customerServiceUser, then reads newVcnStatus, so a stolen phone cannot keep spending the meal VCN.

  • SCA outcome archive

    Risk engines store callerAuthenticationId, respondingWalletId, authenticationMethodTypes and authenticationDate from each 3-D Secure outcome for PAT-card dispute files.

Frequently asked questions

What e-card fields does Pluxee Brasil expose?

Each virtual card returns vcnId, providerId, name, bin, last4Digits, expiryDate, maxNumberOfPayments, maxValidityDate, status (Active, Suspended or Deleted) and a nested card with the same PAN tails. List calls are keyed by uniqueCardId.

How is a virtual card frozen or deleted?

A status write sends action TOKEN_ACTIVATED, TOKEN_SUSPENDED or TOKEN_DELETED with reason, comments and an optional customerServiceUser (id, name, organization). The response is newVcnStatus.

How does PIN reveal work?

The PIN call takes cardId plus a walletCertificate proof and type CARD_DETAILS_AND_STATIC_CRYPTOGRAM, and returns payLoad. Wallet-code reset is a separate call keyed by wallet_id and ciamID.

What tokenization flows sit next to the e-cards?

Digital-card enrolment posts nameOnCard, deviceWalletId, uniqueConsumerId and lifetime and returns enrollmentData. In-app token provisioning returns auth and cipheredCardData; Google Pay MDES provisioning posts PanSource and returns opc. 3-D Secure outcomes post result, reason and respondingWalletId back to the issuer's authentication endpoint.

Apps similar to Pluxee Brasil

  • Alelo — Alelo is the other large Brazilian PAT issuer: meal, food, culture and transport cards with their own saldo/extrato app, competing with Pluxee for the same employer voucher budgets.
  • VR Benefícios — VR Benefícios issues Vale-Refeição and Vale-Alimentação cards widely accepted in Brazil and runs a consumer app for balance, statements and merchant search.
  • Ticket (Edenred Brasil) — Ticket is Edenred's Brazilian meal-and-food voucher brand, a direct PAT competitor whose app covers card balance, PIN and accepting merchants.
  • Caju — Caju is a newer Brazilian benefits wallet that puts meal, food, health and home stipends on one prepaid card with category-level balances.
  • Flash Benefícios — Flash Benefícios is a flexible-benefits card for Brazilian employers, with app-side balance by category rather than separate Pluxee-style product plastics.
  • iFood Benefícios — iFood Benefícios puts PAT meal credit on an iFood-spendable balance, overlapping Pluxee Refeição at restaurants that already take iFood.

Topics

  • Pluxee Brasil API
  • Pluxee e-card vcnId
  • Vale Refeição last4Digits
  • PAT meal voucher Brazil
  • Pluxee wallet PIN
  • Pluxee Google Pay MDES
  • Pluxee 3-D Secure SCA

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote