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
firstNameandlastNameyou 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
companyNameyou 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 sendcompanyNamewhen 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:
companyNamemust contain text (not blank and not null), and it needsaccountHolderType: businessin the same request.firstNameandlastNameare optional, accept null, and can be sent with a business holder.- The required
nameis 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
accountHolderTypeandcompanyNameyou 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
accountHolderTypethan the one stored, the request returns HTTP 400INVALID_REQUESTand 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
linkedInstitutionAccountIdmoves 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.
