---
title: "Pre-Authorized Debit Canada for API only"
description: "Add Pre-Authorized Debit Canada (PADs Canada) to your API-only integration."
url: "https://docs.adyen.com/payment-methods/pad/api-only"
source_url: "https://docs.adyen.com/payment-methods/pad/api-only.md"
canonical: "https://docs.adyen.com/payment-methods/pad/api-only"
last_modified: "2026-06-01T15:33:15+02:00"
language: "en"
---

# Pre-Authorized Debit Canada for API only

Add Pre-Authorized Debit Canada (PADs Canada) to your API-only integration.

[View source](/payment-methods/pad/api-only.md)

You can add Pre-Authorized Debit Canada (PADs Canada) to your existing integration. The following instructions show only what you must add to your integration specifically for PADs Canada.

If an instruction on this page corresponds with a step in the main integration guide, it includes a link to that corresponding step of the main integration guide.

## Requirements

| Requirement          | Description                                                                                                                                                                                                                                                         |   |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
| **Integration type** | Make sure that you have an existing [API-only integration](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only).                                                                                                            |   |
| **Checkout API**     | Make sure that you use Checkout API v69 or later.                                                                                                                                                                                                                   |   |
| **Webhooks**         | Subscribe to [Direct Debit Notice of Change Notification](https://docs.adyen.com/api-explorer/Webhooks/1/post/DIRECT_DEBIT_NOTICE_OF_CHANGE_NOTIFICATION) webhooks to receive a notification when a shopper has outdated banking details.                           |   |
| **Setup steps**      | Before you begin:- Contact our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) to add PADs Canada in your Customer Area.
- Make sure you have a way to [get a mandate](/payment-methods/pad#mandate) (consent) from the shopper. |   |

## How it works

1. The shopper selects PADs Canada as the payment method.
2. The shopper enters their details in the [payment form that you build](#build-your-payment-form).
3. You collect the shopper's mandate (consent) for the PAD.
4. When you make the payment request, you [include additional information about the shopper's bank account](#add-additional-parameters).

## Build your payment form

Include fields to collect the following information from your shopper in the payment form.

| Field                | Description                                                                                                                                            |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Bank account number  | The Canadian bank account number from which the payment will be debited. Format: numeric. Minimum length: 7 Maximum length: 12 Example: `123456789012` |
| Bank location ID     | The five-digit code that identifies the branch where the account was opened. Example: `16001`                                                          |
| Bank code            | The three-digit code that identifies the bank. Example: `621`                                                                                          |
| Account owner's name | "John Smith"                                                                                                                                           |

You also need to obtain the shopper's [mandate](/payment-methods/pad#mandate).

## Get PADs Canada as an available payment method

When you make the [/paymentMethods](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods) to [get available payment methods](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only#get-available-payment-methods), specify the following so that PADs Canada is included in the response.

| Parameter                                                                                                          | Values      |
| ------------------------------------------------------------------------------------------------------------------ | ----------- |
| [countryCode](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods#request-countryCode)         | ****CA****  |
| [amount.currency](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods#request-amount-currency) | ****CAD**** |

**Example request for available payment methods**

```bash
curl https://checkout-test.adyen.com/v72/paymentMethods \
-H 'x-api-key: ADYEN_API_KEY' \
-H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \
-H 'content-type: application/json' \
-X POST
-d '{
   "merchantAccount": "ADYEN_MERCHANT_ACCOUNT",
   "countryCode": "CA",
   "amount": {
      "currency": "CAD",
	  "value": 1000
   },
   "shopperLocale": "en-US"
}'
```

**Example response with PADs Canada available**

```json
{
    "paymentMethods": [
        {
            "name": "PAD Canada",
            "type": "eft_directdebit_CA"
        }
    ]
}
```

## Add additional parameters to your /payments request

When you [make a payment](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only#make-a-payment), add the following parameters:

| Parameter                                                                                                  | Required                                                                                    | Description                                                                                                                                                                                                                                                                                                                                                                                                     |
| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `paymentMethod.type`                                                                                       | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **eft\_directdebit\_CA**                                                                                                                                                                                                                                                                                                                                                                                        |
| `paymentMethod.bankAccountNumber`                                                                          | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The Canadian bank account number.                                                                                                                                                                                                                                                                                                                                                                               |
| `paymentMethod.bankLocationId`                                                                             | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The five-digit code that identifies the branch where the account was opened.                                                                                                                                                                                                                                                                                                                                    |
| `paymentMethod.bankCode`                                                                                   | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The three-digit code that identifies the bank.                                                                                                                                                                                                                                                                                                                                                                  |
| `paymentMethod.ownerName`                                                                                  | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The name on the bank account.                                                                                                                                                                                                                                                                                                                                                                                   |
| [billingAddress](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-billingAddress) |                                                                                             | The account owner's address information.                                                                                                                                                                                                                                                                                                                                                                        |
| [Tokenization parameters](/online-payments/tokenization/create-tokens)                                     |                                                                                             | We do not recommend using PADs for one-off payments. Follow the instructions in [Create tokens](/online-payments/tokenization/create-tokens) to create a token with the shopper's initial payment, and then use that token in the subsequent recurring PADs. To create a token, add the tokenization parameters `recurringProcessingModel`, `shopperInteraction`, `shopperReference`, and `storePaymentMethod`. |

Note that you need to [get a mandate](/payment-methods/pad/#mandate) (consent) from the shopper for the payment or series of recurring payments.

**Example payment request with tokenization**

```bash
curl https://checkout-test.adyen.com/v72/payments \
-H 'x-api-key: ADYEN_API_KEY' \
-H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \
-H 'content-type: application/json' \
-X POST
-d '{
   "amount":{
      "currency":"CAD",
      "value":"1000"
   },
   "merchantAccount":"ADYEN_MERCHANT_ACCOUNT",
   "paymentMethod":{
      "type":"eft_directdebit_CA",
      "bankAccountNumber":"1234567890",
      "bankLocationId":"16001",
      "bankCode":"621",
      "ownerName":"John Smith"
   },
   "reference":"YOUR_ORDER_NUMBER",
   "returnUrl":"https://your-company.com/...",
   "billingAddress":{
      "houseNumberOrName":"50",
      "street":"Test Street",
      "city":"Amsterdam",
      "stateOrProvince":"WW",
      "postalCode":"12010",
      "country":"CA"
   },
   "recurringProcessingModel":"Subscription",
   "shopperInteraction": "Ecommerce",
   "shopperReference":"YOUR_UNIQUE_SHOPPER_ID",
   "storePaymentMethod": "true"
}'
```

In the [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) response, note the following:

* `additionalData`: an object with the following details to save in your system.

  * `eft_directdebit_CA.mandateId`: the ID we generated for the shopper's PAD agreement.
  * `eft_directdebit_CA.dateOfSignature`: the date of the initial payment request, which is considered to be the date that the shopper accepted the PAD agreement.
  * `tokenization.storedPaymentMethodId`: the token to use in subsequent recurring PADs.
  * `tokenization.shopperReference`: your unique ID for the shopper, to use in subsequent recurring PADs.

  The `tokenization` response parameters are only included if the payment request contained the parameters to create a token, and in your Customer Area under **Developers** > **Additional data** you enabled **Recurring details**.

**Example response for a successful payment**

```json
{
    "amount": {
        "currency": "CAD",
        "value": 1000
    },
    "resultCode": "Authorised",
    "paymentMethod": {
        "type": "eft_directdebit_CA"
    },
    "additionalData": {
        "eft_directdebit_CA.mandateId": "R6TK93X6ZB9H6MCZ",
        "eft_directdebit_CA.sequenceType": "First",
        "eft_directdebit_CA.dateOfSignature": "2024-12-04",
        "tokenization.shopperReference": "YOUR_UNIQUE_SHOPPER_ID",
        "tokenization.storedPaymentMethodId": "THHXC44L6XW2F8CZ"
    },
    "pspReference": "R6TK93X6ZB9H6MCZ",
    "merchantReference": "YOUR_ORDER_NUMBER"
}
```

## Present the payment result

Use the [resultCode](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#responses-200-resultCode) that you received in the [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) response to present the payment result to your shopper.

The `resultCode` values you can receive for PAD are:

| resultCode     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Action to take                                                             |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| **Authorised** | The payment has been successfully received by Adyen. It may take up to five business days to know whether the payment was authorized by the bank. If the payment is successful, it will appear in the [Settlement Detail Report](/reporting/settlement-reconciliation/transaction-level/settlement-details-report/). If it fails, you will receive a [NOTIFICATION\_OF\_CHARGEBACK](https://docs.adyen.com/api-explorer/Webhooks/latest/post/NOTIFICATION_OF_CHARGEBACK). | Inform the shopper that the payment was successful.                        |
| **Refused**    | The payment was refused.                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Ask the shopper to try the payment again using a different payment method. |

## Recurring payments

Pre-Authorized Debit Canada supports tokenization of the shopper's payment details for recurring transactions. Due to the risk of chargebacks, we do not recommend using PADs for one-off payments.

You are required to obtain a [mandate](/payment-methods/pad/#mandate) from the shopper if you intend to make future recurring payments.

To make recurring payments, refer to [Tokenization](/online-payments/tokenization) to:

* Enable the Recurring tokens life cycle events webhook.
* Create a token through the initial payment (see [Add additional parameters](#add-additional-parameters) above).
* Pay with the token in subsequent payments. Note that you do not need to include the mandate ID in the recurring payment request.
* Manage tokens.

## Test and go live

You can test Pre-Authorized Debit Canada payments as well as chargebacks.

### Test the payment flow

Test your integration by making test payments using the `bankAccountNumber`, `bankLocationId`, `bankCode` and `ownerName` of a real Canadian bank account. That account will not be debited.

You can also use the following test credentials:

* Account holder name: **TEST**
* Account number: **00257596**
* Institution number: **002**
* Transit number: **57596**

### Test the chargeback flow

You can test the return flow by making test payments with an `ownerName` value that consists of **chargeback:** followed by a PAD return [reason code](#return-reason-code). For example, **chargeback:05**. The other account details to use are the same as when testing payments.

Note that in the test environment the return flow goes directly to the Chargeback stage.

#### Return reason codes

Use the following table with the most common PAD return reason codes to determine what the code means and if it is allowed to retry a returned payment.

| Reason code | Reason                                        | Description / Resolution                                                                                                                                                                                                                                                                                                                                                   | Retry?                                                                                                 |
| ----------- | --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| 01          | NSF (Debit Only)                              | Non-sufficient funds (NSF). You can retry the transaction once within 30 days of the original authorization date.                                                                                                                                                                                                                                                          | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") **max 1x** |
| 02          | Account not found                             | The provided account information is incorrect. Retrying the transaction is not allowed.                                                                                                                                                                                                                                                                                    | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 03          | Payment Stopped/Recalled                      | The customer instructed their bank to not honor a payment they previously authorized. Resolve the issue with the customer. When initiating a new transaction, get a new PAD agreement from the customer. If you are going to debit the same account, make sure the customer's bank stops blocking transactions from your company to this account.                          | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 05          | Account Closed                                | The customer's bank account has been closed. Retrying the transaction is not allowed.                                                                                                                                                                                                                                                                                      | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 07          | No Debit Allowed                              | The provided bank account cannot be used for EFT PADs. Ask the customer for permission to charge a different, EFT PAD-enabled bank account.                                                                                                                                                                                                                                | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 08          | Funds Not Cleared (Debit Only)                | Insufficient funds. You can retry the transaction once within 30 days of the original authorization date.                                                                                                                                                                                                                                                                  | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") **max 1x** |
| 09          | Currency/Account Mismatch                     | The transaction currency does not match the currency of the bank account. Retrying the transaction is not allowed.                                                                                                                                                                                                                                                         | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 10          | Payor/Payee Deceased                          | Contact the bank of the deceased account holder or account beneficiary.                                                                                                                                                                                                                                                                                                    | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 11          | Account Frozen                                | Contact your customer to obtain a different form of payment. The bank account cannot be used while it is frozen. This return code should be a red flag for your business. If you see this code, do your due diligence around verifying the identity of your customer.                                                                                                      | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 12          | Invalid/Incorrect Account No.                 | The provided account number is incorrect. Retrying the transaction is not allowed.                                                                                                                                                                                                                                                                                         | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 14          | Incorrect Payor/Payee Name                    | The provided name of the account holder or beneficiary is incorrect. Retrying the transaction is not allowed.                                                                                                                                                                                                                                                              | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 15          | No Agreement Existed                          | The customer informed their bank they did not give authorization for the transaction. Suspend any recurring transactions and resolve the issue with the customer. If you are going to debit the same account for a new transaction, make sure the customer's bank stops blocking transactions from your company to this account.                                           | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 16          | Not According to Agreement - Personal         | The customer informed their bank that the payment is not in accordance with their personal PAD agreement. Suspend any recurring transactions and resolve the issue with the customer.                                                                                                                                                                                      | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 17          | Agreement Revoked - Personal                  | The customer informed their bank they revoked their personal PAD agreement for the transaction. Suspend any recurring transactions and resolve the issue with the customer. If you are going to debit the same account for a new transaction, make sure the customer's bank stops blocking transactions from your company to this account.                                 | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 18          | No Confirmation/Pre-Notification - Personal   | The consumer you tried to charge informed their bank they did not receive a confirmation or notification about the transaction. Suspend any recurring transactions and resolve the issue with the customer. If you are going to debit the same account for a new transaction, make sure the customer's bank stops blocking transactions from your company to this account. | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 19          | Not According to Agreement - Business         | The customer informed their bank that the payment is not in accordance with their business PAD agreement. Suspend any recurring transactions and resolve the issue with the customer.                                                                                                                                                                                      | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 20          | Agreement Revoked - Business                  | The customer informed their bank they revoked their business PAD agreement for the transaction. Suspend any recurring transactions and resolve the issue with the customer. If you are going to debit the same account for a new transaction, make sure the customer's bank stops blocking transactions from your company to this account.                                 | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 21          | No Confirmation/Pre-Notification - Business   | The company you tried to charge informed their bank they did not receive a confirmation or notification about the transaction. Suspend any recurring transactions and resolve the issue with the customer. If you are going to debit the same account for a new transaction, make sure the customer's bank stops blocking transactions from your company to this account.  | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 82          | Interbank Reject - Invalid Institution Number | The bank's institution number and/or branch transit number is invalid, or the bank does not accept PADs.                                                                                                                                                                                                                                                                   | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |
| 90          | Institution in Default                        | The customer's bank has failed to fulfill its obligations. Retrying the transaction is not allowed.                                                                                                                                                                                                                                                                        | ![-x-](/user/data/smileys/emoji/x.png "-x-")                                                           |

### Go live

Before going live, contact our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) to add PADs Canada in your live Customer Area.

## See also

* [API-only integration guide](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only)
* [Webhooks](/development-resources/webhooks)
* [Tokenization](/online-payments/tokenization)
* [API Explorer](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/overview)
