# JPMC-PDP Documentation from https://developer.payments.jpmorgan.com # 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. **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](/docs/embedded-finance-solutions/embedded-payments/capabilities/transactions/payouts/overview#registered-and-unregistered-payment-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 localInstrumentCode for ACH - localInstrumentCode: A Standard Entry Class (SEC) code is a three-letter identifier established by [NACHA](https://www.nacha.org/newrules) 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 use v3/transactions, you must provide a value for localInstrumentCode. To initiate a request for limited_DDA accounts, use `POST /transactions`. Sample request: ```json { "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: ```json { "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: ```json { "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: ```json { "id": "8u9novVbeHtH3f6", "transactionReferenceId": "MuwdWHRmBS3Q567", "requestedExecutionDate": "2025-11-13" } ```