Skip to main content
Embedded Payments

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 partyrecipientId (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 localInstrumentCode for ACH
    • localInstrumentCode: 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 use v3/transactions, you must provide a value for localInstrumentCode.

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"
}