Request direct debits
As a platform, you may need to withdraw funds from external accounts by initiating direct debits from your processing or transaction account. You can use this feature to collect recurring fees, bills or recover funds from a client’s linked account after chargebacks.
Your clients can also use your platform to initiate direct debits from their linked accounts. This helps fund or cover deficits in their limited accounts.
Allowed accounts
You can use direct debits with a range of account types. The table shows which debit and credit accounts are allowed for direct debit transactions.
Debit account (direct debit) |
Credit account |
|---|---|
Any external or third party account |
TRANSACTION_ACCOUNT |
Linked account |
LIMITED_DDA_PAYMENTS |
Linked account |
LIMITED_DDA |
Client linked account, external recipient account and settlement account |
PROCESSING_ACCOUNT |
How to request direct debit
To request a direct debit transaction, use POST /transactions.
In your request, you need to include:
- type (string): The type of transaction. For these transactions, this value must always be “ACH.”
- amount (decimal): The amount of money to be paid in the transaction.
- currency (string): The currency used in the transaction. Should be set to "USD", if provided.
For registered external party:
recipientId(string): The recipient ID of the recipient you would like to debit funds from, such as linked account or external account.For an unregistered external party: The party details and payment instrument details like party name, address, account number name and routing number. If requesting direct debit on behalf of your client who is not onboarded with us, set the creditor type to "
ON_BEHALF_OF". For more information, see Registered and Unregistered party.- transactionReferenceId (string): Your unique reference number for this transaction.
- creditorAccountId (string): The ID of the account where the funds will be credited.
- Payment method-specific fields, like
localInstrumentCodefor ACHlocalInstrumentCode: A Standard Entry Class (SEC) code is a three-letter identifier established by NACHA to specify how an ACH transaction is authorized. Businesses using J.P. Morgan Embedded Payments must select the correct SEC code for each debit transaction to ensure compliance with ACH direct debit rules and maintain proper authorization records for potential disputes. J.P. Morgan Embedded Payments currently supports four types of SEC codes for ACH debits such as "CCD", "PPD", "WEB" and "TEL". Mandate requirements differ based on the type of authorization collected. Businesses should consult a professional for guidance on their specific obligations, as this information is intended for general reference only.- When you use
v2/transactions, we default to "PPD" for consumer bank accounts, "CCD" for business bank accounts, and "WEB" for direct debit. If you do not specify a mandate collection method, we apply these defaults. When you usev3/transactions, you must provide a value forlocalInstrumentCode.
To initiate a request for limited_DDA accounts, use POST /transactions.
Sample request:
{
"transactionReferenceId": "hisSuUVnakPD9qSA",
"amount": "3100",
"currency": "USD",
"type": "ACH",
"memo": "Memo for Transaction for 1000010400",
"localInstrumentCode": "WEB",
"debtor": {
"id": "1c5cda4a-16eb-4e9d-b384-6b8299893c27"
},
"creditor": {
"account": {
"type": "REGISTERED_ACCOUNT",
"registeredAccount": {
"id": "6a6199fd6f234bbca77de6533271a35b"
}
}
}
}Sample response:
{
"id": "hgi5gUjU3kTD9pLM",
"transactionReferenceId": "hisSuUVnakPD9qSA",
"requestedExecutionDate": "2025-11-13"
}Platforms with transaction accounts
Platforms with transaction accounts have the ability to request direct debit from a third party customers on behalf of a business or clients on their platform. The platform serves as an intermediary supporting a variety of collection scenarios. Customers do not need to be registered with us, allowing you to capture their payment details at the time of transaction.
For example, a marketplace platform can collect subscription payments on behalf of a digital media application listed on its platform.
Currently, U.S. domestic collections are supported via ACH. Additional payment rail requirements may apply.
To initiate a request for Transaction accounts, use POST /transactions.
Sample request:
{
"transactionReferenceId": "MuwdWHRmBS3Q567",
"type": "ACH",
"amount": 0.01,
"currency": "USD",
"localInstrumentCode": "WEB",
"memo": "Invoice 1234",
"creditor": {
"type": "ON_BEHALF_OF",
"account": {
"type": "REGISTERED_ACCOUNT",
"registeredAccount": {
"id": "e3ccad773c4e4e42bdb8effe95d47122"
}
},
"partyDetails": {
"type": "ORGANIZATION",
"businessName": "Test Org",
"address": {
"buildingNumber": "90",
"streetName": "Bedford Street",
"city": "Chicago",
"country": "US",
"postalCode": "60601"
}
}
},
"debtor": {
"account": {
"type": "CHECKING",
"externalAccount": {
"number": "93991289052",
"currency": "USD",
"country": "US",
"routingInformation": [
{
"routingNumber": "122199983",
"transactionType": "ACH",
"routingCodeType": "USABA"
}
]
}
},
"partyDetails": {
"type": "ORGANIZATION",
"businessName": "CAROLYN BROWN",
"address": {
"buildingNumber": "491",
"streetName": "Rose Garden",
"city": "California",
"countrySubDivision": "CA",
"postalCode": "10005",
"country": "US"
},
"contacts": {
"emailAddress": "rob4568.smith@gmail.com",
"phoneNumber": "+1-5343245789"
}
}
}
}Sample response:
{
"id": "8u9novVbeHtH3f6",
"transactionReferenceId": "MuwdWHRmBS3Q567",
"requestedExecutionDate": "2025-11-13"
}