Skip to main content

Create a payment with wallet cryptogram (no 3DS required)

When the decrypted Apple Pay token contains a cryptogram, pass it along with the card data. The cryptogram serves as proof of cardholder authentication, so no additional 3DS authentication is needed.

Payment workflow​

Apple Pay — Server-to-Server (wallet cryptogram)
Payer (Customer)
Merchant
Apple Pay
Apple Pay
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 (includes cryptogram)
5. Decrypts token and extracts card data + cryptogram
6. Payment API request with card data + threeds_wallet_cryptogram
Cryptogram proves cardholder authentication — OneAPI skips 3DS
7. Payment result (success/declined)
Payment processing occurs asynchronously
8. Postback notification (payment status update)
9. Update order status
10. Display final confirmation

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 (includes cryptogram)

  7. 7
    MerchantMerchant

    5. Decrypts token and extracts card data + cryptogram

  8. 8
    MerchantOneAPI

    6. Payment API request with card data + threeds_wallet_cryptogram

  9. OneAPI

    Cryptogram proves cardholder authentication — OneAPI skips 3DS

  10. 9
    OneAPIMerchant

    7. Payment result (success/declined)

  11. OneAPI

    Payment processing occurs asynchronously

  12. 10
    OneAPIMerchant

    8. Postback notification (payment status update)

  13. 11
    MerchantMerchant

    9. Update order status

  14. 12
    MerchantPayer (Customer)

    10. Display final confirmation

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 (DPAN) 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)
threeds_wallet_cryptogramStringrequired
The cryptogram from the decrypted Apple Pay token
threeds_wallet_cryptogram_eciString
The ECI indicator from the decrypted Apple Pay token
Example RequestHTTP
POST /rest/payment
Authorization: Basic <base64(api_key:api_password)>
Content-Type: application/json
{
"payment_type": "applepay",
"order_id": "APAY-67890",
"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",
"threeds_wallet_cryptogram": "AgAAAAAABk4DWZ4C28yUQAAAAAA=",
"threeds_wallet_cryptogram_eci": "07"
}

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
included_feesString
Included fees for the transaction
error_codeInteger
Error code for the response
Example ResponseJSON
{
"transaction_id": "a2c4e6f8-1234-5678-abcd-ef0123456789",
"payment_type": "applepay",
"status_code": 3,
"status": "completed",
"order_id": "APAY-67890",
"message": null,
"included_fees": "0.00",
"error_code": 0
}

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 with a wallet cryptogram, use the following test data.

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.

The transaction will go straight to completed status.

ParameterTest Value
threeds_wallet_cryptogramAf9x2zAAAAABBBCC1XYCMAABAAA=
threeds_wallet_cryptogram_eci05
card_number5286940020000908
card_holderMax Mustermann
card_expiry_month12
card_expiry_year2026