transfer_types are available for that address. Choose the right path based on the transfer rails you need.
Comparison
Which path should you use?
- Plaid-linked bank account — Use this when you need
ach_debitor want to provide a Plaid bank-linking experience for your users. This flow uses Plaid Link to securely connect a bank account and supportsach_debit,ach_credit,rtp_credit, andfednow_credit(on accounts with FedNow enabled). - Direct bank entry — Use this when you already have bank account details (account number, routing number) or need
wiretransfers. This flow supportswire,ach_credit,same_day_ach_credit,rtp_credit, andfednow_credit(on accounts with FedNow enabled).
fednow_credit when you register the recipient with either path, or add it to an existing address. The recipient’s routing number must participate in FedNow. See Send FedNow payouts.
Direct bank entry field requirements
For Direct bank entry, required fields depend on the transfer types you request.
If
transfer_types includes wire, wire requirements apply, even if the same address also includes ACH, RTP, or FedNow rails. For addresses without wire, omit bank_address and beneficiary_address unless you have accurate values—do not enter placeholder or generic bank addresses.
Plaid-linked bank account flow
This flow uses the Plaid Link SDK to securely connect a bank account in two steps:- Create a Plaid link token — Generate a
link_tokento launch Plaid Link in your front-end. - Register the account via Plaid — Exchange the
public_tokenfrom Plaid to create anaddress_id.
GET /accounts/{account_id}/addresses/{address_id}/balance?transfer_type=ach_debit&value_type=USD. See Get A Balance.
Direct bank entry flow
Submit bank account details directly using the Addresses API:- Create a new external address — Addresses without
wirerequireowner,account_number,routing_number,account_type, andtransfer_types. Wire-capable addresses also requirebank_addressandbeneficiary_address. This path supportswire,ach_credit,same_day_ach_credit,rtp_credit, andfednow_credit.
Archive and unarchive
If you need to stop using a previously linked external bank address without deleting the record, use the PATCH address endpoint to archive it. If the customer later wants to restore the same external address, unarchive it.- Archive:
PATCH /accounts/{account_id}/addresses/{address_id}with{ "status": "archived" } - Unarchive:
PATCH /accounts/{account_id}/addresses/{address_id}with{ "status": "active" }