Create ACH Account

Use the /achaccount/create endpoint to associate an external bank account with a given account. Please note: an ACH account must exist for a customer before they can initiate ACH pushes or pulls to external bank accounts. Use the Create ACH Transfer endpoint to originate an ACH transaction to move funds between a customer account and external bank account linked via this endpoint.

A linkedInstitutionAccountId can be provided in lieu of bank account details if your user has linked an institution and account via the Complete Linked Institution Session endpoint.

Account holder type

Use the optional accountHolderType to say who owns the external bank account: individual or business. It can differ from your customer. For example, a person can link their company's account, and a business can link an owner's personal account. Any other value, including null, is rejected.

If you leave it out, your program's existing setup decides. Depending on the program, the holder type follows your customer's type, or it is set to individual even when your customer is a business. Send accountHolderType whenever the holder type matters. Spidr stores the value you send as given and does not verify it, and later refreshes of the ACH account keep it.

Holder names

Some programs register the external account under the holder's name. In those programs:

  • An individual holder uses the firstName and lastName you send. If you leave them out, the names of an individual customer are used. A business customer has no personal names to fall back on, so send both names when a business links an individual's account.
  • A business holder uses the companyName you send. If you leave it out, a business customer's legal name is used. An individual customer has no company name to fall back on, so send companyName when a person links a business account.
  • Names must use supported characters and fit the length limit. A company name may have accented or special characters converted to plain ones, extra spaces removed, and be shortened to fit.

Field rules:

  • companyName must contain text (not blank and not null), and it needs accountHolderType: business in the same request.
  • firstName and lastName are optional, accept null, and can be sent with a business holder.
  • The required name is only your nickname for the account, not the holder's name.

For example, an individual customer can link a business's bank account by account and routing number:

{"accountId":"67f93841afcfa66c5297a41a","accountNumber":"987654321","routingNumber":"121000248","type":"checking","name":"Supplier account","accountHolderType":"business","companyName":"Supplier & Sons LLC"}

A business customer can link an individual's bank account through an eligible linked institution account:

{"accountId":"67f93841afcfa66c5297a41a","linkedInstitutionAccountId":"67d0578b37ce2bb45436cec5","name":"Personal checking","accountHolderType":"individual","firstName":"Alex","lastName":"Taylor"}

Requests held for review, and accounts already on file

  • If the request is held for manual review, the accountHolderType and companyName you sent are kept. Anything you left out (the holder type or the fallback names) is filled in from your customer's details at the time of approval.
  • If this bank account is already on file for the account and you send a different accountHolderType than the one stored, the request returns HTTP 400 INVALID_REQUEST and nothing is changed.
  • If this bank account is already on file through an earlier linked institution account that has since been archived, sending the new linkedInstitutionAccountId moves the existing ACH account to it and returns that ACH account, with its holder type and names unchanged.
  • Any other duplicate returns ACH_ACCOUNT_ALREADY_EXISTS.
  • This endpoint never changes the holder type or names of an ACH account already on file. Contact Spidr to correct one.

ACH transaction history for a customer can be retrieved via the List ACH Requests endpoint.

Body Params

POST /v1/achaccount/create Request body

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

The account's unique ID within Spidr

string

The account number of the account at the external bank.

string
length between 9 and 9

The routing number for the bank where the account is housed.

string

Pass in the linked institution account ID

string
required
^[a-zA-Z0-9\s\-'".,?#~*+@!()_;&$%^=[\]{}:<>|/\\_]{1,22}$

Nickname or description for the external account. This helps the user identify the linked account; it is separate from the holder's personal or company name.

string
enum

Who owns the external bank account: individual or business. It can differ from your customer. Optional; null is rejected. If omitted, your program's existing setup decides: the holder type follows your customer's type, or it is set to individual even when your customer is a business. Send it whenever the holder type matters. Spidr stores it as given and does not verify it. If this bank account is already on file for the account with a different holder type, the request returns HTTP 400 INVALID_REQUEST and nothing is changed.

Allowed:
string

Company name of a business holder. Optional; it must contain text, null is rejected, and it requires accountHolderType: business in the same request. Where the program registers the holder's name, it is used instead of a business customer's legal name; an individual customer has no company name to fall back on. The name may have special characters converted, extra spaces removed, and be shortened to fit the length limit. The required name field is still only a nickname.

string | null
^[a-zA-Z0-9\s\-'".,?#~*+@!()_;&$%^=[\]{}:<>|/\\_]{1,40}$

First name of the external account holder. Falls back to an individual owner's first name only. Some registrations apply a weighted 40-character limit to each individual holder name: an ampersand (&) counts as five characters, a greater-than sign (>) as four, and every other supported character as one. Less-than signs (<) are not supported.

string | null
^[a-zA-Z0-9\s\-'".,?#~*+@!()_;&$%^=[\]{}:<>|/\\_]{1,40}$

Last name of the external account holder. Falls back to an individual owner's last name only. Some registrations apply a weighted 40-character limit to each individual holder name: an ampersand (&) counts as five characters, a greater-than sign (>) as four, and every other supported character as one. Less-than signs (<) are not supported.

string
enum

Type of ACH account being linked. Options are 'checking', 'savings', or 'money market.'

Allowed:
Responses

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