Bill.com API

By Abhishek Kumar
5 min read
Bill.com simplifies payments, invoicing, and expense management. Use Bill.com's API for seamless integration, real-time financial updates, and enhanced cash flow control

Table of Contents

Bill.com is a business payments company helping over 3 million members manage more than $60 billion in payments annually.

API Overview

Bill.com is a cloud-based financial management platform designed to streamline business payments, invoicing, and expense management. It offers a suite of tools that automate and simplify financial processes, including accounts payable and receivable, bill payment, vendor management, and expense tracking. Bill.com integrates with various accounting systems, banks, and payment gateways, enabling businesses to centralize their financial operations on a single platform. By automating manual tasks, reducing errors, and providing real-time visibility into financial data, Bill.com helps businesses improve efficiency, save time, and gain control over their cash flow.

Bill.com's API (Application Programming Interface) provides developers with a set of RESTful APIs, webhooks, and documentation to integrate Bill.com's functionality into their own applications or systems. The API allows developers to access and manage Bill.com data, such as invoices, payments, vendors, and expenses. The documentation includes detailed API reference guides, code samples, and tutorials to assist developers in building integrations. Webhooks enable developers to receive real-time notifications when specific events occur in Bill.com, such as when an invoice is paid or a payment is approved. Rate limits are implemented to ensure the API's stability and performance, and developers can monitor their API usage through the Bill.com developer portal.

API Request Limits

Free

100 requests per minute

Pro

1,000 requests per minute

Premier

5,000 requests per minute

APIs

Accounts

Method: GET

Description: Retrieve a list of all your company's accounts..

Endpoint: /v3/accounts

Parameters: account_id, created_at, modified_at, name, notes, paypal_account_id, routing_number, type

Accounts

Method: GET

Description: Retrieve a specific account by ID..

Endpoint: /v3/accounts/{account_id}

Parameters: account_id, created_at, modified_at, name, notes, paypal_account_id, routing_number, type

Accounts

Method: POST

Description: Create a new bank account..

Endpoint: /v3/accounts

Parameters: account_id, routing_number, name, notes, type

Accounts

Method: PUT

Description: Update a specific account by ID..

Endpoint: /v3/accounts/{account_id}

Parameters: account_id, routing_number, name, notes, type

AccountsReceivable

Method: GET

Description: Retrieve a list of all your outstanding payments..

Endpoint: /v3/accounts_receivable

Parameters: accounts_receivable_id, amount, created_at, currency_code, due_date, external_id, modified_at, notes, paid_amount, payment_link_code, payment_link_valid_till, receivable_type, reference_number, status, type, vendor_id, vendor_name

AccountsReceivable

Method: DELETE

Description: Delete a specific Accounts Receivable by ID..

Endpoint: /v3/accounts_receivable/{accounts_receivable_id}

Parameters: accounts_receivable_id

AccountsReceivable

Method: GET

Description: Retrieve a specific Accounts Receivable by ID..

Endpoint: /v3/accounts_receivable/{accounts_receivable_id}

Parameters: accounts_receivable_id, amount, created_at, currency_code, due_date, external_id, modified_at, notes, paid_amount, payment_link_code, payment_link_valid_till, receivable_type, reference_number, status, type, vendor_id, vendor_name

AccountsReceivable

Method: POST

Description: Create a new Accounts Receivable..

Endpoint: /v3/accounts_receivable

Parameters: accounts_receivable_id, amount, created_at, currency_code, due_date, external_id, modified_at, notes, paid_amount, payment_link_code, payment_link_valid_till, receivable_type, reference_number, status, type, vendor_id, vendor_name

AccountsReceivable

Method: PUT

Description: Update a specific Accounts Receivable by ID..

Endpoint: /v3/accounts_receivable/{accounts_receivable_id}

Parameters: accounts_receivable_id, amount, currency_code, due_date, external_id, notes, paid_amount, payment_link_code, payment_link_valid_till, receivable_type, reference_number, status, type, vendor_id, vendor_name

ChartOfAccounts

Method: GET

Description: Retrieve a list of chart of accounts used in the company..

Endpoint: /v3/chart_of_accounts

Parameters: chart_of_account_id, created_at, modified_at, name

ChartOfAccounts

Method: GET

Description: Retrieve a specific chart of account by ID..

Endpoint: /v3/chart_of_accounts/{chart_of_account_id}

Parameters: chart_of_account_id, created_at, modified_at, name

ChartOfAccounts

Method: POST

Description: Create a new chart of account..

Endpoint: /v3/chart_of_accounts

Parameters: chart_of_account_id, created_at, modified_at, name

ChartOfAccounts

Method: PUT

Description: Update a specific chart of account by ID..

Endpoint: /v3/chart_of_accounts/{chart_of_account_id}

Parameters: chart_of_account_id, created_at, modified_at, name

Checks

Method: GET

Description: Retrieve a list of all checks..

Endpoint: /v3/checks

Parameters: check_id, amount, bank_account_name, created_at, currency_code, delivery_service_type, due_date, external_id, modified_at, notes, paid_amount, payment_link_code, payment_link_valid_till, payee_name, reference_number, status, type, vendor_id, vendor_name

Checks

Method: DELETE

Description: Delete a specific check by ID..

Endpoint: /v3/checks/{check_id}

Parameters: check_id

Checks

Method: GET

Description: Retrieve a specific check by ID..

Endpoint: /v3/checks/{check_id}

