We have introduced a set of API endpoints for customer bank accounts. You can now use the BILL v3 API to create and manage customer bank account information.

OperationAPI endpoint
Create a customer bank accountPOST /v3/customers/{customerId}/bank-accounts
Update a customer bank accountPATCH /v3/customers/{customerId}/bank-accounts/{bankAccountId}
Get customer bank account detailsGET /v3/customers/{customerId}/bank-accounts/{bankAccountId}
Get list of customer bank accountsGET /v3/customers/{customerId}/bank-accounts
Archive a customer bank accountPOST /v3/customers/{customerId}/bank-accounts/{bankAccountId}/archive

In the vendors API response, we have introduced a new paymentNetworkId field. This field provides the vendor Payment Network ID (PNI). Each vendor with a BILL account is a unique PNI.

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

Features

  • We have moved the BILL terms of service to the beginning of the onboarding flow. In addition, we have removed the BILL terms of service from the footer of the Onboarding widget. The user now sees the BILL terms of service more prominently when they begin onboarding.
  • We have added a list of BILL ACH IDs in the Add funding account experience. This information is required in case the user's bank account has a debit block or debit filter. When the user adds a funding account with the Plaid flow or with the manual setup, the user now sees BILL ACH ID values that they can copy to clipboard.

On December 4, 2025, we will release a fix in the v3 bills response to correctly show the fundingAmount and amount information for international vendors (outside US). You are receiving this email because you are a BILL API user and you currently have bills created for international vendors in the production environment.

v3 bills for international vendors

When you create a bill with POST /v3/bills for an international vendor, the API response correctly shows the fundingAmount and amount information.

FieldDescription
fundingAmountBill total amount. This value is in USD.
amountBill total amount. For a bill in an international currency (not USD), this value is in the international currency.

We learned that when you get bill details (with GET /v3/bills or GET /v3/bills/{billId}), the fundingAmount and amount field values were not correctly displayed.

📘

NOTE

This issue occurs only in bills created for an international vendor (outside US). Any bill created for a US vendor is not affected.

On December 4, 2025, we will release a fix for the GET /v3/bills and GET /v3/bills/{billId} API endpoints to correctly display the fundingAmount and amount field values for bills created for international vendors.

Developer actions

In your integrations, if you get bill details with GET /v3/bills or GET /v3/bills/{billId}, make sure that the fundingAmount and amount information is correctly displayed for bills created for your international vendors.

We have added two new developer tutorials in the BILL API Platform for developers YouTube playlist. See the BILL API Platform for developers playlist for the complete set of developer tutorials.

BILL API Platform authentication

In this tutorial, we walk through everything you need to authenticate with the BILL API Platform.

You’ll learn how to:

  • Generate your developer key (devKey)
  • Find your organization ID (organizationId)
  • Use AP & AR sync token as a BILL app partner
  • Use a console token for multi-org or accounting firm access
  • Generate a BILL Spend & Expense API token for the Spend & Expense API

Bill approvals and S&E 3DS challenge integration example

In this tutorial, we walk you through real-time bill approvals, document fetching, and handling Spend & Expense 3DS authentication flows in your existing systems.


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.

New field you can filter with

Available operators

syncStatus

eq (Equal)
ne (Not equal)
in (In)
nin (Not in)


Convenience fees

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.

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

Features

Add funding widget improvements

  • 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 invoice attachment 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.

See POST /v3/attachments/invoices/{invoiceId} in the API reference for more information.

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.

OperationAPI endpoint
Delete an attachmentDELETE /v3/attachments/{attachmentId}