Direct Debit
Nium's Direct Debit funding capability helps you add your business customer's bank account to their Nium-issued wallet to help them make payments.
Prerequisites
These are the requirements for this funding mechanism:
- Your customer needs to have a bank account and a Nium wallet.
- Your customer needs to authorize the Direct Debit mandate to debit from their bank account and accept Nium's terms and conditions (T&C).
- Your customer needs to have enough money in their added bank account to start your transactions.
- Your customer needs to be a business, also known as a corporation.
- Your customer needs to be onboarded to the Nium One platform.
Set up
To get started with Direct Debit:
- Accept Nium’s Terms and Conditions.
- Nium approves requests according to the where Direct Debit is set up.
- Nium then configures Direct Debit for self-funding to your customer's wallets.
- Once you complete these steps, you can begin using Direct Debit.
Direct Debit is approved on a case by case basis.
If you're interested in Direct Debit, reach out to your Nium account manager or Nium Support.
API server URLs
Use the following URLs to separate API calls between different environments.
- Sandbox:
https://gateway.nium.com - Production:
https://api.spend.nium.com
Supported countries and currencies
The following table shows the supported Direct Debit countries and currencies. For more information, select the Direct Debit page linked in the table for the geography you're interested in.
| Country code | Country | Currency code | Currency |
|---|---|---|---|
| AU | Australia | AUD | Australian dollar |
| CA | Canada | CAD | Canadian dollar |
| EU | European Union | EUR | Euro |
| UK | United Kingdom | GBP | Pound sterling |
| US | United States | USD | United States dollar |
| SG | Singapore | SGD | Singapore dollar |
Direct Debit API endpoints
The following APIs support the Direct Debit feature:
| HTTP method | API name | Action |
|---|---|---|
| POST | Add Funding Instrument | Add the funding instrument to your customer's wallet to start a Direct Debit transaction. Use this endpoint to add the payer's physical bank account to the customer's wallet so it can be used for the Direct Debit transaction. Provide the funding instrument's country and currency code. |
| GET | Get Funding Instrument Details | Get the details of your customer's funding instrument using the fundingInstrumentId. This endpoint is optional. The fundingInstrumentId is returned as a response in the Add Funding Instrument request. |
| GET | Get Funding Instrument List | Get the list of funding instruments registered with your customer. It's optional to use this API. |
| POST | Confirm Funding Instrument | Confirm the funding instrument with one-time password (OTP) authentication. Use this API to communicate the OTP you received from Nium. Nium sends you the OTP during the Add Funding Instrument API call. By confirming the Direct Debit mandate, your customer authorizes Nium to debit payments from their bank account. The debit payments appear on your customer's bank statement as Nium. |
| POST | Fund Wallet | Fund into your customer's wallet by selecting the funding channel as a direct_debit transaction. You also need to provide the fundingInstrumentId obtained from the response in the Add Funding Instrument API call. |
The following shows the Direct Debit customer wallet flow for all regions.
Testing Direct Debit
You can now test settling funds into a Nium wallet in a sandbox environment almost instantly. This helps you test and integrate Direct Debit flows.
Before you begin to test Direct Debit, make sure the following conditions are met:
- The client and customer are onboarded to the correct region.
- The customer has a wallet set up with the required Direct Debit currency.
- The customer has a verified, linked funding instrument available for the correct region and currency.
Step 1: Start a test Direct Debit
Use the Fund Endpoint to pull funds from a verified and linked funding instrument.
curl 'https://gateway.nium.com/api/v1/client/{clientHashId}/customer/{customerHashId}/wallet/{walletHashId}/fund' \
--request POST \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: YOUR_SECRET_TOKEN' \
--data '{
"amount": 16,
"fundingChannel": "DIRECT_DEBIT",
"sourceCurrencyCode": "USD",
"destinationCurrencyCode": "USD",
"fundingInstrumentId": "e18f4c3a-7d9f-4c1d-9a82-58b3d1f6ac91",
"statementNarrative": "Simulate Direct Debit settlement"
Response Example
{
"destinationAmount": 16,
"destinationCurrencyCode": "USD",
"paymentMethods": [],
"returnUrl": null,
"sourceAmount": 16,
"sourceCurrencyCode": "USD",
"status": "Pending",
"systemReferenceNumber": "FW5289214401"
}
Step 2: Testing funds receipt
Use the systemReferenceNumber from Step 1 to test receiving funds from the linked funding instrument (external bank account).
- To test settling funds instantly, set
"coolingOfPeriodInMinutes" to0in theadditionalInfo` object. - This field lets you define a delay (in minutes) before funds are settled. Setting it to
0bypasses this delay.
curl https://gateway.nium.com/api/v1/inward/payment/manual \
--request POST \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: YOUR_SECRET_TOKEN' \
--data '{
"additionalInfo": {
"coolingOfPeriodInMinutes": "0"
},
"amount": 16,
"bankReferenceNumber": "712347512376",
"country": "US",
"currency": "USD",
"payMode": "ACH",
"remitterBankName": "CFSB",
"transactionId": "FW5289214401",
"transactionSource": "ACH",
"type": "CREDIT",
}'
Response Example
{
"message": "ICC request has been processed and published successfully",
"success": true
}
After you complete the steps above, the test Direct Debit transaction will move to Approved and the funds will be added to the wallet.
This applies to all supported regions and currencies in sandbox environments.
Use cases
You can use the Direct Debit feature for business-to-business (B2B) payments such as employee payroll services or spend management. You can debit your business customer’s bank accounts and load the money into their Nium wallet so you can process their salary and expense payouts.
| Use Case | Client type | Example | Funds flow |
|---|---|---|---|
| Payroll | Non-financial platform clients | As a payroll platform client, you want to debit a corporate customer's bank account and load money into their Nium wallet. This lets you manage salary and expense payouts. | Corporate customer → Nium → corporate customer’s wallet → corporate customer’s employee |
| Spend management and supplier payments | Non-financial platform clients | As a software as a service (SaaS) platform client, you want to debit your customer’s accounts and load money into their wallets. This allows you to process their vendor's invoices and make payments to their vendor. | SaaS platform customer → Nium → SaaS platform customer’s wallet → vendor |
| Fintech | Non-financial platform clients | As a fintech platform, you want to direct debit your business customer’s accounts and load money into their wallets. | Fintech business customer → Nium → customer's wallet → spend through a card or payout |
The following diagram shows how the Direct Debit transaction flow across different regions.
To learn more about the technical words this guide uses, refer to the Glossary.