Parameters: check_id, amount, bank_account_name, created_at, currency_code, delivery_service_type, due_date, external_id, modified_at, notes, paid_amount, payment_link_code, payment_link_valid_till, payee_name, reference_number, status, type, vendor_id, vendor_name

Checks

Method: POST

Description: Create a new check..

Endpoint: /v3/checks

Parameters: check_id, amount, bank_account_name, currency_code, delivery_service_type, due_date, external_id, notes, paid_amount, payment_link_code, payment_link_valid_till, payee_name, reference_number, status, type, vendor_id, vendor_name

Checks

Method: PUT

Description: Update a specific check by ID..

Endpoint: /v3/checks/{check_id}

Parameters: check_id, amount, bank_account_name, currency_code, delivery_service_type, due_date, external_id, notes, paid_amount, payment_link_code, payment_link_valid_till, payee_name, reference_number, status, type, vendor_id, vendor_name

Companies

Method: GET

Description: Retrieve a list of all your companies..

Endpoint: /v3/companies

Parameters: company_id, created_at, is_active, modified_at, name

Companies

Method: DELETE

Description: Delete a specific company by ID..

Endpoint: /v3/companies/{company_id}

Parameters: company_id

Companies

Method: GET

Description: Retrieve a specific company by ID..

Endpoint: /v3/companies/{company_id}

Parameters: company_id, created_at, is_active, modified_at, name

Companies

Method: POST

Description: Create a new company..

Endpoint: /v3/companies

Parameters: company_id, created_at, is_active, modified_at, name

Companies

Method: PUT

Description: Update a specific company by ID..

Endpoint: /v3/companies/{company_id}

Parameters: company_id, created_at, is_active, modified_at, name

Contacts

Method: DELETE

Description: Delete a specific contact by ID..

Endpoint: /v3/contacts/{contact_id}

Parameters: contact_id

Contacts

Method: GET

Description: Retrieve a specific contact by ID..

Endpoint: /v3/contacts/{contact_id}

Parameters: contact_id, company_name, created_at, email, fax, first_name, job_title, last_name, linkedin_profile_url, middle_name, mobile, modified_at, notes, phone, salutation, twitter_profile_url

Contacts

Method: POST

Description: Create a new contact..

Endpoint: /v3/contacts

Parameters: contact_id, company_name, created_at, email, fax, first_name, job_title, last_name, linkedin_profile_url, middle_name, mobile, modified_at, notes, phone, salutation, twitter_profile_url

Contacts

Method: PUT

Description: Update a specific contact by ID..

Endpoint: /v3/contacts/{contact_id}

Parameters: contact_id, company_name, email, fax, first_name, job_title, last_name, linkedin_profile_url, middle_name, mobile, modified_at, notes, phone, salutation, twitter_profile_url

CreditNotes

Method: GET

Description: Retrieve a list of all credit notes..

Endpoint: /v3/credit_notes

Parameters: credit_note_id, amount, created_at, currency_code, due_date, external_id, modified_at, notes, paid_amount, payment_link_code, payment_link_valid_till, reference_number, status, type, vendor_id, vendor_name

CreditNotes

Method: DELETE

Description: Delete a specific credit note by ID..

Endpoint: /v3/credit_notes/{credit_note_id}

Parameters: credit_note_id

CreditNotes

Method: GET

Description: Retrieve a specific credit note by ID..

Endpoint: /v3/credit_notes/{credit_note_id}

Parameters: credit_note_id, amount, created_at, currency_code, due_date, external_id, modified_at, notes, paid_amount, payment_link_code, payment_link_valid_till, reference_number, status, type, vendor_id, vendor_name

CreditNotes

Method: POST

Description: Create a new credit note..

Endpoint: /v3/credit_notes

Parameters: credit_note_id, amount, created_at, currency_code, due_date, external_id, modified_at, notes, paid_amount, payment_link_code, payment_link_valid_till, reference_number, status, type, vendor_id, vendor_name

CreditNotes

Method: PUT

Description: Update a specific credit note by ID..

Endpoint: /v3/credit_notes/{credit_note_id}

Parameters: credit_note_id, amount, currency_code, due_date, external_id, notes, paid_amount, payment_link_code, payment_link_valid_till, reference_number, status, type, vendor_id, vendor_name

Currencies

Method: GET

Description: Retrieve a list of all supported currencies..

Endpoint: /v3/currencies

Parameters: currency_code, created_at, currency_name, modified_at, numeric_code, symbol

Currencies

Method: GET

Description: Retrieve a specific currency by currency code..

Endpoint: /v3/currencies/{currency_code}

Parameters: currency_code, created_at, currency_name, modified

FAQ

How do I get an API key for my Bill.com account?

After logging into your developer account, navigate to the 'API Keys' section of the developer dashboard and click 'Create API Key'.

What are the rate limits for the Bill.com API?

The rate limit is 60 requests per minute per endpoint. You can check the remaining requests and reset time in the response headers.

How can I test the API without affecting my live data?

You can use the Bill.com sandbox account to test your integration without interacting with real financial data.

What is the difference between a developer account and a normal Bill.com account?

Developer accounts are specifically created for testing and development purposes and provide access to the Bill.com API.

How do I authenticate to the Bill.com API?

Authentication is done using OAuth 2.0 with JWT Bearer tokens. You need to obtain an access token from the Bill.com authorization server and include it in the 'Authorization' header of your API requests.

Last Update: September 05, 2024