SterlingRidge
Sterling Check · API reference

Sterling Check
eCheck API documentation.

Sandbox access is provisioned with your account — contact us to get API keys.

Overview

The Sterling Check API lets you verify and accept electronic checks over REST. All endpoints live under api.sterlingridge.io/v1, accept form-encoded or JSON bodies, and return predictable JSON. Verified payments deposit same or next business day.

GET /v1/account

$ curl https://api.sterlingridge.io/v1/account \
    -u sk_test_72Chxxx:

{
  "id": "acct_5Wm3Rt",
  "object": "account",
  "product": "sterling_check",
  "capabilities": ["echeck_payments", "verification",
    "payment_links", "recurring_billing"],
  "mode": "sandbox"
}

Authentication

Authenticate with your secret key via HTTP Basic auth — the key is the username and the password is blank. Sandbox keys are prefixed sk_test_, live keys sk_live_. Keys must stay server-side; use Checkout.JS for anything in the browser.

Authenticated request

$ curl https://api.sterlingridge.io/v1/echecks \
    -u sk_test_72Chxxx:
    # The colon prevents curl from prompting
    # for a password — the key is the username.

# 401 response for a missing or invalid key:
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key provided."
  }
}

Create a payment

Create an eCheck with a routing and account number. The account is verified before submission, and the payment settles to your bank account same or next business day. Amounts are in cents — there are no transaction limits.

POST /v1/echecks

$ curl https://api.sterlingridge.io/v1/echecks \
    -u sk_test_72Chxxx: \
    -d amount=84500 \
    -d currency=usd \
    -d "bank[routing_number]"=042000314 \
    -d "bank[account_number]"=000123456789 \
    -d "payer[name]"="Jane Smith" \
    -d description="Order #7218"

{
  "id": "chk_3Vb8Kp6Qs",
  "object": "echeck",
  "amount": 84500,
  "status": "processing",
  "verification": "passed",
  "expected_deposit": "next_day"
}

Verify an account

Verify an account before you accept a check. The basic tier validates the routing and account number in real time; the premium tier adds a bank-login ownership match and a balance check across 5,000+ institutions.

POST /v1/verifications

$ curl https://api.sterlingridge.io/v1/verifications \
    -u sk_test_72Chxxx: \
    -d "bank[routing_number]"=042000314 \
    -d "bank[account_number]"=000123456789 \
    -d tier=premium

{
  "id": "ver_8Ln4Dw",
  "object": "verification",
  "account": "valid",
  "ownership": "matched",
  "balance": "sufficient",
  "risk_score": 7
}

Recurring billing

Charge a stored, verified bank account on a fixed schedule — weekly, monthly, or custom intervals. Sterling Check re-verifies before each debit, retries soft failures automatically, and notifies you when a schedule needs attention.

POST /v1/recurring

$ curl https://api.sterlingridge.io/v1/recurring \
    -u sk_test_72Chxxx: \
    -d customer=cus_2Pk7Mv \
    -d amount=14900 \
    -d currency=usd \
    -d interval=month \
    -d start_date=2026-08-01

{
  "id": "rec_4Zn9Xj",
  "object": "recurring_schedule",
  "status": "active",
  "next_charge": "2026-08-01"
}

Webhooks

Subscribe to events like echeck.deposited, echeck.returned, and verification.failed. Deliveries are signed with your endpoint secret and retried with backoff for 72 hours, so your records always reconcile.

POST /v1/webhook_endpoints

$ curl https://api.sterlingridge.io/v1/webhook_endpoints \
    -u sk_test_72Chxxx: \
    -d url=https://example.com/webhooks/sterling \
    -d "events[]"=echeck.deposited \
    -d "events[]"=echeck.returned \
    -d "events[]"=verification.failed

{
  "id": "we_7Rc5Bq",
  "object": "webhook_endpoint",
  "secret": "whsec_Km2...",
  "status": "enabled"
}

Ready to build on
Sterling Check?

Sign up and our integration team will provision your sandbox, API keys, and a named engineering contact.

Sign Up Now

No long-term contracts · No setup fees · No cancellation fees