---
title: "ACH Direct Debit iOS Component"
description: "Add ACH Direct Debit to your Components integration."
url: "https://docs.adyen.com/payment-methods/ach-direct-debit/ios-component"
source_url: "https://docs.adyen.com/payment-methods/ach-direct-debit/ios-component.md"
canonical: "https://docs.adyen.com/payment-methods/ach-direct-debit/ios-component"
last_modified: "2026-06-01T15:33:15+02:00"
language: "en"
---

# ACH Direct Debit iOS Component

Add ACH Direct Debit to your Components integration.

[View source](/payment-methods/ach-direct-debit/ios-component.md)

You can add ACH Direct Debit to your existing integration. The following instructions show only what you must add to your integration specifically for ACH Direct Debit.

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.

The additions you must make depend on the [server-side flow](/online-payments/build-your-integration) that your integration uses:

## Sessions flow Component

### Before-You-Begin

## Requirements

| Requirement                                                    | Description                                                                                                                                                                                                                                         |   |
| -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
| **Integration type**                                           | Make sure that you have an existing Sessions flow [iOS Components integration](/online-payments/build-your-integration/sessions-flow?platform=iOS\&integration=Components).                                                                         |   |
| **[API credentials](/development-resources/api-credentials/)** | To issue a refund using an API request, make sure you have the **Merchant allow bank-refund** role.                                                                                                                                                 |   |
| **[Customer Area roles](/account/user-roles)**                 | To issue a refund using the Customer Area, make sure you have the **Merchant allow bank-refund** role.                                                                                                                                              |   |
| **Checkout API**                                               | Make sure that you use Checkout API v68 or later.                                                                                                                                                                                                   |   |
| **Webhooks**                                                   | Subscribe to [DIRECT\_DEBIT\_NOTICE\_OF\_CHANGE\_NOTIFICATION](https://docs.adyen.com/api-explorer/Webhooks/latest/post/DIRECT_DEBIT_NOTICE_OF_CHANGE_NOTIFICATION) webhooks to receive a notification when a shopper has outdated banking details. |   |
| **Setup steps**                                                | Before you begin, [add ACH Direct Debit in your Customer Area](/payment-methods/add-payment-methods).                                                                                                                                               |   |

### Add-Parameters-Sessions-Request

## Add additional parameters to your /sessions request

You do not need to add any parameters when you [create a payment session](/online-payments/build-your-integration/sessions-flow?platform=iOS\&integration=Components#create-a-payment-session).

### Add-Configuration

## Add additional configuration for ACH Direct Debit

You do not need to add any configuration parameters for ACH Direct Debit.

### Initialize

## Initialize the Component for ACH Direct Debit

To [initialize](#initialize-the-component) ACH Direct Debit, use the `ACHDirectDebitComponent` class.

**Initialize the Component**

```swift
let paymentMethods = session.sessionContext.paymentMethods
// Check that the payment method is supported before showing the Component.
guard let paymentMethod = paymentMethods.paymentMethod(ofType: ACHDirectDebitPaymentMethod.self) else { return }
let component = ACHDirectDebitComponent(paymentMethod: paymentMethod,
                                                     context: context,
                                                     // Set the configuration object that you created for ACH Direct Debit.
                                                     configuration: )
self.currentComponent = component
// Set the session as the delegate.
component.delegate = session
present(component.viewController)
```

## Test and go live

You can test payments as well as chargebacks.

### Test the payment flow

Before making live payments, use the following account details to test your integration.

| `ownerName` | `bankAccountNumber`                                             | `bankLocationId` (routing number)                                                |
| ----------- | --------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Any name    | Any correctly formatted account number. Example: **1234567890** | Any correctly formatted routing number. Examples: **011000138** or **121000358** |

### Test the chargeback flow

You can test the chargeback flow by making test payments with an `ownerName` value that consists of **chargeback:** followed by an ACH return [reason code](/risk-management/chargeback-guidelines/ach-chargebacks/#ach-retry). For example, **chargeback:R01**. The other account details to use are the same as when testing payments.

For instructions, see [Test a chargeback scenario](/risk-management/chargeback-guidelines/ach-chargebacks#test-a-chargeback-scenario).

## Advanced flow Component

### Before-You-Begin

## Requirements

| Requirement                                                    | Description                                                                                                                                                                                                                                         |   |
| -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
| **Integration type**                                           | Make sure that you have an existing Advanced flow [iOS Components integration](/online-payments/build-your-integration/advanced-flow?platform=iOS\&integration=Drop-in).                                                                            |   |
| **[API credentials](/development-resources/api-credentials/)** | To issue a refund using an API request, make sure you have the **Merchant allow bank-refund** role.                                                                                                                                                 |   |
| **[Customer Area roles](/account/user-roles)**                 | To issue a refund using the Customer Area, make sure you have the **Merchant allow bank-refund** role.                                                                                                                                              |   |
| **Webhooks**                                                   | Subscribe to [DIRECT\_DEBIT\_NOTICE\_OF\_CHANGE\_NOTIFICATION](https://docs.adyen.com/api-explorer/Webhooks/latest/post/DIRECT_DEBIT_NOTICE_OF_CHANGE_NOTIFICATION) webhooks to receive a notification when a shopper has outdated banking details. |   |
| **Setup steps**                                                | Before you begin, [add ACH Direct Debit in your Customer Area](/payment-methods/add-payment-methods).                                                                                                                                               |   |

### Add-Configuration

## Add additional configuration for ACH Direct Debit

You do not need to add any configuration parameters for ACH Direct Debit.

### Initialize

## Initialize the Component for ACH Direct Debit

To [initialize](#initialize-the-component) ACH Direct Debit, use the `ACHDirectDebitComponent` class.

**Initialize the Component**

```swift
// Check that the payment method is supported before showing the Component.
guard let paymentMethod = paymentMethods.paymentMethod(ofType: ACHDirectDebitPaymentMethod.self) else { return }
let component = ACHDirectDebitComponent(paymentMethod: paymentMethod,
                                         context: context,
                                         // Set the configuration object that you created for ACH Direct Debit.
                                         configuration: )
self.currentComponent = component
// Set the Component as the delegate.
component.delegate = self
present(component.viewController)
```

### Add-Parameters-Payments-Request

## Add additional parameters to your /payments request

You do not need to add any parameters to the [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request when you [make a payment](/online-payments/build-your-integration/advanced-flow/?platform=iOS\&integration=Components#make-a-payment).

## Test and go live

You can test payments as well as chargebacks.

### Test the payment flow

Before making live payments, use the following account details to test your integration.

| `ownerName` | `bankAccountNumber`                                             | `bankLocationId` (routing number)                                                |
| ----------- | --------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Any name    | Any correctly formatted account number. Example: **1234567890** | Any correctly formatted routing number. Examples: **011000138** or **121000358** |

### Test the chargeback flow

You can test the chargeback flow by making test payments with an `ownerName` value that consists of **chargeback:** followed by an ACH return [reason code](/risk-management/chargeback-guidelines/ach-chargebacks/#ach-retry). For example, **chargeback:R01**. The other account details to use are the same as when testing payments.

For instructions, see [Test a chargeback scenario](/risk-management/chargeback-guidelines/ach-chargebacks#test-a-chargeback-scenario).

## See also

* [Account validation with giact](/payment-methods/ach-direct-debit/verification-with-giact)
* [Tokenization](/online-payments/tokenization)
* [ACH Direct Debit chargebacks](/risk-management/chargeback-guidelines/ach-chargebacks)
