We have introduced new features for the BILL webhook API. BILL partners can now perform subscription and event operations at the partner level.

As a BILL partner, when you create a subscription for events, you get event notifications for all the organizations created with your partner appKey. To create a subscription at the partner level, simply set the required header values. The base URL and body parameters in the POST /v3/subscriptions request are the same for partner users and organization users.

Partner-level header values for webhooksOrganization-level header values for webhooks
X-Idempotent-Key
Idempotency key. The key must be in the UUID4 format.
X-Idempotent-Key
Idempotency key. The key must be in the UUID4 format.
partnerSessionId
API session ID generated with /v3/partner/login
sessionId
API session ID generated with /v3/login
appKey
Application key sent to you by BILL when you create a partner account
devKey
Developer key sent to you by BILL when you create a developer account

We have introduced a set of Multi-Factor Authentication (MFA) API endpoints. 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.

OperationAPI endpoint
Add phone for MFA setupPOST /v3/mfa/setup
Validate phone for MFA setupPOST /v3/mfa/validate
Generate MFA challengePOST /v3/mfa/challenge
Validate MFA challengePOST /v3/mfa/challenge/validate

In the payments API response, you now receive information about the bills that a payment amount is applied to.

When you pay a bill with POST /v3/payments or when you pay multiple bills with one POST /v3/payments/bulk, you now see a billPayments object in the response. For each bill payment, the billPayment object includes the bill payment id, bill id, and amount applied to the bill.

See Payments for more information.

BILL is introducing a more stable sandbox environment for you to continue testing with the BILL v2 API - https://api-stage.bill.com/api/v2/. In addition, we have migrated the developer keys of all current API customers to the new environment.

On August 31, 2024, BILL will sunset the current sandbox environment. To continue testing with the BILL v2 API, set up a test organization in the new environment and start making your v2 API calls with the new base URL. See the next set of sections in this email for more information.

📘

NOTE

August 31, 2024 onwards, after the current sandbox environment is sunset, your test data in the current sandbox environment will not be available.

This change does not affect any integrations in the BILL production environment.

URL changes

The API base URL and web app URL is changing as part of introducing the new sandbox environment.

Current URLNew URL
Base URLhttps://api-sandbox.bill.com/api/v2/https://api-stage.bill.com/api/v2/
Web app URLhttps://app-sandbox.bill.com/loginhttps://login.stage.us.bill.com/neo/login

Developer actions

Now that the developer key migration is complete, you can take advantage of testing with the new sandbox environment.

Complete the provided set of recommended steps.

  1. Sign up and create a new BILL developer account at https://www-test.bill.com/signup?env=stage. Make sure that you enter the email address you use for your current sandbox developer account.
  2. Select Accounts Payable & Receivable and click Get Started to complete your BILL account activation flow. This includes adding a valid phone number for the two-step verification process.
  3. When your sign-up is complete, you land on the Get started section. You can continue testing with BILL features. For example, adding a vendor, bill, customer, and invoice.
  4. At any point, you can sign in to your developer account at https://login.stage.us.bill.com/neo/login with your created user name (email address) and password.

API sign in credentials

Set the required fields to sign in with /v2/Login.json.

FieldDescription
userNameYour username is the email address used to sign in to your BILL developer account.
passswordYour password is used to sign in to your BILL developer account.
devKeyYour developer key is used to identify your developer account in your API requests.

Set this value as your current developer key.
orgIdYour BILL developer account represents your test organization in BILL. The organization ID is a unique alphanumeric value that begins with 008.

The simplest method to get your organization ID is with /v2/ListOrgs.json.

Sample /v2/ListOrgs.json request

curl --request POST \
--url 'https://api-stage.bill.com/api/v2/ListOrgs.json' \
--header 'accept: application/json' \
--header 'content-type: application/x-www-form-urlencoded' \
--data 'userName={email_address}' \
--data 'password={password}' \
--data 'devKey={developer_key}'

Sample /v2/Login.json request

curl --request POST \
--url 'https://api-stage.bill.com/api/v2/Login.json' \
--header 'accept: application/json' \
--header 'content-type: application/x-www-form-urlencoded' \
--data 'userName={username}' \
--data 'password={password}' \
--data 'devKey={developer_key}' \
--data 'orgId={organization_id}'

After signing in, you can continue testing with BILL v2 API operations, including adding a vendor, creating a bill, and submitting a payment. For questions or concerns, email us at [email protected].

We have made a set of improvements in the BILL webhook notification payloads for consistency with other BILL v3 API responses.

  • The createdTime and updatedTime value format is now consistent with the format in other BILL v3 API responses. The format is yyyy-MM-dd'T'HH:mm:ss.SSSX. For example, 2024-12-15T22:53:15.127+00:00.
  • In the notification payloads for bills, the invoiceNumber and invoiceDate information is now in the invoice object. This matches the format of the /v3/bills API response.

See Webhooks for more information.