Apple Pay
Apple Pay is a secure digital wallet payment service developed by Apple to enable consumers to make card payments using Apple mobile devices, such as phones, tablets, and watches. Apple Pay also supports use of encrypted merchant token (MPANs) payment bundles to support recurring payments that are tied to a specific merchant instead of a device.
The Online Payments API supports submission of payments using both Apple Pay DPAN and MPAN encrypted bundles.
Availability
Payment method | Payment type | Countries | Supported presentment currencies |
---|---|---|---|
Apple Pay | Wallet | CA, EU, UK, US |
AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BIF, BMD, BND, BOB, BRL, BSD, BTN, BWP, BYN, BZD, CAD, CDF, CHF, CLP, CNY, COP, CRC, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, ISK, JMD, JPY, KES, KHR, KMF, KRW, KYD, KZT, LAK, LBP, LKR, LRD, LSL, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRU, MUR, MVR, MWK, MXN, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RWF, SAR, SBD, SCR, SEK, SGD, SHP, SLL, SOS, SRD, STN, SZL, THB, TJS, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VND, VUV, WST, XAF, XCD, XOF, XPF, YER, ZAR, ZMW |
How Apple Pay works

Before you begin
Before you offer Apple Pay as a payment method for your consumers, setup with Apple Pay is required:
- Create an Apple developer account with your merchant information.
- Register with Apple and obtain a merchant ID.
- Contact your J.P. Morgan Technical Implementation Manager to create your certificate signing request (CSR).
- Create a text document using the CSR file provided by J.P. Morgan. Ensure the file has a .cert file extension.
- Upload your CSR to Apple to create a payment processing certificate for your merchant ID. Note: Your payment processing certificate is used to encrypt payment information and expires every 25 months.
- Accept and comply with Apple’s terms and conditions.
Use Apple Pay for payments
Perform the following steps to initiate Apple Pay for transaction processing after your consumer has selected Apple Pay as their payment method:
- Call the Apple API to obtain token payment (encrypted) data.
- Submit the token payment data to the J.P. Morgan Online Payments API for transaction processing.
Payment request with Apple Pay encrypted bundle (DPAN/MPAN)
Map the Apple Pay payment token field data from Apple to our Online Payments API required fields. DPAN and MPAN encrypted bundles use the same Online Payments API request fields.
Apple Pay (payment token fields) |
Online Payments API required objects/fields |
Description |
---|---|---|
data | paymentMethodType.applepay.encryptedPaymentBundle.encryptedPayload |
Encrypted payment data |
ephemeralPublicKey | paymentMethodType.applepay.encryptedPaymentBundle.encryptedPaymentHeader.ephemeralPublicKey |
Ephemeral public key bytes (EC_v1 only) |
publicKeyHash | paymentMethodType.applepay.encryptedPaymentBundle.encryptedPaymentHeader.publicKeyHash |
Hash of the X.509-encoded public key bytes of the merchant’s certificate |
signature | paymentMethodType.applepay.encryptedPaymentBundle.signature |
Signature of the payment and header data. Note: The signature includes the signing certificate, its intermediate certificate authority (CA) certificate, and information regarding the signing algorithm. |
transactionId | paymentMethodType.applepay.encryptedPaymentBundle.encryptedPaymentHeader.walletTransactionId |
Transaction identifier, generated on the device |
applicationData | paymentMethodType.applepay.encryptedPaymentBundle.encryptedPaymentHeader.walletApplicationData |
Hash of the applicationData property of the original request submitted by the merchant to wallet provider for transactions that initiate in apps. |
version | paymentMethodType.applepay.encryptedPaymentBundle.protocolVersion |
Version information about the payment token. Note: The token uses EC_v1 for ECC-encrypted data, and RSA_v1 for RSA-encrypted data. |
The following example is an Apple Pay DPAN or MPAN encryptedPayload
payment request to the Online Payments API:
HTTP method: POST
Endpoint: /payments
{
"paymentMethodType": {
"applepay": {
"latLong": "1,1",
"encryptedPaymentBundle": {
"encryptedPayload": "MWRE1bbBoR9a6vXaoLXEkNCKskqNgzPaNlfB00fWOqs+LS8BsJhyvod0koenorWEQCRv41oViq70dvx7ilArOhvlCTRR1RdQyIlksZKuRF0IzyCqdA7bXALnBq/8SQQFBKM+TEmP9UEwD21l5RzKZcZMw3xidKoRjyVZiyauG4Oaea91dycFZ4EAg2st//rEj6fN+do4BAhl+Wqcg7BkiWIe30Jze2jJKrRCJxC5prRQ6Gh8C9rqeoVVCeqxIZf8p/WTKsVr1qWZ28/EviP6+VBwR7OcZyAp4er8jfYf3oQcuN/N8119d2JSwzAmGyXrmw==",
"encryptedPaymentHeader": {
"ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExuTcV20bPh6FjIig0rwvPfyAWoYVuu+GL3E9KyFFVBQe0FoXN8gH8r/ae57prtjA0SIFXE8gY8pzsSLgPs8A9w==",
"publicKeyHash": "7LPgkHSCBXf/xq4zv59spY9j35fqgkfz7AcUYsASyS4=",
"walletTransactionId": "27ed51c15512070be3058fb6070c2e63ddd69ca2e75b3187e2af6faf92ba2901",
"walletApplicationData": "27ed51c15512070be3058fb6070c2e63ddd69ca2e75b3187e2af6faf92ba2901"
},
"signature": "MIAGCSqGSIb3DQEHAqCAMIACAQExDTALBglghkgBZQMEAgEwgAYJKoZIhvcNAQcBAACggDCCAWIwggEIoAMCAQICBgFdZTj7ATAKBggqhkjOPQQDAzA4MSEwHwYDVQQDDBhQYXltZW50ZWNoIE1vYmlsZSBTREsgQ0ExEzARBgNVBAoMClBheW1lbnRlY2gwHhcNMTcwNzIxMTI1NjU5WhcNMzQwNzIxMTI1NjU5WjA4MSEwHwYDVQQDDBhQYXltZW50ZWNoIE1vYmlsZSBTREsgQ0ExEzARBgNVBAoMClBheW1lbnRlY2gwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARCrlzB/UN22ZXpHk7iJqI8T7h0J8QOIyCohcBd8Dh+p0GPeGrDpiyy8LNyQ/bb9jNj+6aVJfeta9eWsOPBp69lMAoGCCqGSM49BAMDA0gAMEUCIQCL3CzFvN8IHbx9DIYtWSWvdwleW2OkbuRimP9LzW9ReAIgTuGzzqlu2EfBpSesfNt78fgAE04OYKHGBq4/Larj540AADGCAUIwggE+AgEBMEIwODEhMB8GA1UEAwwYUGF5bWVudGVjaCBNb2JpbGUgU0RLIENBMRMwEQYDVQQKDApQYXltZW50ZWNoAgYBXWU4+wEwCwYJYIZIAWUDBAIBoIGTMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTI0MDMxOTE1MjgwN1owKAYJKoZIhvcNAQk0MRswGTALBglghkgBZQMEAgGhCgYIKoZIzj0EAwIwLwYJKoZIhvcNAQkEMSIEILIY0263HyS7qPTL7X+hEaFAiE4ypmDpvmvO3DCRKqOOMAoGCCqGSM49BAMCBEYwRAIgFPRiS/H7PHJLT8kdfNUGnUL5YFSmj9MlTwmwV+X5t+ECIDBVTShzAoUaN5O3YBdNxXrQkFjhKx7qm5FXYsfZZ5xAAAAAAAAA",
"protocolVersion": "EC_v1"
}
}
}
}
Response:
{
"paymentMethodType": {
"card": {
"walletProvider": "APPLE_PAY",
"cardType": "MC",
"cardTypeName": "MASTERCARD",
"maskedAccountNumber": "222241XXXXXX2531",
"cardTypeIndicators": {
"issuanceCountryCode": "USA",
"isLevel3Eligible": true,
"cardTypeCategory": "PREPAID_CARD",
"isDurbinRegulated": true,
"cardProductTypes": [
"COMMERCIAL",
"PAYROLL",
"HEALTHCARE",
"AFFLUENT_CATEGORY",
"SIGNATURE_DEBIT",
"PINLESS_DEBIT",
"PREPAID_RELOADABLE"
]
},
"networkResponse": {
"addressVerificationResult": "ADDRESS_POSTALCODE_MATCH",
"addressVerificationResultCode": "I3",
"cardVerificationResult": "MATCH",
"cardVerificationResultCode": "M",
"networkTransactionId": "012097692169110",
"networkResponseCode": "00"
}
}
}
}
Payment parameters
The following fields are required fields within the paymentMethodType.applepay
object:
latLong
- encryptedPaymentBundle.
encryptedPayload
- encryptedPaymentBundle.encryptedPaymentHeader.
ephemeralPublicKey
- encryptedPaymentBundle.encryptedPaymentHeader.
publicKeyHash
- encryptedPaymentBundle. encryptedPaymentHeader.
walletTransactionId
- encryptedPaymentBundle. encryptedPaymentHeader.
walletApplicationData
- encryptedPaymentBundle.
protocolVersion
- encryptedPaymentBundle.
signature