We have introduced a set of API endpoints for recurring invoice operations. A recurring invoice is a template for creating identical invoices for accepting recurring payments from a customer. Each invoice represents an amount that you are owed by a customer for goods and services that your organization provides.

OperationAPI endpoint
Create a recurring invoicePOST /v3/recurring-invoices
Get list of recurring invoicesGET /v3/recurring-invoices
Get recurring invoice detailsPOST /v3/recurring-invoices/{recurringInvoiceId}
Update a recurring invoicePATCH /v3/recurring-invoices/{recurringInvoiceId}
Replace a recurring invoicePUT /v3/recurring-invoices/{recurringInvoiceId}
Archive a recurring invoicePOST /v3/recurring-invoices/{recurringInvoiceId}/archive
Restore a recurring invoicePOST /v3/recurring-invoices/{recurringInvoiceId}/restore

See Recurring invoices for more information.

In the Bills API response, we have introduced the paidAmount field. This value is the sum of all cleared payments and any credit amount applied to the bill.

See POST /v3/bills in the API reference for more information.

In the bills API endpoints, we have introduced the quantity and price fields at the line item level.

FieldDescription
quantityBill line item unit quantity
priceBill line item unit price. For a bill in an international currency (not USD), this value is in the local currency.

In the billLineItems array, when you set amount for a bill line item, BILL uses this value as the bill line item amount. You can now set quantity and price for BILL to calculate the bill line item amount. For example, if quantity is 2 and price is 79.99 for a bill line item, BILL calculates and displays the line item amount in the response as 159.98 (2 x 79.99).

In addition, we have introduced the customerId field at the line item level in the classifications object. You can now tag a bill line item with a customerId.

See POST /v3/bills in the API reference for more information.

The spend.transaction.updated webhook notification now includes the currencyData object. The object provides information about the transaction currency.

FieldDescription
exchangeRateBILL exchange rate for currency conversion
exponentNumber of decimal places in the currency format
originalCurrencyAmountTransaction amount in the local currency before conversion
originalCurrencyCodeThree-letter ISO currency code for the transaction amount in the local currency
symbolCurrency symbol, such as $, €, and £

See Spend & Expense transaction notification payloads for more information.

In the bills API endpoints, we have introduced the capability of adding vendor credits to the bill. In the Create a bill (POST /v3/bills), Replace a bill (PUT /v3/bills/{billId}), and Update a bill (PATCH /v3/bills/{billId}) requests, you can now add vendor credits in the vendorCredits object.

FieldDescription
idBILL-generated ID of the vendor credit applied to the bill payment. The value begins with vcr.
amountCredit amount

See Vendor credits for more information.

We have introduced a set of API endpoints for vendor credit operations. You can now create vendor credits for adjusting the amount that you owe a vendor.

OperationAPI endpoint
Create a vendor creditPOST /v3/vendor-credits
Get list of vendor creditsGET /v3/vendor-credits
Get vendor credit detailsGET /v3/vendor-credits/{vendorCreditId}
Update a vendor creditPATCH /v3/vendor-credits/{vendorCreditId}
Replace a vendor creditPUT /v3/vendor-credits/{vendorCreditId}
Archive a vendor creditPOST /v3/vendor-credits/{vendorCreditId}/archive
Create multiple vendor creditsPOST /v3/vendor-credits/bulk
Update multiple vendor creditsPATCH /v3/vendor-credits/bulk
Replace multiple vendor creditsPUT /v3/vendor-credits/bulk
Archive multiple vendor creditsPOST /v3/vendor-credits/bulk/archive

See Vendor credits for more information.

In the Get international payments configuration (GET /v3/vendors/configuration/international-payments) API response, we now provide the description information for more fields objects in the validations array. This information can help you correctly set the required information in your API request.

For example, when you want to add a Brazilian vendor bank account, the "name": "accountNumber" fields object now includes the "description": "IBAN" information. This confirms that you must set the bank account IBAN value as the accountNumber in your API request.

See Create an international vendor for more information.