Skip to content
API DocsDocs

Flexepin Payment Payload

Request and response payloads for Flexepin prepaid voucher payments.

5 min readUpdated Oct 6, 2026

Payment Method Identifier: FLEXEPIN | Payment Type: VOUCHER

Flexepin is a prepaid voucher. The customer pays with the voucher PIN through POST /api/v1/payments/apm. The voucher is always redeemed in full.

#Amount and Currency

A Flexepin voucher is always redeemed in full, so the amount you receive can differ from the amount you requested. Credit the customer with processedAmount in processedCurrency from the SUCCEED callback — the voucher value — never with orderAmount.

  • Currency — the voucher must be in your account currency. A voucher in any other currency is declined and is not redeemed. The request currency can differ from the account currency; the request is converted to the account currency.
  • Amount — the voucher value can be higher or lower than the requested amount. The payment still succeeds, with the full voucher value.

For example, the request asks for 100.00 EUR and the customer redeems a 250 EUR voucher. The payment succeeds, the callback carries orderAmount: 100.0 and processedAmount: 250.0, and you credit the customer 250 EUR.

A real callback from a dev transaction. Identifiers, the voucher PIN and customer data are redacted; the payload shape, field names, null values, amounts and currencies are unchanged.

{
  "transactionId": "900000000000000001",
  "requestId": "00000000-0000-4000-8000-000000000001",
  "accountId": 123456789012345678,
  "transactionStatus": "SUCCEED",
  "declineCode": null,
  "declineSubReason": null,
  "orderCurrency": "EUR",
  "processedCurrency": "EUR",
  "orderAmount": 100.0,
  "processedAmount": 250.0,
  "conversionRate": 1.0,
  "apmRequestPayload": {
    "paymentMethod": "FLEXEPIN",
    "paymentType": "VOUCHER",
    "voucherCode": "1234567890123456"
  },
  "apmResponseData": {
    "paymentMethod": "FLEXEPIN",
    "paymentType": "VOUCHER",
    "providerTransactionId": "10000001",
    "actionType": "NONE"
  },
  "callbackUrl": "https://merchant.example/webhooks/apm",
  "billingDetails": {
    "externalUserId": null,
    "firstName": "Demo",
    "lastName": "Customer",
    "address1": "123 Demo Street",
    "city": "Demo City",
    "state": null,
    "country": "EG",
    "postalCode": "10001",
    "phone": "+15550101000",
    "email": "customer@example.com",
    "dateOfBirth": "2000-01-01",
    "ssn": null,
    "identityCode": null
  },
  "order": {
    "date": null,
    "orderId": "demo-order-0001",
    "title": "Deposit to demo account",
    "siteId": null,
    "name": null,
    "domainName": null
  },
  "createdAt": "2026-10-05T18:24:03.998693"
}

Verify the callback checksum before processing it. See Handling the Callback.

#Request Payload

#Request Fields

Top-Level Fields

FieldTypeRequiredDescription
callbackUrlStringNoServer-to-server webhook URL for the final transaction result
successRedirectUrlStringNoURL the customer returns to after completing the hosted step of the internal redirect flow
failureRedirectUrlStringNoURL the customer returns to after a failed or abandoned hosted step

Billing Details (ApmBillingDetails)

FieldTypeRequiredDescription
emailStringYesRequired for every APM payment
countryStringYesISO 3166-1 alpha-2 code. Selects the Flexepin Terms & Conditions the customer must accept

Payload Fields (apmPayload)

FieldTypeRequiredDescription
paymentMethodEnumYesMust be FLEXEPIN
paymentTypeEnumYesMust be VOUCHER
voucherCodeStringYesThe voucher PIN the customer entered. Send the PIN, not the voucher serial number

Treat voucherCode as a secret: do not put it in logs, analytics, support tickets or URLs.

{
  "paymentMethod": "FLEXEPIN",
  "paymentType": "VOUCHER",
  "voucherCode": "1234567890123456"
}

#Flexepin Terms & Conditions

When you collect the voucher PIN on your own page, show the Flexepin Terms & Conditions there:

  • an unchecked checkbox labelled I agree to the Flexepin Terms & Conditions, where Flexepin Terms & Conditions links to the terms in a new tab;
  • the EEA terms for customers in the EU, Iceland, Liechtenstein and Norway, and the AU terms for every other country;
  • the hover text from the Flexepin Merchant API, copied verbatim.

Do not let the customer submit the PIN until the checkbox is checked. The terms acceptance is not sent in the request. When the hosted page collects the PIN instead, it shows the terms itself.

#Direct Response

An accepted voucher returns transactionStatus: PROCESSING with actionType: NONE. The voucher is being redeemed; this is not the final result. Use the callback or payment info for the final status.

{
  "requestId": "00000000-0000-4000-8000-000000000001",
  "transactionId": "123456789",
  "transactionStatus": "PROCESSING",
  "paymentType": "APM",
  "apmResponseData": {
    "paymentMethod": "FLEXEPIN",
    "paymentType": "VOUCHER",
    "actionType": "NONE",
    "providerTransactionId": "100000001"
  }
}

#Response Fields

FieldTypeDescription
paymentMethodEnumAlways FLEXEPIN
paymentTypeEnumAlways VOUCHER
actionTypeEnumNONE — there is no customer action; wait for the final status
providerTransactionIdStringProvider transaction identifier, when available

A voucher that cannot be redeemed — invalid, already used, or in a currency other than your account currency — returns transactionStatus: FAILED with a decline code, and the voucher is not redeemed.

#Internal Redirect Response

To let the hosted page collect the PIN and show the Flexepin Terms & Conditions, omit voucherCode and use the internal APM redirect flow. Send a billing email and a valid country in the request. The initial response has actionType: REDIRECTION; redirect the customer to redirectUrl to continue the same transaction.

{
  "paymentMethod": "FLEXEPIN",
  "paymentType": "VOUCHER",
  "actionType": "REDIRECTION",
  "redirectUrl": "https://checkout.example.com/?token=..."
}

#See Also

Was this helpful?