Apple Pay decrypted

Take a payment or make a payout with Apple Pay decrypted.


Take a payment

To send a payment request with a decrypted payload, you must follow the instructions on Apple Pay's developer site first.

Once integrated with Apple Pay, you can use our Payments API to take a payment. Use our customerInitiatedTransactions endpoint or merchantInitiatedTransactions endpoint to submit your request.

Example request

Response
application/vnd.worldpay.payments-v7+json

Payment authorization for GBP 2.50 with a successful outcome

{ "outcome": "authorized", "riskFactors": [ { "type": "cvc", "risk": "notSupplied" }, { "type": "avs", "risk": "notChecked", "detail": "address" }, { "type": "avs", "risk": "notChecked", "detail": "postcode" } ], "issuer": { "authorizationCode": "T75725" }, "scheme": { "reference": "MCCOLXT1C0104 " }, "paymentInstrument": { "type": "card/plain+masked", "cardBin": "555555", "lastFour": "4444", "category": "consumer", "countryCode": "GB", "expiryDate": { "month": 9, "year": 2029 }, "cardBrand": "mastercard", "fundingType": "credit", "issuerName": "AN ISSUING BANK LTD", "paymentAccountReference": "Q1HJZ28RKA1EBL470G9XYG90R5D3E" }, "_links": { "cardPayments:cancel": { "href": "https://try.access.worldpay.com/payments/authorizations/cancellations/linkData" }, "cardPayments:partialCancel": { "href": "https://try.access.worldpay.com/payments/authorizations/cancellations/partials/linkData" }, "cardPayments:settle": { "href": "https://try.access.worldpay.com/payments/settlements/full/linkData" }, "cardPayments:partialSettle": { "href": "https://try.access.worldpay.com/payments/settlements/partials/linkData" }, "cardPayments:events": { "href": "https://try.access.worldpay.com/payments/events/linkData" }, "curies": [ { "name": "cardPayments", "href": "https://try.access.worldpay.com/rels/cardPayments/{rel}", "templated": true } ] } }

Example response

