Skip to main content

ACH Platform Tokens

Exact Platform Tokens allow the creation of a token representing a customer's ACH account details. The token type is not format preserving. The Exact token can also store other data such as billing address.

Please note that before you can use the token, the customer must verify ownership of the actual bank account. This may require an additional verification step.

Finally, a customer's email address is mandatory, so please include the billingAddress.email attribute.

Creating with Plaid Token

You can provide your customer's banking details via a Plaid token if they have a Plaid account.

Exact will then use that Plaid token to retrieve the customer's actual bank details from Plaid.

This approach has the advantage that the customer will not need to verify ownership of the account, so once the payment method has been created, it will be available for immediate use.

Please note that you would need to have your own integration with Plaid and use their Plaid Link solution on your website in order to obtain the customer's Plaid token securely.

If Plaid is supplied, you do not need to do the Verify Account Ownership step with Micro deposits.

Clients should submit a JSON request as follows:

Request: Create ACH Token with Plaid
POST /payment-method
{
"ach": {
"plaidToken": "some-token",
"routingNumber": "091000022",
"accountNumber": "11112222333",
"bankAccountType": "checking"
},
"billingDetails": {
"address": {
"line1": "123 Jones Way",
"city": "Scottsdale",
"state": "AZ",
"postalCode": "85251",
"country": "USA"
},
"name": "John Doe",
"email": "[email protected]",
"phone": "5551234567"
}
}
Response: Create ACH Token with Plaid
{
"type": "ach",
"token": "7bf5b113-61f5-4940-a98f-776615953e4e",
...
"ach": {
"bankAccountType": "checking",
"lastFour": "8713"
}
}

This token 7bf5b113-61f5-4940-a98f-776615953e4e is now ready to use with our Payment APIs.

Creating with Bank Details

If you provide your customer's actual banking details, then the customer will need to verify ownership of the account.

To verify their account, we transfer two micro-deposits to their account. Your customer will then need to wait for those transfers to arrive. Once they get the amounts from their account, they will need to provide the amounts to you - you will need to implement a UI to facilitate this - whereupon you submit those amounts to us in a subsequent API call.

Clients should submit a JSON request as follows:

Request: Create ACH Token with Bank Details
POST /payment-method
{
"ach": {
"routingNumber": "091000022",
"accountNumber": "11112222333",
"bankAccountType": "checking"
},
"billingDetails": {
"address": {
"line1": "123 Jones Way",
"city": "Scottsdale",
"state": "AZ",
"postalCode": "85251",
"country": "USA"
},
"name": "John Doe",
"email": "[email protected]",
"phone": "5551234567"
}
}
Response: Create ACH Token with Bank Details
{
"type": "ach",
"token": "8b8c84b2-0f7b-443d-8286-ba2d3eb38f07",
...
"ach": {
"bankAccountType": "checking",
"lastFour": "8327"
}
}

This token 8b8c84b2-0f7b-443d-8286-ba2d3eb38f07 is unable to be used with our Payment APIs until the customer has verified ownership of the underlying bank account.

Verify Account Ownership

To verify ownership, an additional API request must be submitted to /payment-method/:token/verify, containing the two amounts deposited to the customer's account.

This step is not necessary if you supplied a Plaid token in Account verification.
Note: when testing in Sandbox, any two amounts less than ten cents will verify the account.

Clients should submit a JSON request as follows:

Request: Verify ACH Account Ownership
POST /payment-method/8b8c84b2-0f7b-443d-8286-ba2d3eb38f07/verify
{
"amount1": 12,
"amount2": 44
}
Response: Verify ACH Account Ownership
{
"type": "ach",
"token": "8b8c84b2-0f7b-443d-8286-ba2d3eb38f07",
...
"ach": {
"bankAccountType": "checking",
"lastFour": "8327"
}
}