← LegitPaycheckAPI v1

API Documentation

Verify a US bank account by routing number and account number and get its status — open, valid, invalid or closed.

Base URL: https://legitpaycheck.com$0.09 / query1 request / 2s
NanoGrav

Recommended IDE — NanoGrav

Ship with an agent that knows your scope.

Build your LegitPaycheck integration faster with NanoGrav, the AI coding IDE by nullGravitum.

Download

1. Activation

Activate API access from your dashboard for a one-time $370. Of that, $200 is credited to your balance and an API key is issued to you. Queries are then billed at $0.09 each from that balance; top it up any time with crypto or GhostPay.

Go to the dashboard →

2. Authentication

Send your API key in the X-API-Key header (a Bearer token also works). Keep it secret — use it server-side only.

X-API-Key: lpk_live_xxxxxxxxxxxxxxxxxxxxxxxx

3. Validate an account

POST /api/v1/validate

curl -X POST https://legitpaycheck.com/api/v1/validate \
  -H "X-API-Key: lpk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "routingNumber": "103000648",
    "accountNumber": "998169608"
  }'

Response 200

{
  "status": "open",
  "bank": "JPMORGAN CHASE BANK",
  "routingNumber": "103000648",
  "accountLast4": "9608",
  "cost": 0.09,
  "balance": 199.91
}

4. Status values

  • open — account exists and is active.
  • valid — routing + account pass verification.
  • invalid — details don't match a real account.
  • closed — account is no longer active.

5. Pricing & limits

  • $0.09 per query, deducted from your balance.
  • Rate limit: 1 request every 2 seconds per key (the query's execution time counts toward the interval).
  • If the verification service is unavailable, you are not charged and get a 502.

6. Errors

401  { "error": "missing_api_key" | "invalid_api_key" }
400  { "error": "bad_input", "message": "..." }
402  { "error": "insufficient_balance", "message": "..." }
429  { "error": "rate_limited", "retryAfterMs": 1200 }   // 1 req / 2s
502  { "error": "provider_unavailable" }                 // not charged