What could you do if every biller had an API?
One REST endpoint returns normalized bills, balances, and due dates as structured JSON — across any biller portal, no scraping to maintain — for developers and their agents.
# Retrieve bills for one linked account
curl "https://sandbox.api.billerapi.com/v1/bills?account_link_id=4b7d3d9c-1f2a-4a5e-9c3b-8e1f0a6d2c74" \
-H "Authorization: Bearer bak_test_4f2c..." \
-H "Idempotency-Key: 2f8e0c14-6b39-4d7a-b0f5-1c9a4e6d3b82"{
"bills": [
{
"id": "bill_9a1c6f52-0b74-4c3e-8d21-5f7a2e94b6c1",
"total_amount": {
"value": "142.19",
"currency": "USD"
},
"due_date_iso": "2026-07-21"
}
],
"total_count": 1,
"has_more": false,
"next_cursor": ""
}Build it yourself, or send your agent
Both paths begin with the same public documentation. The agent path runs an account-free, read-only demo without credentials, consent, or account creation.
The Connect flow your users actually see
Search for a biller, authenticate, clear MFA, done — the hosted Connect flow handles every provider quirk so your integration is one connect() call and one webhook.
Find your biller
Search supported billers
Share your bill data
Springfield Utility → Acme App
Log in to Springfield Utility
Entered here only — never sent to Acme App
Choose accounts to link
2 accounts found at Springfield Utility
The most common path. Region selection appears between consent and credentials for region-gated billers, and an MFA or security-question step appears after login when the biller requires one.
bill.created
Your user links their biller without leaving your product. You never touch credentials.
See the live sandbox demoBill data and payment preparation in one API
Discover, link, retrieve, and collect payment methods on consistent contracts. Bill-payment execution remains unavailable and returns 501 PAYMENT_EXECUTION_NOT_AVAILABLE.
Biller discovery
Search supported billers by name, category, or region — utilities, telecom, insurance, lenders, and subscriptions.
Account linking
Drop-in Connect flow handles credentials, MFA, and captchas invisibly. You get a durable link token, never the password.
Bill retrieval
Normalized bills with amounts, due dates, statements, and line items — the same schema whether it came from an API or a scrape.
Payment methods
Collect and tokenize payment methods with hosted Elements. Bill-payment execution is not available; initiation returns 501 PAYMENT_EXECUTION_NOT_AVAILABLE.
Wire up bills in an afternoon
Four steps from key to first webhook. The Connect flow does the messy part; you handle typed events.
- 1
Create a link token
Call POST /v1/link-tokens server-side with the biller and your customer reference.
/v1/link-tokens - 2
Launch Connect
Hand the token to the drop-in Connect UI. Credentials, MFA, and captchas are handled for you.
- 3
Exchange the token
Swap the public token for a durable account_link_id you store against the customer.
account_link_id - 4
Receive bill.created webhooks
Bills arrive as signed, typed events as soon as they're available — no polling loop to run.
bill.created
{
"type": "bill.created",
"id": "evt_1PQm7z",
"created": 1783041920,
"data": {
"bill_id": "bill_8Kd2Xq",
"account_link_id": "aln_Qb3R",
"amount_due": 142.19,
"due_date": "2026-07-21"
}
}Built into products like yours
Bill management apps
Show every bill in one place and prepare payment experiences without presenting unavailable money movement.
Subscription management
Detect recurring charges and surface price changes before renewal.
Personal finance (PFM)
Enrich transactions with real due dates and statement-level detail.
Built for engineers
Typed SDKs
First-class Node, React, and CLI packages with full TypeScript types generated from the API spec.
Event-driven webhooks
Signed, retried, idempotent events. Verify with one line, replay from the dashboard.
Versioned API
Date-pinned versions and a public changelog. Upgrades are opt-in, never a surprise.