Self Service Plaid Link
Partner with Plaid to verify and link end customer bank accounts to zerohash accounts through a tokenized solution.
Onboarding with Plaid
To kick things off:
- Set up a Plaid production or sandbox account.
- Enable zerohash as an integration in your Plaid account settings (Developers > Integrations > search for Zero Hash). Your Plaid Account Manager can assist.
If you need an intro to Plaid please contact your zerohash relationship manager, who can expedite the agreement process.
The most integral implementation lift is linking the end customer account and exchanging it for a token that is shareable with zerohash. This will require a series of Plaid calls* for a platform:
- /link/token/create
- Plaid's Auth service allows customers to sign in to their bank via the Plaid interface and authorize linking their bank account. This gives you tokenized access to the customer's bank account for debits and credits.
- Note: You can also offer manual account linking (account and routing number entry), which can take 1-2 days and requires slight changes to the Auth configuration.
- /item/public_token/exchange
- /processor/token/create
Once the processor token is created and shared with zerohash, via Create external accounts zerohash can connect the end customer bank account and initiate transactions.
*The listed calls are the minimum calls required to Plaid. To take advantage of the partnerships, you must contract for balance and identity as well, but zerohash can handle the calls.
Adding a bank account is a one-time process for an end customer that verifies account ownership, so it is not something a customer has to do every time they want to initiate an ACH transaction.
Contract Plaid
In order to use ACH or RTP via zerohash, platforms must have the following products enabled with Plaid. Auth and Identity calls are billed to platforms, but zerohash is permitted to access this data thanks to the processor token model.
Product name | Reason |
---|---|
Auth | Enables platforms to connect end customer bank accounts. |
Balance | Enables zerohash to check current and pending bank account balances prior to executing a transaction. This check is done by zerohash for each transaction request. If the platform also chooses to do balance checks, the platform will be charged for their check, and for the check by zerohash. |
Identity | Enables zerohash to verify that the participant name matches the name on the bank account. This check is done by zerohash whenever an external account is linked. This check can also be done by platforms, and there will only be one charge to the platform from Plaid. Also referred to as identity match. Note: This is different from identity verification, which is not a requirement. |
Using the zerohash API
Once a Plaid onboarding has been completed, platforms can use Plaid processor tokens to link end customers’ bank accounts through the zerohash API. zerohash uses the platform supplied Plaid processor token to set up an account via Create external accounts. zerohash returns an external_account_id
to the platform which can be used for later payment requests without needing to link another account. Platforms may also Get external accounts if the external_account_id
is needed.
There is a limit on external accounts linked to a participant
There is a default limit of three accounts linked per participant. If you need to change this, please contact your account manager.
zerohash API Calls
Request body
Parameter | Description | Type |
---|---|---|
participant_code | The code of the participant that wants to create a new ACH transaction, required. | string |
account_nickname | Name given to the account. This does not impact further zerohash functionality so it is purely for platform reference, required. For testing only: To simulate identity checks and get a rejected account, use this content: '{"name":0, "email": 0, "address": 0}' | string |
plaid_processor_token | Token retrieved from Plaid that enables zerohash to make API calls on the platform’s behalf, required. | string |
Additional fields in response
Parameter | Description | Type |
---|---|---|
request_id | The unique identifier generated by zerohash associated with the request. | string |
platform_code | Platform unique identifier. | string |
external_account_id | The unique identifier generated by zerohash for the account. This must be stored and used to make subsequent payment requests. | string |
account_type | Indicates if the account is checking or savings. | string |
created_at | Timestamp when the account was created. | UNIX timestamp |
Create, Link, and Manage Bank Accounts via zerohash API
Platforms leveraging zerohash’s fiat products should subscribe to webhooks to stay notified of external account updates, and can fetch external account details at any time.
Create an external account
After end customers verify their bank account details through Plaid, the platform uses the returned plaid_processor_token
to create an external account via API.
Querying accounts
Platforms can fetch linked external accounts via API using the GET /payments/external_accounts endpoint.
Expired accounts
When an external account has expired, platforms will receive the following webhook:
{
"request_id": "0f68333e-2114-469d-b505-c850d776e063",
"participant_code": "CUST01",
"platform_code": "TES123",
"account_nickname": "",
"status": "expired",
"external_account_id": "0f68333e-2114-469d-b505-c850d776e063",
"created_at": "1975-08-19T23:15:30.000Z"
}
Platforms can re-verify end customers bank account details through Plaid and use the returned plaid_processor_token
to create an external account via API
Revoked accounts
When an external account has revoked, Platforms will receive the following webhook:
{
"request_id": "0f68333e-2114-469d-b505-c850d776e063",
"participant_code": "CUST01",
"platform_code": "TES123",
"account_nickname": "",
"status": "revoked",
"external_account_id": "0f68333e-2114-469d-b505-c850d776e063",
"created_at": "1975-08-19T23:15:30.000Z"
}
Platforms can re-verify end customers bank account details through Plaid and use the returned plaid_processor_token
to create an external account via API.
Close an account
Platforms can close linked external accounts via API with REST endpoint POST payments/external_accounts/{external_account_id}/close
Updated about 17 hours ago