Overview
There are three parties involved in an ACH transfer with Plaid account verification: the client, Plaid, and SVB. Clients will sign up for API keys with Plaid and will use the Plaid Link front-end component to authenticate an end-user to their financial institution. Once authenticated, Plaid Link will return a public token that the client will exchange for a long-lived access token. Once obtained, that access token can be used to generate a processor token to be passed to SVB. More information about Plaid Link can be found in the Plaid documentation. Processor tokens are processor specific and will be supplied to SVB within the ACH transfer request.
Below steps outline the flow of activities to perform an ACH transfer that uses Plaid authentication:
STEP | ACTORS | ACTIVITY |
---|---|---|
1 | SVB Client <-> Plaid | SVB client verifies customer account information with Plaid, and in response receives a temporary public_token. |
2 | SVB Client <-> Plaid | SVB client uses the public_token to retrieve the permanent access_token from Plaid. |
3 | SVB Client <-> Plaid | SVB client sends the access_token, account ID, and the processor (as “svb_api”) to Plaid. Plaid will respond back with a processor_token.
The processor_token allows SVB to retrieve account information for the ACH transfer. |
4 | SVB Client <-> SVB | SVB client initiates ACH transfer with the processor_token, using the "receiver_verification_details" object instead of receiver account and routing numbers. |
Once the client supplies their processor_token, SVB contacts Plaid with the processor_token and retrieves receiver account and routing numbers.
Integration Details
Before a client can engage with SVB and provide the ACH transfer request, the client will need to retrieve the processor_token from Plaid. Series of events for an SVB client to perform an ACH transfer with Plaid account verification are broken into two main steps:
- Plaid integration to receive processor_token
- SVB ACH transfer request with processor_token
Step 1 : Plaid integration to receive processor_token
Clients will need to confirm that:
- They are registered with Plaid (if not registered, refer to Plaid for a new account)
- They are registered with SVB to use ACH API with Plaid integration
- SVB is configured as a processor on their Plaid account
Once registered, clients can use Plaid Link to allow their customers to link their online banking account. Plaid Link is a client-side module that authenticates and validates a user's credentials with a financial institution.
Clients will start by creating a link_token, which is required to initiate Plaid Link. After Plaid responds with a link_token, the client can then use the token to launch the Plaid Link UI for the customer.
Once rendered, Plaid Link lets the end-user choose their financial institution and authenticate:
After a successful link, the SVB client will receive a temporary public_token. Clients can then submit another request to Plaid to exchange the public_token for a long-lived access_token. As the final step, the client will need to send a request to Plaid with both the Plaid account_id and access_token and generate an associated processor_token.
Below table includes hyperlinks to redirect to Plaid reference documentation for each individual step:
STEP | ACTION | DESCRIPTION |
---|---|---|
1 | Create a Plaid Link_token to generate the Plaid Link widget. | Client will need to perform a server-side call to retrieve a link_token, which is required to initiate Plaid Link. |
2 | Once Plaid Link is initialized and the end-user has successfully authenticated, client will receive a temporary public_token. | Temporary public_token received from this step will be exchanged for a permanent access_token on step 3. |
3 | Exchange public_token for an access_token. | Once public_token is exchanged, retrieved access_token will be used to obtain a processor_token. |
4 | Using the access_token, and SVB as processor, create the processor_token. | Generating the processor_token is the last step before submitting an SVB ACH transfer request. |
Step 2 : Submitting the ACH transfer request with processor_token
The only difference in submitting an ACH transfer with a Plaid processor_token is the updated request body. In case of Plaid verification, receiver account information fields will not be included in the request body, instead the "processor_token" and "provider" fields will be included in the "receiver_verification_details" object.
Parameters:
NAME | TYPE | DESCRIPTION |
---|---|---|
account_number
required |
string | SVB bank account number originating the ACH transfer.
If testing on sandbox use the account number '1111111111'. |
amount |
int | Amount of money to transfer, specified in cents.
Example: To pass in $10.55, use "1055" as the amount. No decimals should be used to represent amount. |
currency | enum("usd") | If not provided, defaults to "USD". |
direction required |
enum(“credit”, “debit”) | Direction of the transfer. |
effective_date | date | Date when the transfer should take place. Defaults to tomorrow’s date. |
memo | string | Optional 15 digit alphanumeric string that can be used to pass data to the recipient bank. Examples: an invoice number or transaction reference number. |
metadata | object | Optional metadata to associate with the API resource. |
receiver_name required |
string | Name of the receiver account holder. |
receiver_verification_details
required |
object | This object contains encompasses two fields
processor_token : Plaid processor token |
sec_code required |
enum(“ccd”, “ppd”, “web”) | SEC code to be used for the ACH transfer. |
service | enum(“standard”, “same- day”) | Service level. Defaults to standard service. |
Sample Postman Request and Response
Below is a sample Postman request for an ACH transfer submitted to SVB using Plaid processor_token:
Sample Postman response:
Troubleshooting and Support
SVB provides the below error responses to help troubleshoot integration issues.
SOURCE | ERROR | DESCRIPTION |
---|---|---|
SVB | Parameter account_number { } must be a valid SVB account number that has been configured for ACH access | No IAV permission - SVB originator account number must be valid and configured for ACH with Plaid verification |
Plaid | The processor is invalid. | This error is encountered when the processor specified to Plaid is not “svb_api”. |
SVB | Processor token is required for Plaid provider | Missing processor token - Processor token is required when the specified provider is Plaid |
SVB | Missing required parameter: provider | Missing validator failure – Validator is required when the processor token is supplied, |
SVB | IAV fields conflicting with receiver or counterparty_id fields | IAV Validation – Multiple receiver fields error, request body includes both receiver account information (and/or counterparty information) along with processor token |
SVB | Parameter provider { } must be one of: Plaid | Provider must be “Plaid” |
Aside from SVB related errors, in some cases errors may be Plaid-related. For such errors SVB responds to clients with the error received from Plaid. SVB does not alter the formatting of pass-through Plaid errors.
HTTP ERROR CODE | PLAID ERRORS |
---|---|
500 | Plaid Internal Server Error |
503 | Planned Maintenance |
400 | Invalid Request |
400 | Invalid Input |
Sample Plaid Error
When a Plaid error is encountered, SVB responds back to the client with Plaid’s error format including below fields:
- Error Code
- Error Message
- Error Type
- Request ID
More information on Plaid-related errors can be found on: Plaid API Errors
Support
If you need to reach out to SVB to request support on a failed transaction, correlation ID from the SVB response header needs to be provided to identify the transaction. Clients can contact API support teamwith the correlation ID to request transaction details and support.
Sample Correlation ID
RESPONSE HEADER FIELD | SAMPLE VALUE |
---|---|
X-Svb-Correlation-Id |
ea6ca3f0-6738-11eb-9b6a-005056a4d951 |
Clients can also reach out to Plaid for support on failed transactions, in such cases “request_id” in the response parameters will be used to request support. In addition to customer support, Plaid also hosts a status page to inform clients of their API status.