Pluxee India: prev Sodexo-Zeta icon

Pluxee India SuperCard Data API

Pluxee India Pvt Ltd · Payments 3.8 ★

Pluxee India: prev Sodexo-Zeta is the employee-benefits wallet from Pluxee India Pvt Ltd and the successor to the Zeta SuperCard app. Employees sign in with their mobile number to manage employer-issued meal, gift, communication, rewards, cash and expense-reimbursement purses. The wallet brings together SuperCard balance checks, RuPay card details, PIN and CVV views, card blocking and unblocking, BharatQR payments, tap-and-pay at trusted merchants, and Optima multi-benefit contracts. Meal-card holders can spend at accredited canteens and grocery outlets, hide unused payment instruments and open RBL-linked account details from the same session. Published for India, it has a 3.75 Google Play rating from 222,366 ratings and serves the employer meal-card market alongside Edenred Ticket Restaurant India.

Meal-purse balances and SuperCard ledger postings form a linked benefits record: cardProgramID, productType, ledgerId and cardState distinguish each purse, while amount and currency express its remaining value. Physical-card records add maskedPan, isPhysical, crn and contractId. Statement entries carry amountInPaise, recordType, previousBalance, newBalance and transactionID, with counterparty details under otherLegInfo.

Payroll and expense teams can reconcile benefit loads and canteen receipts against those balance changes. Card-operations tools can associate tokenId, tokenStatus and merchantName with card records, while benefits administrators connect zetaUserID, crn, secondaryCRN and contractList with profile checks such as kycDone and corpID. Payment reconciliation adds transactionState, banker.status and paymentReceipt for capture outcomes. With authorized access to the underlying records, openData Studio turns this benefits data into callable open data for payroll reconciliation, card synchronization and contract onboarding.

Screenshots

  • Pluxee India: prev Sodexo-Zeta screenshot 1
  • Pluxee India: prev Sodexo-Zeta screenshot 2
  • Pluxee India: prev Sodexo-Zeta screenshot 3
  • Pluxee India: prev Sodexo-Zeta screenshot 4
  • Pluxee India: prev Sodexo-Zeta screenshot 5
  • Pluxee India: prev Sodexo-Zeta screenshot 6