{
    "outcome": "authorized",
    "paymentId": "828474a3-f175-480d-a98b-835e8a1bef75",
    "commandId": "cmdjBpN_UXthG8alrwjQDQbU0",
    "riskFactors": [
        {
            "type": "cvc",
            "risk": "notSupplied"
        },
        {
            "type": "avs",
            "risk": "notSupplied",
            "detail": "address"
        },
        {
            "type": "avs",
            "risk": "notSupplied",
            "detail": "postcode"
        }
    ],
    "issuer": {
        "authorizationCode": "225085"
    },
    "scheme": {
        "reference": "060720116005062"
    },
    "paymentInstrument": {
        "type": "card/network",
        "cardBin": "444433",
        "expiryDate": {
            "month": 5,
            "year": 2035
        },
        "paymentAccountReference": "Q1HJZ28RKA1EBL470G9XYG90R5D3E"
    },
    "_links": {
        "cardPayments:cancel": {
            "href": "https://try.access.worldpay.com/payments/authorizations/cancellations/eyJrIjoiazNhYjYzMiIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.sN:g8wd64bwkbrp0md+bPxcanBnk2zLdsIqSa1pR99GeDrCwEtsymFb5gQw9WlrStDTK3eIWPy93y:7njc4649JSrU7+vFDl1J36+cwOkX0lW4Z+fnZKMutoUGX3m1:mbq+gijbswid1YTI700ExzvgMY:fWcGQofGFMpaBDwtbX26OlR2BlA6Rrq6BOaIho:G:6OJpUdnvqbWL:THJeE+srgCaGKzEty4LpcH2OxhODOmSpQ1WgKUNrqV7rX4t+deDdVismwl4hPYJYC:tzrQxb3dMMHI4StxAiTtL5+GU8RUUMtUdhVEpcUN1AkWs6Z0CDUVz1hPk8AA2Gee9zZNSxO382cm+Np0gFBXgXyS9UjNCSCUl0kzGO8y3R240Bd0Cr545KDaJzQ0dLiQKI7NB2ohgV+kpSs5:is6oe2DKFSC8A9INCTEB+xCgs4drbkWJ7u3iDfQTaER8HSg+HBg=="
        },
        "cardPayments:partialCancel": {
            "href": "https://try.access.worldpay.com/payments/authorizations/cancellations/partials/eyJrIjoiazNhYjYzMiIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.sN:g8wd64bwkbrp0md+bPxcanBnk2zLdsIqSa1pR99GeDrCwEtsymFb5gQw9WlrStDTK3eIWPy93y:7njc4649JSrU7+vFDl1J36+cwOkX0lW4Z+fnZKMutoUGX3m1:mbq+gijbswid1YTI700ExzvgMY:fWcGQofGFMpaBDwtbX26OlR2BlA6Rrq6BOaIho:G:6OJpUdnvqbWL:THJeE+srgCaGKzEty4LpcH2OxhODOmSpQ1WgKUNrqV7rX4t+deDdVismwl4hPYJYC:tzrQxb3dMMHI4StxAiTtL5+GU8RUUMtUdhVEpcUN1AkWs6Z0CDUVz1hPk8AA2Gee9zZNSxO382cm+Np0gFBXgXyS9UjNCSCUl0kzGO8y3R240Bd0Cr545KDaJzQ0dLiQKI7NB2ohgV+kpSs5:is6oe2DKFSC8A9INCTEB+xCgs4drbkWJ7u3iDfQTaER8HSg+HBg=="
        },
        "cardPayments:settle": {
            "href": "https://try.access.worldpay.com/payments/settlements/full/eyJrIjoiazNhYjYzMiIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.sN:g8wd64bwkbrp0md+bPxcanBnk2zLdsIqSa1pR99GeDrCwEtsymFb5gQw9WlrStDTK3eIWPy93y:7njc4649JSrU7+vFDl1J36+cwOkX0lW4Z+fnZKMutoUGX3m1:mbq+gijbswid1YTI700ExzvgMY:fWcGQofGFMpaBDwtbX26OlR2BlA6Rrq6BOaIho:G:6OJpUdnvqbWL:THJeE+srgCaGKzEty4LpcH2OxhODOmSpQ1WgKUNrqV7rX4t+deDdVismwl4hPYJYC:tzrQxb3dMMHI4StxAiTtL5+GU8RUUMtUdhVEpcUN1AkWs6Z0CDUVz1hPk8AA2Gee9zZNSxO382cm+Np0gFBXgXyS9UjNCSCUl0kzGO8y3R240Bd0Cr545KDaJzQ0dLiQKI7NB2ohgV+kpSs5:is6oe2DKFSC8A9INCTEB+xCgs4drbkWJ7u3iDfQTaER8HSg+HBg=="
        },
        "cardPayments:partialSettle": {
            "href": "https://try.access.worldpay.com/payments/settlements/partials/eyJrIjoiazNhYjYzMiIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.sN:g8wd64bwkbrp0md+bPxcanBnk2zLdsIqSa1pR99GeDrCwEtsymFb5gQw9WlrStDTK3eIWPy93y:7njc4649JSrU7+vFDl1J36+cwOkX0lW4Z+fnZKMutoUGX3m1:mbq+gijbswid1YTI700ExzvgMY:fWcGQofGFMpaBDwtbX26OlR2BlA6Rrq6BOaIho:G:6OJpUdnvqbWL:THJeE+srgCaGKzEty4LpcH2OxhODOmSpQ1WgKUNrqV7rX4t+deDdVismwl4hPYJYC:tzrQxb3dMMHI4StxAiTtL5+GU8RUUMtUdhVEpcUN1AkWs6Z0CDUVz1hPk8AA2Gee9zZNSxO382cm+Np0gFBXgXyS9UjNCSCUl0kzGO8y3R240Bd0Cr545KDaJzQ0dLiQKI7NB2ohgV+kpSs5:is6oe2DKFSC8A9INCTEB+xCgs4drbkWJ7u3iDfQTaER8HSg+HBg=="
        },
        "cardPayments:reverse": {
            "href": "https://try.access.worldpay.com/payments/authorizations/reversals/eyJrIjoiazNhYjYzMiIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.sN:g8wd64bwkbrp0md+bPxcanBnk2zLdsIqSa1pR99GeDrCwEtsymFb5gQw9WlrStDTK3eIWPy93y:7njc4649JSrU7+vFDl1J36+cwOkX0lW4Z+fnZKMutoUGX3m1:mbq+gijbswid1YTI700ExzvgMY:fWcGQofGFMpaBDwtbX26OlR2BlA6Rrq6BOaIho:G:6OJpUdnvqbWL:THJeE+srgCaGKzEty4LpcH2OxhODOmSpQ1WgKUNrqV7rX4t+deDdVismwl4hPYJYC:tzrQxb3dMMHI4StxAiTtL5+GU8RUUMtUdhVEpcUN1AkWs6Z0CDUVz1hPk8AA2Gee9zZNSxO382cm+Np0gFBXgXyS9UjNCSCUl0kzGO8y3R240Bd0Cr545KDaJzQ0dLiQKI7NB2ohgV+kpSs5:is6oe2DKFSC8A9INCTEB+xCgs4drbkWJ7u3iDfQTaER8HSg+HBg=="
        },
        "cardPayments:events": {
            "href": "https://try.access.worldpay.com/payments/events/eyJrIjoiazNhYjYzMiIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.sN:g8wd64bwkbrp0md+bPxcanBnk2zLdsIqSa1pR99GeDrCwEtsymFb5gQw9WlrStDTK3eIWPy93y:7njc4649JSrU7+vFDl1J36+cwOkX0lW4Z+fnZKMutoUGX3m1:mbq+gijbswid1YTI700ExzvgMY:fWcGQofGFMpaBDwtbX26OlR2BlA6Rrq6BOaIho:G:6OJpUdnvqbWL:THJeE+srgCaGKzEty4LpcH2OxhODOmSpQ1WgKUNrqV7rX4t+deDdVismwl4hPYJYC:tzrQxb3dMMHI4StxAiTtL5+GU8RUUMtUdhVEpcUN1AkWs6Z0CDUVz1hPk8AA2Gee9zZNSxO382cm+Np0gFBXgXyS9UjNCSCUl0kzGO8y3R240Bd0Cr545KDaJzQ0dLiQKI7NB2ohgV+kpSs5:is6oe2DKFSC8A9INCTEB+xCgs4drbkWJ7u3iDfQTaER8HSg+HBg=="
        },
        "curies": [
            {
                "name": "cardPayments",
                "href": "https://try.access.worldpay.com/rels/cardPayments/{rel}",
                "templated": true
            }
        ]
    }
}

