Pay vendors with BILL

Use /v2/PayBills.json to pay a vendor with BILL for one or more bills. You can also pay multiple vendors with a single /v2/PayBills.json request. See the PayBills API for more information.

❗️

You cannot pay a vendor without linking it to a bill

With the /v2/PayBills.json API, you cannot pay a vendor without linking it to a bill. This feature is available only with the BILL web app.

Prerequisites

There are two prerequisites for using /v2/PayBills.json.

  • This is an MFA protected endpoint. Create an MFA-protected API session with /v2/Login.json before using /v2/PayBills.json. See the Login API for more information.
  • The user paying a bill must have either the Administrator, Payer, or another user role profile that has the permission to pay bills.

Pay a single vendor

In your request, the billPays information is required.

  • In the billPays array, set billId and amount for each bill to be paid.
  • You can set vendorId as the ID of the vendor you want to pay. If you do not set the vendorId, the vendorId is automatically set for each bill to be paid.

In this cURL example, the vendor (vendorId) is paid $100 and $50 as payments for two bills.

curl --request POST \
--url 'https://api-stage.bill.com/api/v2/PayBills.json' \
--header 'accept: application/json' \
--header 'content-type: application/x-www-form-urlencoded' \
--data 'devKey={developer_key}' \
--data 'sessionId={session_id}' \
--data 'data={
  "vendorId":"{vendor_id}",
  "billPays":[{
    "billId":"{bill01_id}",
    "amount":100
  },
  {
    "billId":"{bill02_id}",
    "amount":50
  }]
}'

Combine payments made to the same vendor

You can combine payments for multiple bills to the same vendor into one payment if you pay from a bank account.

Ensure that you set enableCombinePayments as true for the vendor (with /v2/Crud/Create/Vendor.json or /v2/Crud/Update/Vendor.json) before paying for multiple bills as one combined payment. See the Create a vendor API for more information.

In the above cURL example, if enableCombinePayments is true for a vendor, the vendor receives one combined $150 payment for two bills.

❗️

Rules for combined payments

Payments can be combined only when they have the same process date, the same arrives-by date, and are scheduled to be paid at the same time.

Pay multiple vendors

In your request, the billPays information is required.

  • In the billPays array, set billId and amount for each bill to be paid.
  • Do not set the vendorId. The vendorId is automatically set for each bill to be paid.

In this cURL example, two bill payments of $100 and $50 are sent to their respective vendors.

curl --request POST \
--url 'https://api-stage.bill.com/api/v2/PayBills.json' \
--header 'accept: application/json' \
--header 'content-type: application/x-www-form-urlencoded' \
--data 'devKey={developer_key}' \
--data 'sessionId={session_id}' \
--data 'data={
  "billPays":[{
    "billId":"{bill01_id}",
    "amount":100
  },
  {
    "billId":"{bill02_id}",
    "amount":50
  }]
}'

Pay vendors with Pay Faster

With BILL Pay Faster, you can pay vendors with faster check and ePayment options.

To use the Pay Faster feature, set processDate and processingOptions based on the disbursement method accepted by the vendor (only CHECK or ACH).

Pay FasterRules (for a payment created on Monday, December 1, 2025 at 9 AM PT / 12 PM ET)
ACH paymentSet processDate as 2025-12-01
Set isFasterPayment as true
Set deliveryType as 13
Check payment via UPS 1-day deliverySet processDate as 2025-12-02
Set isFasterPayment as true
Set deliveryType as 10
Check payment via UPS 2-days deliverySet processDate as 2025-12-03
Set isFasterPayment as true
Set deliveryType as 11
Check payment via UPS 3-days deliverySet processDate as 2025-12-04
Set isFasterPayment as true
Set deliveryType as 12
Check payment via USPS to a PO Box or a non-serviceable vendor addressSet processDate as 2025-12-02
Set isFasterPayment as true
Set deliveryType as 1

See Pay Faster and other expedited payment methods in the BILL Help Center for information about payment limits and Pay Faster pricing.

In this cURL example, a vendor payment of $228.99 is created on Monday, December 1, 2025 at 9 AM PT / 12 PM ET. For the Pay Faster ACH payment, processDate is set as 2025-12-01. The required fields for Pay Faster are set.

curl --request POST \
--url 'https://api-stage.bill.com/api/v2/PayBills.json' \
--header 'accept: application/json' \
--header 'content-type: application/x-www-form-urlencoded' \
--data 'devKey={developer_key}' \
--data 'sessionId={session_id}' \
--data 'data={
  "vendorId":"{vendor_id}",
  "processDate":"2025-12-01",
  "isFasterPayment":true,
  "deliveryType":"13",
  "billPays":[{
    "billId":"{bill01_id}",
    "amount":228.99
  }]
}'