> ## Documentation Index
> Fetch the complete documentation index at: https://developers.epayclub.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Apple Pay

> Collect payments from Apple Pay wallets.

Accept payments from customers using Apple Pay, the digital wallet built into Apple devices. Customers authenticate the charge using Face ID, Touch ID, or their device passcode — no card details are entered manually.

<Info>
  This payment method only supports one-time (non-recurring) payments. It is available on Safari on iOS, iPadOS, and macOS devices with Apple Pay configured.
</Info>

## Payment flow

Several steps occur between collecting the customer's billing information and completing the charge.

<Info>
  We'll proceed assuming you've already set up a customer order. If you need to create one, you'll find the steps [here](/orders/create-orders).
</Info>

After creating the order, follow these steps to complete the Apple Pay charge.

1. [Collect](#apple-pay-customer-information) the customer's billing information.
2. [Encrypt](/api-basics/encryption) sensitive data within your request.
3. Redirect the customer to the Apple Pay checkout page to authorise the charge.
4. Confirm the payment and inform the customer of its outcome.

### Apple Pay Customer Information

Present the customer with a form to gather their billing details. These are required to initiate the transaction:

| Customer information | Parameter                          | Example       | Required |
| :------------------- | :--------------------------------- | :------------ | :------- |
| Country              | `country`                          | US            | Yes      |
| Customer Name        | `card.billingAddress.customerName` | Jane Appleton | Yes      |
| House Number         | `card.billingAddress.HouseNumber`  | 12            | Yes      |
| Street               | `card.billingAddress.street`       | Infinite Loop | Yes      |
| City                 | `card.billingAddress.city`         | Cupertino     | Yes      |
| State                | `card.billingAddress.state`        | California    | Yes      |
| Country              | `card.billingAddress.country`      | US            | Yes      |
| Zip code             | `card.billingAddress.zipCode`      | 95014         | Yes      |
| Phone Number         | `card.billingAddress.PhoneNumber`  | +14085551234  | Yes      |

Combine the billing data, order reference, and `paymentoption`. Encrypt the request before sending it to the pay order [endpoint](/api-reference/orders/pay).

<CodeGroup>
  ```json Example (Unencrypted) theme={null}
  {
      "reference": "12345678",
      "paymentoption": "APPLEPAY",
      "country": "US",
      "card": {
          "billingAddress": {
              "customerName": "Jane Appleton",
              "HouseNumber": "12",
              "street": "Infinite Loop",
              "city": "Cupertino",
              "state": "California",
              "country": "US",
              "zipCode": "95014",
              "PhoneNumber": "+14085551234"
          }
      }
  }
  ```

  ```json Example (Encrypted) theme={null}
  {
    "data": "B9pQJ1HoxybgfjNnEro+26w7lQZ6jriF3AFiUeGH2Ggacn6cF0srUlqiHEXeEncJcMw6ThDobjuS+AsmvhNfvGPGMddjbt5rcK2JrUnUI4cHk0XebJKoNnjEqivcyq0UKEMdYOLd6mYZtvKu5FMlpz0Lo0aMY49pnYvUGLSsCf/wOhlPx9PHgQDXptT+WBJcO3lzeD8O0S4IVSWPCWPLi7GhGlqhZpheEi1FHq39TCHk12hL3sqkkIktZIkkQVAe8AkwZGhy/CMJZrTzU6IXZr2ulT7mJenZljSk66m0pARcUqwMw/+5PEPECDo8SX3IkX2hmym02pGuWZeHE9ONWcaW7h8UIroQ/+kThz/RtP/UMiK3596cij66JcW+RcXKPiqNKysskcnaOlQFIFuhEiAczimLgd320RrQzehaw1C33UGsCzAG1p2EnDthjTF63BZtEhVlu9kN7qtFCz9AvojZeaZFKOxpJJ0usfwl9Hq5oAa56AFt/3IIsvqrAktTOyMgQ/jGQ6uhRYpA6UAH0CcYyv7L99hgVtRTXAxA/rpCtY7aTR9Pjxb5Lt1IV0Q1V8fWxAv0yY+ss07qeiSIsccsdJiN4LaMx3RvmDlu54XF68w51L34hOCDj/NBoPVUZrSaCJK2GPJ6CjOHI8q2/U2TkU+y+a80XCAC/rgqGhw="
  }
  ```
</CodeGroup>

Upon receiving your request, we will return a successful response containing a redirect URL for the Apple Pay checkout page.

```json 200 OK [expandable] theme={null}
{
    "data": {
        "paymentDetail": {
            "redirectUrl": "https://path/to/apple/pay/checkout?ref=EPCLB-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            "recipientAccount": null,
            "paymentReference": "CP1B3F264C-8DB1-47C1-A50E-6494FB927D51"
        },
        "bankTransferDetails": null,
        "orderPayment": {
            "orderId": 629,
            "orderPaymentReference": "PGW-PAYREF-D1C2A0B0E32B4F65BBCBAE90G234G533",
            "currency": "USD",
            "statusId": 2,
            "orderPaymentResponseCode": "02",
            "orderPaymentResponseMessage": "pending-authentication",
            "orderPaymentInstrument": null,
            "remarks": "Order payment initiated",
            "totalAmount": 100.00,
            "fee": 0.00
        }
    },
    "status": "success",
    "statusCode": "02",
    "message": "pending-authentication"
}
```

### Authorising the Payment

Redirect the customer to the `paymentDetail.redirectUrl`. On this page, the customer is prompted by their Apple device to authenticate the payment using **Face ID**, **Touch ID**, or their device passcode.

Once the customer authenticates, Apple Pay processes the transaction and EPayClub is notified of the outcome. You will receive a webhook containing the final transaction status regardless of whether the payment was approved or declined.

### Verifying the Payment

<Info>
  [Read](/orders/verify-orders) the transaction verification section to learn how to verify your Apple Pay transactions.
</Info>

## Testing your integration

<Warning>
  Kindly [contact](mailto:support@epayclub.com) the support team to enable Apple Pay testing on your account.
</Warning>

Follow these guidelines to successfully test your Apple Pay integration:

1. Use an Apple device running Safari with a test Apple Pay card configured in Wallet.
2. Ensure the billing address details match the country of the test card.
3. Use test credentials provided by the support team to complete the payment on the hosted page.
4. Verify the final transaction status using the [order verification](/orders/verify-orders) endpoint or by checking the webhook payload delivered to your configured webhook URL.