For more information on how to take a payment with our Apple Pay decrypted payment instrument refer to our Card Payments API documentation for customerInitiatedTransactions or merchantInitiatedTransactions payments.

Set up repeat payments

You can use decrypted Apple Pay to both set up repeat payments, and take subsequent Merchant Initiated Transactions (MITs).

Include the recurringPaymentRequest modifier in your Apple Pay payment request. This allows you to include additional information within the Apple Pay form relating to the payment agreement you are making with your customer, such as terms and conditions and billing frequency.

Decrypt the payment data and include the customerAgreement object in your Customer Initiated Transactions Apple Pay request to Worldpay:

{
...
  "instruction": {
    ...
    "customerAgreement": {
      "type": "subscription",
      "storedCardUsage": "first"
    }
  }
}

Apple Pay Merchant Tokens (MPAN)

When you use the recurringPaymentRequest property, Apple issues a merchant token (sometimes referred to as a merchant PAN or MPAN).

Merchant tokens are specific to the merchant, rather than to a particular iOS device, meaning that they remain valid even if your customer upgrades their iOS device and removes the card from their Apple wallet on their old device.

Submit the merchant token number in paymentInstrument.tokenNumber with paymentInstrument.type set to card/networkToken+applepay in your customerInitiatedTransactions and merchantInitiatedTransactions requests.

If the card brand does not support merchant-scoped tokens, Apple issues a regular device-specific token for the payment request.


Make a payout

To send a payout request with a decrypted payload, you must follow the instructions on Apple Pay's developer site first.

You can either send a basicDisbursement or a fastAccess request to make a payout.

For parameter descriptions and possible outcomes refer to our Card Payouts documentation.