Skip to content
API DocsDocs

Apple Pay Payload

4 min readUpdated Apr 2, 2026

Payment Method Identifier: APPLE_PAY | Payment Type: MOBILE_WALLET

This method allows you to accept Apple Pay payments via the S2S API. Customers authorize payment using Face ID, Touch ID, or passcode on their Apple device. The Apple Pay token can be submitted either encrypted (Exirom decrypts) or with the decrypted card data included.

For integration details, see the Apple Pay guide.

#Required Request Fields

Top-Level Fields

FieldTypeDescription
callbackUrlStringURL to receive transaction status updates
successRedirectUrlStringURL to redirect the customer after successful payment
failureRedirectUrlStringURL to redirect the customer after failed payment

Billing Details (ApmBillingDetails)

FieldTypeDescription
emailStringThe customer's email address used for communication or receipts

#Payload Structure

{
  "paymentMethod": "APPLE_PAY",
  "paymentType": "MOBILE_WALLET",
  "token": {
    "paymentData": {
      "data": "<encrypted-payment-data>",
      "header": {
        "publicKeyHash": "<public-key-hash>",
        "transactionId": "<transaction-id>",
        "ephemeralPublicKey": "<ephemeral-public-key>"
      },
      "version": "EC_v1",
      "signature": "<signature>"
    },
    "paymentMethod": {
      "type": "debit",
      "network": "Visa",
      "displayName": "Visa 3742"
    },
    "transactionIdentifier": "<transaction-id>"
  },
  "decrypted": {
    "applicationPrimaryAccountNumber": "<card-pan>",
    "applicationExpirationDate": "311231",
    "currencyCode": "978",
    "transactionAmount": "5000",
    "deviceManufacturerIdentifier": "040010030273",
    "paymentDataType": "3DSecure",
    "paymentData": {
      "onlinePaymentCryptogram": "<cryptogram>",
      "eciIndicator": "5"
    }
  }
}

Payload Fields

FieldTypeRequiredDescription
paymentMethodEnumYesMust be set to APPLE_PAY
paymentTypeEnumYesMust be set to MOBILE_WALLET
tokenObjectYesThe Apple Pay token object received from the Apple Pay JS API
decryptedObjectNoThe decrypted payment data. Include this if you decrypt the token yourself; omit or set to null if Exirom handles decryption

Token Object (token)

FieldTypeRequiredDescription
paymentData.dataStringYesBase64-encoded encrypted payment data
paymentData.header.publicKeyHashStringYesHash of the public key used for encryption
paymentData.header.transactionIdStringYesApple Pay transaction identifier
paymentData.header.ephemeralPublicKeyStringYesEphemeral public key for key exchange
paymentData.versionStringYesToken version (always EC_v1)
paymentData.signatureStringYesSignature for payment data verification
paymentMethod.typeStringYesCard type (e.g., debit, credit)
paymentMethod.networkStringYesCard network (e.g., Visa, Mastercard)
paymentMethod.displayNameStringYesDisplay name (e.g., Visa 3742)
transactionIdentifierStringYesUnique identifier for the Apple Pay transaction

Decrypted Data (decrypted) — only when merchant handles decryption

FieldTypeRequiredDescription
applicationPrimaryAccountNumberStringYesThe card PAN (DPAN or FPAN)
applicationExpirationDateStringYesCard expiration date in YYMMDD format
currencyCodeStringYesISO 4217 numeric currency code (e.g., 978 for EUR)
transactionAmountStringYesTransaction amount in minor units
deviceManufacturerIdentifierStringYesDevice manufacturer identifier
paymentDataTypeStringYesAlways 3DSecure for Apple Pay
paymentData.onlinePaymentCryptogramStringYesPayment cryptogram for 3D Secure
paymentData.eciIndicatorStringNoECI value (e.g., 5 for Visa 3DS)

#Expected apmResponseData (ApplePayResponseData)

{
  "paymentMethod": "APPLE_PAY",
  "paymentType": "MOBILE_WALLET",
  "actionType": "NONE",
  "isFinal": true,
  "authCode": "5BS7B0",
  "providerTransactionId": "payment_e5363ba7d4248237e12e62f96fe488f0"
}

#Response Fields

FieldTypeDescription
paymentMethodEnumAlways APPLE_PAY
paymentTypeEnumAlways MOBILE_WALLET
actionTypeEnumAlways NONE — no customer redirect needed
isFinalBooleanAlways true — the result is final
authCodeStringAuthorization code from the payment provider
providerTransactionIdStringUnique transaction ID from the payment provider
Was this helpful?