Develop with the Tabs API
The Tabs API is a RESTful, JSON-based interface for managing your billing lifecycle programmatically. Use it to push Customers, Contracts, Billing Terms, and usage data into Tabs, and to pull Invoices, Payments, and reports back out. This page covers the mechanics of working with the API—authentication, request format, error handling, pagination, and rate limits.
Base URL
All production API requests use the following base URL:
The base URL above points to the Tabs production environment. To request access to a sandbox environment for development and testing, contact your Tabs Implementation Manager.
Authentication
You can create an API key from the app. All requests require your key in the Authorization header.
API keys are scoped to a single Tabs entity. The key identifies which account the request operates on, and Tabs enforces access controls accordingly.
Keys can be revoked at any time. A revoked key returns 401 Unauthorized.
Request format
The API accepts and returns JSON. Include the Content-Type header on all requests with a body:
Here is a minimal example that creates a customer:
Response format
Every response is wrapped in a standard envelope with three fields:
Errors
When a request fails, the response includes an error object with a status code, message, and optional details:
Common status codes
Pagination
List endpoints support offset-based pagination with page and limit query parameters:
The response wraps the results with pagination metadata:
Filtering
List endpoints support filtering with the filter query parameter. Each filter uses the format property:rule:value:
To apply more than one filter, separate them with commas. Filters combine with AND—a customer must match every condition to be returned:
The response is a standard paginated list containing only the customers that match your filters:
Supported rules:
Filterable fields on GET /v3/customers:
Wrap values containing commas or spaces in double quotes (filter=name:eq:"Acme, Inc."). For in and nin, separate values with a pipe (filter=externalIds.externalId:in:cust_1|cust_2).
Rate limiting
The API generally enforces a rate limit of 10 requests per second per merchant. When the limit is exceeded, the API returns 429 Too Many Requests. Pause and retry.
The usage events endpoint (POST /v1/events) has a separate, higher limit of 10,000 requests per minute to support high-throughput ingestion workloads.

