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
SDKs
APIs
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
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
Method: POST
Description: Create a new bank account..
Endpoint: /v3/accounts
Parameters: account_id, routing_number, name, notes, type
Method: PUT
Description: Update a specific account by ID..
Endpoint: /v3/accounts/{account_id}
Parameters: account_id, routing_number, name, notes, type
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
Method: DELETE
Description: Delete a specific Accounts Receivable by ID..
Endpoint: /v3/accounts_receivable/{accounts_receivable_id}
Parameters: accounts_receivable_id
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
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
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
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
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
Method: POST
Description: Create a new chart of account..
Endpoint: /v3/chart_of_accounts
Parameters: chart_of_account_id, created_at, modified_at, name
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
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
Method: DELETE
Description: Delete a specific check by ID..
Endpoint: /v3/checks/{check_id}
Parameters: check_id
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
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
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
Method: GET
Description: Retrieve a list of all your companies..
Endpoint: /v3/companies
Parameters: company_id, created_at, is_active, modified_at, name
Method: DELETE
Description: Delete a specific company by ID..
Endpoint: /v3/companies/{company_id}
Parameters: company_id
Method: GET
Description: Retrieve a specific company by ID..
Endpoint: /v3/companies/{company_id}
Parameters: company_id, created_at, is_active, modified_at, name
Method: POST
Description: Create a new company..
Endpoint: /v3/companies
Parameters: company_id, created_at, is_active, modified_at, name
Method: PUT
Description: Update a specific company by ID..
Endpoint: /v3/companies/{company_id}
Parameters: company_id, created_at, is_active, modified_at, name
Method: DELETE
Description: Delete a specific contact by ID..
Endpoint: /v3/contacts/{contact_id}
Parameters: contact_id
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
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
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
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
Method: DELETE
Description: Delete a specific credit note by ID..
Endpoint: /v3/credit_notes/{credit_note_id}
Parameters: credit_note_id
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
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
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
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
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.