BILL v3 API
BILL is a financial automation platform for accounts payable, accounts receivable, expense management, and spend management. The BILL v3 API provides programmatic access to bills, invoices, payments, vendors, customers, vendor credits, and transactions, enabling end-to-end AP/AR automation between BILL and other business systems.

Power end-to-end data operations for your BILL v3 API API with Nexla. Our bi-directional BILL v3 API connector is purpose-built for BILL v3 API, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to BILL v3 API or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your BILL v3 API workflows fast, secure, and fully governed.
Features
Type: API
- Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
- Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
- API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
- Request optimization with intelligent batching, retry, and caching to minimize API calls and costs
Prerequisites
Before creating a credential, gather the values required by the BILL v3 API POST /v3/login endpoint. These include your BILL username, password, organization ID, and a developer key issued from your BILL account.
BILL Account & Organization
A BILL account is required to access the v3 API. Production credentials are created from your live BILL organization, while testing credentials are created from a sandbox developer account.
-
Sign in to BILL at the appropriate environment for your use case.
-
Production: Sign in at https://app.bill.com using the email address and password for your BILL organization.
-
Sandbox: Sign in at the BILL sandbox web app using the developer account email address and password created during sandbox sign-up. For details on creating a sandbox account, refer to the Sandbox API sign up guide.
-
-
Locate your Organization ID. In the BILL web app, navigate to Settings. The organization ID is displayed at the bottom of the settings page and is required when signing in to the API.
Generate a Developer Key
The developer key (devKey) identifies your application to BILL on every API request and must be included in the devKey HTTP header.
-
While signed in to the BILL web app, click Settings.
-
Click Sync & Integrations > Manage Developer Keys.
-
Click Generate developer key.
-
Review the BILL developer terms of service. Accept the terms, then click Generate key.
-
BILL takes up to a minute to generate the developer key. Click Reload page after a few moments to view your generated key.
ImportantStore the developer key in a secure location such as a password manager. Treat it as a secret credential and do not share it publicly.
For complete details on BILL keys and tokens, refer to the BILL keys and tokens documentation.
API Environments
BILL provides distinct base URLs for production and sandbox environments. Select the environment that matches the credentials and developer key you generated.
-
Production:
https://api.bill.com -
Sandbox:
https://gateway.stage.bill.com/connect
For additional details, refer to the BILL v3 API Reference Overview.
Authenticate
Create a credential in Nexla
-
After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.
-
Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.
The BILL v3 API uses token-based authentication. Nexla exchanges your username, password, organization ID, and developer key for a sessionId by calling the POST /v3/login endpoint. The returned sessionId is automatically used as the sessionId header on all subsequent API requests.
-
Enter the email address associated with your BILL account in the Username field.
-
Enter the password for your BILL account in the Password field.
The password value is stored as a secured credential field and is only used when Nexla exchanges credentials for a session.
-
Enter your BILL organization ID in the Organization ID field. This value is found at the bottom of the Settings page in the BILL web app and identifies the BILL organization that will be accessed by Nexla.
-
Enter the developer key generated in your BILL account in the Developer Key field. The developer key is sent in the
devKeyheader on every BILL v3 API request. -
Select the BILL API environment that matches your credentials from the API Base URL field.
-
Production (
https://api.bill.com): Select this option to access your live BILL organization data. -
Sandbox (
https://gateway.stage.bill.com/connect): Select this option when working with a sandbox developer account for testing and integration development.
Production credentials cannot be used against the sandbox environment, and sandbox credentials cannot be used against production. Ensure the username, password, organization ID, developer key, and base URL all correspond to the same BILL environment.
-
-
Click the Save button at the bottom of the overlay to save the configured credential. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.
Use as a data source
To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the BILL v3 API connector tile, then select the credential that will be used to connect to the BILL v3 API instance, and click Next; or, create a new BILL v3 API credential for use in this flow.
Endpoint templates
Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common BILL v3 API endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your data source for this endpoint.
Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.
Manual configuration
BILL v3 API data sources can also be manually configured to ingest data from any valid BILL v3 API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or custom request parameters such as filters or sort criteria. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.
Use the base URL that matches your credential: https://api.bill.com for production or https://gateway.stage.bill.com/connect for sandbox (for example, https://api.bill.com/v3/bills?limit=100). BILL list endpoints accept a limit query parameter up to 100; larger limits are rejected.
BILL list endpoints return an array under a typed key, so set the path to data to $.bills[*], $.payments[*], $.invoices[*], etc.; get endpoints return a single object, so use $.bill, $.payment, or $.invoice. List endpoints use cursor-based pagination: each response includes a nextCursor field that is sent as the cursor query parameter (response token path $.nextCursor) until BILL returns an empty cursor.
You do not need to include the devKey or sessionId headers—both are added automatically by Nexla based on your BILL v3 API credential.
Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new BILL v3 API data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.
Use as a destination
Click the + icon on the Nexset that will be sent to the BILL v3 API destination, and select the Send to Destination option from the menu. Select the BILL v3 API connector from the list of available destination connectors, then select the credential that will be used to connect to the BILL v3 API organization, and click Next; or, create a new BILL v3 API credential for use in this flow.
Endpoint templates
Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common BILL v3 API endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.
Manual configuration
BILL v3 API destinations can also be manually configured to send data to any valid BILL v3 API endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.
The BILL v3 API expects JSON. Use POST to create bills, invoices, payments, vendors, customers, and vendor credits or to trigger actions such as approve, send, and void; PATCH for partial updates to existing records; and DELETE to remove records. Use the base URL that matches your credential—https://api.bill.com for production or https://gateway.stage.bill.com/connect for sandbox—and include the resource ID in the path for update or action endpoints (e.g., {'https://api.bill.com/v3/bills/{bill_id}'}).
You do not need to include the devKey or sessionId headers—both are added automatically by Nexla based on your BILL v3 API credential. BILL v3 API write endpoints accept one resource per request, so leave record batching disabled unless a specific endpoint accepts an array body. Optionally enable the response webhook to send each API response to a new Nexla webhook data source, which is useful for capturing BILL-generated identifiers (e.g., a new bill or payment ID) returned by create operations for downstream processing.
Save & activate
Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To begin sending data to the configured BILL v3 API endpoint, open the destination resource menu, and select Activate.
The Nexset data will not be sent to the BILL v3 API until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.