In the Spend & Expense Transactions API, we have added syncStatus to the list of transaction filters. In the Get list of transactions (GET /v3/spend/transactions) request, you can now filter transactions with the syncStatus field.
This field provides information about the current sync status of the transaction with your accounting system. The possible syncStatus values are PENDING, SYNCED, ERROR, MANUAL_SYNCED, or NOT_SYNCED.
In the invoices API endpoints, we have introduced the capability of adding convenience fees. In the Create an invoice (POST /v3/invoices), Replace an invoice (PUT /v3/invoices/{invoice_id} ), and Update an invoice (PATCH /v3/invoices/{invoice_id} ) requests, you can now set convenience fees in the convenienceFee object. To set the convenience fee, the new enableCardPayment field must be set as true.
In the convenienceFee object, you can now set a convenience fee percentage that you want to charge your customer when they pay the invoice using a card.
Sales tax
In the invoices API endpoints, we have introduced the capability of adding a sales tax to taxable invoice line items. In the Create an invoice (POST /v3/invoices), Replace an invoice (PUT /v3/invoices/{invoice_id} ), and Update an invoice (PATCH /v3/invoices/{invoice_id} ) requests, you can now set a sales tax with the new salesTaxItemId field.
You can set salesTaxItemId as the BILL-generated ID of the SALES_TAX item. The value begins with 0ii. The tax rate is applied to all the invoice line items set as taxable. You can set up a SALES_TAX percentage item with POST /v3/classifications/items.
Invoice PDF
In the invoices API endpoints, we have introduced the invoicePdfId field. In all the invoices API responses, you can now get the BILL-generated ID of the invoice PDF.
The invoice PDF is sent as an email attachment when you send an invoice to a customer. The invoice PDF also appears when the customer clicks the invoice payment link to complete the invoice payment.
We have added a loading button spinner at the beginning of the adding a bank account with Plaid flow. This ensures that the Plaid modal loading is complete before the user can continue with adding a bank account.
We have improved the instructions for the user to follow when manually adding a bank account.
Theming and experience improvements
We have improved the themes and styles across all widget screens. We have ensured that all UI elements in the widget screens have the correct CSS property set.
We have improved the alignment of icons across all widget screens.
We have improved the button hover states across all widget screens.
We have added ARIA labels for all SVG elements across all widget screens. This is an accessibility improvement.
In the attachments API endpoint, we have introduced the replaceInvoicePdf field. In the Upload invoice attachment (POST /v3/attachments/invoices/{invoiceId}) request, you can now set the replaceInvoicePdf field as true to replace the existing invoice PDF with a new PDF attachment.
The invoice PDF is sent as an email attachment when you send an invoice to a customer. The invoice PDF also appears when the customer clicks the invoice payment link to complete the invoice payment.
We have introduced a new API endpoint for deleting an attachment.
You can now delete an existing attachment, A deleted attachment cannot be restored. The deleted attachment is not available in the list of attachments.
In the organizations API endpoints, we have introduced the individualTransferOut and individualTransferIn fields. In the Update an organization (PATCH /v3/organizations/{organizationId}) request, you can now set these fields to specify how ACH transfers are made with the organization funding bank account.
Field
Description
individualTransferOut
Rule for how ACH transfers are made from the organization funding bank account to vendors.
Set as true for an individual ACH transfer for each payment made.
Set as false for a single batch ACH transfer for all payments made in a day. The default value is false.
individualTransferIn
Rule for how ACH transfers are made from customers to the organization funding bank account.
Set as true for an individual ACH transfer for each payment received.
Set as false for a single batch ACH transfer for all payments received in a day. The default value is false.
We have introduced a set of API endpoints for bill approvals. With v3 bill approvals, you can now create and manage approval policies for bills based on a set of rules. In an approval policy, the approvers can be individual users or user groups.
When you create or update a bill with the v3 API, set billApprovals as true for BILL to add approvals information in the v3 bills response.
When you have approval policies set up for bills and a bill matches the policy, you now see an additional approvers array of objects in the v3 bills response. The array shows the list of individual users and/or user groups assigned as bill approvers. In addition, the array provides information about the status of the bill in the current approval flow.
For any approvers added to a v3 bill, the approvals must be complete before you can pay the bill with the API.
We have introduced a new Update an organization price plan (PATCH /v3/partner/organizations/{organization_id}/price-plan) endpoint.
When you onboard as a BILL partner, BILL works with you to set up price plans for the organizations you create. Your organizations can have up to 5 price plans. Each price plan is named in the PricePlanN format (PricePlan1 up to PricePlan5). Use this new endpoint to update the price plan for an existing organization.
We have added block spinners across all the widget screens wherever applicable. This ensures that the user is blocked from performing any UI actions while a widget screen is loading.
We have blocked all users from trying to access the BILL widgets in OFAC sanctioned countries. See Understand US Economic Sanctions in the BILL Help Center to learn more about OFAC sanctioned countries.
Use BILL webhooks to subscribe to and receive real time notifications for events, such as create a vendor, update a bill, or create a payment. When you get the events catalog and create subscriptions, set the required header values based on the events you want to subscribe to.
Event
Header values
Organization-level AP & AR events
devKey and sessionId
Partner-level AP & AR events
appKey and sessionId
Spend & Expense events
apiToken
Idempotency key and notification URL for creating subscriptions
In your Create a subscription (POST /v3/spend/subscriptions) request, the X-Idempotent-Key header value must be in the UUID4 format. In addition, you can use an online service for generating a test notificationUrl value. For example, webhook.site.