API surface

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

  • Create Proteus session

    POST /v1/access/sessions osint

    Opens a beneficiary session after SSO and returns authToken plus validTill for every later wallet, ledger and SuperCard call.

    Auth: Unauthenticated session bootstrap after mobile SSO. The body carries authData, clientSessionId and uaInfo; the response supplies authToken and validTill for later authenticated calls.

    • authData
    • authToken
    • clientSessionId
    • requestId
    • version
    • uaInfo
    • gatewayInfo
    • id
    • validTill
    POST /v1/access/sessions HTTP/1.1
    Content-Type: application/json
    
    {
      "authData": "otp-verified-mobile",
      "authToken": "",
      "clientSessionId": "android-auth-1718600000000",
      "requestId": "android-auth-1718600000000",
      "version": 1,
      "uaInfo": {
        "osName": "Android",
        "appVersion": "9.5.5"
      },
      "gatewayInfo": {}
    }
    {
      "id": "sess_7f2a9c11",
      "authToken": "<session-token>",
      "validTill": 1718686400000
    }
  • Get user profile

    GET /v1/beneficiaries/profile osint

    Returns the signed-in beneficiary profile — userId, name, verified +91 phone, corpID and kycDone — for the account header and KYC gate.

    Auth: Bearer session token in the Authorization header. The beneficiary is scoped by userJID / userId.

    • userId
    • firstName
    • lastName
    • dob
    • gender
    • emailList
    • phoneNumber
    • isVerified
    • profilePicURL
    • isPassphraseSet
    • kycDone
    • corpID
    • shopId
    • addresses
    • bankAccounts
    GET /v1/beneficiaries/profile HTTP/1.1
    Authorization: Bearer <session-token>
    X-User-JID: user_88100214
    {
      "userId": "user_88100214",
      "name": {
        "firstName": "Anita",
        "lastName": "Sharma"
      },
      "dob": "1992-04-18",
      "gender": "F",
      "emailList": [{"email": "<email>"}],
      "phoneNumbers": [{"phoneNumber": "<verified-mobile>", "isVerified": true}],
      "profilePicURL": "<profile-image-url>",
      "isPassphraseSet": true,
      "kycDone": true,
      "attrs": {"corpID": "corp_pluxee_1102"},
      "shopId": "",
      "addresses": [],
      "bankAccounts": [],
      "businessIDs": [],
      "trustedContacts": [],
      "userDocs": []
    }
  • Get SuperCard wallet

    POST /v1/benefits/wallet-view openfinance

    Loads the IFI-scoped SuperCard wallet: meal/gift/cash cardPrograms with amount and ledgerId, plus superCardList plastics (maskedPan, crn, productType MEAL).

    Auth: Bearer session token in the Authorization header. The body identifies userID and cardCriteria, including includeZeroBalance and states.

    • id
    • primaryIFI
    • availableIFIs
    • cardProgramID
    • cardID
    • superCardID
    • name
    • productType
    • programType
    • ledgerId
    • amount
    • currency
    • ifi
    • cardState
    • maskedPan
    • isPhysical
    • crn
    • contractId
    • includeZeroBalance
    POST /v1/benefits/wallet-view HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "appID": "in.zeta.android",
      "userID": "user_88100214",
      "includeAllCards": true,
      "cardCriteria": {
        "*": {
          "includeZeroBalance": true,
          "states": ["ENABLED", "DISABLED"]
        }
      }
    }
    {
      "wallet": {
        "id": 44018221,
        "primaryIFI": 151613,
        "availableIFIs": {"151613": "RBL"},
        "cardPrograms": [
          {
            "cardProgramID": "cp_meal_01",
            "cardID": "card_7f2a",
            "superCardID": "sc_9f21",
            "name": "Meal",
            "productType": "MEAL",
            "programType": "BENEFIT",
            "ledgerId": "ldg_88100214",
            "amount": 125000,
            "points": 0,
            "currency": "INR",
            "ifi": 151613,
            "isShareable": false,
            "cardState": "ENABLED",
            "lastUpdateTime": "2026-10-22T08:11:00Z",
            "value": {"currency": "INR", "amount": "125000"},
            "attrs": {}
          }
        ],
        "superCardList": [
          {
            "cardID": "sc_9f21",
            "maskedPan": "5085-****-****-4419",
            "isPhysical": true,
            "isAddOn": false,
            "state": "ENABLED",
            "productType": "MEAL",
            "ifi": 151613,
            "crn": "crn_4401",
            "contractId": "ct_optima_12",
            "cguid": "cguid_77a"
          }
        ],
        "cards": [],
        "addOnCards": {},
        "tags": []
      }
    }
  • List payment instruments

    POST /v1/benefits/instrument-list openfinance

    Returns every visible payment instrument (SuperCard or SuperTag) with uniquingId, productType, state and crn for the home carousel and hide/show controls.

    Auth: Bearer session token in the Authorization header. The body identifies the beneficiary and application context.

    • paymentInstruments
    • type
    • uniquingId
    • ifi
    • productType
    • state
    • templateID
    • crn
    • associatedItems
    • bottomSheetTitle
    POST /v1/benefits/instrument-list HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "appID": "in.zeta.android",
      "userId": "user_88100214",
      "uaInfo": {"osName": "Android", "appVersion": "9.5.5"}
    }
    {
      "paymentInstruments": [
        {
          "type": "SuperCard",
          "uniquingId": "sc_9f21",
          "ifi": 151613,
          "productType": "MEAL",
          "state": "ENABLED",
          "templateID": "tpl_supercard",
          "crn": "crn_4401",
          "associatedItems": [],
          "attrs": {"bottomSheetTitle": "Meal SuperCard"}
        }
      ]
    }
  • Get ledger transactions

    POST /v1/benefits/ledger-history openbanking

    Pages CREDIT/DEBIT postings on one meal ledger — amountInPaise, previousBalance/newBalance, remarks and counterparty name — for the wallet statement.

    Auth: Bearer session token in the Authorization header. The body identifies ledgerID and supplies pagination cursors.

    • ledgerID
    • postingID
    • transactionID
    • previousBalance
    • newBalance
    • timestamp
    • amountInPaise
    • recordType
    • remarks
    • otherLegInfo
    • name
    • imageURL
    • profilePicURL
    • before
    • after
    • count
    • order
    POST /v1/benefits/ledger-history HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "ledgerID": "ldg_88100214",
      "before": "",
      "after": "",
      "count": 20,
      "order": "DESC"
    }
    {
      "transactions": [
        {
          "ledgerID": "ldg_88100214",
          "postingID": "pst_9f21aa",
          "transactionID": "txn_77a4419",
          "previousBalance": 128500,
          "newBalance": 125000,
          "timestamp": 1729661460000,
          "amountInPaise": 3500,
          "recordType": "DEBIT",
          "remarks": "Canteen swipe",
          "otherLegInfo": {
            "merchant": {
              "name": "Cafe Coffee Day",
              "imageURL": "",
              "profilePicURL": ""
            }
          },
          "attributes": {}
        }
      ]
    }
  • Get SuperCard PAN payload

    POST /v1/cards/secure-details openfinance

    Returns encrypted SuperCard PAN/CVV/expiry blobs (cardData + iv) so the expand-card screen can show the RuPay plastic details.

    Auth: Signed request with userID, timestamp and clientPubKey, together with a Bearer session token in the Authorization header.

    • userID
    • timestamp
    • clientPubKey
    • serverPubKey
    • cardData
    • iv
    • cvv
    • expiry
    • validFrom
    POST /v1/cards/secure-details HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "userID": 88100214,
      "timestamp": 1729661460000,
      "clientPubKey": "<client-public-key>"
    }
    {
      "serverPubKey": "<server-public-key>",
      "data": [
        {
          "cardData": "<encrypted-card-data>",
          "iv": "<initialization-vector>"
        }
      ]
    }
  • Get tokens for card

    GET /v1/cards/merchant-tokens openfinance

    Lists RuPay meal tokens on one SuperCard — tokenId, ENABLED/DISABLED/DELETED status and merchantName — for the meal-token manager.

    Auth: Bearer session token in the Authorization header. The cardId query value identifies the SuperCard.

    • tokens
    • tokenId
    • tokenStatus
    • modifiedAt
    • merchantName
    GET /v1/cards/merchant-tokens?cardId=sc_9f21 HTTP/1.1
    Authorization: Bearer <session-token>
    {
      "tokens": [
        {
          "tokenInfoView": {
            "tokenId": "tkn_rupay_4419",
            "tokenStatus": "ENABLED",
            "modifiedAt": "2026-09-12T11:04:00Z",
            "merchantInformation": {
              "merchantName": "Cafe Coffee Day"
            }
          }
        }
      ]
    }
  • Get payment info

    POST /v1/payments/status-view openbanking

    Reads one in-flight or captured SuperCard payment — state, banker.status and receipts — for the payment-status and BharatQR result screens.

    Auth: Bearer session token in the Authorization header. The body carries userId and paymentInfoRequest.

    • id
    • state
    • bConnectTxnId
    • payee
    • stateTransitions
    • banker.status
    • banker.failureReason
    • authorizationReceipt
    • paymentReceipt
    POST /v1/payments/status-view HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "userId": "user_88100214",
      "paymentInfoRequest": {
        "id": 99211004
      }
    }
    {
      "id": 99211004,
      "state": "CAPTURED",
      "bConnectTxnId": "bconn_77a",
      "payee": {"name": "Cafe Coffee Day"},
      "stateTransitions": {"AUTHORIZED": 1729661400000, "CAPTURED": 1729661460000},
      "attributes": {
        "banker.status": "SUCCESS",
        "banker.failureReason": ""
      },
      "authorizationReceipt": {},
      "paymentReceipt": {}
    }
  • Charge with authorization

    POST /v1/payments/authorized-capture openbanking

    Captures a BharatQR or vending SuperCard charge and returns transactionState for the pay-confirm screen.

    Auth: Bearer session token in the Authorization header. The body carries the authorization object and merchantInfo.

    • requestId
    • authorizationType
    • authorization
    • captureInfo
    • merchantInfo
    • attrs
    • transactionState
    POST /v1/payments/authorized-capture HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "requestId": "req_bqr_4419",
      "authorizationType": "BharatQR",
      "authorization": {},
      "captureInfo": {},
      "merchantInfo": {},
      "attrs": {"channel": "BQR"}
    }
    {
      "transactionState": "CAPTURED"
    }
  • Get Optima partner CRN

    GET /v1/benefits/contract-links openfinance

    Reads the Optima multi-benefit contract for the signed-in user — primary/secondary CRN, contractList and zetaUserID — that bind meal and gift purses to the SuperCard.

    Auth: Bearer session token in the Authorization header. The request identifies the beneficiary whose Optima benefit contract is being read.

    • crn
    • secondaryCRN
    • contractList
    • zetaUserID
    GET /v1/benefits/contract-links HTTP/1.1
    Authorization: Bearer <session-token>
    X-User-Id: user_88100214
    {
      "crn": "crn_4401",
      "secondaryCRN": "crn_4401b",
      "contractList": "ct_optima_12,ct_gift_08",
      "zetaUserID": 88100214
    }

