Use the invoices API to create, manage, retrieve, and delete the invoices used for billing your customers.
draft
to open
.POST
request to /crm/v3/objects/invoices
.
In the post body, include a properties
object to store basic invoice information. The only property required for creating a draft invoice is hs_currency
. You can modify a drafted invoice’s properties any time by updating the invoice. Additionally, the invoice will inherit other property values when you later associate a contact with it, such as contact and company details, which will be required before you can set the invoice to the Open state. Learn more about required properties and associations.
id
, which you’ll use to continue configuring the invoice. You can update invoice properties at any time by making a PATCH
request to /crm/v3/objects/invoices/{invoiceId}
.
open
status so that it can be shared and paid, you’ll need to set a few required properties and associate it with other CRM records, such as line items and a contact. If you’ve set up HubSpot payments or Stripe payment processing, you can also configure the invoice’s payment settings.
Below, learn more about:
PATCH
request to /crm/v3/objects/invoices/{invoiceId}
. In the request body, include a properties object with fields for the properties you want to update.
Property | Description |
---|---|
hs_currency | Currency of the invoice. |
hs_invoice_date | Date of the invoice. This is autoset if a date isn’t provided. |
hs_due_date | Due date of the invoice. This is autoset if a date isn’t provided. |
hs_tax_id | The account tax ID listed on this invoice. The tax ID includes a tax ID type and a tax ID number. This property must match a tax ID in the account settings. Or, it will autoset. Learn more about tax IDs. |
PUT
request to /crm/v4/objects/invoices/{fromObjectId}/associations/default/{toObjectType}/{toObjectId}
.
The table below show which CRM record associations are required to move the invoice to the Open state, and which are optional. View a full list of the objects can be associated with invoices.
Object type | Required | Description |
---|---|---|
Line items | Yes | The goods and/or services being sold through the invoice. You can create line items from products in your product library or create custom standalone line items. |
Contact | Yes | Specific buyers that you’re addressing in the invoice. |
Company | No | A specific company that you’re addressing in the invoice. |
Discounts, fees, and taxes | No | Any discounts, fees, and taxes to be applied at checkout. When determining the total invoice amount, HubSpot first applies discounts, followed by fees, then taxes. You can use the hs_sort_order field to reorder objects of the same type. Can be set to fixed values or percentages by setting hs_type to either FIXED or PERCENT . |
GET
request to the relevant object endpoint, which follows the same pattern across each CRM object.
200
response with details for each fetched object type. You’ll use the value in the id
field to set associations in the next step.
POST
request to /crm/v3/objects/invoices
and include the hs_invoice_billable
property.
GET
request to /crm/v3/objects/invoices
.
Parameter | Type | Description |
---|---|---|
hs_allowed_payment_methods | Enumeration | The payment methods to be used. For example, credit_or_debit_card , ach .
|
hs_invoice_payment_collection_method | Enumeration | Set to manual if you want the invoice to have digital payment capability. Set to none if you don’t want digital payment capability. If no value, autoset based on the account payment settings. |
hs_collect_address_types | Boolean | The types of addresses that are collected while paying the invoice. Value can be billing_address and/or shipping_address . |
hs_recipient_shipping_address | String | The shipping address of the recipient. |
hs_recipient_shipping_city | String | The shipping city of the recipient. |
hs_recipient_shipping_state | String | The shipping state or region of the recipient. |
hs_recipient_shipping_zip | String | The shipping postal or zip code of the recipient. |
hs_tax_rate_group_id
property when you create an invoice. You’ll first need to set up tax rates in your account before associating them with line items. You’ll need to authorize the tax_rates.read
scope for your app to fetch tax rates and the crm.objects.line_items.write
scope to update or create a line item.GET
request to /tax-rates/v1/tax-rates
to fetch all tax rates. The resulting response will resemble the following:
id
of one of your tax rates as the hs_tax_rate_group_id
when creating or updating a line item. Learn more about setting up tax rates in the line items API guide.
hs_invoice_status
property:
Status | Description |
---|---|
draft | The invoice is being edited and is not yet ready to be sent. |
open | The invoice has all of the details needed to be sent to the buyer, and is payable. |
paid | The buyer has paid the invoice. |
voided | The invoice has been voided. |
draft
until it’s ready to be sent to the buyer. Once all of the required properties and associations are added to the invoice, you can update its status to open
, meaning the invoice can be shared and is payable.
To move the invoice to the open
status, make a PATCH
request to /crm/v3/objects/invoices
and set the hs_invoice_status
property to open
.
GET
request to crm/v3/objects/invoices
.GET
request to the above URL and specify an invoice ID. For example: crm/v3/objects/invoices/44446244097
.POST
request to the search endpoint and include filters in the request body. See an example of using the search endpoint below.GET
request to crm/v3/properties/invoices
. Learn more about using the properties API.
POST
request that includes your filter criteria in the request body.
For example, to search for all open invoices, you would make a POST
request to crm/v3/objects/invoices/search
with the following request body:
filters
array specifies the search criteria, while the properties
array specifies which properties to return.
GET
request to the following URL:
crm/v3/objects/invoice/{`hs_object_id}`/associations/{associatedObjectName}
Associated objects can include contacts, companies, deals, line items, discounts, fees, and taxes.
For example, to retrieve an invoice and the line items associated with it, make a GET
request to:
crm/v3/objects/invoice/{invoiceId}/associations/line_items
This will return the IDs of the currently associated line items, along with meta information about the association type.
POST
request to the following URL with the request body below:
crm/v3/objects/line_items/batch/read
hs_invoice_status
of draft
and open
(if enabled in your account settings).
DELETE
request to /crm/v3/objects/invoices/{invoiceId}
.POST
request to /crm/v3/objects/invoices/batch/archive
with the invoice IDs specified in the request body:GET
request to /crm/v3/objects/invoices
.
Parameter | Type | Description |
---|---|---|
hs_currency | String | Currency of the invoice. |
hs_invoice_date | Date/time | Date of the invoice. Autoset if one is not provided. |
hs_due_date | Date/time | Due date of the invoice. Autoset if one is not provided. |
hs_purchase_order_number | String | Add an associated PO number. |
hs_comments | String | Add comments to the invoice for the buyer to see. |
hs_tax_id | Enumeration | The account tax ID listed on this invoice. The tax ID includes a tax ID type and a tax ID number. This property must match a tax ID in the account settings. Or, it will autoset. Learn more about tax ID’s. |
hs_allowed_payment_methods | Enumeration | The payment methods to be used. For example, credit_or_debit_card , ach .
|
hs_invoice_payment_collection_method | Enumeration | Set to manual if you want the invoice to have digital payment capability. Set to none if you don’t want digital payment capability. If no value, autoset based on the account payment settings. |
hs_allow_partial_payments | Boolean | Allow your customer to pay less than the balance due. |
hs_collect_address_types | Boolean | The types of addresses that are collected while paying the invoice. Value can be billing_address and/or shipping_address . |
hs_recipient_shipping_address | String | The shipping address of the recipient. This address is used as the billing address. |
hs_recipient_shipping_address2 | String | The second line of the shipping address of the recipient. This address is used as the billing address. |
hs_recipient_shipping_city | String | The shipping city of the recipient. |
hs_recipient_shipping_state | String | The shipping state or region of the recipient. |
hs_recipient_shipping_zip | String | The shipping postal or zip code of the recipient. This postal or zip code is used as the billing postal or zip code. |
hs_recipient_shipping_country | String | The shipping country of the recipient. |
hs_recipient_company_address | String | The address of the recipient’s company. |
hs_recipient_company_address2 | String | The second line of the address of the recipient’s company. |
hs_recipient_company_city | String | The city of the recipient’s company. |
hs_recipient_company_state | String | The state or region of the recipient’s company. |
hs_recipient_company_zip | String | The postal or zip code of the recipient’s company. |
hs_custom_fields | Enumeration | The custom fields that have been added to the invoice. Learn more about the configuration of this setting. |
hs_invoice_link | String | The URL of the invoice. |
hs_language | String | Language of the invoice. |
hs_locale | String | Locale of the invoice. |
hs_pdf_download_link | String | PDF download link. |
hs_invoice_billable | Boolean | Whether the invoice is billable or not. |
POST
/crm/v3/objects/invoices/batch/create
Parameter | Type | Description |
---|---|---|
hs_currency | String | Currency of the invoice. |
hs_invoice_date | Date/time | Date of the invoice. Autoset if one is not provided. |
hs_due_date | Date/time | Due date of the invoice. Autoset if one is not provided. |
associations | Array | The invoice’s associated records.To set each association, include a separate object in the associations array with the following fields:
|