Skip to main content

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.

BILL v3 API icon

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

SourceDestination

  • 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.

  1. 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.

  2. 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.

  1. While signed in to the BILL web app, click Settings.

  2. Click Sync & Integrations > Manage Developer Keys.

  3. Click Generate developer key.

  4. Review the BILL developer terms of service. Accept the terms, then click Generate key.

  5. BILL takes up to a minute to generate the developer key. Click Reload page after a few moments to view your generated key.

    Important

    Store 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

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. 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.

  1. Enter the email address associated with your BILL account in the Username field.

  2. 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.

  3. 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.

  4. Enter the developer key generated in your BILL account in the Developer Key field. The developer key is sent in the devKey header on every BILL v3 API request.

  5. 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.

  6. 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.

List Login Organizations

This endpoint retrieves the list of BILL organizations associated with the signed-in user. Use this endpoint to discover the organization IDs available to your BILL account before configuring other endpoints.

  • This endpoint does not require any additional parameters. Nexla will automatically call GET /v3/login/organizations using the credential's developer key.
  • The response contains an organizations array; each element is emitted as an individual record into the resulting Nexset.

For complete details, refer to the BILL List Organizations reference.

List Bills

This endpoint retrieves a paginated list of all bills (AP) in your BILL organization. Use it for accounts payable reporting, syncing bills to an external system, or building aging analyses.

  • No additional parameters are required. Nexla calls GET /v3/bills?limit=100 and automatically follows the nextCursor token to retrieve all pages.
  • Each element of the bills array in the response becomes a record in the Nexset.

For complete details, refer to the BILL List Bills reference.

Get Bill

This endpoint retrieves detailed information about a single bill. Use it when you need full bill detail (line items, approvers, status, payment history) for a specific bill ID.

  • Enter the unique identifier of the bill in the Bill ID field. Bill IDs can be discovered using the List Bills endpoint.
  • Nexla calls {'GET /v3/bills/{bill_id}'} and emits the object at $.bill as a record.

For complete details, refer to the BILL Get Bill reference.

List Payments

This endpoint retrieves a paginated list of all AP payments in your BILL organization. Use it to sync outbound payment activity to ERP, accounting, or cash-management systems.

  • No additional parameters are required. Nexla calls GET /v3/payments?limit=100 and automatically follows the nextCursor token.
  • Each element of the payments array is emitted as a record.

For complete details, refer to the BILL List Payments reference.

Get Payment

This endpoint retrieves detailed information about a specific AP payment, including the bills covered by the payment, payment method, and processing status.

  • Enter the unique identifier of the payment in the Payment ID field. Payment IDs can be discovered using the List Payments endpoint.
  • Nexla calls {'GET /v3/payments/{payment_id}'} and emits the object at $.payment as a record.

For complete details, refer to the BILL Get Payment reference.

List Vendors

This endpoint retrieves a paginated list of all vendors in your BILL organization. Use it to synchronize vendor master data with ERP, CRM, or procurement systems.

  • No additional parameters are required. Nexla calls GET /v3/vendors?limit=100 and automatically follows the nextCursor token.
  • Each element of the vendors array is emitted as a record.

For complete details, refer to the BILL List Vendors reference.

Get Vendor

This endpoint retrieves detailed information about a single vendor, including remittance details, tax information, and contact data.

  • Enter the unique identifier of the vendor in the Vendor ID field. Vendor IDs can be discovered using the List Vendors endpoint.
  • Nexla calls {'GET /v3/vendors/{vendor_id}'} and emits the object at $.vendor as a record.

For complete details, refer to the BILL Get Vendor reference.

List Customers

This endpoint retrieves a paginated list of all AR customers in your BILL organization. Use it to maintain a customer master list in downstream finance and CRM systems.

  • No additional parameters are required. Nexla calls GET /v3/customers?limit=100 and automatically follows the nextCursor token.
  • Each element of the customers array is emitted as a record.

For complete details, refer to the BILL List Customers reference.

Get Customer

This endpoint retrieves detailed information about a specific AR customer, including billing addresses, contacts, and account status.

  • Enter the unique identifier of the customer in the Customer ID field. Customer IDs can be discovered using the List Customers endpoint.
  • Nexla calls {'GET /v3/customers/{customer_id}'} and emits the object at $.customer as a record.

