Overview
Bank accounts let you process ACH, SEPA, and BACS payments from bank account details that Gr4vy stores. You submit the details yourself, or link the account through Plaid for Pay by Bank. Submitting details yourself is useful when:- You already collected bank account data through your own onboarding flow (for example, micro-deposits or a third-party verification service).
- Your payment processor does not support Plaid’s native token exchange.
- You want to process a payment without requiring the customer to go through the Plaid Link flow.
bank payment method accepts account details directly via the API and routes them to a compatible bank payment connector such as Adyen bank account.
If you use Plaid for bank account linking, the system can also extract raw bank details from Plaid automatically when the target connector requires them. This works for ACH, SEPA, and BACS schemes. See Plaid for details.
Supported schemes
Thebank payment method supports the following schemes:
ACH fields
When creating a transaction or storing a payment method with theach scheme, provide the following fields:
SEPA fields
When creating a transaction or storing a payment method with thesepa scheme, provide the following fields:
BACS fields
When creating a transaction or storing a payment method with thebacs scheme, provide the following fields:
Create a transaction
To create a bank account payment, set themethod to bank and the scheme to the appropriate value (ach, sepa, or bacs). Provide the account details in the payment_method object and set the payment_service_id to the UUID of your bank payment connector (for example, your Adyen bank connection).
The following example uses the ach scheme. For SEPA, replace the scheme with sepa and provide the IBAN as the account_number. For BACS, replace the scheme with bacs and provide the sort code as the routing_number.
See the POST /transactions API endpoint for more details.
method— Set tobankto indicate a bank account payment.scheme— The bank scheme:ach(US),sepa(EU/EEA), orbacs(UK).account_number— The customer’s bank account number (or IBAN for SEPA).routing_number— The bank’s routing number: ABA number for ACH, routing number for SEPA, or sort code for BACS.account_type— Eithercheckingorsavings. Required for ACH only.account_holder— The name on the account. If available, sendfirst_nameandlast_namefor personal accounts, orcompany_namefor business accounts.payment_service_id— The UUID of your bank payment connector (found in the Gr4vy dashboard).
Account validation
Gr4vy stores the bank account details you send and passes them to the payment service at payment time. It doesn’t check that the account is open or can accept debits before the first payment. To validate an account, use one of the following:- Your payment service’s account validation service, if it offers one.
- Plaid, where the buyer links the account by signing in to their bank.
- Your own checks, for example micro-deposits or a third-party verification service.
Vault a bank account
You can store bank account details for future use by settingstore: true on the transaction. The system returns a payment_method.id that you can use for subsequent charges without collecting bank details again.
Vault during a transaction
Setstore: true on the transaction to vault the bank account at the same time as processing the payment.
Vault without a transaction
You can also store bank account details without processing a payment using thePOST /payment-methods endpoint. This creates a stored payment method that you can use for future transactions.
Recurring payments
After vaulting a bank account, use the storedpayment_method.id to charge the account without collecting bank details again. Set payment_source to recurring, and mark the transaction as merchant-initiated and subsequent.
Supported connectors
The following bank account connectors process these payments:- Adyen bank account—Process ACH, SEPA, and BACS transactions through Adyen.
- Chase Orbital bank account—Process ACH transactions through Chase Orbital.
- Nuvei bank account—Process ACH transactions through Nuvei.
Limitations
- Direct routing only—Flow doesn’t route bank account payments, including charges on stored, imported, and Plaid-linked bank accounts. Set
payment_service_idon these transactions to choose the connection. Failover and split routing aren’t available for them.