---
description: >-
  Validate a non-card payment method without charging it using POST
  /check-account. Supports bank accounts and alternative payment methods.
---

# Check Account

The Check Account API validates a non-card payment method before initiating a transaction. It works similarly to [Check Card Account (ANI)](check-card-account.md) but is designed for bank accounts and alternative payment methods.

Use this endpoint to:

- **Verify account ownership** before submitting a push or pull payment
- **Reduce failed transactions** by catching invalid account details early
- **Streamline KYC** by confirming account information matches the sender

## 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 validation request |
| `ipAddress` | string | ✅ | Originator's IPv4 or IPv6 address |
| `sender` | object | ✅ | Sender details including personal info, address, and payment method |

### `sender` Object

| Field | Type | Required | Description |
|---|---|---|---|
| `firstName` | string | ✅ | Account holder's first name |
| `lastName` | string | ✅ | Account holder's last name |
| `email` | string | ✅ | Email address |
| `phoneNumber` | string | ✅ | Phone number (7–15 digits) |
| `documents` | array | ✅ | Array of identification documents |
| `address` | object | ✅ | Account holder's address |
| `paymentMethod` | object | ✅ | Payment method to validate |

### `sender.documents[]`

| Field | Type | Required | Description |
|---|---|---|---|
| `document` | string | ✅ | Document number |
| `type` | string | ✅ | Document type (e.g., `"NATIONAL_ID"`, `"PASSPORT"`, `"DRIVER_LICENSE"`) |
| `countryCode` | string | ✅ | Issuing country (ISO Alpha-3) |

### `sender.paymentMethod`

| Field | Type | Required | Description |
|---|---|---|---|
| `type` | string | ✅ | Payment method type (e.g., `"BANK_ACCOUNT"`, `"ACH"`) |
| `accountType` | string | ✅ | Account type: `SAVINGS`, `CHECKING`, `BUSINESS_CHECKING`, or `BUSINESS_SAVING` |
| `routingNumber` | string | ✅ | Bank routing number (ABA for US banks) |
| `accountNumber` | string | ✅ | Bank account number |
| `bankCode` | string | ❌ | Bank institution code |
| `countryCode` | string | ❌ | Country of the bank (ISO Alpha-2) |

## Example Request

```bash
curl -X POST https://{FQDN}/check-account \
  -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
  -H 'Content-Type: application/json' \
  -d '{
    "externalPaymentId": "check-acct-001",
    "ipAddress": "203.0.113.42",
    "sender": {
      "firstName": "John",
      "lastName": "Smith",
      "email": "john.smith@example.com",
      "phoneNumber": "5551234567",
      "documents": [
        {
          "document": "050482156",
          "type": "NATIONAL_ID",
          "countryCode": "USA"
        }
      ],
      "address": {
        "countryCode": "US",
        "stateCode": "CA",
        "city": "Los Angeles",
        "line1": "4429 Candlewood St",
        "zipCode": "90712"
      },
      "paymentMethod": {
        "type": "BANK_ACCOUNT",
        "accountType": "CHECKING",
        "routingNumber": "021000021",
        "accountNumber": "123456789"
      }
    }
  }'
```

## Response — Valid Account (200)

```json
{
  "paymentId": "dce568c6-a7b2-4e3f-9c1d-abc123def456",
  "externalPaymentId": "check-acct-001",
  "status": "APPROVED",
  "accountVerification": {
    "accountStatus": "VALID",
    "accountType": "CHECKING"
  }
}
```

## Response — Invalid Account (200)

```json
{
  "paymentId": "dce568c6-a7b2-4e3f-9c1d-abc123def789",
  "externalPaymentId": "check-acct-001",
  "status": "DECLINED",
  "accountVerification": {
    "accountStatus": "INVALID",
    "message": "Account number does not match routing number"
  }
}
```

## What's Next

- [Check Card Account (ANI)](check-card-account.md) — Validate cards with AVS, CVC, and Visa ANI
- [Payment Person](payment-person.md) — Create and validate KYC persons
- [Push Transaction](payment/push-transaction.md) — Send payouts to bank accounts, cards, PIX, and wallets