For complete details, refer to the BILL Get Customer reference.

List Invoices

This endpoint retrieves a paginated list of all AR invoices issued by your BILL organization. Use it for AR reporting, revenue recognition, or DSO (days sales outstanding) analysis.

  • No additional parameters are required. Nexla calls GET /v3/invoices?limit=100 and automatically follows the nextCursor token.
  • Each element of the invoices array is emitted as a record.

For complete details, refer to the BILL List Invoices reference.

Get Invoice

This endpoint retrieves detailed information about a single AR invoice, including line items, customer details, and current payment status.

  • Enter the unique identifier of the invoice in the Invoice ID field. Invoice IDs can be discovered using the List Invoices endpoint.
  • Nexla calls {'GET /v3/invoices/{invoice_id}'} and emits the object at $.invoice as a record.

For complete details, refer to the BILL Get Invoice reference.

List Vendor Credits

This endpoint retrieves a paginated list of all vendor credits in your BILL organization. Vendor credits represent amounts owed back to your organization by a vendor and can offset future bills.

  • No additional parameters are required. Nexla calls GET /v3/vendor-credits?limit=100 and automatically follows the nextCursor token.
  • Each element of the vendorCredits array is emitted as a record.

For complete details, refer to the BILL List Vendor Credits reference.

List Transactions

This endpoint retrieves a paginated list of all financial transactions in your BILL organization. Use it for a consolidated view of AP, AR, and payment activity for reconciliation or analytics.

  • No additional parameters are required. Nexla calls GET /v3/transactions?limit=100 and automatically follows the nextCursor token.
  • Each element of the transactions array is emitted as a record.

For complete details, refer to the BILL List Transactions reference.

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.

Create Bill

This endpoint creates a new bill in your BILL accounts payable. Use it to automate AP intake from upstream systems such as procurement, ERP, or OCR pipelines.

  • Each Nexset record is sent as a JSON body to POST /v3/bills. Ensure the records contain the fields required by the BILL Create Bill endpoint (e.g., vendorId, invoiceNumber, invoiceDate, billLineItems).
  • No additional template parameters are required; configure record shape using upstream Nexla transforms.

For complete details on the request body schema, refer to the BILL Create Bill reference.

Update Bill

This endpoint updates an existing bill. Use it to apply changes to bill details, line items, or approval routing.

  • Enter the unique identifier of the bill to update in the Bill ID field. The ID is appended to the path: {'PATCH /v3/bills/{bill_id}'}.
  • Each Nexset record is sent as the JSON body containing only the fields to be modified.

For complete details, refer to the BILL Update Bill reference.

Delete Bill

This endpoint deletes a bill from accounts payable. Use it for cleanup workflows where bills must be removed from BILL based on upstream system events.

  • Enter the unique identifier of the bill to delete in the Bill ID field. Nexla calls {'DELETE /v3/bills/{bill_id}'}.

For complete details, refer to the BILL Delete Bill reference.

Approve Bill

This endpoint approves a bill for payment. Use it to automate bill approvals based on rules evaluated in upstream Nexla flows.

  • Enter the unique identifier of the bill to approve in the Bill ID field. Nexla calls {'POST /v3/bills/{bill_id}/approve'}.
  • Each Nexset record is sent as the JSON body if the approve endpoint requires additional approval context (e.g., approver notes).

For complete details, refer to the BILL Approve Bill reference.

Create Payment

This endpoint creates a new AP payment for one or more bills. Use it to disburse vendor payments programmatically from Nexla.

  • Each Nexset record is sent as a JSON body to POST /v3/payments. Include the fields required by BILL (e.g., vendorId, billPayments, processDate, paymentMethod).

For complete details on the request body schema, refer to the BILL Create Payment reference.

Update Payment

This endpoint updates an existing AP payment. Use it to modify a scheduled or pending payment before processing.

  • Enter the unique identifier of the payment to update in the Payment ID field. Nexla calls {'PATCH /v3/payments/{payment_id}'}.

For complete details, refer to the BILL Update Payment reference.

Void Payment

