Bill.com

Bill.com is an online billing and invoicing tool. For more information, see Bill.com developer docs

Quick Start

from parsons import BillCom

bc = BillCom(USERNAME, PASSWORD, ORG_ID, DEV_KEY, ENDPOINT_URL)

# List all Customers currently in the system
all_contacts = bc.get_customer_list()

# Create a new customer
customer_data = {
    "contactFirstName": "Contact First Name",
}
bc.create_customer('Customer Name', 'customer.email@fakeemail.com', customer_data)

API

class parsons.BillCom(user_name, password, org_id, dev_key, api_url)[source]
Args:
user_name: str

The Bill.com username

password: str

The Bill.com password

org_id: str

The Bill.com organization id

dev_key: str

The Bill.com dev key

api_url:

The Bill.com end point url

get_user_list(start_user=0, max_user=999, **kwargs)[source]
Args:
start_user: int

The index of first user to return. Starts from 0 (not 1).

max_user: str

The index of the max user to return

**kwargs:

Any other fields to pass

Returns:

A Parsons Table of user information for every user from start_user to max_user.

get_customer_list(start_customer=0, max_customer=999, **kwargs)[source]
Args:
start_customer: int

The index of first customer to return. Starts from 1 (not 0).

max_customer: str

The index of the max customer to return

**kwargs:

Any other fields to pass

Returns:

A Parsons Table of customer information for every user from start_customer to max_customer.

get_invoice_list(start_invoice=0, max_invoice=999, **kwargs)[source]
Args:
start_invoice: int

The index of first customer to return. Starts from 1 (not 0).

max_invoice: str

The index of the max customer to return

**kwargs:

Any other fields to pass

Returns:

A list of dictionaries of invoice information for every invoice from start_invoice to max_invoice.

read_customer(customer_id)[source]
Args:
customer_id: str

The id of the customer to query

Returns:

A dictionary of the customer’s information.

read_invoice(invoice_id)[source]
Args:
invoice_id: str

The id of the invoice to query

Returns:

A dictionary of the invoice information.

check_customer(customer1, customer2)[source]
Args:
customer1: dict

A dictionary of data on customer1

customer2: dict

A dictionary of data on customer2

Returns:
True if either

1. customer1 and customer2 have the same id OR 2. customer1 has no id and customer1 customer2 have the same email address

False otherwise

get_or_create_customer(customer_name, customer_email, **kwargs)[source]
Args:
customer_name: str

The name of the customer

customer_email: str

The customer’s email

Keyword Args:
**kwargs:

Any other fields to store about the customer.

Returns:

A dictionary of the customer’s information including an id. If the customer already exists, this function will not create a new id and instead use the existing id.

create_invoice(customer_id, invoice_number, invoice_date, due_date, invoice_line_items, **kwargs)[source]
Args:
customer_id: str

The customer’s id

invoice_number: str

The invoice number. Every invoice must have a distinct invoice number.

invoice_date: str

The invoice date. This can be the date the invoice was generated of any other relevant date.

due_date: str

The date on which the invoice is due.

invoice_line_items: list

A list of dicts, one for each line item in the invoice. The only required field is “quantity”.

**kwargs:

Any other invoice details to pass.

Returns:

A dictionary of the invoice’s information including an id.

send_invoice(invoice_id, from_user_id, to_email_addresses, message_subject, message_body, **kwargs)[source]
Args:
invoice_id: str

The id of the invoice to send

from_user_id: str

The id of the Bill.com user from whom to send the email

to_email_addresses:

The customer’s email address

message_subject:

The subject of the email to send to the customer

message_body:

The body of the email to send to the customer

**kwargs:

Any other details for sending the invoice

Returns:

A dictionary of the sent invoice.