Docs
REST API for biller discovery, account linking, and bill retrieval.
https://api.billerapi.comAuthentication
Most endpoints require IAM credentials. Include these headers with each request.
Gmail OAuth endpoint (/emails/gmail/oauth-url) does not require auth.
Response & Error Codes
Standard HTTP status codes and error response format for all endpoints.
Response Codes
200 Success 201 Created 202 Accepted 400 Bad Request - Invalid parameters or request body 401 Unauthorized - Missing or invalid credentials 403 Forbidden - Insufficient permissions 404 Not Found - Resource not found 429 Too Many Requests - Rate limit exceeded 500 Internal Server Error
Error Response Format
{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}Biller Discovery (Gmail)
Connect Gmail to discover billers from a user's email.
https://api.billerapi.com/emails/gmail/oauth-urlNoneGet Gmail OAuth authorization URL. No auth required.
Request Body
{
"user_id": "string",
"client_id": "string",
"redirect_uri": "string (optional)"
}Response
{
"success": true,
"data": {
"oauth_url": "https://accounts.google.com/o/oauth2/..."
}
}Response Codes
200 Success
cURL Example
curl -X POST https://api.billerapi.com/emails/gmail/oauth-url \
-H "Content-Type: application/json" \
-d '{"user_id":"user_123","client_id":"client_abc"}'https://api.billerapi.com/emails/gmail/connectIAMConnect Gmail for a user.
Request Body
{
"user_id": "string",
"client_id": "string"
}Response Codes
200 Success
cURL Example
curl -X POST https://api.billerapi.com/emails/gmail/connect \
-H "Content-Type: application/json" \
-H "X-Client-ID: your_client_id" \
-H "X-Client-Secret: your_client_secret" \
-d '{"user_id":"user_123","client_id":"client_abc"}'https://api.billerapi.com/emails/messagesIAMList email messages for biller discovery.
Query Parameters
userId, startDate, endDate, limit, cursor
Response Codes
200 Success
cURL Example
curl -X GET "https://api.billerapi.com/emails/messages?userId=user_123&limit=50" \ -H "X-Client-ID: your_client_id" \ -H "X-Client-Secret: your_client_secret"
Biller Account Connection
Use the Connect flow to link biller accounts. For the full flow (select biller, credentials, MFA, account discovery), use @billbutler/connect-sdk. Your server only needs these two endpoints: create a link token before opening the SDK, then exchange the public token after the user completes the flow.
https://api.billerapi.com/link/token/createIAMCreate a link token to initiate the Connect flow. Pass this to the SDK.
Request Body
{
"client_id": "string",
"client_user_id": "string",
"consents": ["bills", "payments"],
"redirect_uri": "string (optional)",
"biller_id": "string (optional)",
"connectivity_type": "string (optional)"
}Response
{
"success": true,
"link_token": "lt_xxx",
"link_token_id": "string"
}Response Codes
201 Created
cURL Example
curl -X POST https://api.billerapi.com/link/token/create \
-H "Content-Type: application/json" \
-H "X-Client-ID: your_client_id" \
-H "X-Client-Secret: your_client_secret" \
-d '{"client_id":"client_abc","client_user_id":"user_123","consents":["bills"]}'https://api.billerapi.com/link/token/exchangeIAMExchange the public token returned by the SDK for an access token.
Request Body
{
"public_token": "string",
"client_id": "string"
}Response
{
"success": true,
"access_token": "string",
"biller_id": "string",
"link_id": "string"
}Response Codes
200 Success
cURL Example
curl -X POST https://api.billerapi.com/link/token/exchange \
-H "Content-Type: application/json" \
-H "X-Client-ID: your_client_id" \
-H "X-Client-Secret: your_client_secret" \
-d '{"public_token":"pt_xxx","client_id":"client_abc"}'Request to Link
Manage requests for users to link their biller accounts.
https://api.billerapi.com/link/request-to-linkIAMList request-to-link records.
Query Parameters
search, status, clientUserId, billerId, from, to, page, limit
Response Codes
200 Success
https://api.billerapi.com/link/request-to-link/:idIAMGet request-to-link details.
Response Codes
200 Success
https://api.billerapi.com/link/request-to-link/createIAMCreate a request-to-link.
Request Body
{
"clientId": "string",
"clientUserId": "string",
"billerId": "string (optional)",
"onboardingRequestId": "string (optional)",
"metadata": {}
}Response Codes
201 Created
https://api.billerapi.com/link/request-to-link/:id/statusIAMUpdate request-to-link status.
Request Body
{
"status": "string",
"billerId": "string (optional)",
"linkTokenId": "string (optional)",
"metadata": {}
}Response Codes
200 Success
https://api.billerapi.com/link/request-to-link/:id/cancelIAMCancel a request-to-link.
Request Body
{
"reason": "string (optional)"
}Response Codes
200 Success
https://api.billerapi.com/link/request-to-link/:id/proceedIAMProceed a request-to-link to a link session. Returns link token and session URL.
Response Codes
200 Success
Biller Retrieval
List and search billers.
https://api.billerapi.com/billersIAMList billers with optional filtering.
Query Parameters
search_term, status, type, consent_scope, page, page_size, sort_by, sort_order
Response Codes
200 Success
https://api.billerapi.com/billers/:idIAMGet biller by ID.
Response Codes
200 Success
https://api.billerapi.com/billers/search/by-emailIAMSearch billers by email domain.
Query Parameters
Response Codes
200 Success
Bills
Retrieve bills and manage sync for linked accounts.
https://api.billerapi.com/bills/getIAMGet bills for an account link.
Query Parameters
account_link_id, start_date, end_date, limit, cursor
Response Codes
200 Success
cURL Example
curl -X GET "https://api.billerapi.com/bills/get?account_link_id=link_123&limit=50" \ -H "X-Client-ID: your_client_id" \ -H "X-Client-Secret: your_client_secret"
https://api.billerapi.com/bills/:idIAMGet bill by ID. Supports Bearer (access token) or IAM credentials.
Response Codes
200 Success
https://api.billerapi.com/bills/sync/triggerIAMTrigger bill sync for an account link.
Request Body
{
"account_link_id": "string",
"force": "boolean (optional)"
}Response Codes
202 Accepted
https://api.billerapi.com/bills/syncIAMGet sync status for an account link.
Query Parameters
account_link_id, since, limit, include_deleted
Response Codes
200 Success
https://api.billerapi.com/bills/accountsIAMGet connected accounts for the client.
Response Codes
200 Success
Ready to integrate?
Sign up for a developer account to get your API keys.