--- title: "Top up funds in accounts" description: "Let account holders add funds to their account by debiting directly from their bank account." url: "https://docs.adyen.com/classic-platforms/top-up-accounts" source_url: "https://docs.adyen.com/classic-platforms/top-up-accounts.md" canonical: "https://docs.adyen.com/classic-platforms/top-up-accounts" last_modified: "2023-02-20T16:53:00+01:00" language: "en" --- # Top up funds in accounts Let account holders add funds to their account by debiting directly from their bank account. [View source](/classic-platforms/top-up-accounts.md) This page is for classic Adyen for Platforms integrations. If you are just starting your implementation, refer to our [new integration guide](/adyen-for-platforms-model) instead. While the funds in account holders' accounts usually come from [payments](/classic-platforms/processing-payments), you can also let them top up their accounts with direct debit. Topping up funds in accounts is useful when: * Covering for possible [negative balances](/classic-platforms/reconciliation-use-cases/build-transactional-ledger#negative-balances), caused by refunds and chargebacks. * Debiting costs from bank accounts when account holders' accounts have insufficient funds. Topping up funds is supported for account holders with bank accounts in the EU, the UK, and the US. The direct debit transactions are processed over corresponding standard debit rails of [Single Euro Payments Area (SEPA)](https://finance.ec.europa.eu/consumer-finance-and-payments/payment-services/single-euro-payments-area-sepa_en), [Bankers' Automated Clearing Services (BACS)](https://www.bacs.co.uk/pages/home.aspx), and [Automated Clearing House (ACH) network](https://www.nacha.org/content/ach-network). ## Requirements Make sure to: * Contact our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) to enable direct debits for your platform. * Have the account holder agree to your platform performing direct debits on their bank account. * When using ACH, business and non-profit account holders must contact their bank and request to allow direct debits from Adyen. Otherwise, banks might block the transactions.\ The bank must allow the following Company or Originator IDs: 2638633811, 9263863381, 8263863381, 4263863381, 3263863381, 2263863380. ## Step 1: Make a direct debit request To start a direct debit, send a POST [/debitAccountHolder](https://docs.adyen.com/api-explorer/Fund/latest/post/debitAccountHolder) request specifying: | Parameter | Required | Description | | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | [accountHolderCode](https://docs.adyen.com/api-explorer/Fund/latest/post/debitAccountHolder#request-accountHolderCode) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The code of the account holder. | | [amount](https://docs.adyen.com/api-explorer/Fund/latest/post/debitAccountHolder#request-amount) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The total amount to be debited. When debiting from bank accounts in the EU, the maximum amount is EUR 500 per transaction. | | [bankAccountUUID](https://docs.adyen.com/api-explorer/Fund/latest/post/debitAccountHolder#request-bankAccountUUID) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The identifier of the account holder's bank account from which funds are debited. | | [merchantAccount](https://docs.adyen.com/api-explorer/Fund/latest/post/debitAccountHolder#request-merchantAccount) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your merchant account. | | [splits](https://docs.adyen.com/api-explorer/Fund/latest/post/debitAccountHolder#request-splits) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Array that contains your instructions on how to split the funds between the accounts in your platform. The array must have at least one item. | | [description](https://docs.adyen.com/api-explorer/Fund/latest/post/debitAccountHolder#request-description) | | Your description for the transaction, which you can use when [reconciling the direct debit](#reconciling-direct-debits). | Here is an example of making a direct debit request for USD 62 split to two accounts: USD 60 to the account holder's account and USD 2 to your platform's liable account. **Direct debit request** ```bash curl https://cal-test.adyen.com/cal/services/Fund/v6/debitAccountHolder \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -d '{ "accountHolderCode": "ACCOUNT_HOLDER_CODE", "description": "YOUR_DESCRIPTION", "bankAccountUUID": "000b81aa-ae7e-4492-aa7e-72b2129dce0c", "amount": { "value": 6200, "currency": "USD" }, "merchantAccount": "YOUR_MERCHANT_ACCOUNT", "splits": [ { "amount": { "value": 6000 }, "type": "MarketPlace", "account": "8535516988037431", "reference": "YOUR_SPLIT_REFERENCE_1", }, { "amount": { "value": 200 }, "type": "Commission", "reference": "YOUR_SPLIT_REFERENCE_2" } ] }' ``` **Direct debit response** ```json { "pspReference":"8515681150749298", "resultCode":"Received", "accountHolderCode":"ACCOUNT_HOLDER_CODE", "bankAccountUUID":"000b81aa-ae7e-4492-aa7e-72b2129dce0c", "merchantReferences":["YOUR_SPLIT_REFERENCE_1","YOUR_SPLIT_REFERENCE_2"] } ``` Requests using [/debitAccountHolder](https://docs.adyen.com/api-explorer/Fund/latest/post/debitAccountHolder) are processed asynchronously. You'll receive a response acknowledging that we have received your request, but you must listen to notification webhooks to know the result. ## Step 2. Check the direct debit result Listen to the [DIRECT\_DEBIT\_INITIATED](https://docs.adyen.com/api-explorer/Notification/latest/post/DIRECT_DEBIT_INITIATED) notification webhook and refer to the `status.statusCode` to know the outcome of your request. This webhook has two possible status codes: * **Initiated**: The direct debit has been initiated. As transactions are processed over standard debit rails of ACH, BACS, or SEPA, the funds settle to the accounts based on standard settlement times. Once settled, the transaction is included in [reports](#reconciling-direct-debits). * **Failed**: The direct debit failed. You may receive this notification up to 3 business days after you sent the request. When a direct debit fails, the possible causes are: * Validation errors, such as the [bankAccountUUID](https://docs.adyen.com/api-explorer/Fund/6/post/debitAccountHolder#request-bankAccountUUID) does not exist. * The transaction hit direct debit limits. For example, EUR 500 per transaction for SEPA. * The account holder failed to allow Adyen's Company or Originator IDs with their bank. * Adyen did not receive the funds. * Insufficient funds, or any other refusal from the bank. **Direct debit initiated** ```json { "eventDate": "2021-02-01T14:19:14-08:00", "eventType": "DIRECT_DEBIT_INITIATED", "live": "false", "pspReference": "8515681150749298", "content": { "accountCode": "8825579787887769", "amount": { "currency": "USD", "value": 6200 }, "debitInitiationDate": "2021-02-01", "splits": [ { "account": "8535516988037431", "amount": { "currency": "EUR", "value": 6000 }, "reference": "YOUR_SPLIT_REFERENCE_1", "type": "MarketPlace", }, { "amount": { "currency": "EUR", "value": 200 }, "reference": "YOUR_SPLIT_REFERENCE_2", "type": "Commission", } ], "status": { "statusCode": "Initiated" } } } ``` **Direct debit failed** ```json { "eventDate": "2021-07-07T16:30:37+02:00", "eventType": "DIRECT_DEBIT_INITIATED", "live": "false", "pspReference": "8315659584588245", "content": { "accountCode": "8825579787887769", "amount": { "currency": "EUR", "value": 20000 }, "debitInitiationDate": "2021-07-07", "merchantAccountCode": "YOUR_MERCHANT_ACCOUNT", "splits": [ { "account": "8535516988037431", "amount": { "currency": "EUR", "value": 19000 }, "reference": "YOUR_SPLIT_REFERENCE_1", "type": "MarketPlace" }, { "amount": { "currency": "EUR", "value": 1000 }, "reference": "YOUR_SPLIT_REFERENCE_2", "type": "Commission" } ], "status": { "message": { "code": "10_145", "text": "Failed to initiate the direct debit for account holder." }, "statusCode": "Failed" } } } ``` ## Reconciling direct debits Successful direct debits are settled to your [Adyen merchant account](/classic-platforms/account-structure#your-adyen-account). You can see these transactions in the [Settlement details report](/reporting/settlement-detail-report) with the `Record Type` **MerchantPayin**. When funds are credited to the accounts based on split instructions, the credits are reported in the [Marketplace Payments accounting report](/classic-platforms/reports-and-fees/marketplace-payments-accounting-report). Using this report, you can match the direct debits using the `description` you provided in the `/debitAccountHolder` request. The `description` is included as the **Payment Merchant Reference**. ## See also * [Split payments](/classic-platforms/processing-payments) * [Settlement details report](/reporting/settlement-detail-report) * [Marketplace Payments accounting report](/reporting/settlement-reconciliation/transaction-level/marketplace-payments-accounting-report)