Skip to main content

Create a payment without wallet cryptogram — without MPI (3DS required)

When neither a wallet cryptogram nor merchant-side 3DS results are available, the gateway performs 3DS authentication. The response will have status: "pending" and a client_action that the merchant must handle.

Payment workflow​

Apple Pay — Server-to-Server (gateway 3DS)
Payer (Customer)
Merchant
Apple Pay
Apple Pay
Card Issuer
OneAPI
1. Initiates transaction
2. Displays Apple Pay button (merchant frontend)
3. Clicks Apple Pay button
Apple Pay authentication (Face ID / Touch ID)
Authenticates payment
4. Encrypted Apple Pay token (no cryptogram)
5. Decrypts token and extracts card data
6. Payment API request with card data (no cryptogram, no MPI fields)
7. Response (status: pending, client_action: postForm or redirect)
8. Redirect to 3DS authentication page (client_action)
9. Completes 3DS challenge
10. 3DS authentication result
11. Processes payment
12. Redirect to success_url or error_url
Payment processing occurs asynchronously
13. Postback notification (payment status update)
14. Update order status

Scroll horizontally if the diagram is wider than your screen.

  1. 1
    Payer (Customer)Merchant

    1. Initiates transaction

  2. 2
    MerchantPayer (Customer)

    2. Displays Apple Pay button (merchant frontend)

  3. 3
    Payer (Customer)Apple PayApple Pay

    3. Clicks Apple Pay button

  4. 4
    Apple PayApple PayPayer (Customer)

    Apple Pay authentication (Face ID / Touch ID)

  5. 5
    Payer (Customer)Apple PayApple Pay

    Authenticates payment

  6. 6
    Apple PayApple PayMerchant

    4. Encrypted Apple Pay token (no cryptogram)

  7. 7
    MerchantMerchant

    5. Decrypts token and extracts card data

  8. 8
    MerchantOneAPI

    6. Payment API request with card data (no cryptogram, no MPI fields)

  9. 9
    OneAPIMerchant

    7. Response (status: pending, client_action: postForm or redirect)

  10. 10
    MerchantPayer (Customer)

    8. Redirect to 3DS authentication page (client_action)

  11. 11
    Payer (Customer)Card Issuer

    9. Completes 3DS challenge

  12. 12
    Card IssuerOneAPI

    10. 3DS authentication result

  13. 13
    OneAPIOneAPI

    11. Processes payment

  14. 14
    OneAPIPayer (Customer)

    12. Redirect to success_url or error_url

  15. OneAPI

    Payment processing occurs asynchronously

  16. 15
    OneAPIMerchant

    13. Postback notification (payment status update)

  17. 16
    MerchantMerchant

    14. Update order status

POST/rest/payment
payment_typeStringrequired
applepay
order_idStringrequired
Any alphanumeric string to identify the Merchant's order
amountFloatrequired
Amount of the transaction including all taxes and shipping fees
currencyStringrequired
3 letter currency code
postback_urlStringrequired
The URL for updates about transaction status are posted
success_urlStringrequired
Where to redirect the user after a successful transaction
error_urlStringrequired
Where to redirect the user after a failed transaction
card_numberStringrequired
The card number (FPAN) from the decrypted Apple Pay token
card_holderStringrequired
Name of the cardholder
card_expiry_monthStringrequired
Expiry month of the card (1-12)
card_expiry_yearStringrequired
Expiry year of the card (4 digits)
Omit threeds_wallet_cryptogram, threeds_authentication_value, and threeds_directory_server_trans_id. The gateway will perform 3DS authentication automatically. The optional processing parameters from Cardholder Data Parameters such as card_entry, charge_order, clearing_mode, clear_after, and sca_exemption_request are also accepted in this flow.
Example RequestHTTP
POST /rest/payment
Authorization: Basic <base64(api_key:api_password)>
Content-Type: application/json
{
"payment_type": "applepay",
"order_id": "APAY-99999",
"amount": "25.90",
"currency": "EUR",
"postback_url": "https://your-postback.url.com",
"success_url": "https://your-success.url.com",
"error_url": "https://your-error.url.com",
"card_number": "4761070000000509",
"card_holder": "John Doe",
"card_expiry_month": "12",
"card_expiry_year": "2026"
}

Payment API Response​

transaction_idString
ID of the created transaction
payment_typeString
Payment type of the transaction
status_codeInteger
Status code of the transaction
statusString
Status of the transaction
order_idString
Order ID of the transaction
messageString
Optional additional information about the transaction result
additional_transaction_dataString
Additional transaction data provided by you. This will be shown in the dashboard as well as when you query for transaction data. It will also be sent back to your postback_url as part of the postback data.
amountFloat
Amount of the transaction
included_feesString
Included fees for the transaction
error_codeInteger
Error code for the response
client_actionString
Indicates the required client-side action. Possible values: postForm (build and submit a POST form using the data in action_data) or redirect (redirect to the url in action_data).
action_dataObject
Contains: url (target URL of the action) and, in case of a postForm, fields (key/value pairs of the data to be posted).
The merchant must build a form on their frontend and POST the fields to the provided url in action_data. This will redirect the customer to the 3DS authentication page. Once 3DS is completed, the customer is returned to the merchant's success_url or error_url.
Example ResponseJSON
{
"transaction_id": "d1bf9fdf-7268-406f-9e08-8d5a9540ab97",
"payment_type": "applepay",
"status_code": 2,
"status": "pending",
"order_id": "APAY-99999",
"message": null,
"additional_transaction_data": null,
"amount": 25.90,
"included_fees": "0.00",
"error_code": 0,
"client_action": "postForm",
"action_data": {
"url": "https://3ds-acs-url.example.com/v1/acs/challenge-initiate",
"fields": {
"creq": "eyJ0aHJlZURTU2VydmVyVHJ..."
}
}
}

Postbacks​

For the full list of payment postback fields, see the Payment API. For retry policy and signature verification, see Postbacks.

Test Data​

To learn how to add test cards for testing Apple Pay, please review the official Apple Pay sandbox testing documentation.

For testing Server-to-Server Apple Pay transactions without a wallet cryptogram and without MPI, omit threeds_wallet_cryptogram, threeds_authentication_value, and threeds_directory_server_trans_id. This triggers the gateway 3DS flow.

info

The card data in Server-to-Server Apple Pay transactions is actually token data (DPAN), not the real card number — but it follows the same format. CVV is not required for wallet token transactions.

info

3DS is very rare for Apple Pay transactions since the wallet cryptogram typically provides sufficient authentication.

ParameterTest Value
card_number5286940020000908
card_holderMax Mustermann
card_expiry_month12
card_expiry_year2026

Complete the client_action returned in the response (postForm or redirect) to continue with the acquirer-provided 3DS flow.