Data categories

  • balances
  • transactions
  • cards
  • tokens
  • identity
  • kyc
  • merchants

Where teams use this data

  • Meal-purse payroll reconciliation

    An HR or payroll bot pulls cardPrograms where productType is MEAL, reads amount/currency and cardState, and matches remaining paise to the employer load so finance sees unused meal value before the next cycle.

  • Canteen spend ledger

    An expense desk pages getTransactions for each ledgerId and joins amountInPaise, recordType and otherLegInfo.name to canteen receipts, using previousBalance/newBalance as a running meal-purse check.

  • RuPay token and SuperCard sync

    A card-ops integration lists paymentInstruments (type SuperCard, uniquingId, crn) then getTokensForCardId for tokenId/tokenStatus/merchantName so disabled tokens and blocked plastics stay in sync with the wallet carousel.

  • Optima contract onboarding

    A benefits-admin tool reads zetaUserID, crn, secondaryCRN and contractList from the Optima partner call, then checks kycDone and corpID on the profile before attaching a new meal or gift purse.

Frequently asked questions

What meal-card data does this Pluxee India API example cover?

The illustrative wallet includes cardProgramID, productType, amount, currency, ledgerId and cardState for benefit purses, plus maskedPan, crn and isPhysical for SuperCards. Statement records add amountInPaise, recordType, previousBalance, newBalance and counterparty details under otherLegInfo.

