Check Account
The Check Account API verifies a bank account linked through Plaid and returns a reusable accountTokenId you can use to pull funds via ACH — without ever handling raw account and routing numbers.
It is the finalization step of the Plaid bank-linking flow: after the customer completes Plaid Link, you exchange the Plaid public token (accountCheckToken) and account id (accountCheckId) for a tokenized, verified account.
Use this endpoint to:
- Tokenize a Plaid-linked account into an
accountTokenIdfor reuse in payments - Verify account ownership before submitting a pull payment
- Reduce failed transactions by catching invalid account details early
Note: This API does not charge the account or create a payment. It only verifies and tokenizes the account.
Endpoint
POST https://{FQDN}/check-account
Headers:
| Header | Value |
|---|---|
Authorization | Bearer {accessToken} |
Content-Type | application/json |
Request
Root Object
| Field | Type | Required | Description |
|---|---|---|---|
externalPaymentId | string | ✅ | Your unique identifier for this verification request (idempotency key) |
sender | object | ✅ | Sender details — wraps the payment method to verify |
sender Object
| Field | Type | Required | Description |
|---|---|---|---|
paymentMethod | object | ✅ | The Plaid-linked account to verify and tokenize |
sender.paymentMethod
| Field | Type | Required | Description |
|---|---|---|---|
type | string | ✅ | "BANK_DEPOSIT" |
countryCode | string | ✅ | Country of the bank (ISO Alpha-2, e.g. "US") |
accountCheckToken | string | ✅ | The Plaid public token returned by Plaid Link on the client (public-sandbox-... / public-production-...) |
accountCheckId | string | ✅ | The Plaid account id the customer selected in Plaid Link |
Example Request
curl -X POST https://{FQDN}/check-account \
-H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
-H 'Content-Type: application/json' \
-d '{
"externalPaymentId": "CHECK_ACCOUNT_0a022f78-14b6-4f6b-8ddd-d1c9be7c4dcc",
"sender": {
"paymentMethod": {
"type": "BANK_DEPOSIT",
"countryCode": "US",
"accountCheckToken": "public-sandbox-57f6f60a-e637-4582-8858-b871e59f5f4e",
"accountCheckId": "X4943dk1W1CbvoJ6r3vPTQrLgWlmyet1vm1on"
}
}
}'
Response — Verified (200)
{
"paymentId": "cf8600be-ec46-4ed9-a00b-ece348004ca7",
"parentPaymentId": "cf8600be-ec46-4ed9-a00b-ece348004ca7",
"externalPaymentId": "CHECK_ACCOUNT_0a022f78-14b6-4f6b-8ddd-d1c9be7c4dcc",
"accountTokenId": "62d37fd8-89d0-43ca-900f-a75a6e871fe5",
"created": "2026-05-29 16:39:57",
"approved": true,
"accessToken": "access-sandbox-b16d9e78-b2d0-48ca-b2af-dc985571776b",
"status": "VERIFIED",
"bankAccountName": "Chase",
"accountNumberMasked": "************0000",
"routingNumberMasked": "*****1533"
}
Response Fields
| Field | Type | Description |
|---|---|---|
paymentId | string | Inyo's unique identifier for this verification |
parentPaymentId | string | Root identifier (equals paymentId for a standalone check) |
externalPaymentId | string | The identifier you supplied in the request |
accountTokenId | string | The tokenized account. Pass this as sender.paymentMethod.accountTokenId in a payment request to pull funds |
created | string | Verification timestamp |
approved | boolean | Whether the account was successfully verified |
accessToken | string | Plaid access token associated with the linked item (store securely if you need to re-query the account) |
status | string | Verification status — VERIFIED on success |
bankAccountName | string | Institution name (e.g. "Chase") |
accountNumberMasked | string | Masked account number |
routingNumberMasked | string | Masked routing number |
Using the accountTokenId in a Payment
Once verified, reference the account by its token in a PULL payment — no raw account numbers required:
curl -X POST https://{FQDN}/v2/payment \
-H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
-H 'Content-Type: application/json' \
-d '{
"externalPaymentId": "ach-order-001",
"ipAddress": "203.0.113.42",
"paymentType": "PULL",
"capture": true,
"amount": { "total": 19.99, "currency": "USD" },
"sender": {
"firstName": "John",
"lastName": "Smith",
"paymentMethod": {
"type": "BANK_DEPOSIT",
"accountTokenId": "62d37fd8-89d0-43ca-900f-a75a6e871fe5"
}
}
}'
What's Next
- Linking Bank Accounts with Plaid — Create the Plaid Link token and obtain the
accountCheckToken - ACH (Bank Account) — Pull funds using the tokenized account
- Check Card Account (ANI) — Validate cards with AVS, CVC, and Visa ANI
- Push Transaction — Send payouts to bank accounts, cards, PIX, and wallets
