# BILL API documentation Documentation ## Guides - [Bill approvals](https://developer.bill.com/docs/ap-bill-approvals.md) - [Bills](https://developer.bill.com/docs/ap-bills.md) - [International payments](https://developer.bill.com/docs/ap-international-payments.md) - [Payments](https://developer.bill.com/docs/ap-payments.md) - [Vendor payment options](https://developer.bill.com/docs/vendor-payment-options.md) - [Recurring bills](https://developer.bill.com/docs/ap-recurring-bills.md) - [Vendor credits](https://developer.bill.com/docs/ap-vendor-credits.md) - [Create a US vendor](https://developer.bill.com/docs/creating-a-us-vendor.md) - [Create an international vendor](https://developer.bill.com/docs/creating-an-international-vendor.md) - [Get audit trail details](https://developer.bill.com/docs/getting-audit-trail-details.md) - [Vendors](https://developer.bill.com/docs/ap-vendors.md) - [Record AP payments](https://developer.bill.com/docs/record-ap-payments.md) - [Charge a customer](https://developer.bill.com/docs/ar-charge-customer.md) - [Credit memos](https://developer.bill.com/docs/ar-credit-memos.md) - [Customers](https://developer.bill.com/docs/ar-customers.md) - [Invoice PDF email attachments](https://developer.bill.com/docs/ar-invoice-pdf-email-attachments.md) - [Invoices](https://developer.bill.com/docs/ar-invoices.md) - [Recurring invoices](https://developer.bill.com/docs/ar-recurring-invoices.md) - [Record AR payments](https://developer.bill.com/docs/recording-an-ar-payment.md) - [BILL Elements](https://developer.bill.com/docs/bill-elements-get-started.md) - [BILL keys & tokens](https://developer.bill.com/docs/bill-keys-tokens.md) - [BILL v3 API](https://developer.bill.com/docs/bill-v3-api-get-started.md) - [Why upgrade to BILL v3?](https://developer.bill.com/docs/why-upgrade-v3.md) - [BILL v3 API recipes](https://developer.bill.com/docs/bill-v3-api-recipes.md) - [BILL AP workflow](https://developer.bill.com/docs/recipe-bill-ap-workflow.md) - [Bill approvals workflow](https://developer.bill.com/docs/recipe-bill-approvals-workflow.md) - [BILL AR workflow](https://developer.bill.com/docs/recipe-bill-ar-workflow.md) - [BILL Pay Faster workflow](https://developer.bill.com/docs/recipe-bill-pay-faster-workflow.md) - [Domestic AP payments workflow](https://developer.bill.com/docs/recipe-domestic-ap-payments-workflow.md) - [Expense management with S&E users, budgets, & cards](https://developer.bill.com/docs/recipe-expense-management-users-budgets-cards.md) - [International AP payments workflow](https://developer.bill.com/docs/recipe-international-ap-payments-workflow.md) - [Partner workflow: Customer engagement](https://developer.bill.com/docs/recipe-partner-workflow-customer-engagement.md) - [Sandbox vs Production](https://developer.bill.com/docs/environmental-differences.md) - [BILL core capabilities](https://developer.bill.com/docs/bill-core-capabilities.md) - [BILL API Platform](https://developer.bill.com/docs/home.md): Discover how to leverage BILL API Platform features in your integrations - [AP payment disbursement methods](https://developer.bill.com/docs/ap-payment-disbursement-methods.md) - [AP payment funding methods](https://developer.bill.com/docs/ap-payment-funding-methods.md) - [BILL AP payments](https://developer.bill.com/docs/payment-overview.md) - [AP payment status values](https://developer.bill.com/docs/single-status-payment-values.md) - [Elements advanced integration features](https://developer.bill.com/docs/elements-advanced-integration-features.md) - [BILL Elements overview](https://developer.bill.com/docs/elements-overview.md) - [Elements integration guide](https://developer.bill.com/docs/elements-quick-integration-guide.md) - [Add funding: Implementation](https://developer.bill.com/docs/add-funding-element-implementation.md) - [Add funding: User experience](https://developer.bill.com/docs/add-funding-element-user-experience.md) - [Add funding Element](https://developer.bill.com/docs/add-funding-element.md) - [Elements reference](https://developer.bill.com/docs/elements-reference.md) - [Manage funding Element](https://developer.bill.com/docs/manage-funding-element.md) - [Manage funding: Implementation](https://developer.bill.com/docs/manage-funding-element-implementation.md) - [Manage funding: User experience](https://developer.bill.com/docs/manage-funding-element-user-experience.md) - [MFA Element](https://developer.bill.com/docs/mfa-element.md) - [MFA: Implementation](https://developer.bill.com/docs/mfa-element-implementation.md) - [MFA: User experience](https://developer.bill.com/docs/mfa-element-user-experience.md) - [Onboarding Element](https://developer.bill.com/docs/onboarding-element.md) - [Onboarding: Implementation](https://developer.bill.com/docs/onboarding-element-implementation.md) - [Onboarding: User experience](https://developer.bill.com/docs/onboarding-element-user-experience.md) - [Payments Element](https://developer.bill.com/docs/payments-element.md) - [Payments: Implementation](https://developer.bill.com/docs/payments-element-implementation.md) - [Payments: User experience](https://developer.bill.com/docs/payments-element-user-experience.md) - [Schedule payment Element](https://developer.bill.com/docs/schedule-payment-element.md) - [Schedule payment: Implementation](https://developer.bill.com/docs/schedule-payment-element-implementation.md) - [Schedule payment: User experience](https://developer.bill.com/docs/schedule-payment-element-user-experience.md) - [User verification Element](https://developer.bill.com/docs/user-verification-element.md) - [User verification: Implementation](https://developer.bill.com/docs/user-verification-element-implementation.md) - [User verification: User experience](https://developer.bill.com/docs/user-verification-element-user-experience.md) - [Vendor setup Element](https://developer.bill.com/docs/vendor-setup-element.md) - [Vendor setup: Implementation](https://developer.bill.com/docs/vendor-setup-element-implementation.md) - [Vendor setup: User experience](https://developer.bill.com/docs/vendor-setup-element-user-experience.md) - [Vendors Element](https://developer.bill.com/docs/vendors-element.md) - [Vendors: Implementation](https://developer.bill.com/docs/vendors-element-implementation.md) - [Vendors: User experience](https://developer.bill.com/docs/vendors-user-experience.md) - [Connect with a private organization in the BILL Network](https://developer.bill.com/docs/accepting-a-network-invitation.md) - [BILL Network sandbox setup](https://developer.bill.com/docs/bill-network-sandbox-setup.md) - [Connect with a vendor in the BILL Network](https://developer.bill.com/docs/connecting-with-a-bill-network-vendor.md) - [BILL Network](https://developer.bill.com/docs/bill-network.md) - [BILL partner operations](https://developer.bill.com/docs/bill-partner-operations.md) - [Organizations for BILL partners](https://developer.bill.com/docs/partner-organizations.md) - [Users for BILL partners](https://developer.bill.com/docs/partner-users.md) - [Bank account notification payloads](https://developer.bill.com/docs/bank-account-webhook-notification-payloads.md) - [AP bill notification payloads](https://developer.bill.com/docs/bill-webhook-notification-payloads.md) - [Card account notification payloads](https://developer.bill.com/docs/card-account-webhook-notification-payloads.md) - [Notification payloads reference](https://developer.bill.com/docs/notification-payloads-reference.md) - [AR invoice notification payloads](https://developer.bill.com/docs/invoice-webhook-notification-payloads.md) - [AP payment notification payloads](https://developer.bill.com/docs/payment-webhook-notification-payloads.md) - [Risk verification notification payloads](https://developer.bill.com/docs/risk-verification-webhook-notification-payloads.md) - [Spend & Expense 3D Secure challenge notification payload](https://developer.bill.com/docs/spend-expense-3ds-challenge-notification-payload.md) - [Spend & Expense reimbursement notification payload](https://developer.bill.com/docs/spend-expense-reimbursement-notification-payload.md) - [Spend & Expense transaction notification payload](https://developer.bill.com/docs/spend-expense-transaction-notification-payloads.md) - [Vendor auto-pay notification payloads](https://developer.bill.com/docs/vendor-autopay-webhook-notification-payloads.md) - [Vendor notification payloads](https://developer.bill.com/docs/vendor-webhook-notification-payloads.md) - [Vendor archived & restored notification payloads](https://developer.bill.com/docs/vendor-archived-restored-notification-payloads.md) - [Vendor created notification payloads](https://developer.bill.com/docs/vendor-created-notification-payloads.md) - [Vendor updated notification payloads](https://developer.bill.com/docs/vendor-updated-notification-payloads.md) - [Test with BILL webhook security](https://developer.bill.com/docs/test-with-webhook-security.md) - [Webhook API error responses](https://developer.bill.com/docs/webhook-api-error-responses.md) - [Webhook API general rules](https://developer.bill.com/docs/bill-webhook-api-general-rules.md) - [Webhook API notification rules](https://developer.bill.com/docs/bill-webhook-api-notification-rules.md) - [Webhooks](https://developer.bill.com/docs/webhooks.md) - [Webhook Events & Subscriptions](https://developer.bill.com/docs/working-with-bill-webhooks.md) - [API rate limits](https://developer.bill.com/docs/api-rate-limits.md) - [Sandbox API sign in](https://developer.bill.com/docs/api-sandbox-sign-in.md) - [Sandbox API sign up](https://developer.bill.com/docs/api-sandbox-sign-up.md) - [Bank account setup (BILL web app)](https://developer.bill.com/docs/bank-account-setup.md) - [Production API bank account setup](https://developer.bill.com/docs/production-bank-account-setup.md) - [Sandbox API bank account setup](https://developer.bill.com/docs/sandbox-bank-account-setup.md) - [BILL v3 API on Postman](https://developer.bill.com/docs/bill-v3-api-postman-collection.md) - [BILL subscription in sandbox ](https://developer.bill.com/docs/development-environments.md) - [BILL Accountant Console operations](https://developer.bill.com/docs/bill-accountant-console-operations.md) - [App partner implementation guide](https://developer.bill.com/docs/bill-app-partner-implementation-guide.md) - [App partner integration go-live checklist](https://developer.bill.com/docs/bill-app-partner-integration-go-live-checklist.md) - [BILL app partner integration](https://developer.bill.com/docs/bill-app-partner-integration.md) - [BILL Developer Terms](https://developer.bill.com/docs/bill-developer-terms.md): Effective date: March 3, 2026 - [BILL terminology](https://developer.bill.com/docs/bill-terminology.md) - [Common API error codes](https://developer.bill.com/docs/common-api-error-codes.md) - [FAQs](https://developer.bill.com/docs/faq.md) - [Get started in Production](https://developer.bill.com/docs/get-started-in-production.md) - [Filterable fields](https://developer.bill.com/docs/filterable-fields.md) - [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists.md) - [Sortable fields](https://developer.bill.com/docs/sortable-fields.md) - [AP & AR sync token-based sign in](https://developer.bill.com/docs/token-based-sign-in.md) - [Bank account setup (v3 API)](https://developer.bill.com/docs/bank-account-setup-v3-api.md) - [Attachments & Documents](https://developer.bill.com/docs/documents-attachments.md) - [Export BILL records](https://developer.bill.com/docs/export-bill-records.md) - [Organizations & Users](https://developer.bill.com/docs/organizations-users.md) - [Organization billing statements](https://developer.bill.com/docs/organization-billing-statements.md) - [Budgets & Users](https://developer.bill.com/docs/budgets-and-users.md): Spend & Expense API budgets and users - [Reimbursements](https://developer.bill.com/docs/reimbursements.md): Spend & Expense API reimbursements - [Authentication with Spend & Expense API token](https://developer.bill.com/docs/authentication-with-api-token.md) - [Spend & Expense API](https://developer.bill.com/docs/spend-expense-api.md) - [Transactions](https://developer.bill.com/docs/transaction-management.md): Spend & Expense API transactions - [Virtual cards](https://developer.bill.com/docs/virtual-cards.md): Spend & Expense API cards ## API Reference - [Approve or deny a bill](https://developer.bill.com/reference/billapprovedenyactions.md): Approve or deny a bill. Approved bills can be paid. In the request, create an array of objects, where each object represents a single bill along with its approval or denial status. - [Create a bill approval policy](https://developer.bill.com/reference/createbillapprovalpolicy.md): Create a new bill approval policy. In your request, set `rules` and `approvers` in the specified format. For example, to create a bill approval policy for all bills greater than or equal to `$1000`, set `rules` for `BILL_AMOUNT`. ``` { "policyName": "Approval policy for bills >= $1000", "rules": [ { "key": "BILL_AMOUNT", "op": "gte", "values": [ "1000" ] } ], "approvers": [ "{approver_user_id}" ] } ``` - [Delete a bill approval policy](https://developer.bill.com/reference/deletepolicy.md): Delete an existing bill approval policy. A deleted approval policy cannot be restored. The deleted policy is not available in the list of approval policies. - [Get list of bill approval policies](https://developer.bill.com/reference/listbillapprovalpolicies.md): Get a list of bill approval policy objects. - [Get list of bills pending approval](https://developer.bill.com/reference/listbilluserapprovals.md): Get a list of bills that are pending approval by a user. In the response, you get the list of bills that are pending approval for the currently signed-in user. - [Update a bill approval policy](https://developer.bill.com/reference/updatebillapprovalpolicy.md): Update an existing bill approval policy. - [Archive a bill](https://developer.bill.com/reference/archivebill.md): Archive an existing bill. In the response, the `archived` field is set as `true`. You can restore an archived bill with `POST /v3/bills/{billId}/restore`. There is no change when you archive an archived bill. - [Create a bill](https://developer.bill.com/reference/createbill.md): Create a new bill. See [Bills](https://developer.bill.com/docs/ap-bills) in the Guides section for more information, sample requests, and responses. - [Create multiple bills](https://developer.bill.com/reference/createbulkbills.md): Create multiple bills with one API request. You can create up to 100 bills with one `POST /v3/bills/bulk` request. Bulk bill creation at BILL follow a set of rules. * **Successful response**: In your bulk bill creation request, all your bills must be successfully created for a successful response. If any bill creation is not successful, the entire request fails and none of the bills in the request are created. * **You can create bills for multiple vendors**: You can create bills for one vendor or for multiple vendors with one `POST /v3/bills/bulk` request. See [Bills](https://developer.bill.com/docs/ap-bills) in the Guides section for more information, sample requests, and responses. - [Get bill details](https://developer.bill.com/reference/getbill.md): Get details about an existing bill. - [Get list of bills](https://developer.bill.com/reference/listbills.md): Get a list of bill objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Record AP payment](https://developer.bill.com/reference/recordpayment.md): Record an offline AP payment made to a vendor. An offline payment is a payment made outside the BILL system. BILL simply applies the recorded payment amount to one or more bills for the vendor. BILL does not process the payment or transfer funds to the vendor when you record an AP payment with this endpoint. Use `POST /v3/payments` to create a payment with the BILL system. When you pay with `POST /v3/payments`, BILL processes the payment and transfers funds from your BILL organization funding account to the vendor. - [Replace a bill](https://developer.bill.com/reference/replacebill.md): Update the number of line items in a bill. You can also update other bill details. You can use the PUT operation to add, remove, or replace the number of line items in a bill. A set of rules apply with the PUT operation. * When you add a new line item, a new line item `id` is generated in the bill. * When you omit an existing line item `id`, the line item is removed from the bill. - [Restore an archived bill](https://developer.bill.com/reference/restorebill.md): Restore an archived bill. In the response, the `archived` field is set as `false`. You can perform any valid BILL operation on restored bills. There is no change when you restore a restored bill. - [Update a bill](https://developer.bill.com/reference/updatebill.md): Update details about a bill line item. You can also update other bill details. You can use the PATCH operation to modify line item details, such as `amount` and `description`. The bill line item `id` does not change with a PATCH operation. - [Cancel a payment](https://developer.bill.com/reference/cancelpayment.md): Cancel an existing payment. You can cancel a payment only when the payment `singleStatus` is `SCHEDULED`. When BILL starts processing the payment, the payment `singleStatus` changes. At that point, you cannot cancel the payment. You can attempt to void the payment with `POST /v3/payments/{paymentId}/void`. - [Create a bulk payment](https://developer.bill.com/reference/createbulkpayment.md): Create a request for paying multiple bills. You can pay up to 50 bills with one `POST /v3/payments/bulk` request. Bulk payments at BILL follow a set of rules. * **Successful response**: In your bulk payment request, all your bill payments must be successful for a successful response. If any bill payment is not successful, the entire request fails and none of the bills in the request are paid. * **You can pay multiple vendors**: You can pay multiple vendors with one `POST /v3/payments/bulk` request. In this case, make sure that you do not set `vendorId` in your request. * **You can only pay existing bills**: When you create a single payment with `POST /v3/payments`, you can set `createBill` as `true` in your request for creating a new bill for a vendor payment. In your bulk payment request, an existing `billId` is required for each bill to be paid. * **Vendors with `"combinePayments": true`**: When you create a bulk payment for a vendor that has `"combinePayments": true`, BILL combines payments for up to 35 bills in one `payments` response object, and then combines payments for the remaining bills in a second `payments` response object. See [Get list of vendor payment options](https://developer.bill.com/reference/listpaymentoptions) to get details about vendor payment options and payment process dates. **Note**: Creating a bulk payment requires an MFA-trusted API session. See [MFA setup](https://developer.bill.com/reference/setup) for information about the BILL MFA process. See [Payments](https://developer.bill.com/docs/ap-payments) in the Guides section for more information, sample requests, and responses. - [Create a payment](https://developer.bill.com/reference/createpayment.md): Create a payment. See [Get list of vendor payment options](https://developer.bill.com/reference/listpaymentoptions) to get details about vendor payment options and payment process dates. **Note**: Creating a payment requires an MFA-trusted API session. See [MFA setup](https://developer.bill.com/reference/setup) for information about the BILL MFA process. See [Payments](https://developer.bill.com/docs/ap-payments) in the Guides section for more information, sample requests, and responses. - [Get check image data](https://developer.bill.com/reference/getcheckimagedata.md): Get an image of an existing check sent to a vendor. The check image is available when the vendor bank processes the check payment. BILL checks in with the bank every 30 minutes to get the check image. The image file format is determined by the vendor bank. From the response, use `downloadLink` in a GET request to download the front and back images of the check. ``` curl '{downloadLink}' --header 'sessionId: {session_id}' --output {check_name} ``` - [Get BILL exchange rate](https://developer.bill.com/reference/getexchangerate.md): Get the current BILL exchange rate and exchange rate batch ID for paying an international vendor. When the vendor bill currency is not `USD`, the exchange rate batch ID is required for creating a payment with `POST /v3/payments` or `POST /v3/payments/bulk`. BILL maintains all `exchangeRate` values in a batch. When a batch expires, a new batch ID is generated and all `exchangeRate` values are updated in the new batch. Use this endpoint to get the current exchange rate and batch ID based on the payment amount and vendor bill currency. In production, the batch expiration time is 20 minutes. The `expirationTime` in the response tells us when the current batch will expire. When the batch expires, you need a new batch ID for your payments API operations. The batch expiration date is tied to the `processDate` you can set in your international payments API request (with `POST /v3/payments` or `POST /v3/payments/bulk`). **Note**: * International vendor payment information is required for you to get the BILL exchange rate with this endpoint. * When the vendor bill currency is not `USD`, the payment `processDate` **must be** the next US business day. - [Get BILL exchange rates for multiple vendors](https://developer.bill.com/reference/getexchangerates.md): Get the current BILL exchange rate and exchange rate batch ID for multiple international vendors with one API request. When the vendor bill currency is not `USD`, the exchange rate batch ID is required for creating a payment with `POST /v3/payments` or `POST /v3/payments/bulk`. BILL maintains all `exchangeRate` values in a batch. When a batch expires, a new batch ID is generated and all `exchangeRate` values are updated in the new batch. Use this endpoint to get the current exchange rate and batch ID based on the payment amount and vendor bill currency. In production, the batch expiration time is 20 minutes. The `expirationTime` in the response tells us when the current batch will expire. When the batch expires, you need a new batch ID for your payments API operations. The batch expiration date is tied to the `processDate` you can set in your international payments API request (with `POST /v3/payments` or `POST /v3/payments/bulk`). **Note**: * International vendor payment information is required for you to get BILL exchange rates with this endpoint. * When the vendor bill currency is not `USD`, the payment `processDate` **must be** the next US business day. - [Get payment details](https://developer.bill.com/reference/getpayment.md): Get details about an existing payment. - [Get list of vendor payment options](https://developer.bill.com/reference/listpaymentoptions.md): Get a list of vendor payment options available based on the funding account options available in the signed-in user's BILL organization and on the payment methods accepted by a vendor. See [Vendor payment options](https://developer.bill.com/docs/vendor-payment-options) in the Guides section for more information, sample requests, and responses. - [Get list of payments](https://developer.bill.com/reference/listpayments.md): Get a list of payment objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Void a payment](https://developer.bill.com/reference/voidpayment.md): Void an existing payment. Void a bill payment that has started processing and cannot be canceled (with `POST /v3/payments/{paymentId}/cancel`). You can attempt to void payments made both with BILL (online) and outside BILL (offline). ### Void a payment made with BILL (online) In your /`POST /v3/payments/{paymentId}/void` request: * Set `paymentId` as the BILL-generated ID of the payment. The value begins with `stp`. * Set `type` as the void payment request type * Set `reason` as the reason for voiding the payment See [Can I cancel or void a Payables payment?](https://help.bill.com/direct/s/article/115005898063) in the BILL Help Center to learn about the BILL void payment process and timing in the production environment. - [Archive a recurring bill](https://developer.bill.com/reference/archiverecurringbill.md): Archive a recurring bill. In the response, the `archived` field is set as `true`. You can restore an archived recurring bill with `POST /v3/recurringbills/{recurringbillId}/restore`. There is no change when you archive an archived recurring bill. When a recurring bill is modified, all future bills are automatically changed. - [Create a recurring bill](https://developer.bill.com/reference/createrecurringbill.md): Create a recurring bill. See [Recurring bills](https://developer.bill.com/docs/ap-recurring-bills) in the Guides section for more information, sample requests, and responses. - [Get recurring bill details](https://developer.bill.com/reference/getrecurringbill.md): Get details about an existing recurring bill. - [Get list of recurring bills](https://developer.bill.com/reference/listrecurringbills.md): Get a list of recurring bill objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Replace a recurring bill](https://developer.bill.com/reference/replacerecurringbill.md): Update the number of line items in a recurring bill. You can also update other recurring bill details. You can use the PUT operation to add, remove, or replace the number of line items in a recurring bill. A set of rules apply with the PUT operation. * When you add a new line item, a new line item `id` is generated in the bill. * When you omit an existing line item `id`, the line item is removed from the bill. When a recurring bill is modified, all future bills are automatically changed. - [Restore an archived recurring bill](https://developer.bill.com/reference/restorerecurringbill.md): Restore an archived recurring bill. In the response, the `archived` field is set as `false`. You can perform any valid BILL operation on restored recurring bills. There is no change when you restore a restored recurring bill. When a recurring bill is modified, all future bills are automatically changed. - [Update a recurring bill](https://developer.bill.com/reference/updaterecurringbill.md): Update details about a recurring bill line item. You can also update other recurring bill details. You can use the PATCH operation to modify line item details, such as amount and description. The recurring bill line item `id` does not change with a PATCH operation. When a recurring bill is modified, all future bills are automatically changed. - [Get audit trail details for a vendor](https://developer.bill.com/reference/getvendoraudittrail.md): Get audit trail details about changes made to a vendor object. The audit trail lists records for each create and edit operation. See [Get audit trail details](https://developer.bill.com/docs/getting-audit-trail-details) in the Guides section for more information, sample requests, and responses. - [Archive a vendor credit](https://developer.bill.com/reference/archivevendorcredit.md): Archive an existing vendor credit. In the response, the `archived` field is set as `true`. An archived vendor credit cannot be restored. - [Archive multiple vendor credits](https://developer.bill.com/reference/bulkarchivevendorcredit.md): Archive multiple vendor credits with one API request. In the response, the `archived` field for each object is set as `true`. An archived vendor credit cannot be restored. - [Create multiple vendor credits](https://developer.bill.com/reference/bulkcreatevendorcredit.md): Create multiple vendor credits with one API request. You can create up to 50 vendor credits with one `POST /v3/vendor-credits/bulk` request. - [Replace multiple vendor credits](https://developer.bill.com/reference/bulkreplacevendorcredit.md): Update the number of line items in multiple vendor credits with one API request. You can also update other details for each vendor credit. You can use the PUT operation to add, remove, or replace the number of line items in a vendor credit. A set of rules apply with the PUT operation. * When you add a new line item, a new line item `id` is generated in the vendor credit. * When you omit an existing line item `id`, the line item is removed from the vendor credit. - [Update multiple vendor credits](https://developer.bill.com/reference/bulkupdatevendorcredit.md): Update details about line items in multiple vendor credits with one API request. You can also update other vendor credit details. You can use the PATCH operation to modify line item details, such as `amount`, `quantity`, and `description`. The vendor credit line item `id` does not change with a PATCH operation. - [Create a vendor credit](https://developer.bill.com/reference/createvendorcredit.md): Create a vendor credit. With a vendor credit, you can adjust the amount that you owe a vendor. See [Vendor credits](https://developer.bill.com/docs/ap-vendor-credits) in the Guides section for more information, sample requests, and responses. - [Get vendor credit details](https://developer.bill.com/reference/getvendorcredit.md): Get details about an existing vendor credit. - [Get list of vendor credits](https://developer.bill.com/reference/listvendorcredits.md): Get a list of vendor credit objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Replace a vendor credit](https://developer.bill.com/reference/replacevendorcredit.md): Update the number of line items in a vendor credit. You can also update other vendor credit details. You can use the PUT operation to add, remove, or replace the number of line items in a vendor credit. A set of rules apply with the PUT operation. * When you add a new line item, a new line item `id` is generated in the vendor credit. * When you omit an existing line item `id`, the line item is removed from the vendor credit. - [Update a vendor credit](https://developer.bill.com/reference/updatevendorcredit.md): Update details about a vendor credit line item. You can also update other vendor credit line item details. You can use the PATCH operation to modify line item details, such as `amount`, `quantity`, and `description`. The vendor credit line item `id` does not change with a PATCH operation. - [Archive a vendor](https://developer.bill.com/reference/archivevendor.md): Archive an existing vendor. In the response, the `archived` field is set as `true`. You can restore an archived vendor with `POST /v3/vendors/{vendorId}/restore`. There is no change when you archive an archived vendor. - [Create multiple vendors](https://developer.bill.com/reference/createbulkvendor.md): Create multiple vendors with one API request. You can create up to 20 vendors with one `POST /v3/vendors/bulk` request. In your bulk vendor creation request, all your vendors must be successfully created for a successful response. If any vendor creation is not successful, the entire request fails and none of the vendors in the request are created. ### Requirements for enabling vendor payments Vendor address details are required for paying a vendor by check or for inviting the vendor to join the BILL network. * `line1` * `city` * `zipOrPostalCode` * `country` * `payeeName` **Note**: A vendor can be enrolled to accept virtual card payments even without being connected in the BILL network. See [Virtual card FAQ](https://help.bill.com/direct/s/article/360021237411) in the BILL Help Center for more information. ### Requirements for enabling electronic payments to vendors Vendor bank account details are required for paying a vendor with electronic payment methods. `paymentInformation` details about bank accounts are required for adding a vendor bank account. * `payeeName` * `bankCountry` (for international vendors) * `paymentCurrency` (for international vendors) * `nameOnAccount` * `accountNumber` * `routingNumber` (empty for an IBAN `accountNumber`) * `type` (for international vendors) `regulatoryFields` and `paymentPurpose` are additional required fields for enabling electronic payments to international vendors (not United States) in specific countries. **Note**: When you add a vendor bank account in the production environment, BILL requires 2 business days to complete a one-time verification of the bank account. To pay such a vendor, you must set a `processDate` that is 2 business days from the current date. See [Vendors](https://developer.bill.com/docs/ap-vendors) in the Guides section for more information, sample requests, and responses. - [Create a vendor](https://developer.bill.com/reference/createvendor.md): Create a new vendor. ### Requirements for enabling vendor payments Vendor address details are required for paying a vendor by check or for inviting the vendor to join the BILL network. * `line1` * `city` * `zipOrPostalCode` * `country` * `payeeName` **Note**: A vendor can be enrolled to accept virtual card payments even without being connected in the BILL network. See [Virtual card FAQ](https://help.bill.com/direct/s/article/360021237411) in the BILL Help Center for more information. ### Requirements for enabling electronic payments to vendors Vendor bank account details are required for paying a vendor with electronic payment methods. `paymentInformation` details about bank accounts are required for adding a vendor bank account. * `payeeName` * `bankCountry` (for international vendors) * `paymentCurrency` (for international vendors) * `nameOnAccount` * `accountNumber` * `routingNumber` (empty for an IBAN `accountNumber`) * `type` (for international vendors) `regulatoryFields` and `paymentPurpose` are additional required fields for enabling electronic payments to international vendors (not United States) in specific countries. **Note**: When you add a vendor bank account in the production environment, BILL requires 2 business days to complete a one-time verification of the bank account. To pay such a vendor, you must set a `processDate` that is 2 business days from the current date. See [Vendors](https://developer.bill.com/docs/ap-vendors) in the Guides section for more information, sample requests, and responses. - [Get vendor configuration](https://developer.bill.com/reference/getconfigurationbyvendorid.md): Get international payments (not USD) configuration after vendor creation. This configuration is required for compliance with international payment rules of a vendor country and vendor bank account. In the response, the required `paymentPurpose` and `regulatoryFields` information is retrieved for the vendor. **Note**: If you are adding `paymentPurpose` and `regulatoryFields` information during international vendor creation, use `GET /v3/vendors/configuration/international-payments` to get the required configuration before vendor creation. See [Create an international vendor](https://developer.bill.com/docs/creating-an-international-vendor) for more information on how to set `paymentPurpose` and `regulatoryFields`. - [Get international payments configuration](https://developer.bill.com/reference/getintlconfig.md): Get international payments (not USD) configuration that is required for compliance with international payment rules of a vendor country and vendor bank account. This information is based on vendor country, bill currency, and vendor account type. Use this endpoint for getting information before creating an international vendor. In the response, the required `paymentPurpose` and `regulatoryFields` information is retrieved for the vendor. **Note**: If you are adding `paymentPurpose` and `regulatoryFields` information after creating an international vendor, use `GET /v3/vendors/{vendorId}/configuration` to get the required configuration for your created vendor. See [Create an international vendor](https://developer.bill.com/docs/creating-an-international-vendor) for more information on how to set `paymentPurpose` and `regulatoryFields`. - [Get vendor details](https://developer.bill.com/reference/getvendor.md): Get details about an existing vendor. - [Get list of vendors](https://developer.bill.com/reference/listvendors.md): Get a list of vendor objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Restore an archived vendor](https://developer.bill.com/reference/restorevendor.md): Restore an archived vendor. In the response, the `archived` field is set as `false`. You can perform any valid BILL operation on restored vendors. There is no change when you restore a restored vendor. - [Update a vendor](https://developer.bill.com/reference/updatevendor.md): Update details about an existing vendor. ### Requirements for enabling vendor payments Vendor address details are required for paying a vendor by check or for inviting the vendor to join the BILL network. * `line1` * `city` * `zipOrPostalCode` * `country` * `payeeName` **Note**: You cannot add or update vendor bank account information with this endpoint. You can add and manage vendor bank account information with a dedicated set of endpoints. * **Create a vendor bank account**: `POST /v3/vendors/{vendorId}/bank-account` * **Get vendor bank account details**: `GET /v3/vendors/{vendorId}/bank-account` * **Delete a vendor bank account**: `DELETE /v3/vendors/{vendorId}/bank-account` - [Create a vendor bank account](https://developer.bill.com/reference/createvendorbankaccount.md): Create a vendor bank account for an existing vendor. To update vendor bank account information, you must first delete the existing vendor bank account (with `DELETE /v3/vendors/{vendorId}/bank-account`), and then create a new vendor bank account (with `POST /v3/vendors/{vendorId}/bank-account`) with the updated information. **Note**: When you add a vendor bank account in the production environment, BILL requires 2 business days to complete a one-time verification of the bank account. To pay such a vendor, you must set a `processDate` that is 2 business days from the current date. - [Delete a vendor bank account](https://developer.bill.com/reference/deletevendorbankaccount.md): Delete the existing vendor bank account for a vendor. To update vendor bank account information, you must first delete the existing vendor bank account (with `DELETE /v3/vendors/{vendorId}/bank-account`), and then create a new vendor bank account (with `POST /v3/vendors/{vendorId}/bank-account`) with the updated information. - [Get vendor bank account details](https://developer.bill.com/reference/getvendorbankaccount.md): Get details about an existing vendor bank account. - [Archive a credit memo](https://developer.bill.com/reference/archivecreditmemo.md): Archive an existing credit memo. In the response, the `archived` field is set as `true`. You can restore an archived credit memo with `POST /v3/credit-memos/{creditMemoId}/restore`. There is no change when you archive an archived credit memo. - [Archive multiple credit memos](https://developer.bill.com/reference/bulkarchivecreditmemo.md): Archive multiple credit memos with one API request. In the response, the `archived` field for each object is set as `true`. - [Create multiple credit memos](https://developer.bill.com/reference/bulkcreatecreditmemo.md): Create multiple credit memos with one API request. You can create up to 50 credit memos with one `POST /v3/credit-memos/bulk` request. - [Replace multiple credit memos](https://developer.bill.com/reference/bulkreplacecreditmemo.md): Update the number of line items in multiple credit memos with one API request. You can also update other details for each credit memo. You can use the PUT operation to add, remove, or replace the number of line items in a credit memo. A set of rules apply with the PUT operation. * When you add a new line item, a new line item `id` is generated in the credit memo. * When you omit an existing line item `id`, the line item is removed from the credit memo. - [Restore multiple credit memos](https://developer.bill.com/reference/bulkrestorecreditmemo.md): Restore multiple credit memos with one API request. In the response, the `archived` field for each object is set as `false`. - [Update multiple credit memos](https://developer.bill.com/reference/bulkupdatecreditmemo.md): Update details about line items in multiple credit memos with one API request. You can also update other credit memo details. You can use the PATCH operation to modify line item details, such as `amount`, `quantity`, and `description`. The credit memo line item `id` does not change with a PATCH operation. - [Create a credit memo](https://developer.bill.com/reference/createcreditmemo.md): Create a new credit memo. With a credit memo, you can adjust the invoice amount owed by a customer. See [Credit memos](https://developer.bill.com/docs/ar-credit-memos) in the Guides section for more information, sample requests, and responses. - [Get credit memo details](https://developer.bill.com/reference/getcreditmemo.md): Get details about an existing credit memo. - [Get list of credit memos](https://developer.bill.com/reference/listcreditmemos.md): Get a list of credit memo objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Replace a credit memo](https://developer.bill.com/reference/replacecreditmemo.md): Update the number of line items in a credit memo. You can also update other credit memo details. You can use the PUT operation to add, remove, or replace the number of line items in a credit memo. A set of rules apply with the PUT operation. * When you add a new line item, a new line item `id` is generated in the credit memo. * When you omit an existing line item `id`, the line item is removed from the credit memo. - [Restore a credit memo](https://developer.bill.com/reference/restorecreditmemo.md): Restore an archived credit memo. In the response, the `archived` field is set as `false`. You can perform any valid BILL operation on restored credit memos. There is no change when you restore a restored credit memo. - [Update a credit memo](https://developer.bill.com/reference/updatecreditmemo.md): Update details about a credit memo line item. You can also update other credit memo line item details. You can use the PATCH operation to modify line item details, such as `amount`, `quantity`, and `description`. The credit memo line item `id` does not change with a PATCH operation. - [Archive a customer](https://developer.bill.com/reference/archivecustomer.md): Archive an existing customer. In the response, the `archived` field is set as `true`. You can restore an archived customer with `POST /v3/customers/{customerId}/restore`. There is no change when you archive an archived customer. - [Set charge customer authorization](https://developer.bill.com/reference/authorizetochargecustomer.md): Authorize your organization to charge a customer for invoices. By default, your organization is not authorized to charge a customer. The customer `authorizedToCharge` field must be set as `true` for you to charge the customer for invoices. - [Create a customer](https://developer.bill.com/reference/createcustomer.md): Create a new customer. See [Customers](https://developer.bill.com/docs/ar-customers) in the Guides section for more information, sample requests, and responses. - [Archive a customer bank account](https://developer.bill.com/reference/archivecustomerbankaccount.md): Archive an existing customer bank account. In the response, the `archived` field is set as `true`. An archived customer bank account cannot be restored. - [Create a customer bank account](https://developer.bill.com/reference/createcustomerbankaccount.md): Create a new customer bank account. When you add customer bank account information, you can charge the customer for invoices. Creating a customer bank account follows a set of rules. * **Customer billing address**: The customer `billingAddress` information is required before you can create a customer bank account. * **Customer bank account verification**: If the customer bank account requires verification, BILL requires up to 2 business days to complete a one-time verification of the bank account. **Note**: When you add a customer bank account in the production environment, BILL validates the customer routing number before you can charge the customer. You will get an error message if the customer routing number is invalid in production. - [Get customer bank account details](https://developer.bill.com/reference/getcustomerbankaccount.md): Get details about an existing customer bank account. - [Get list of customer bank accounts](https://developer.bill.com/reference/listcustomerbankaccounts.md): Get a list of customer bank account objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Update a customer bank account](https://developer.bill.com/reference/updatecustomerbankaccount.md): Update details about an existing customer bank account. You can update only the `nickname` and `ownerType` fields for a customer bank account. If you want to update any of the other fields, create a new customer bank account with `POST /v3/customers/{customerId}/bank-accounts`. - [Get customer details](https://developer.bill.com/reference/getcustomer.md): Get details about an existing customer. - [Get list of customers](https://developer.bill.com/reference/listcustomers.md): Get a list of customer objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Restore an archived customer](https://developer.bill.com/reference/restorecustomer.md): Restore an archived customer. In the response, the `archived` field is set as `false`. You can perform any valid BILL operation on restored customers. There is no change when you restore a restored customer. - [Update a customer](https://developer.bill.com/reference/updatecustomer.md): Update details about an existing customer. - [Archive an invoice](https://developer.bill.com/reference/archiveinvoice.md): Archive an existing invoice. In the response, the `archived` field is set as `true`. You can restore an archived invoice with `POST /v3/invoices/{invoiceId}/restore`. There is no change when you archive an archived invoice. - [Create an invoice](https://developer.bill.com/reference/createinvoice.md): Create a new invoice. See [Invoices](https://developer.bill.com/docs/ar-invoices) in the Guides section for more information, sample requests, and responses. - [Get invoice details](https://developer.bill.com/reference/getinvoice.md): Get details about an existing invoice. - [Get invoice payment link](https://developer.bill.com/reference/getpaymentlink.md): Get an invoice payment link. In the response, BILL sends you a payment link based on the provided invoice and customer information. You can send the invoice payment link to your customer for getting paid by the customer. With this link, the customer can complete the invoice payment without the need to set up a BILL account. When a customer payment is made with the invoice payment link, BILL sends a payment receipt to the provided email address. **Note**: You get valid invoice payment links only for customers that are NOT connected with your organization in the BILL network. See [Invoices](https://developer.bill.com/docs/ar-invoices) in the Guides section for more information, sample requests, and responses. - [Get list of invoices](https://developer.bill.com/reference/listinvoices.md): Get a list of invoice objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Record AR payment](https://developer.bill.com/reference/recordinvoice.md): Record an offline AR payment received from a customer. An offline payment is a payment that you receive outside the BILL system. BILL simply applies the recorded payment amount to one or more invoices for the customer. Any recorded unapplied amount is an overpayment and is available as a customer credit in the BILL system. See [Recording an AR payment](https://developer.bill.com/docs/recording-an-ar-payment) in the Guides section for more information, sample requests, and responses. - [Replace an invoice](https://developer.bill.com/reference/replaceinvoice.md): Update the number of line items in an invoice. You can also update other invoice details. You can use the PUT operation to add, remove, or replace the number of line items in an invoice. A set of rules apply with the PUT operation. * When you add a new line item, a new line item `id` is generated in the invoice. * When you omit an existing line item `id`, the line item is removed from the invoice. - [Restore an archived invoice](https://developer.bill.com/reference/restoreinvoice.md): Restore an archived invoice. In the response, the `archived` field is set as `false`. You can perform any valid BILL operation on restored invoices. There is no change when you restore a restored invoice. - [Send an invoice](https://developer.bill.com/reference/sendinvoice.md): Send an invoice to a customer email address. You can send the invoice to multiple email addresses. See [Invoices](https://developer.bill.com/docs/ar-invoices) in the Guides section for more information, sample requests, and responses. - [Update an invoice](https://developer.bill.com/reference/updateinvoice.md): Update details about an invoice line item. You can also update other invoice details. You can use the PATCH operation to modify line item details, such as `amount`, `quantity`, and `description`. The invoice line item `id` does not change with a PATCH operation. - [Charge a customer](https://developer.bill.com/reference/chargecustomer.md): Charge a customer for one or more invoices. Charging a customer follows a set of rules. * **Customer authorization**: The customer `authorizedToCharge` field must be set as `true` for you to charge the customer for invoices. Set charge customer authorization with `POST /v3/customers/{customerId}/charge-authorization`. * **Customer bank account**: A customer bank account is required for you to charge a customer. Create a customer bank account with `POST /v3/customers/{customerId}/bank-accounts`. - [Get received payment details](https://developer.bill.com/reference/getreceivablepayment.md): Get details about an existing received payment. - [Get list of received payments](https://developer.bill.com/reference/listreceivablepayments.md): Get a list of received payment objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Archive a recurring invoice](https://developer.bill.com/reference/archiverecurringinvoice.md): Archive a recurring invoice. In the response, the `archived` field is set as `true`. You can restore an archived recurring invoice with `POST /v3/recurring-invoices/{recurringinvoiceId}/restore`. There is no change when you archive an archived recurring invoice. When a recurring invoice is modified, all future invoices are automatically changed. - [Create a recurring invoice](https://developer.bill.com/reference/createrecurringinvoice.md): Create a recurring invoice. See [Recurring invoices](https://developer.bill.com/docs/ar-recurring-invoices) in the Guides section for more information, sample requests, and responses. - [Get recurring invoice details](https://developer.bill.com/reference/getrecurringinvoice.md): Get details about an existing recurring invoice. - [Get list of recurring invoices](https://developer.bill.com/reference/listrecurringinvoices.md): Get a list of recurring invoice objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Replace a recurring invoice](https://developer.bill.com/reference/replacerecurringinvoice.md): Update the number of line items in a recurring invoice. You can also update other recurring invoice details. You can use the PUT operation to add, remove, or replace the number of line items in a recurring invoice. A set of rules apply with the PUT operation. * When you add a new line item, a new line item `id` is generated in the invoice. * When you omit an existing line item `id`, the line item is removed from the invoice. When a recurring invoice is modified, all future invoices are automatically changed. - [Restore a recurring invoice](https://developer.bill.com/reference/restorerecurringinvoice.md): Restore an archived recurring invoice. In the response, the `archived` field is set as `false`. You can perform any valid BILL operation on restored recurring invoices. There is no change when you restore a restored recurring invoice. When a recurring invoice is modified, all future invoices are automatically changed. - [Update a recurring invoice](https://developer.bill.com/reference/updaterecurringinvoice.md): Update details about a recurring invoice line item. You can also update other recurring invoice details. You can use the PATCH operation to modify line item details, such as amount and description. The recurring invoice line item `id` does not change with a PATCH operation. When a recurring invoice is modified, all future invoices are automatically changed. - [Get API session details](https://developer.bill.com/reference/getsessioninfo.md): Get details about your current API session. This includes information about the current organization ID, user ID, and MFA status of the organization. - [Get list of login organizations](https://developer.bill.com/reference/listallorganizations.md): Get a list of organizations you can access with your current API session. You get 100 results on one page of results. In the response, you get a list of organizations and console organizations. When a console organization is available in the response, this indicates that the console organization is a parent of the listed organization. - [API login](https://developer.bill.com/reference/login.md): Sign in to your BILL developer account. In the response, your API session is created and a BILL-generated `sessionId` is available. Use the `sessionId` in all subsequent API calls to confirm that you are in a signed-in session. To create an MFA-trusted API session, set `rememberMeId` and `device` in addition to the required fields. See [MFA setup](https://developer.bill.com/reference/setup) for information about the BILL MFA process. You can sign out with `POST /v3/logout`. If your API session is inactive for 35 minutes, the session expires and you are automatically signed out. See [API partner login](https://developer.bill.com/reference/partnerlogin) for information about the additional permissions you get with the API partner login. **Note**: This section is about authentication for working with the BILL v3 API. See [Authentication with Spend & Expense API token](https://developer.bill.com/docs/authentication-with-api-token) for information about authentication for the Spend & Expense API endpoints. - [API logout](https://developer.bill.com/reference/logout.md): Sign out of your BILL developer account. In response, the current `sessionId` expires and your API session is terminated. You will be required to sign in again with `/v3/login` before you can make another API call. - [Check app health](https://developer.bill.com/reference/gethealthcheck.md): Returns application health status. - [Generate MFA challenge](https://developer.bill.com/reference/generatechallenge.md): Generate an MFA challenge ID for creating an MFA-trusted API sign in session. In the response, a `challengeId` is generated and a six-digit `token` is sent to the phone number that was registered with MFA setup. After you generate a challenge ID (with `POST /v3/mfa/challenge`), complete your MFA sign in by validating the MFA challenge (with `POST /v3/mfa/challenge/validate`). At this point, your API session is MFA trusted. There are two stages in the BILL MFA process. 1. **MFA setup**: Add a valid phone number for setting up MFA in the organization (with `POST /v3/mfa/setup`), and then complete the setup by validating the entered phone number (with `POST /v3/mfa/validate`). At this point, the phone number is registered for the MFA sign in operation. 2. **MFA sign in**: Generate an MFA challenge (with `POST /v3/mfa/challenge`), and then complete MFA sign in by validating the MFA challenge (with `POST /v3/mfa/challenge/validate`). At this point, your API session is MFA trusted. **Note**: In the production environment, BILL requires an MFA-trusted API session for a set of API operations. * Enable vendor `autoPay` * Enable recurring bill `autoPayment` * Create a payment or bulk payment * Create a bank account in a BILL organization * Reset MFA (Complete MFA setup and MFA sign-in again) - [Get list of MFA phone numbers](https://developer.bill.com/reference/listmfaphones.md): Get a list of phone numbers that have been added for setting up MFA in the current organization. - [Add phone for MFA setup](https://developer.bill.com/reference/setup.md): Add a valid phone number for setting up MFA in the current organization. In the response, a `setupId` is generated and a six-digit `token` is sent to the phone number. After you add a phone number (with `POST /v3/mfa/setup`), complete the MFA setup by validating the entered phone number (with `POST /v3/mfa/validate`). At this point, the phone number is registered for the MFA sign in operation. There are two stages in the BILL MFA process. 1. **MFA setup**: Add a valid phone number for setting up MFA in the organization (with `POST /v3/mfa/setup`), and then complete the setup by validating the entered phone number (with `POST /v3/mfa/validate`). At this point, the phone number is registered for the MFA sign in operation. 2. **MFA sign in**: Generate an MFA challenge (with `POST /v3/mfa/challenge`), and then complete MFA sign in by validating the MFA challenge (with `POST /v3/mfa/challenge/validate`). At this point, your API session is MFA trusted. **Note**: In the production environment, BILL requires an MFA-trusted API session for a set of API operations. * Enable vendor `autoPay` * Enable recurring bill `autoPayment` * Create a payment or bulk payment * Create a bank account in a BILL organization * Reset MFA (Complete MFA setup and MFA sign-in again) - [MFA step-up for API session](https://developer.bill.com/reference/stepupsession.md): Set your current API session as MFA trusted. Ideally, when you sign in with `POST /v3/login`, set `rememberMeId` and `device` in your request to generate an MFA-trusted API session. In case you sign in without `rememberMeId` and `device` in your request, you can use this `POST /v3/mfa/step-up` endpoint to mark the current API session as MFA trusted. - [Validate phone for MFA setup](https://developer.bill.com/reference/validate.md): Validate the phone number for setting up MFA in the current organization. This validation requires the `setupId` and `token` from `POST /v3/mfa/setup`. After the validation is complete, the phone number is registered for the MFA sign in operation. There are two stages in the BILL MFA process. 1. **MFA setup**: Add a valid phone number for setting up MFA in the organization (with `POST /v3/mfa/setup`), and then complete the setup by validating the entered phone number (with `POST /v3/mfa/validate`). At this point, the phone number is registered for the MFA sign in operation. 2. **MFA sign in**: Generate an MFA challenge (with `POST /v3/mfa/challenge`), and then complete MFA sign in by validating the MFA challenge (with `POST /v3/mfa/challenge/validate`). At this point, your API session is MFA trusted. **Note**: In the production environment, BILL requires an MFA-trusted API session for a set of API operations. * Enable vendor `autoPay` * Enable recurring bill `autoPayment` * Create a payment or bulk payment * Create a bank account in a BILL organization * Reset MFA (Complete MFA setup and MFA sign-in again) - [Validate MFA challenge](https://developer.bill.com/reference/validatechallenge.md): Validate the MFA challenge for creating an MFA-trusted API sign in session. This validation requires the `challengeId` and `token` from `POST /v3/mfa/challenge`. After the validation is complete, your API session is MFA trusted. There are two stages in the BILL MFA process. 1. **MFA setup**: Add a valid phone number for setting up MFA in the organization (with `POST /v3/mfa/setup`), and then complete the setup by validating the entered phone number (with `POST /v3/mfa/validate`). At this point, the phone number is registered for the MFA sign in operation. 2. **MFA sign in**: Generate an MFA challenge (with `POST /v3/mfa/challenge`), and then complete MFA sign in by validating the MFA challenge (with `POST /v3/mfa/challenge/validate`). At this point, your API session is MFA trusted. **Note**: In the production environment, BILL requires an MFA-trusted API session for a set of API operations. * Enable vendor `autoPay` * Enable recurring bill `autoPayment` * Create a payment or bulk payment * Create a bank account for a BILL organization * Reset MFA (Complete MFA setup and MFA sign-in again) - [Accept connection request](https://developer.bill.com/reference/acceptinvitation.md): Accept a connection request sent by a vendor or customer. The organization receiving the connection request must have auto-connections disabled. If auto-connections are not disabled, BILL automatically connects the organizations in the BILL Network. When the invitation is accepted, BILL connects the two organizations in the BILL Network. See [BILL Network](https://developer.bill.com/docs/bill-network) in the Guides section for more information, sample requests, and responses. - [Send connection request to a customer](https://developer.bill.com/reference/createcustomerinvitation.md): Send a connection request to a customer organization in the BILL Network. BILL automatically connects the customer organization with the customer record in your BILL organization. If the customer organization has auto-connections disabled, BILL sends an invitation email to the customer email address. When the customer accepts the invitation, BILL connects the customer organization with the customer record in your BILL organization. If the customer does not respond, you can delete the connection request (with `DELETE /v3/network/invitation/customer/{customerId}`) before sending a new connection request. **Note**: If the customer does not respond to a connection request for 60 days, the request expires. See [BILL Network](https://developer.bill.com/docs/bill-network) in the Guides section for more information, sample requests, and responses. - [Send connection request to a vendor](https://developer.bill.com/reference/createvendorinvitation.md): Send a connection request to a vendor organization in the BILL Network. BILL automatically connects the vendor organization with the vendor record in your BILL organization. If the vendor organization has auto-connections disabled, BILL sends an invitation email to the vendor email address. When the vendor accepts the invitation, BILL connects the vendor organization with the vendor record in your BILL organization. If the vendor does not respond, you can delete the connection request (with `DELETE /v3/network/invitation/vendor/{vendorId}`) before sending a new connection request. **Note**: If the vendor does not respond to the connection request for 60 days, the request expires. See [BILL Network](https://developer.bill.com/docs/bill-network) in the Guides section for more information, sample requests, and responses. - [Delete customer connection](https://developer.bill.com/reference/deletecustomerinvitation.md): Delete an existing Network connection with a customer organization. Delete customer connection follows a set of rules. * **No scheduled payments**: There should be no scheduled payments. All scheduled payments must be canceled before you can disconnect. * **No in-process payments**: There should be no in-progress payments. All in-progress payments must clear before you can disconnect. You can use this endpoint to cancel a pending connection request sent to a customer that has auto-connections disabled. You can send a new connection request after an existing connection or connection request is canceled. **Note**: If the customer does not respond to a connection request for 60 days, the request expires. See [BILL Network](https://developer.bill.com/docs/bill-network) in the Guides section for more information, sample requests, and responses. - [Delete vendor connection](https://developer.bill.com/reference/deletevendorinvitation.md): Delete an existing Network connection with a vendor organization. Delete vendor connection follows a set of rules. * **No scheduled payments**: There should be no scheduled payments. All scheduled payments must be canceled before you can disconnect. * **No in-process payments**: There should be no in-progress payments. All in-progress payments must clear before you can disconnect. You can use this endpoint to cancel a pending connection request sent to a vendor that has auto-connections disabled. You can send a new connection request after an existing connection or connection request is canceled. **Note**: If the vendor does not respond to a connection request for 60 days, the request expires. See [BILL Network](https://developer.bill.com/docs/bill-network) in the Guides section for more information, sample requests, and responses. - [Get customer connection request status](https://developer.bill.com/reference/getcustomerinvitation.md): Get the status of an existing connection request sent with `POST /v3/network/invitation/customer/{customerId}`. When you send a connection request to a customer organization that has auto-connections enabled, BILL automatically connects you with the organization. If the organization has auto-connections disabled, the connection request status changes when the customer accepts the request. **Note**: If the customer does not respond to the connection request for 60 days, the request expires. See [BILL Network](https://developer.bill.com/docs/bill-network) in the Guides section for more information, sample requests, and responses. - [Get vendor connection request status](https://developer.bill.com/reference/getvendorinvitation.md): Get the status of an existing connection request sent with `POST /v3/network/invitation/vendor/{vendorId}`. When you send a connection request to a vendor organization that has auto-connections enabled, BILL automatically connects you with the organization. If the organization has auto-connections disabled, the connection request status changes when the vendor accepts the request. **Note**: If the vendor does not respond to the connection request for 60 days, the request expires. See [BILL Network](https://developer.bill.com/docs/bill-network) in the Guides section for more information, sample requests, and responses. - [Send connection request to a vendor not in the BILL Network](https://developer.bill.com/reference/invitevendornotinbillnetwork.md): Send a connection request to a vendor not in the BILL Network. BILL sends an invitation email to the provided vendor email address. When the vendor accepts the invitation and sets up a BILL account, BILL connects the vendor organization with the vendor record in your BILL organization. **Note**: * The vendor organization must exist before BILL can send an invitation email. * If the vendor does not respond to a connection request for 60 days, the request expires. See [BILL Network](https://developer.bill.com/docs/bill-network) in the Guides section for more information, sample requests, and responses. - [Search for an organization in the BILL Network](https://developer.bill.com/reference/search.md): Search for a customer, vendor, or verified national vendor organization. You can search in the BILL Network and verified national vendor (`RPPS`) network. When you search in the BILL Network, there are two `name` requirements for getting search results. * Your search term must have a minimum of three characters. * Your search term must be a complete word. You will not get search results when your search term is a partial word. When you search in the verified national vendor (`RPPS`) network, search results are based on both a complete and partial match on `name` and `zipOrPostalCode`. You can further filter your search by the billing statement `accountNumber` with the vendor. For example, your Verizon internet bill account number. See [BILL Network](https://developer.bill.com/docs/bill-network) in the Guides section for more information, sample requests, and responses. - [BILL v3 API Reference Overview](https://developer.bill.com/reference/api-reference-overview.md) - [Upload customer attachment](https://developer.bill.com/reference/createcustomerattachment.md): Upload an attachment for an existing customer. The file size limit is 6 MB. **Note**: When you upload an attachment, it takes a few minutes for BILL to complete the upload process. See [Documents and attachments](https://developer.bill.com/docs/documents-attachments) in the Guides section for more information, sample requests, and responses. - [Upload invoice attachment](https://developer.bill.com/reference/createinvoiceattachment.md): Upload an attachment for an existing invoice. The file size limit is 6 MB. **Note**: When you upload an attachment, it takes a few minutes for BILL to complete the upload process. See [Documents and attachments](https://developer.bill.com/docs/documents-attachments) in the Guides section for more information, sample requests, and responses. - [Upload vendor attachment](https://developer.bill.com/reference/createvendorattachment.md): Upload an attachment for an existing vendor. The file size limit is 6 MB. **Note**: When you upload an attachment, it takes a few minutes for BILL to complete the upload process. See [Documents and attachments](https://developer.bill.com/docs/documents-attachments) in the Guides section for more information, sample requests, and responses. - [Delete an attachment](https://developer.bill.com/reference/deleteattachment.md): Delete the existing attachment. A deleted attachment cannot be restored. The deleted attachment is not available in the list of attachments. - [Get attachment details](https://developer.bill.com/reference/getattachment.md): Get details about an attachment. From the response, use `downloadLink` in a GET request to download the attachment. ``` curl '{downloadLink}' --header 'sessionId: {session_id}' --output {attachment_name} ``` - [Get list of customer attachments](https://developer.bill.com/reference/listcustomerattachments.md): Get a list of attachments associated with a customer. From the response, use `downloadLink` in a GET request to download the attachment. ``` curl '{downloadLink}' --header 'sessionId: {session_id}' --output {attachment_name} ``` - [Get list of invoice attachments](https://developer.bill.com/reference/listinvoiceattachments.md): Get a list of attachments associated with an invoice. From the response, use `downloadLink` in a GET request to download the attachment. ``` curl '{downloadLink}' --header 'sessionId: {session_id}' --output {attachment_name} ``` - [Get list of vendor attachments](https://developer.bill.com/reference/listvendorattachments.md): Get a list of attachments associated with a vendor. From the response, use `downloadLink` in a GET request to download the attachment. ``` curl '{downloadLink}' --header 'sessionId: {session_id}' --output {attachment_name} ``` - [Archive an accounting class](https://developer.bill.com/reference/archiveclassificationaccountingclass.md): Archive an existing accounting class. In the response, the `archived` field is set as `true`. - [Archive multiple accounting classes](https://developer.bill.com/reference/bulkarchiveclassificationaccountingclass.md): Archive multiple accounting classes with one API request. In the response, the `archived` field for each object is set as `true`. - [Create multiple accounting classes](https://developer.bill.com/reference/bulkcreateclassificationaccountingclass.md): Create multiple accounting classes with one API request. You can create up to 50 accounting classes with one `POST /v3/classifications/accounting-classes/bulk` request. - [Restore multiple accounting classes](https://developer.bill.com/reference/bulkrestoreclassificationaccountingclass.md): Restore multiple accounting classes with one API request. In the response, the `archived` field for each object is set as `false`. - [Update multiple accounting classes](https://developer.bill.com/reference/bulkupdateclassificationaccountingclass.md): Update details about multiple accounting classes with one API request. - [Create an accounting class](https://developer.bill.com/reference/createclassificationaccountingclass.md): Create a new accounting class. - [Get accounting class details](https://developer.bill.com/reference/getclassificationaccountingclass.md): Get details about an existing accounting class. - [Get list of accounting classes](https://developer.bill.com/reference/listclassificationaccountingclasses.md): Get a list of accounting class objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Restore an archived accounting class](https://developer.bill.com/reference/restoreclassificationaccountingclass.md): Restore an archived accounting class. In the response, the `archived` field is set as `false`. - [Update an accounting class](https://developer.bill.com/reference/updateclassificationaccountingclass.md): Update details about an existing accounting class. - [Archive a chart of accounts](https://developer.bill.com/reference/archiveclassificationchartofaccounts.md): Archive an existing chart of accounts. In the response, the `archived` field is set as `true`. - [Archive multiple chart of accounts](https://developer.bill.com/reference/bulkarchiveclassificationchartofaccounts.md): Archive multiple chart of accounts with one API request. In the response, the `archived` field for each object is set as `true`. - [Create multiple chart of accounts](https://developer.bill.com/reference/bulkcreateclassificationchartofaccounts.md): Create multiple chart of accounts with one API request. You can create up to 50 chart of accounts with one `POST /v3/classifications/chart-of-accounts/bulk` request. - [Restore multiple chart of accounts](https://developer.bill.com/reference/bulkrestoreclassificationchartofaccounts.md): Restore multiple chart of accounts with one API request. In the response, the `archived` field for each object is set as `false`. - [Update multiple chart of accounts](https://developer.bill.com/reference/bulkupdateclassificationchartofaccounts.md): Update details about multiple chart of accounts with one API request. - [Create a chart of accounts](https://developer.bill.com/reference/createclassificationchartofaccounts.md): Create a new chart of accounts. - [Get chart of accounts details](https://developer.bill.com/reference/getclassificationchartofaccounts.md): Get details about an existing chart of accounts. - [Get list of chart of accounts](https://developer.bill.com/reference/listclassificationchartofaccounts.md): Get a list of chart of accounts objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Restore an archived chart of accounts](https://developer.bill.com/reference/restoreclassificationchartofaccounts.md): Restore an archived chart of accounts. In the response, the `archived` field is set as `false`. - [Update a chart of accounts](https://developer.bill.com/reference/updateclassificationchartofaccounts.md): Update details about an existing chart of accounts. - [Archive a department](https://developer.bill.com/reference/archiveclassificationdepartment.md): Archive an existing department. In the response, the `archived` field is set as `true`. - [Archive multiple departments](https://developer.bill.com/reference/bulkarchiveclassificationdepartment.md): Archive multiple departments with one API request. In the response, the `archived` field is set as `true`. - [Create multiple departments](https://developer.bill.com/reference/bulkcreateclassificationdepartment.md): Create multiple departments with one API request. You can create up to 50 departments with one `POST /v3/classifications/departments/bulk` request. - [Restore multiple departments](https://developer.bill.com/reference/bulkrestoreclassificationdepartment.md): Restore multiple departments with one API request. In the response, the `archived` field is set as `false`. - [Update multiple departments](https://developer.bill.com/reference/bulkupdateclassificationdepartment.md): Update multiple departments with one API request. - [Create a department](https://developer.bill.com/reference/createclassificationdepartment.md): Create a new department. - [Get department details](https://developer.bill.com/reference/getclassificationdepartment.md): Get details about an existing department. - [Get list of departments](https://developer.bill.com/reference/listclassificationdepartments.md): Get a list of department objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Restore an archived department](https://developer.bill.com/reference/restoreclassificationdepartment.md): Restore an archived department. In the response, the `archived` field is set as `false`. - [Update a department](https://developer.bill.com/reference/updateclassificationdepartment.md): Update details about an existing department. - [Archive an employee](https://developer.bill.com/reference/archiveclassificationemployee.md): Archive an existing employee. In the response, the `archived` field is set as `true`. - [Archive multiple employees](https://developer.bill.com/reference/bulkarchiveclassificationemployee.md): Archive multiple employees with one API request. In the response, the `archived` field for each object is set as `true`. - [Create multiple employees](https://developer.bill.com/reference/bulkcreateclassificationemployee.md): Create multiple employees with one API request. You can create up to 50 employees with one `POST /v3/classifications/employees/bulk` request. - [Restore multiple employees](https://developer.bill.com/reference/bulkrestoreclassificationemployee.md): Restore multiple employees with one API request. In the response, the `archived` field for each object is set as `false`. - [Update multiple employees](https://developer.bill.com/reference/bulkupdateclassificationemployee.md): Update details about multiple employees with one API request. - [Create an employee](https://developer.bill.com/reference/createclassificationemployee.md): Create a new employee. - [Get employee details](https://developer.bill.com/reference/getclassificationemployee.md): Get details about an existing employee. - [Get list of employees](https://developer.bill.com/reference/listclassificationemployees.md): Get a list of employee objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Restore an archived employee](https://developer.bill.com/reference/restoreclassificationemployee.md): Restore an archived employee. In the response, the `archived` field is set as `false`. - [Update an employee](https://developer.bill.com/reference/updateclassificationemployee.md): Update details about an existing employee. - [Archive an item](https://developer.bill.com/reference/archiveclassificationitem.md): Archive an existing item. In the response, the `archived` field is set as `true`. - [Archive multiple items](https://developer.bill.com/reference/bulkarchiveclassificationitem.md): Archive multiple items with one API request. In the response, the `archived` field for each object is set as `true`. - [Create multiple items](https://developer.bill.com/reference/bulkcreateclassificationitem.md): Create multiple items with one API request. You can create up to 50 items with one `POST /v3/classifications/items/bulk` request. - [Restore multiple items](https://developer.bill.com/reference/bulkrestoreclassificationitem.md): Restore multiple items with one API request. In the response, the `archived` field for each object is set as `false`. - [Update multiple items](https://developer.bill.com/reference/bulkupdateclassificationitem.md): Update details about multiple items with one API request. - [Create an item](https://developer.bill.com/reference/createclassificationitem.md): Create a new item. - [Get item details](https://developer.bill.com/reference/getclassificationitem.md): Get details about an existing item. - [Get list of items](https://developer.bill.com/reference/listclassificationitems.md): Get a list of item objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Restore an archived item](https://developer.bill.com/reference/restoreclassificationitem.md): Restore an archived item. In the response, the `archived` field is set as `false`. - [Update an item](https://developer.bill.com/reference/updateclassificationitem.md): Update details about an existing item. - [Archive a job](https://developer.bill.com/reference/archiveclassificationjob.md): Archive an existing job. In the response, the `archived` field is set as `true`. - [Archive multiple jobs](https://developer.bill.com/reference/bulkarchiveclassificationjob.md): Archive multiple jobs with one API request. In the response, the `archived` field for each object is set as `true`. - [Create multiple jobs](https://developer.bill.com/reference/bulkcreateclassificationjob.md): Create multiple jobs with one API request. You can create up to 50 jobs with one `POST /v3/classifications/jobs/bulk` request. - [Restore multiple jobs](https://developer.bill.com/reference/bulkrestoreclassificationjob.md): Restore multiple jobs with one API request. In the response, the `archived` field for each object is set as `false`. - [Update multiple jobs](https://developer.bill.com/reference/bulkupdateclassificationjob.md): Update details about multiple jobs with one API request. - [Create a job](https://developer.bill.com/reference/createclassificationjob.md): Create a new job. - [Get job details](https://developer.bill.com/reference/getclassificationjob.md): Get details about an existing job. - [Get list of jobs](https://developer.bill.com/reference/listclassificationjobs.md): Get a list of job objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Restore an archived job](https://developer.bill.com/reference/restoreclassificationjob.md): Restore an archived job. In the response, the `archived` field is set as `false`. - [Update a job](https://developer.bill.com/reference/updateclassificationjob.md): Update details about an existing job. - [Archive a location](https://developer.bill.com/reference/archiveclassificationlocation.md): Archive an existing location. In the response, the `archived` field is set as `true`. - [Archive multiple locations](https://developer.bill.com/reference/bulkarchiveclassificationlocation.md): Archive multiple locations with one API request. In the response, the `archived` field for each object is set as `true`. - [Create multiple locations](https://developer.bill.com/reference/bulkcreateclassificationlocation.md): Create multiple locations with one API request. You can create up to 50 locations with one `POST /v3/classifications/locations/bulk` request. - [Restore multiple locations](https://developer.bill.com/reference/bulkrestoreclassificationlocation.md): Restore multiple locations with one API request. In the response, the `archived` field for each object is set as `false`. - [Update multiple locations](https://developer.bill.com/reference/bulkupdateclassificationlocation.md): Update details about multiple locations with one API request. - [Create a location](https://developer.bill.com/reference/createclassificationlocation.md): Create a new location. - [Get location details](https://developer.bill.com/reference/getclassificationlocation.md): Get details about an existing location. - [Get list of locations](https://developer.bill.com/reference/listclassificationlocations.md): Get a list of location objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Restore an archived location](https://developer.bill.com/reference/restoreclassificationlocation.md): Restore an archived location. In the response, the `archived` field is set as `false`. - [Update a location](https://developer.bill.com/reference/updateclassificationlocation.md): Update details about an existing location. - [Upload bill document](https://developer.bill.com/reference/createbilldocument.md): Upload a document for an existing bill. The file size limit is 6 MB. When you upload a bill document, the uploaded document is available on the bill details page in the BILL web app. In the response, the `name`, `createdTime`, and `downloadLink` is available when the upload is complete. When you upload a document, it takes a few minutes for BILL to complete the upload process. * **Upload in-progress**: A temporary BILL-generated ID is available for the document when the upload is in progress. The value begins with `0du`. You can get the document upload status with `GET /v3/documents/upload-status`. * **Upload complete**: A BILL-generated ID is available for the document when the upload is complete. The value begins with `00h`. You can get details about the uploaded document with `GET /v3/documents/bills/{billId}`. See [Documents and attachments](https://developer.bill.com/docs/documents-attachments) in the Guides section for more information, sample requests, and responses. - [Get document details](https://developer.bill.com/reference/getdocument.md): Get details about a document associated with a bill. From the response, use `downloadLink` in a GET request to download the document. ``` curl '{downloadLink}' --header 'sessionId: {session_id}' --output {document_name} ``` - [Get list of documents](https://developer.bill.com/reference/listdocuments.md): Get a list of documents associated with a bill. From the response, use `downloadLink` in a GET request to download the document. ``` curl '{downloadLink}' --header 'sessionId: {session_id}' --output {document_name} ``` - [Get document upload status](https://developer.bill.com/reference/uploadstatus.md): Get status of a document upload. Use this endpoint to identify when a document upload is complete. * BILL generates an `uploadId` for the document when the upload is in progress (`IN_PROGRESS`). The value begins with `0du`. * BILL generates a `documentId` for the document when the upload is complete (`UPLOADED`). The value begins with `00h`. - [Get exported record download URL](https://developer.bill.com/reference/getdownloadlink.md): Get the download URL for an exported record file. From the response, use `downloadLink` in a GET request to download the file. ``` curl '{downloadLink}' --output {file_name} ``` See [Export BILL records](https://developer.bill.com/docs/export-bill-records) in the Guides section for more information, sample requests, and responses. - [Get list of exported BILL records](https://developer.bill.com/reference/listexports.md): Get a list of exported BILL records available for you to download. From the response, use `exportId` to get the download URL for an exported record file with `GET /v3/exports/{exportId}/download-link`. See [Export BILL records](https://developer.bill.com/docs/export-bill-records) in the Guides section for more information, sample requests, and responses. - [Get list of AP Cards](https://developer.bill.com/reference/listpayableapcards.md): Get a list of AP Card objects. With the AP Card, you can earn rewards simply by paying your bills. The AP Card is a payment method that enables you to send fast payments with no transaction fees or annual fees. You can use the AP Card with any vendor who accepts virtual card payments. See [AP Card Frequently Asked Questions (FAQs)](https://help.bill.com/direct/s/article/000003348) in the BILL Help to learn more about AP Card. - [Archive a bank account](https://developer.bill.com/reference/archivebankaccount.md): Archive an existing bank account. In the response, the `archived` field is set as `true`. Archiving a bank account at BILL has a set of requirements. * **Bank account status**: The bank account `status` must be set as `VERIFIED`. You can verify the bank account with `POST /v3/funding-accounts/banks/{bankAccountId}/verify`. * **Bank account user status**: The bank account user `verificationStatus` must be set as `VERIFIED`. To begin the verification process, nominate a bank account user with `POST /v3/funding-accounts/banks/users`. - [Archive a bank account user](https://developer.bill.com/reference/archivebankaccountuser.md): Archive an existing bank account user. In the response, the `archived` field is set as `true` and the bank account user `verificationStatus` is set as `UNVERIFIED`. - [Create a bank account](https://developer.bill.com/reference/createbankaccount.md): Create a new bank account. The currently signed-in user must have the `ADMINISTRATOR` user role in the BILL organization to perform this operation. BILL sends an email notification for informing you about changes to your funding accounts. When you create a bank account, BILL sends a test ACH payment to confirm whether the account details are accurate. In the response, three fields are set to their default values. * The bank account `status` is set as `PENDING`. You can verify the bank account with `POST /v3/funding-accounts/banks/{bankAccountId}/verify`. * The `payables` and `receivables` values are set as `false`. To update these values, update the bank account with `PATCH /v3/funding-accounts/banks/{bankAccountId}`. **Note**: Creating a bank account requires an MFA-trusted API session. See [MFA setup](https://developer.bill.com/reference/setup) for information about the BILL MFA process. See [Bank account setup (v3 API)](https://developer.bill.com/docs/bank-account-setup-v3-api) in the Guides section for more information, sample requests, and responses. - [Get bank account details](https://developer.bill.com/reference/getbankaccount.md): Get details about an existing bank account. - [Get list of bank accounts](https://developer.bill.com/reference/listbankaccounts.md): Get a list of bank account objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Get list of bank account users](https://developer.bill.com/reference/listbankaccountusers.md): Get a list of bank account user objects. In the response, if the bank account user `verificationStatus` is set as `NOMINATED`, user verification must be completed before the user can pay with the specified bank account. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. - [Nominate a bank account user](https://developer.bill.com/reference/nominatebankaccountuser.md): Nominate a bank account user. When you nominate a user, BILL performs a set of operations. * The bank account user `verificationStatus` is set as `NOMINATED`. * BILL sends the user an email asking them to sign in to the BILL web app and complete identity verification. See [Verify your identity](https://developer.bill.com/docs/sandbox-bank-account-setup#verify-your-identity) in the Guides section for test verification information you can enter in the sandbox environment. After user identity verification is successful, the bank account user `verificationStatus` is set as `VERIFIED` and the user can pay with the specified bank account. **Note**: The bank account `status` must be set as `VERIFIED` before you can nominate bank account users. - [Update a bank account](https://developer.bill.com/reference/updatebankaccount.md): Update details about an existing bank account. This operation follows a set of rules. * **Bank account `status` requirement**: The bank account `status` must be set as `VERIFIED` before you can update any details about the bank account. You can verify the bank account with `POST /v3/funding-accounts/banks/{bankAccountId}/verify`. * **Update field restrictions**: You cannot update the `routingNumber`, `accountNumber`, and account `type` values for a bank account. If you want to update any of these values, create a new bank account with `POST /v3/funding-accounts/banks`. - [Verify a bank account](https://developer.bill.com/reference/verifybankaccount.md): Verify an existing bank account. When you create a bank account, BILL sends a test ACH payment to the bank account to confirm whether the account details are accurate. Enter the test amount as the `depositAmount` value in your `POST /v3/funding-accounts/banks/{bankAccountId}/verify` request. **Note**: Bank account verification is required in the production environment before the account can be used for other BILL operations. In the sandbox environment, set `depositAmount` as `0.50` to complete bank account verification. The bank account `status` is set as `VERIFIED` when BILL is able to verify the `depositAmount` value. BILL sends an email notification for confirming a test transaction. When BILL cannot verify the bank account after three attempts, you cannot use the bank account. At this point, use another bank account or create a bank account with `POST /v3/funding-accounts/banks`. After your bank account verification is complete, ensure that the current bank account user `verificationStatus` is set as `VERIFIED` before you can use the bank account. To begin the verification process, nominate a bank account user with `POST /v3/funding-accounts/banks/users/nominate`. See [Bank account setup (v3 API)](https://developer.bill.com/docs/bank-account-setup-v3-api) in the Guides section for more information, sample requests, and responses. - [Get card account details](https://developer.bill.com/reference/getcardaccount.md): Get details about an existing card account. - [Get list of card account users](https://developer.bill.com/reference/listcardaccountusers.md): Get a list of card account user objects. In the response, if the card account user `verificationStatus` is set as `NOMINATED`, user verification must be completed before the user can pay with the specified card account. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. - [Get card funding purpose](https://developer.bill.com/reference/listcardfundingpurposes.md): Get a list of card funding purpose values based on the vendor and card brand. When you create a payment (`POST /v3/payments` or `POST /v3/payments/bulk`) with a `CARD_ACCOUNT` funding account `type`, BILL requires a vendor industry value for compliance. When BILL cannot identify the vendor industry, the `cardFundingPurpose` field must be set in your payment request. Use this endpoint to get the list of card funding purpose values you can set. If you get an empty 200 response, BILL has information about the vendor industry and setting the `cardFundingPurpose` field is not required in your payment request. - [Get list of card accounts](https://developer.bill.com/reference/listpayablecardaccounts.md): Get a list of card account objects. - [Get funding account permissions](https://developer.bill.com/reference/getfundingaccountpermission.md): Get the funding account permissions available for the current organization and current organization user. - [Archive a user](https://developer.bill.com/reference/archiveorganizationuser.md): Archive an existing user. In the response, the `archived` field is set as `true`." You can restore an archived user with `POST /v3/users/{userId}/restore`. There is no change when you archive an archived user. - [Create a user](https://developer.bill.com/reference/createorganizationuser.md): Create a new user. The currently signed-in user must have the `ADMINISTRATOR` user role in the BILL organization to perform this operation. When you create a user, BILL sends an email to the user for them to complete their sign-up. After user sign-up is complete, the user can access features in your BILL organization depending on the user role. See [Organizations and Users](https://developer.bill.com/docs/organizations-users) in the Guides section for more information, sample requests, and responses. - [Get user details](https://developer.bill.com/reference/getorganizationuser.md): Get details about an existing user. - [Get list of users](https://developer.bill.com/reference/listorganizationusers.md): Get a list of user objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Restore an archived user](https://developer.bill.com/reference/restoreorganizationuser.md): Restore an archived user. In the response, the `archived` field is set as `false`. You can perform any valid BILL operation on restored users. There is no change when you restore a restored user. - [Update a user](https://developer.bill.com/reference/updateorganizationuser.md): Update details about an existing user. - [Get billing statement details](https://developer.bill.com/reference/getbillingstatementdetail.md): Get details about a billing statement for the organization. BILL generates a monthly billing invoice statement for all the billing activities in the organization. From the response, use `downloadLink` in a GET request to download a billing statement. ``` curl '{downloadLink}' --header 'sessionId: {session_id}' --output {statement_name} ``` - [Get organization details](https://developer.bill.com/reference/getorganization.md): Get details about an existing organization. The currently signed-in user must have the `ADMINISTRATOR` user role in the BILL organization to perform this operation. See [Organizations and Users](https://developer.bill.com/docs/organizations-users) in the Guides section for more information, sample requests, and responses. - [Get organization price plan details](https://developer.bill.com/reference/getpriceplan.md): Get the BILL price plan details for an existing organization. The currently signed-in user must have the `ADMINISTRATOR` user role in the BILL organization to perform this operation. A BILL price plan for an organization provides a range of information, including monthly subscription fees and the terms and conditions for additional charges in the price plan. In the response, the `planTerms` object includes information about charges for price plan features based on a combination of charge `tier`, `quantity`, and `price`. We explain plan terms with an example. * If `"tier": 1`, `"quantity": 5`, and `"price": 10`, the first 5 users will be charged $10 each. * If `"tier": 2`, `"quantity": 10`, and `"price": 8`, the next 10 users will be charged $8 each. At this level, if there is no `tier` information, all users after tier 1 will be charged $8 each. - [Get list of billing statements](https://developer.bill.com/reference/listbillingstatements.md): Get a list of billing statements for the organization. BILL generates a monthly billing invoice statement for all the billing activities in the organization. In the request, set `invoiceDateFrom` and `invoiceDateTo` to get the billing invoice statements for the specified date range. BILL takes up to one business day for completing the billing process for a month. For example, if your organization billing begins on the 5th of a month, BILL completes the billing process by the 6th of each following month. You can set `max` and `page` in the request only when both `invoiceDateFrom` and `invoiceDateTo` are not set. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Get list of organization industries](https://developer.bill.com/reference/listindustries.md): Get a list of available values for the `industry` field for an organization. Use this information to set the `industry` field in your `POST /v3/partner/organizations` or `PATCH /v3/organizations/{organizationId}` request. - [Update an organization](https://developer.bill.com/reference/updateorganization.md): Update details about an existing organization. The currently signed-in user must have the `ADMINISTRATOR` user role in the BILL organization to perform this operation. See [Organizations and Users](https://developer.bill.com/docs/organizations-users) in the Guides section for more information, sample requests, and responses. - [Add phone for risk verification](https://developer.bill.com/reference/createriskverificationphone.md): Add a phone number for the currently signed-in user. BILL requires the signed-in user to have a linked phone number for initiating risk verification for the organization. You can check whether a phone number has been added for the user with `GET /v3/risk-verifications/phone`. After you add a phone number with this endpoint, you can initiate risk verification for the organization with `POST /v3/risk-verifications`. - [Get phone status for risk verification](https://developer.bill.com/reference/getriskverificationphone.md): Check whether a phone number has been added for the currently signed-in user. BILL requires the signed-in user to have a linked phone number for initiating risk verification for the organization. In the response, if `hasPhone` is `false`, you can add a phone number for the user with `POST /v3/risk-verifications/phone`. After you add a phone number, you can initiate risk verification for the organization with `POST /v3/risk-verifications`. - [Get risk verification details](https://developer.bill.com/reference/getriskverifications.md): Get risk verification details for an existing organization. - [Initiate risk verification for an organization](https://developer.bill.com/reference/initiateriskverifications.md): Initiate risk verification for an organization. The currently signed-in user must have the `ADMINISTRATOR` user role in the BILL organization to perform this operation. **Note**: You must add a phone number for the signed-in user (with `POST /v3/risk-verifications/phone`) before you can initiate risk verification. BILL partners must add a phone number for a created user with `POST /v3/partner/risk-verifications/{userId}/phone`. As a BILL partner, when you create an organization and then create a user for that organization, it is important that you initiate risk verification with `POST /v3/risk-verifications`. BILL performs a KYC/KYB (Know You Customer/Know Your Business) check based on the provided organization information. BILL sends an email notification for risk verification. When the check is complete, BILL approves the organization for BILL AP and AR operations. - [Get user role details](https://developer.bill.com/reference/getorganizationuserrole.md): Get details about an existing user role. - [Get list of user roles](https://developer.bill.com/reference/listorganizationuserroles.md): Get a list of user role objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. - [Archive a user](https://developer.bill.com/reference/archivepartneruser.md): Archive an existing user. In the response, the `archived` field is set as `true`. You can restore an archived user with `POST /v3/users/{userId}/restore`. There is no change when you archive an archived user. This operation requires partner-level permissions. * A `sessionId` header value generated with [API partner login](https://developer.bill.com/reference/partnerlogin) * An `appKey` header value * The `organizationId` of the organization - [Create an organization](https://developer.bill.com/reference/createorganization.md): Create a new organization. This operation requires partner-level permissions. * A `sessionId` header value generated with [API partner login](https://developer.bill.com/reference/partnerlogin) * An `appKey` header value See [Organizations for BILL partners](https://developer.bill.com/docs/partner-organizations) in the Guides section for more information, sample requests, and responses. - [Create a user](https://developer.bill.com/reference/createpartneruser.md): Create a new user. The new user is created for the organization (`organizationId`) in the request header. In the request, set `username` as a unique alphanumeric value. The value must be 40 characters or fewer. This field is not case-sensitive. Do not set the value as an email address or any PII value. BILL uses this value to uniquely identify each user. This operation requires partner-level permissions. * A `sessionId` header value generated with [API partner login](https://developer.bill.com/reference/partnerlogin) * An `appKey` header value * The `organizationId` of the organization See [Users for BILL partners](https://developer.bill.com/docs/partner-users) in the Guides section for more information, sample requests, and responses. - [Add phone for risk verification](https://developer.bill.com/reference/createphone.md): Add a phone number for a created user. BILL requires organization users to have a linked phone number for initiating risk verification for the organization. You can check whether a phone number has been added for the user with `GET /v3/risk-verifications/phone`. After you add a phone number with this endpoint, you can initiate risk verification for the organization with `POST /v3/risk-verifications`. - [Get user details](https://developer.bill.com/reference/getpartneruser.md): Get details about an existing user. This operation requires partner-level permissions. * A `sessionId` header value generated with [API partner login](https://developer.bill.com/reference/partnerlogin) * An `appKey` header value * The `organizationId` of the organization - [Get user role details](https://developer.bill.com/reference/getpartneruserrole.md): Get details about an existing user role in a BILL organization. This operation requires partner-level permissions. * A `sessionId` header value generated with [API partner login](https://developer.bill.com/reference/partnerlogin) * An `appKey` header value * The `organizationId` of the organization - [Get list of organizations](https://developer.bill.com/reference/listpartnerorganizations.md): Get a list of organization objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. This operation requires partner-level permissions. * A `sessionId` header value generated with [API partner login](https://developer.bill.com/reference/partnerlogin) * An `appKey` header value - [Get list of user roles](https://developer.bill.com/reference/listpartneruserroles.md): Get a list of user role objects available in a BILL organization. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. This operation requires partner-level permissions. * A `sessionId` header value generated with [API partner login](https://developer.bill.com/reference/partnerlogin) * An `appKey` header value * The `organizationId` of the organization - [Get list of users](https://developer.bill.com/reference/listpartnerusers.md): Get a list of user objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. See [Search operations with lists](https://developer.bill.com/docs/search-op-with-lists) in the Guides section for filtering, sorting, and pagination examples. This operation requires partner-level permissions. * A `sessionId` header value generated with [API partner login](https://developer.bill.com/reference/partnerlogin) * An `appKey` header value * The `organizationId` of the organization - [API login as user](https://developer.bill.com/reference/loginasuser.md): Sign in to a created organization as a created user of that organization. In the response, your API session is created and a generated `sessionId` is available for organization-level BILL API operations. This endpoint is required for a specific BILL partner-level workflow. 1. Sign in to your partner account with [API partner login](https://developer.bill.com/reference/partnerlogin). 2. Create a child BILL organization with `POST /v3/partner/organizations`. In the response, a BILL-generated organization `id` is available. 3. Create a user for the child BILL organization with `POST /v3/partner/users`. In the response, a BILL-generated user `id` is available. 4. Sign in to the created organization as the created user of that organization with `POST /v3/partner/login-as-user`. After signing in, you can perform organization-level BILL API operations, such as creating a bill or paying a vendor. All organization-level BILL API operations require a `devKey` and `sessionId`. **Note**: When you create an organization and then create a user for that organization, it is important that you initiate risk verification with `POST /v3/risk-verifications`. See [Initiate risk verification for an organization](https://developer.bill.com/reference/initiateriskverifications) for more information. This operation requires partner-level permissions. * A `sessionId` header value generated with [API partner login](https://developer.bill.com/reference/partnerlogin) * An `appKey` header value You can sign out with `POST /v3/logout`. If your API session is inactive for 35 minutes, the session expires and you are automatically signed out. ### MFA-trusted API session Set both `rememberMeId` and `device` as additional fields in your `POST /v3/partner/login-as-user` request to create an MFA-trusted API session. - [API partner login](https://developer.bill.com/reference/partnerlogin.md): Sign in to your BILL partner account. In the response, your partner API session is created and a BILL-generated `sessionId` is available. Use the `sessionId` in all subsequent API calls to confirm that you are in a signed-in session. You get additional permissions with a partner account `sessionId`. * Create a child BILL organization with `POST /v3/partner/organizations`. * Create a user for the child BILL organization with `POST /v3/partner/users`. * Sign in to the created organization as the created user of that organization with `/v3/partner/login-as-user`. After signing in, you can perform organization-level BILL API operations, such as creating a bill or paying a vendor. All organization-level BILL API operations require a `devKey` and `sessionId`. **Note**: When you create an organization and then create a user for that organization, it is important that you initiate risk verification with `POST /v3/risk-verifications`. See [Initiate risk verification for an organization](https://developer.bill.com/reference/initiateriskverifications) for more information. You can sign out with `POST /v3/logout`. If your API session is inactive for 35 minutes, the session expires and you are automatically signed out. - [Restore an archived user](https://developer.bill.com/reference/restorepartneruser.md): Restore an archived user. In the response, the `archived` field is set as `false`. You can perform any valid BILL operation on restored users. There is no change when you restore a restored user. This operation requires partner-level permissions. * A `sessionId` header value generated with [API partner login](https://developer.bill.com/reference/partnerlogin) * An `appKey` header value * The `organizationId` of the organization - [Update an organization price plan](https://developer.bill.com/reference/updateorgpartnerpriceplan.md): Update the price plan for an existing organization. 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`). - [Update a user](https://developer.bill.com/reference/updatepartneruser.md): Update details about an existing user. This operation requires partner-level permissions. * A `sessionId` header value generated with [API partner login](https://developer.bill.com/reference/partnerlogin) * An `appKey` header value * The `organizationId` of the organization - [Create a budget](https://developer.bill.com/reference/createbudget.md): Create a new budget for a company. See [Budgets and Users](https://developer.bill.com/docs/budgets-and-users) in the Guides section for more information, sample requests, and responses. - [Delete a budget](https://developer.bill.com/reference/deletebudget.md): Delete an existing budget. A deleted budget cannot be restored. The deleted budget is not available in the list of budgets. **Note**: * While you cannot restore a deleted budget with the API, you can unretire budgets in the BILL web app and mobile app. An unretired budget is active and is available for use. * A one-time budget can be unretired at any time. A `recurringInterval` budget can be unretired within one interval. For example, if a `MONTHLY` budget is retired in January, you can unretire it in February. You cannot unretire this budget in March or any later month. - [Delete a budget member](https://developer.bill.com/reference/deletebudgetmember.md): Delete a user member from an existing budget. - [Get budget details](https://developer.bill.com/reference/getbudget.md): Get details about an existing budget. - [Get budget member details](https://developer.bill.com/reference/getbudgetmember.md): Get details about a user member assigned to an existing budget. - [Get list of budget members](https://developer.bill.com/reference/listbudgetmembers.md): Get a list of user members assigned to an existing budget. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. - [Get list of budgets](https://developer.bill.com/reference/listbudgets.md): Get a list of budget objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. - [Update a budget](https://developer.bill.com/reference/updatebudget.md): Update details about an existing budget. - [Add or update a budget member](https://developer.bill.com/reference/upsertbudgetmember.md): Add a new user member to an existing budget. You can also update details about an existing user member assigned to the budget. - [Update multiple budget members](https://developer.bill.com/reference/upsertbulkbudgetusers.md): Update details about multiple user members assigned to an existing budget. - [Create a vendor card](https://developer.bill.com/reference/createbudgetcard.md): Create a new vendor card. See [Vendor cards](https://developer.bill.com/docs/virtual-cards) in the Guides section for more information, sample requests, and responses. - [Delete a vendor card](https://developer.bill.com/reference/deletecard.md): Delete an existing vendor card. A deleted card cannot be restored. The deleted card is not available in the list of cards. - [Freeze a vendor card](https://developer.bill.com/reference/freezecard.md): Freeze an existing vendor card. You can freeze virtual cards and physical cards. A frozen card cannot be used for payments. - [Get vendor card details](https://developer.bill.com/reference/getcard.md): Get details about an existing vendor card. - [Get a PAN JWT token](https://developer.bill.com/reference/getpanjwt.md): Get a JWT token for a vendor card. The JWT token for a card contains all the information required for retrieving details about the card (16-digit PAN, CVV, and expiration date). The JWT token lifespan is 5 minutes. You can decode the JWT token to get PAN details with `POST https://app-dev-bdc-stg.divvy.co/de/rest/pan`. ``` curl --request POST 'https://app-dev-bdc-stg.divvy.co/de/rest/pan' --header 'Content-Type: application/json' --data-raw '{"token":"{JWT_token}"}' ``` **Note**: Use `POST https://api.divvy.co/de/rest/pan` in the production environment. - [Get list of cards](https://developer.bill.com/reference/listcards.md): Get a list of card objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. - [Unfreeze a vendor card](https://developer.bill.com/reference/unfreezecard.md): Unfreeze an existing vendor card. You can unfreeze virtual cards and physical cards. - [Update a vendor card](https://developer.bill.com/reference/updatecard.md): Update details about an existing vendor card. - [Create a custom field](https://developer.bill.com/reference/createcustomfield.md): Create a new custom field. See [Transactions](https://developer.bill.com/docs/transaction-management) in the Guides section for more information, sample requests, and responses. - [Create a custom field value](https://developer.bill.com/reference/createcustomfieldvalues.md): Create a new value for an existing custom field. - [Delete a custom field](https://developer.bill.com/reference/deletecustomfield.md): Delete an existing custom field. A deleted custom field cannot be restored. The deleted custom field is not available in the list of custom fields. - [Delete a custom field value](https://developer.bill.com/reference/deletecustomfieldvalue.md): Delete an existing custom field value. A deleted value cannot be restored. The deleted value is not available in the list of custom field values. In addition, the deleted value cannot be assigned to current or future transactions. The deleted value will continue to be assigned to past transactions. - [Get custom field details](https://developer.bill.com/reference/getcustomfield.md): Get details about an existing custom field. - [Get custom field value details](https://developer.bill.com/reference/getcustomfieldvalues.md): Get details about an existing custom field value. - [Get list of custom fields](https://developer.bill.com/reference/listcustomfields.md): Get a list of custom field objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. - [Get list of custom field values](https://developer.bill.com/reference/listcustomfieldvalues.md): Get a list of custom field value objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. - [Update a custom field](https://developer.bill.com/reference/updatecustomfield.md): Update details about an existing custom field. - [Add a reimbursement receipt](https://developer.bill.com/reference/addreimbursementreceipt.md): Add a receipt to an existing reimbursement. In the request, use the same upload url that you used to upload the receipt image. See [Create a reimbursement upload URL](https://developer.bill.com/reference/createimageuploadurl) to learn about creating a reimbursement image upload URL. - [Approve or deny a reimbursement](https://developer.bill.com/reference/approveordenyreimbursement.md): Approve or deny a reimbursement request. See [Reimbursements](https://developer.bill.com/docs/reimbursements) in the Guides section for more information, sample requests, and responses. - [Create a reimbursement upload URL](https://developer.bill.com/reference/createimageuploadurl.md): Create a reimbursement image upload URL. From the response, use the upload `url` to upload a receipt image for the reimbursement. For example, to upload a JPEG image, use the following `curl` command. To upload a PNG image, set the content type as `image/png`. ``` curl '{upload_url}' -H 'Content-Type: image/jpeg' --upload-file {file_name_with_extension} ``` **Note**: BILL supports JPG and PNG file formats for reimbursement images. See [Reimbursements](https://developer.bill.com/docs/reimbursements) in the Guides section for more information, sample requests, and responses. - [Create a reimbursement](https://developer.bill.com/reference/createreimbursement.md): Create a new reimbursement. See [Reimbursements](https://developer.bill.com/docs/reimbursements) in the Guides section for more information, sample requests, and responses. - [Delete a reimbursement](https://developer.bill.com/reference/deletereimbursement.md): Delete an existing reimbursement. A deleted reimbursement cannot be restored. The deleted reimbursement is not available in the list of reimbursements. - [Delete a reimbursement receipt](https://developer.bill.com/reference/deletereimbursementreceipt.md): Delete a receipt from an existing reimbursement. A deleted receipt cannot be restored. The deleted receipt is not available in the reimbursement details. - [Get reimbursement details](https://developer.bill.com/reference/getreimbursement.md): Get details about an existing reimbursement. - [Get list of reimbursements](https://developer.bill.com/reference/listreimbursements.md): Get a list of reimbursement objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. - [Update a reimbursement](https://developer.bill.com/reference/updatereimbursement.md): Update details about an existing reimbursement. - [Add a transaction receipt](https://developer.bill.com/reference/addtransactionreceipt.md): Add a receipt to an existing transaction. In the request, use the same upload `url` that you used to upload the receipt image. See [Create a transaction upload URL](https://developer.bill.com/reference/createreceiptuploadurl) to learn about creating a transaction image upload URL. - [Create a transaction upload URL](https://developer.bill.com/reference/createreceiptuploadurl.md): Create a transaction image upload URL. From the response, use the upload `url` to upload a receipt image for the transaction. For example, to upload a JPEG image, use the following `curl` command. To upload a PNG image, set the content type as `image/png`. ``` curl '{upload_url}' -H 'Content-Type: image/jpeg' --upload-file {file_name_with_extension} ``` **Note**: BILL supports JPG and PNG file formats for transaction images. See [Transactions](https://developer.bill.com/docs/transaction-management) in the Guides section for more information, sample requests, and responses. - [Delete a transaction receipt](https://developer.bill.com/reference/deletetransactionreceipt.md): Delete a receipt from an existing transaction. A deleted receipt cannot be restored. The deleted receipt is not available in the transaction details. - [Get transaction details](https://developer.bill.com/reference/gettransaction.md): Get details about an existing transaction. In the response, you get information about transactions, reversals, and refunds. * **Transaction**: For a transaction, `transactionType` is set as `AUTHORIZATION` or `DECLINE`. The field is set as `CLEAR` after BILL has moved money from the funding account. * **Reversal**: For a reversal (cancel before funds are settled), `transactionType` is set as `AUTHORIZATION` and `amount` is a negative value. * **Refund**: For a refund (cancel after funds are settled), `transactionType` is set as `CLEAR` and `amount` is a negative value. - [Get list of transaction custom fields](https://developer.bill.com/reference/listtransactioncustomfields.md): Get a list of custom field objects applied to an existing transaction. - [Get list of transaction custom field values](https://developer.bill.com/reference/listtransactioncustomfieldvalues.md): Get a list of custom field value objects applied to an existing transaction. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. - [Get list of transactions](https://developer.bill.com/reference/listtransactions.md): Get a list of transaction objects. By default, you get 20 results on one page of results. Set `max` in your request to get up to 50 results on one page. In the response, you get information about transactions, reversals, and refunds. * **Transaction**: For a transaction, `transactionType` is set as `AUTHORIZATION` or `DECLINE`. The field is set as `CLEAR` after BILL has moved money from the funding account. * **Reversal**: For a reversal (cancel before funds are settled), `transactionType` is set as `AUTHORIZATION` and `amount` is a negative value. * **Refund**: For a refund (cancel after funds are settled), `transactionType` is set as `CLEAR` and `amount` is a negative value. **Note**: Only parent transactions are available in the response. - [Accept or reject a transaction](https://developer.bill.com/reference/threedschallenge.md): Accept or reject a transaction 3D Secure (3DS) challenge. When a transaction is created, a 3DS challenge may trigger to verify the identity of the cardholder. Use this endpoint to approve or deny the transaction. The Spend & Expense user must have the `ADMIN` user role to perform this operation. Subscribe to the `spend.three-ds-challenge.created` event to get a webhook notification when a 3DS challenge is triggered for a transaction. See [Spend & Expense 3DS challenge notification payload](https://developer.bill.com/docs/spend-expense-3ds-challenge-notification-payload) for more information. See [3-D Secure - BILL Spend & Expense](https://help.bill.com/direct/s/article/5955655) in the BILL Help Center to learn more about 3D Secure at BILL. - [Update a transaction](https://developer.bill.com/reference/updatetransaction.md): Update the budget for an existing transaction. - [Update transaction custom fields](https://developer.bill.com/reference/updatetransactioncustomfields.md): Update details about custom fields and their values applied to an existing transaction. You cannot update custom fields in a locked transaction. When a transaction is locked, `isLocked` is set as `true`. You can get information about your transactions with `GET /v3/spend/transactions` or `GET /v3/spend/transactions/{transactionId}. See [Lock or unlock custom fields for a transaction](https://help.bill.com/direct/s/article/4278891) in the BILL Help Center for more information. - [Create a user](https://developer.bill.com/reference/createuser.md): Create a new user. See [Budgets and Users](https://developer.bill.com/docs/budgets-and-users) in the Guides section for more information, sample requests, and responses. - [Delete a user](https://developer.bill.com/reference/deleteuser.md): Delete an existing user. - [Get current user details](https://developer.bill.com/reference/getcurrentuser.md): Get details about the current user. This is the user that generated the Spend & Expense API token. - [Get user details](https://developer.bill.com/reference/getuser.md): Get details about an existing user. - [Get list of users](https://developer.bill.com/reference/listusers.md): Get a list of user objects in the current user's company. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. - [Update a user](https://developer.bill.com/reference/updateuser.md): Update details about an existing user. - [Get events catalog](https://developer.bill.com/reference/geteventcatalog.md): Get the complete list of available events that you can subscribe to. See [Webhooks](doc:webhooks) in the Guides section for more information, sample requests, and notification payloads for BILL events. - [Get list of event notifications](https://developer.bill.com/reference/geteventsforsubscription.md): Get a list of event notifications sent to you for a subscription. You can use this endpoint to address any issues with notification retries. In the request, set `createdTimeFrom` and `createdTimeTo` to get event notifications for the specified time range. If you do not set `createdTimeTo`, the current date and time is used. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. **Note**: In this list operation, pagination is available only in one direction. The `nextPage` value is available in the response for you to retrieve the next page of results. However, you cannot retrieve the previous page of results. See [Webhooks](doc:webhooks) in the Guides section for more information, sample requests, and notification payloads for BILL events. - [Resend an event](https://developer.bill.com/reference/resendevent.md): Resend an existing event notification. **Note**: When an event notification fails, BILL tries to send the notification again with exponential backoff. See [Webhooks](doc:webhooks) in the Guides section for more information, sample requests, and notification payloads for BILL events. - [Check app health](https://developer.bill.com/reference/webhookgethealthcheck.md): Get app details, such as version and deployment location. - [Create a security key](https://developer.bill.com/reference/createnewsecuritykey.md): Create a new security key for your subscription. When you create a new subscription, a one-time `securityKey` is one of the generated values in the response. All event notifications sent to your `notificationUrl` are signed with this key using the HMAC-SHA256 algorithm. The key is sent as the `x-bill-sha-signature` header value in the notification. You can use the security key to verify all notifications sent to you. It is good practice to keep the security key for your subscription updated in a timely manner. You can use this endpoint to generate a new security key based on your desired frequency. See [Webhooks](doc:webhooks) in the Guides section for more information, sample requests, and notification payloads for BILL events. - [Create a subscription](https://developer.bill.com/reference/createsubscription.md): Create a new event subscription. You can subscribe to multiple events with a single request. You can create up to 10 webhook subscriptions per organization. BILL provides a full catalog of all the events that you can subscribe to with `GET /v3/events/catalog`. See [Get events catalog](ref:geteventcatalog) in the API reference for more information. See [Webhooks](doc:webhooks) in the Guides section for more information, sample requests, and notification payloads for BILL events. - [Delete a subscription](https://developer.bill.com/reference/deletesubscription.md): Delete an existing subscription. - [Get list of subscriptions](https://developer.bill.com/reference/getallsubscriptions.md): Get a list of all your created subscriptions. By default, you get 20 results on one page of results. Set `max` in your request to get up to 100 results on one page. **Note**: In this list operation, pagination is available only in one direction. The `nextPage` value is available in the response for you to retrieve the next page of results. However, you cannot retrieve the previous page of results. See [Webhooks](doc:webhooks) in the Guides section for more information, sample requests, and notification payloads for BILL events. - [Get subscription details](https://developer.bill.com/reference/getsubscription.md): Get details about an existing subscription. - [Replace a subscription](https://developer.bill.com/reference/replacesubscription.md): Update the events that you are subscribed to. You can use the PUT operation to add, remove, or replace events in a subscription. For example, you can replace the `bill.created` event with `bill.updated` in your subscription. - [Generate a test event notification](https://developer.bill.com/reference/sendtestevent.md): Generate a new test event notification. After you create a subscription, use this endpoint for BILL to send a test event notification to your specified notification URL. In your request, all the fields are optional. To see specific information in the test event notification, you can set `eventType`, `version`, and any details. You can get the BILL events catalog with `GET /v3/events/catalog`. **Note**: All the fields in the test event notification are test values. You cannot use any of the test values for any other operation. See [Webhooks](doc:webhooks) in the Guides section for more information, sample requests, and notification payloads for BILL events. - [Update a subscription](https://developer.bill.com/reference/updatesubscription.md): Update details about a subscription. You can use the PATCH operation to modify existing subscription details, such as `name`, `status`, and `notificationUrl`. ## Changelog - [Vendor bank accounts API improvements](https://developer.bill.com/changelog/2026-05-21-vendor-bank-accounts-api-improvements.md) - [New developer tutorial on YouTube](https://developer.bill.com/changelog/2026-05-21-new-developer-tutorial-on-youtube.md) - [New API endpoints for BILL export operations](https://developer.bill.com/changelog/2026-05-12-new-endpoints-export-operations.md) - [New interactive BILL v3 API recipes! 🚀](https://developer.bill.com/changelog/2026-05-08-interactive-recipes.md) - [New webhook subscription limits](https://developer.bill.com/changelog/2026-04-30-webhook-subscription-limits.md)