SterlingRidge
Sterling ACH · API reference

Sterling ACH
API documentation.

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

Overview

The Sterling ACH API is a REST API over HTTPS. Every endpoint lives under api.sterlingridge.io/v1, accepts form-encoded or JSON bodies, and returns predictable JSON. Requests are idempotent when you supply an Idempotency-Key header, and every state change fires a webhook.

GET /v1/account

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

{
  "id": "acct_8Kd2Wq",
  "object": "account",
  "product": "sterling_ach",
  "capabilities": ["payouts", "verified_debits",
    "payment_links", "subscriptions", "marketplace"],
  "mode": "sandbox"
}

Authentication

Authenticate with your secret key using HTTP Basic auth — the key is the username and the password is blank. Sandbox keys are prefixed sk_test_, live keys sk_live_. Keep keys server-side; never ship them in client code.

Authenticated request

$ curl https://api.sterlingridge.io/v1/payments \
    -u sk_test_51Hxxxx:
    # 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."
  }
}

Send a payment

Push funds to any US bank account. Choose the rail per payout: rtp for instant 24/7 credits, ach_same_day, or standard ach. If the destination bank does not support RTP, the payout automatically falls back to same-day ACH.

POST /v1/payouts

$ curl https://api.sterlingridge.io/v1/payouts \
    -u sk_test_51Hxxxx: \
    -d amount=250000 \
    -d currency=usd \
    -d rail=rtp \
    -d destination=ba_3Nv8Qx \
    -d description="Affiliate commission — June"

{
  "id": "po_5Tk9Zw2Lm",
  "object": "payout",
  "amount": 250000,
  "rail": "rtp",
  "status": "paid",
  "arrival": "instant"
}

Accept a payment

Debit a customer's verified bank account. Customers connect their bank once through Plaid; after that, every debit is verified for ownership and checked for sufficient balance before submission — then settles next business day.

POST /v1/payments

$ curl https://api.sterlingridge.io/v1/payments \
    -u sk_test_51Hxxxx: \
    -d amount=125000 \
    -d currency=usd \
    -d method=ach_verified \
    -d customer=cus_9f2K3L \
    -d description="Invoice #2041"

{
  "id": "pay_7Yq2Mn4Rd",
  "object": "payment",
  "status": "processing",
  "verification": { "bank": "verified",
                    "balance": "sufficient" },
  "expected_settlement": "next_day"
}

Subscriptions

Bill a verified bank account on a schedule. Set the amount and interval and Sterling ACH handles retries, balance checks before each charge, and dunning notifications when a payment cannot be collected.

POST /v1/subscriptions

$ curl https://api.sterlingridge.io/v1/subscriptions \
    -u sk_test_51Hxxxx: \
    -d customer=cus_9f2K3L \
    -d amount=9900 \
    -d currency=usd \
    -d interval=month \
    -d description="Pro plan"

{
  "id": "sub_6Fh3Pv",
  "object": "subscription",
  "status": "active",
  "next_charge": "2026-08-27"
}

Marketplace

Onboard sellers with Plaid-verified accounts, hold funds in white-label wallet balances, and split or route payouts programmatically. Sellers complete a hosted onboarding flow — you never touch their bank credentials.

POST /v1/marketplace/accounts

$ curl https://api.sterlingridge.io/v1/marketplace/accounts \
    -u sk_test_51Hxxxx: \
    -d type=seller \
    -d "profile[name]"="Acme Widgets" \
    -d "profile[email]"=payouts@acmewidgets.com

{
  "id": "macct_4Jd8Nb",
  "object": "marketplace_account",
  "onboarding_url":
    "https://onboard.sterlingridge.io/m/4Jd8Nb",
  "wallet": { "balance": 0, "currency": "usd" }
}

Webhooks

Subscribe to events like payment.settled, payout.paid, and payment.returned. Every delivery is signed with your endpoint secret so you can verify authenticity, and failed deliveries retry with backoff for 72 hours.

POST /v1/webhook_endpoints

$ curl https://api.sterlingridge.io/v1/webhook_endpoints \
    -u sk_test_51Hxxxx: \
    -d url=https://example.com/webhooks/sterling \
    -d "events[]"=payment.settled \
    -d "events[]"=payout.paid \
    -d "events[]"=payment.returned

{
  "id": "we_9Qs2Vt",
  "object": "webhook_endpoint",
  "secret": "whsec_Xp4...",
  "status": "enabled"
}

Ready to build on
Sterling ACH?

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