Skip to content
innovorder
⌘K

Stored value

Balance & Transactions

Customer Balance

Retrieve the real-time balance of a customer's E-Wallet.

GET/customers/{customerId}/balanceGet Balance

Returns the current balance in cents.

Parameters

NameTypeRequiredDescription
customerIdintegerYesCustomer ID
unscopedbooleanNoBypass scope checks if needed.

Response

json
{
  "status": 200,
  "code": "balance_succeed",
  "message": "Vous avez accès à ce contenu.",
  "data": {
    "customerBalance": -147000
  }
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger200HTTP status code returned by the API.
codestring"balance_succeed"Machine-readable application code for the result.
messagestring"Vous avez accès à ce contenu."Human-readable result message. Do not use this value for program logic.
dataobject{…}Endpoint-specific response payload.
data.customerBalanceinteger-147000The customer balance value.

Customer History

Retrieve a chronological list of all movements on the customer's wallet, including orders, reloads, and manual adjustments.

GET/customers/{customerId}/balance_historyGet Balance History

Retrieve a list of wallet transactions (credits, debits, orders).

Parameters

NameTypeRequiredDescription
customerIdintegerYesCustomer ID
includestringNoRelations to include (e.g., "beforeAndAfterBalance,omnichannelOrder").
limitintegerNoPagination limit (default 10).
offsetintegerNoPagination offset (default 0).
orderstringNoSort order (e.g. "-createdAt").
unscopedbooleanNoBypass scope checks.

Response

json
{
  "status": 200,
  "code": "balance_succeed",
  "message": "You have access to this balance.",
  "data": [
    {
      "transactionId": 483134,
      "type": "1",
      "currency": "EUR",
      "amount": 50000,
      "paymentOrigin": "1",
      "customerId": 510,
      "createdAt": "2023-08-30T10:02:15.000Z",
      "source": "1",
      "balanceBefore": -197000,
      "balanceAfter": -147000
    },
    {
      "transactionId": 410706,
      "type": "3",
      "currency": "EUR",
      "amount": -300000,
      "customerId": 510,
      "createdAt": "2023-05-05T14:41:36.000Z",
      "source": "2",
      "balanceBefore": 103000,
      "balanceAfter": -197000,
      "omnichannelOrder": {
        "reportOrderId": 239190,
        "omnichannelOrderId": "286911",
        "totalPriceDiscountedWithTaxIncluded": 300000,
        "items": [
          {
            "name": "Eau Nestlé",
            "quantity": 1000,
            "totalPriceWithTaxIncluded": 300000
          }
        ]
      }
    }
  ]
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger200HTTP status code returned by the API.
codestring"balance_succeed"Machine-readable application code for the result.
messagestring"You have access to this balance."Human-readable result message. Do not use this value for program logic.
dataarray[…]Endpoint-specific response payload.
data[]object{…}Endpoint-specific response payload.
data[].transactionIdinteger483134Identifier of the transaction.
data[].typestring"1"The type value.
data[].currencystring"EUR"ISO 4217 currency code.
data[].amountinteger50000The amount value.
data[].paymentOriginstring"1"The payment origin value.
data[].customerIdinteger510Identifier of the customer.
data[].createdAtstring"2023-08-30T10:02:15.000Z"Timestamp when this resource was created.
data[].sourcestring"1"The source value.
data[].balanceBeforeinteger-197000The balance before value.
data[].balanceAfterinteger-147000The balance after value.

Get Transactions

Retrieve a general list of E-Wallet transactions. This endpoint allows for filtering by date range, brand, or pagination.

GET/transactionsGet Transactions

Retrieve transactions executed within the system. Supports optional filtering.

Parameters

NameTypeRequiredDescription
brandIdintegerNoFilter by Brand ID.
startDatestringNoFilter start date (ISO 8601).
endDatestringNoFilter end date (ISO 8601).
offsetintegerNoPagination offset.
limitintegerNoPagination limit.

Response

json
{
  "status": 200,
  "code": "transactions_succeed",
  "message": "Les transactions se sont executées avec succès.",
  "data": [
    {
      "customerId": 431986,
      "firstName": "Alice",
      "lastName": "Doe",
      "email": "alice.doe@example.com",
      "class": "CLASS_A",
      "section": "SECTION_1",
      "subSection": "SUB_1",
      "accountPaymentType": "POSTPAYMENT",
      "studentNumber": null,
      "pricingRuleCode": "SUBV_TYPE_A",
      "badgeNumber": null,
      "sourceUserId": 69671,
      "sourceUserFirstName": "Admin",
      "sourceUserLastName": "User",
      "sourceUserEmail": "admin@example.com",
      "applyDate": "2020-07-02T09:43:07.000Z",
      "creationDate": "2020-07-02T09:43:07.000Z",
      "transactionId": 4289237,
      "brandId": 491,
      "restaurantId": null,
      "restaurantName": null,
      "orderId": null,
      "externalOrderReference": null,
      "transactionAmount": 1280,
      "transactionType": "1",
      "paymentOrigin": "3",
      "paymentOriginMetadata": "Manual adjustment",
      "transactionStatus": "1",
      "transactionSource": "1",
      "externalUserReference": null,
      "currency": "EUR"
    },
    {
      "customerId": 321400,
      "firstName": "Bob",
      "lastName": "Smith",
      "email": "bob.smith@example.com",
      "transactionId": 4405098,
      "transactionAmount": 474,
      "transactionType": "1",
      "paymentOrigin": "3",
      "paymentOriginMetadata": "Subsidy adjustment",
      "transactionStatus": "1",
      "transactionSource": "1",
      "currency": "EUR"
    }
  ]
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger200HTTP status code returned by the API.
codestring"transactions_succeed"Machine-readable application code for the result.
messagestring"Les transactions se sont executées avec succès."Human-readable result message. Do not use this value for program logic.
dataarray[…]Endpoint-specific response payload.
data[]object{…}Endpoint-specific response payload.
data[].customerIdinteger431986Identifier of the customer.
data[].firstNamestring"Alice"The first name value.
data[].lastNamestring"Doe"The last name value.
data[].emailstring"alice.doe@example.com"Email address.
data[].classstring"CLASS_A"The class value.
data[].sectionstring"SECTION_1"The section value.
data[].subSectionstring"SUB_1"The sub section value.
data[].accountPaymentTypestring"POSTPAYMENT"The account payment type value.
data[].studentNumbernullnullThe student number value.
data[].pricingRuleCodestring"SUBV_TYPE_A"The pricing rule code value.
data[].badgeNumbernullnullThe badge number value.
data[].sourceUserIdinteger69671Identifier of the associated source user.
data[].sourceUserFirstNamestring"Admin"The source user first name value.
data[].sourceUserLastNamestring"User"The source user last name value.
data[].sourceUserEmailstring"admin@example.com"The source user email value.
data[].applyDatestring"2020-07-02T09:43:07.000Z"Date or timestamp for apply.
data[].creationDatestring"2020-07-02T09:43:07.000Z"Date or timestamp for creation.
data[].transactionIdinteger4289237Identifier of the transaction.
data[].brandIdinteger491Identifier of the brand.
data[].restaurantIdnullnullIdentifier of the restaurant.
data[].restaurantNamenullnullThe restaurant name value.
data[].orderIdnullnullIdentifier of the order.
data[].externalOrderReferencenullnullThe external order reference value.
data[].transactionAmountinteger1280The transaction amount value.
data[].transactionTypestring"1"The transaction type value.
data[].paymentOriginstring"3"The payment origin value.
data[].paymentOriginMetadatastring"Manual adjustment"The payment origin metadata value.
data[].transactionStatusstring"1"The transaction status value.
data[].transactionSourcestring"1"The transaction source value.
data[].externalUserReferencenullnullThe external user reference value.
data[].currencystring"EUR"ISO 4217 currency code.

Create E-Wallet Transaction

Create an E-Wallet transaction (credit, debit, refund, etc.) for a customer identified by ID, student number, or badge number. This endpoint supports external order references and partial payment acceptance.

POST/transactions/ewalletCreate E-Wallet Transaction

Create a new E-Wallet transaction. The customer can be identified by customerId, studentNumber, or badgeNumber (at least one is required). Either paymentOrigin or externalOrderReference must be provided.

Request Body

json
{
  "brandId": 491,
  "customerId": 130069,
  "amount": 500,
  "type": "1",
  "source": "7",
  "paymentOrigin": "4",
  "restaurantId": 1234,
  "paymentOriginMetaData": "Online reload via API",
  "externalOrderReference": "EXT-ORD-001",
  "externalUserReference": "EXT-USR-001",
  "externalUserReferenceId": "abc-123",
  "externalDailyOrderId": "DAILY-001",
  "deviceId": "device-001",
  "uniqueTransactionId": "unique-txn-001",
  "acceptPartialTransaction": false,
  "isPartialPaymentAccepted": false,
  "unitCurrency": false
}
Request Body Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeRequiredExampleDescription
brandIdintegerYes491Brand ID the transaction belongs to.
customerIdintegerNo130069Customer ID. At least one of customerId, studentNumber, or badgeNumber is required.
amountintegerYes500Transaction amount in cents.
typestringYes"1"Transaction type: "1" (CREDIT), "2" (REFUND), "3" (DEBIT), "4" (CANCEL), "5" (DATE_MODIFICATION), "6" (POST_PAYMENT_RESET).
sourcestringYes"7"Transaction source: "7" for API integration.
paymentOriginstringNo"4"Payment origin code (see Types). Required if externalOrderReference is not provided.
restaurantIdintegerNo1234Restaurant ID associated with the transaction.
paymentOriginMetaDatastringNo"Online reload via API"Additional metadata about the payment origin.
externalOrderReferencestringNo"EXT-ORD-001"External order reference. Required if paymentOrigin is not provided.
externalUserReferencestringNo"EXT-USR-001"External user reference for tracking.
externalUserReferenceIdstringNo"abc-123"External user reference ID.
externalDailyOrderIdstringNo"DAILY-001"External daily order identifier.
deviceIdstringNo"device-001"Device identifier that initiated the transaction.
uniqueTransactionIdstringNo"unique-txn-001"Idempotency key to prevent duplicate transactions.
acceptPartialTransactionbooleanNofalseAccept partial transaction if balance is insufficient.
isPartialPaymentAcceptedbooleanNofalseWhether partial payment is accepted.
unitCurrencybooleanNofalseIf true, amount is in unit currency rather than cents.
studentNumberstringNoNot providedStudent number to identify the customer.
badgeNumberstringNoNot providedBadge number to identify the customer.

Response

json
{
  "status": 200,
  "code": "transaction_succeed",
  "message": "Transaction has been proceed with success.",
  "data": {
    "transactionId": 592901,
    "amount": 500,
    "type": "1",
    "source": "7",
    "paymentOrigin": "4",
    "brandId": 491,
    "customerId": 130069,
    "restaurantId": 1234,
    "currency": "EUR",
    "createdAt": "2024-01-15T10:30:00.000Z",
    "customer": {
      "customerId": 130069,
      "firstName": "Alice",
      "lastName": "Doe",
      "email": "alice.doe@example.com",
      "studentNumber": null,
      "classroom": null,
      "oldBalance": "1000",
      "newBalance": "1500"
    }
  }
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger200HTTP status code returned by the API.
codestring"transaction_succeed"Machine-readable application code for the result.
messagestring"Transaction has been proceed with success."Human-readable result message. Do not use this value for program logic.
dataobject{…}Endpoint-specific response payload.
data.transactionIdinteger592901Identifier of the transaction.
data.amountinteger500The amount value.
data.typestring"1"The type value.
data.sourcestring"7"The source value.
data.paymentOriginstring"4"The payment origin value.
data.brandIdinteger491Identifier of the brand.
data.customerIdinteger130069Identifier of the customer.
data.restaurantIdinteger1234Identifier of the restaurant.
data.currencystring"EUR"ISO 4217 currency code.
data.createdAtstring"2024-01-15T10:30:00.000Z"Timestamp when this resource was created.
data.customerobject{…}Object containing customer fields.
data.customer.customerIdinteger130069Identifier of the customer.
data.customer.firstNamestring"Alice"The first name value.
data.customer.lastNamestring"Doe"The last name value.
data.customer.emailstring"alice.doe@example.com"Email address.
data.customer.studentNumbernullnullThe student number value.
data.customer.classroomnullnullThe classroom value.
data.customer.oldBalancestring"1000"The old balance value.
data.customer.newBalancestring"1500"The new balance value.

DELETE/transactions/{transactionId}Cancel E-Wallet Transaction

Creates an opposite CANCEL transaction for the referenced transaction. A transaction can only be cancelled once; the caller must be allowed to read the transaction customer.

Parameters

NameTypeRequiredDescription
transactionIdintegerYesExisting transaction to cancel.
sourcestringYesSource code recorded on the cancellation transaction: 1 Dashboard, 2 CEL, 3 E-Wallet Reloader, 4 Reception, 5 POS, 6 Kiosk, 7 API, 8 E-Wallet Kiosk, 9 Vending machine, or 10 System.

Request Body

json
{
  "externalUserReference": "refund-operator-42"
}
Request Body Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeRequiredExampleDescription
externalUserReferencestringNo"refund-operator-42"Optional external operator or user reference stored on the cancellation transaction.

Response

json
{
  "status": 200,
  "code": "transaction_succeed",
  "message": "Transaction has been proceed with success.",
  "data": {
    "transactionId": 592902,
    "uniqueTransactionId": "bd4c80cd-6e25-4d07-9ac1-688cbd4b26f5",
    "amount": -500,
    "error": null,
    "type": "4",
    "status": "1",
    "remoteAddress": "203.0.113.10",
    "source": "7",
    "currency": "EUR",
    "externalUserReference": "refund-operator-42",
    "externalUserReferenceId": null,
    "externalOrderReference": "EXT-ORD-001",
    "externalDailyOrderId": "DAILY-001",
    "externalDeviceId": null,
    "sourceUserId": 130069,
    "originTransactionId": 592901,
    "paymentOrigin": null,
    "paymentOriginMetaData": null,
    "brandId": 491,
    "restaurantId": 1234,
    "customerId": 130069,
    "userId": null,
    "orderId": null,
    "groupTransactionId": null,
    "loyaltyCardId": null,
    "applyDate": "2026-07-11T09:30:00.000Z",
    "created_at": "2026-07-11T09:30:00.000Z",
    "updated_at": "2026-07-11T09:30:00.000Z",
    "deleted_at": null
  }
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger200HTTP status code returned by the API.
codestring"transaction_succeed"Machine-readable application code for the result.
messagestring"Transaction has been proceed with success."Human-readable result message. Do not use this value for program logic.
dataobject{…}Endpoint-specific response payload.
data.transactionIdinteger592902Identifier of the transaction.
data.uniqueTransactionIdstring"bd4c80cd-6e25-4d07-9ac1-688cbd4b26f5"Identifier of the associated unique transaction.
data.amountinteger-500The amount value.
data.errornullnullThe error value.
data.typestring"4"The type value.
data.statusstring"1"HTTP status code returned by the API.
data.remoteAddressstring"203.0.113.10"The remote address value.
data.sourcestring"7"The source value.
data.currencystring"EUR"ISO 4217 currency code.
data.externalUserReferencestring"refund-operator-42"The external user reference value.
data.externalUserReferenceIdnullnullIdentifier of the associated external user reference.
data.externalOrderReferencestring"EXT-ORD-001"The external order reference value.
data.externalDailyOrderIdstring"DAILY-001"Identifier of the associated external daily order.
data.externalDeviceIdnullnullIdentifier of the associated external device.
data.sourceUserIdinteger130069Identifier of the associated source user.
data.originTransactionIdinteger592901Identifier of the associated origin transaction.
data.paymentOriginnullnullThe payment origin value.
data.paymentOriginMetaDatanullnullThe payment origin meta data value.
data.brandIdinteger491Identifier of the brand.
data.restaurantIdinteger1234Identifier of the restaurant.
data.customerIdinteger130069Identifier of the customer.
data.userIdnullnullIdentifier of the user.
data.orderIdnullnullIdentifier of the order.
data.groupTransactionIdnullnullIdentifier of the associated group transaction.
data.loyaltyCardIdnullnullIdentifier of the associated loyalty card.
data.applyDatestring"2026-07-11T09:30:00.000Z"Date or timestamp for apply.
data.created_atstring"2026-07-11T09:30:00.000Z"Timestamp when this resource was created.
data.updated_atstring"2026-07-11T09:30:00.000Z"Timestamp when this resource was last updated.
data.deleted_atnullnullTimestamp when this resource was deleted, or null when it is active.

Transfer Full E-Wallet Balance

Move the complete positive balance from one customer to another customer in the same brand. The API creates one debit and one credit atomically; it does not accept a partial amount.

POST/transactions/ewallet/transferTransfer Full Customer Balance

Transfers 100% of the source customer balance. The source and destination must be different customers in the same e-wallet-enabled brand. Transfers from post-payment accounts and zero or negative balances are rejected.

Request Body

json
{
  "brandId": 491,
  "sourceCustomerId": 130069,
  "destinationCustomerId": 130070
}
Request Body Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeRequiredExampleDescription
brandIdintegerYes491Brand shared by both customers.
sourceCustomerIdintegerYes130069Customer whose entire current balance will be debited.
destinationCustomerIdintegerYes130070Customer who receives the transferred balance.

Response

json
{
  "status": 201,
  "code": "transfer_ewallet_succeed",
  "message": "Balance transfer has been completed with success.",
  "data": {
    "amount": 1500,
    "currency": "EUR",
    "groupTransactionId": "0dbd40ce-7eb1-49ae-b446-5b4e6c5e6f99",
    "source": {
      "customerId": 130069,
      "firstName": "Alice",
      "lastName": "Doe",
      "transactionId": 592902,
      "oldBalance": 1500,
      "newBalance": 0
    },
    "destination": {
      "customerId": 130070,
      "firstName": "Bob",
      "lastName": "Smith",
      "transactionId": 592903,
      "oldBalance": 500,
      "newBalance": 2000
    }
  }
}
Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

PropertyTypeExampleDescription
statusinteger201HTTP status code returned by the API.
codestring"transfer_ewallet_succeed"Machine-readable application code for the result.
messagestring"Balance transfer has been completed with success."Human-readable result message. Do not use this value for program logic.
dataobject{…}Endpoint-specific response payload.
data.amountinteger1500The amount value.
data.currencystring"EUR"ISO 4217 currency code.
data.groupTransactionIdstring"0dbd40ce-7eb1-49ae-b446-5b4e6c5e6f99"Identifier of the associated group transaction.
data.sourceobject{…}Object containing source fields.
data.source.customerIdinteger130069Identifier of the customer.
data.source.firstNamestring"Alice"The first name value.
data.source.lastNamestring"Doe"The last name value.
data.source.transactionIdinteger592902Identifier of the transaction.
data.source.oldBalanceinteger1500The old balance value.
data.source.newBalanceinteger0The new balance value.
data.destinationobject{…}Object containing destination fields.
data.destination.customerIdinteger130070Identifier of the customer.
data.destination.firstNamestring"Bob"The first name value.
data.destination.lastNamestring"Smith"The last name value.
data.destination.transactionIdinteger592903Identifier of the transaction.
data.destination.oldBalanceinteger500The old balance value.
data.destination.newBalanceinteger2000The new balance value.