JPMorgan ACH Direct Debit
JPMorgan ACH Direct Debit lets you collect and refund low-value ACH direct debits in the US and Canada (USD, CAD) via JPMorgan's Treasury Payments API. The connector is server-to-server only — there is no hosted-fields/payment.js widget.
Connector configuration
Configure the following parameters for the Connector (see Connector Detail Overview - JPMorgan ACH Direct Debit):
- Fill in the mandatory Client ID (used as the connector Username)
- Fill in the Client Secret (used as the connector API Secret) — only required if Use OAuth JWT Client Assertion is disabled
- Select the mandatory Environment — Certification, Production
- Fill in the mandatory Requested Collection Date — default ACH collection date used when not overridden per transaction
- Fill in the mandatory Service Level Code
- Fill in the mandatory Creditor Name
- Fill in the optional Creditor Postal Address Street Name, Postcode, Town Name, Country Sub Division, Country, and Address Line
- Fill in the optional Creditor Account Company Id — JPMorgan ACH Company ID linked to the creditor bank account
- Fill in the mandatory Creditor Account Currency Code
- Fill in the mandatory Creditor Account Number
- Fill in the optional Creditor Agent Name and Clearing System Code
- Fill in the mandatory Creditor Agent Country
- Fill in the mandatory Creditor Agent BIC
- Fill in the optional Creditor Agent ABA and Member Id
- Select the Signed Payload Content-Type —
text/xml,application/jose(default), orapplication/json - Upload the mandatory mTLS PrivateKey and mTLS Certificate (PEM content) — required for the mutual-TLS connection to JPMorgan
- Upload the mandatory Digital Signature Private Key and Digital Signature Certificate (PEM content) — used to sign every request payload as a JWS
- Fill in the optional Digital Signature Key ID

Authentication (OAuth2)
JPMorgan ACH Direct Debit supports two OAuth2 flows, selected via Use OAuth JWT Client Assertion:
- JWT bearer client assertion (default) — the connector signs its own client-assertion JWT. Provide OAuth Private Key (mandatory for this flow) and optionally OAuth Key ID, OAuth Audience, OAuth Scope, and OAuth Token URL (defaults to
https://login.jpmorgan.com/oauth2/tokenif left blank). - Client credentials — set Use OAuth JWT Client Assertion to disabled and rely on Client ID / Client Secret directly. OAuth Scope and OAuth Token URL still apply if set.
Bank account details
Unlike some other adapters, the debtor's (customer's) bank account details are not taken from the customer profile's IBAN fields. Your integration must submit them as extraData on the transaction:
| extraData key | Description |
|---|---|
psp:directDebitTransactionInformation.debtorAccount.accountNumber | Debtor bank account number (mandatory) |
psp:directDebitTransactionInformation.debtorAgent.financialInstitutionId.aba | Debtor bank routing/ABA number (mandatory) |
psp:directDebitTransactionInformation.debtorAccount.iban | Debtor IBAN, if used instead of/alongside an account number |
psp:directDebitTransactionInformation.debtorAccount.currency | Debtor account currency — falls back to the transaction currency if omitted |
psp:directDebitTransactionInformation.debtorAccount.type.code | Account type (e.g. checking/savings) — no fixed enum is enforced, whatever value you send is passed through |
See the API reference for the full field mapping, including mandate-related fields, which this connector passes through as-is without creating or validating mandates itself.
Registration & recurring collections
Register does not contact JPMorgan — it locally stores the bank account details submitted with the transaction so a later Debit can reuse them ("debit with register"). Deregister is also a local no-op. There is no bank-side tokenization for this connector.
Refunds
Refunds are independent of the original debit: the connector generates a new endToEndId for the refund (derived from the refund's own transaction ID, not the original debit's), and the collection/execution date is not inherited from the original debit either. Both are intentional, to avoid JPMorgan rejecting the request with a duplicate-ID (PMT-E010) or invalid-date (DT01) error. Track refund-to-debit correlation via your own transaction references rather than endToEndId.
Testing
Enable Testmode on the connector to use JPMorgan's certification (QAF) environment instead of production. Refer to JPMorgan's own ACH Direct Debits API documentation for sandbox credentials and test scenarios.