This endpoint voids an AP payment. Use it to cancel a payment that has not yet been processed or to reverse a payment record.

  • Enter the unique identifier of the payment to void in the Payment ID field. Nexla calls {'POST /v3/payments/{payment_id}/void'}.

For complete details, refer to the BILL Void Payment reference.

Create Vendor

This endpoint creates a new vendor record. Use it to onboard vendors into BILL from procurement systems, vendor master data hubs, or vendor onboarding workflows.

  • Each Nexset record is sent as a JSON body to POST /v3/vendors. Include required vendor fields such as name, email, and remittance information per the BILL schema.

For complete details, refer to the BILL Create Vendor reference.

Update Vendor

This endpoint updates an existing vendor record. Use it to keep vendor master data synchronized with an upstream source of truth.

  • Enter the unique identifier of the vendor to update in the Vendor ID field. Nexla calls {'PATCH /v3/vendors/{vendor_id}'}.

For complete details, refer to the BILL Update Vendor reference.

Delete Vendor

This endpoint deletes a vendor record. Use it for vendor offboarding or to maintain a clean vendor master list.

  • Enter the unique identifier of the vendor to delete in the Vendor ID field. Nexla calls {'DELETE /v3/vendors/{vendor_id}'}.

For complete details, refer to the BILL Delete Vendor reference.

Create Customer

This endpoint creates a new AR customer record. Use it to onboard customers into BILL from CRM, billing, or onboarding workflows.

  • Each Nexset record is sent as a JSON body to POST /v3/customers. Include required customer fields such as name, email, and billing address per the BILL schema.

For complete details, refer to the BILL Create Customer reference.

Update Customer

This endpoint updates an existing AR customer record. Use it to keep customer master data in BILL synchronized with your CRM or billing system.

  • Enter the unique identifier of the customer to update in the Customer ID field. Nexla calls {'PATCH /v3/customers/{customer_id}'}.

For complete details, refer to the BILL Update Customer reference.

Delete Customer

This endpoint deletes an AR customer record.

  • Enter the unique identifier of the customer to delete in the Customer ID field. Nexla calls {'DELETE /v3/customers/{customer_id}'}.

For complete details, refer to the BILL Delete Customer reference.

Create Invoice

This endpoint creates a new AR invoice for a customer. Use it to issue invoices programmatically based on billing events from upstream systems.

  • Each Nexset record is sent as a JSON body to POST /v3/invoices. Include required invoice fields such as customerId, invoiceNumber, invoiceDate, and invoiceLineItems.

For complete details, refer to the BILL Create Invoice reference.

Update Invoice

This endpoint updates an existing AR invoice.

  • Enter the unique identifier of the invoice to update in the Invoice ID field. Nexla calls {'PATCH /v3/invoices/{invoice_id}'}.

For complete details, refer to the BILL Update Invoice reference.

Delete Invoice

This endpoint deletes an AR invoice.

  • Enter the unique identifier of the invoice to delete in the Invoice ID field. Nexla calls {'DELETE /v3/invoices/{invoice_id}'}.

For complete details, refer to the BILL Delete Invoice reference.

Send Invoice

This endpoint sends an existing invoice to the customer. Use it to automate invoice delivery once invoices have been created in BILL.

  • Enter the unique identifier of the invoice to send in the Invoice ID field. Nexla calls {'POST /v3/invoices/{invoice_id}/send'}.
  • Each Nexset record is sent as the JSON body if the send endpoint accepts delivery options.

For complete details, refer to the BILL Send Invoice reference.

Record AR Payment

This endpoint records a payment received for an AR invoice. Use it to apply customer payments captured by an external system back to BILL invoices.

  • Enter the unique identifier of the invoice receiving payment in the Invoice ID field. Nexla calls {'POST /v3/invoices/{invoice_id}/payments'}.
  • Each Nexset record is sent as the JSON body containing the payment details (e.g., amount, paymentDate, paymentMethod).

For complete details, refer to the BILL Record AR Payment reference.

Create Vendor Credit

This endpoint creates a new vendor credit, representing an amount owed back to your organization by a vendor that can offset future bills.

  • Each Nexset record is sent as a JSON body to POST /v3/vendor-credits. Include required fields such as vendorId, creditDate, and vendorCreditLineItems.

For complete details, refer to the BILL Create Vendor Credit reference.

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.