Create ACH Transfer

Use the /createAchTransfer endpoint to originate an ACH transaction to move funds between a customer account and external bank account linked via Create ACH Account. The originator of this transaction is your customer/bank and the recipient is the holder of the external account.

If the associated ACH account was created via a linkedInstitutionAccountId, balance checks are automatically performed to ensure sufficient funds for ACH pulls (contingent on your product's configuration).

The ACH transfer created via this endpoint can either be a push (credit) or pull (debit) to the recipient account.

The optional companyEntryDescription field is accepted for all ACH transfers and identifies the ACH purpose shown on the receiver's bank statement. ACH originations require either a request value or a product-level default configured with Spidr; requests with neither are rejected.

For business-to-consumer debits (a business customer pulling funds from an external individual account), your program may require authorizationMethod. Provide it unless your product has a configured default:

  • online_or_mobile: authorization obtained through a website or mobile app; produces SEC code WEB. Your product must explicitly permit this method.
  • written_or_prearranged: authorization obtained through a signed document, agreement, or standing authorization; produces SEC code PPD.

A supplied method overrides the product default and must be permitted by your product. Without product configuration, only written_or_prearranged is permitted and there is no default. Where it is required, missing both a request value and a product default, or selecting a disallowed method, returns HTTP 400. Null, empty, and unsupported values are rejected for all requests. Valid methods are ignored on other transfer types and on programs that don't use this field.

For a transfer awaiting approval, the resolved method is retained from submission even if the product default changes. If the product no longer permits that method at execution, the transfer is rejected without substituting another method.

To view a list of ACH transfers originated by an account, use the List ACH Requests endpoint. To cancel an ACH transfer, use the Cancel ACH Transfer endpoint. For more information on ACH accounts and transactions, please see ACH Accounts and Transactions.

Body Params

POST /v1/transaction/createAchTransfer Request body

string
enum

Authorization method for business-to-consumer ACH debits: online_or_mobile (website/mobile authorization; WEB SEC code) or written_or_prearranged (signed agreement or standing authorization; PPD SEC code). Required for these debits on programs that use it, unless your product has a configured default. Your value overrides the default and must be permitted by your product. Valid values are ignored on other transfer types and on programs that don't use this field. Null, empty, and other values are rejected.

Allowed:
string

The session key for the user. Created via Create ZTM Session and used for ZTM checks if your program is configured for ZTM.

boolean

Indicates whether to bypass the ZTM checks if your program is configured for ZTM.

string
required

Pass in the Spidr account ID

string
required

Pass in the ACH account's unique ID created via the 'Create ACH Account' endpoint.

double
required
≤ 10000000

The amount of the ACH transaction.

string
required
length ≤ 30
^[\w!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~ ]+$

The description of the ACH transaction.

string | null
^[\w!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~ ]+$

The remittance information for the ACH transaction. It reaches the receiver only on CCD, PPD and CIE entries; WEB entries don't carry it.

string
length between 1 and 15
^[A-Za-z0-9]+$

The payer's account number or ID at the receiver, sent as the entry's Individual Identification Number. 1 to 15 letters and digits. Required on programs that use it when an individual's account sends a credit to a business ACH account, because those transfers go out as CIE entries. On other transfers, leave it out and Spidr generates a value. Ignored on programs that don't use this field.

string
length between 1 and 10

Identifies the purpose of the ACH transaction (per Nacha rules); appears on the receiver's bank statement. Max 10 characters. Use PAYROLL for compensation paid to employees/contractors or for pre-tax HSA payroll deductions, and PURCHASE for e-commerce debit entries authorized online (incl. recurring); otherwise pass a free-text description (e.g. TRANSFER, LOAN PMT, BILLPAY). Required as of June 30, 2026 unless your program has a configured default. Reserved values (rejected): ACCTVERIFY, RETRY PYMT, REVERSAL, RECLAIM, HCCLAIMPMT, RETURN FEE, NONSETTLED.

string
enum
required

Specifies whether the recipient account is to be credited or debited. C = Credit (ACH Push), D = Debit (ACH Pull)

Allowed:
boolean
Defaults to false

Indicates if the transaction is a same-day ACH transaction. Requires bank approval and Spidr configuration.

int64

The number of hold days to apply to this transaction, which overrides the hold days in your program settings. This value applies only to outgoing ACH debits (debitCreditIndicator: D). This parameter requires bank approval and Spidr configuration.

boolean

Indicates if the balance of the ACH account should be checked before creating the transaction.

double
≤ 10000000

The minimum balance of the ACH account after the transaction is debited. i.e. how much money should be left in the account after the transaction is debited.

Responses

Language
Credentials
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json