How is access to the benefits wallet authenticated?

Mobile SSO is followed by a session bootstrap that supplies authToken and validTill. Later requests use a Bearer session token in the Authorization header. The encrypted card-details flow additionally uses a signed request with userID, timestamp and clientPubKey. The paths and examples here are illustrative, not official public Pluxee API documentation; profile, wallet and card records require authorized access.

Can the illustrated surface show transactions and payment outcomes?

Yes. Ledger history is paginated with before and after cursors and includes postingID, transactionID, amountInPaise, remarks and balance changes. A separate payment-status view adds state, banker.status, banker.failureReason and receipts. Authorized payment capture returns transactionState.

How do Optima contracts and RuPay tokens connect to meal cards?

Optima records associate zetaUserID with crn, secondaryCRN and contractList; card records also carry crn and contractId. Token records contain tokenId, tokenStatus, modifiedAt and merchantName, supporting card-and-token synchronization alongside benefit-contract onboarding.

Apps similar to Pluxee India: prev Sodexo-Zeta

  • Zaggle — Zaggle is an Indian spend-and-benefits platform that issues Visa and RuPay prepaid cards for flexi benefits, including food allowances loaded on the Zaggle Save card for online and merchant spend.
  • Happay FlexiBenefits — Happay FlexiBenefits is an Indian employee tax-benefit card with separate wallets for food, fuel, communication, rewards and reimbursements, loaded on the employer salary cycle.
  • Advantage Club — Advantage Club offers the Advantage Meal Card as a tax-efficient meal card with flexible benefits for everyday expenses and lifestyle needs, used in the AdvantageClub.ai worker app.
  • Empuls — Empuls from Xoxoday offers a Multi Benefits Card for tax-saving and flexible spending, plus lifestyle spending accounts and brand discounts on groceries, fuel and travel.
  • Pluxee Brasil — Pluxee Brasil is Pluxee's Brazilian cardholder app for meal, food and other benefit cards, used to check balances and statements and look up the accepting merchant network.
  • Edenred Ticket Restaurant — Edenred, formerly Accor Services, issues Ticket Restaurant meal vouchers as a workplace employee benefit and operates in 46 countries, including India through Accentiv (now Edenred India).

Topics

  • pluxee india api
  • sodexo zeta supercard
  • meal voucher balance india
  • rupay meal card ledger
  • optima crn contract
  • pluxee india data api
  • employee meal benefits india
  • illustrative benefits api

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