Capability Library · Pack detail

billcom v1.0.0

BILL (Bill.com) v3 AP API: read vendors, bills and payments, create a bill, and approve or deny a bill.

Review state: draft· Not in the distributable release manifest

Release identity

SHA-256 of the pack file bytes: 30d5864b73d4b986e0c69f759fd2ebb03e032a2c300c65854af948113cd28a81

Not in the distributable release manifest. The binary carries a digest-bound manifest of the distributable library; a pack whose bytes differ from its manifest entry — endpoint, tier, allowlist, or credential edited, with provider, version, and review block preserved — fails the digest check, loses distributability, and renders MODIFIED rather than as the shipped reviewed artifact. Review state and artifact status are different facts: the first is a documentation-review declaration, the second is the identity of the exact bytes.

Capabilities (5)

billcom.vendors.read v1.0.0R0

Action
read
Endpoint
GET https://gateway.prod.bill.com/connect/v3/vendors
Connector
http
Custody
customer_vault
Credential ref
secret-ref-billcom-v3-session
Data class
pii

Query the vendors collection: vendor names, account numbers, emails, phones, addresses and network/payment status — vendor records carry named contacts and can identify individual persons, so the read is registered at the pii class (a deployment whose policy classifies vendor master data differently may change it). The registered path covers the collection read only — single-vendor reads (GET /v3/vendors/{vendorId}) and vendor bank account details are not registered by this pack.

billcom.bills.read v1.0.0R0

Action
read
Endpoint
GET https://gateway.prod.bill.com/connect/v3/bills
Connector
http
Custody
customer_vault
Credential ref
secret-ref-billcom-v3-session
Data class
financial

Query the bills collection: bill headers with vendors, invoice numbers, amounts, currencies, due dates, approval statuses and payment statuses, registered at the financial class. The registered path covers the collection read only — single-bill reads (GET /v3/bills/{billId}) and bill documents are not registered by this pack.

billcom.payments.read v1.0.0R0

Action
read
Endpoint
GET https://gateway.prod.bill.com/connect/v3/payments
Connector
http
Custody
customer_vault
Credential ref
secret-ref-billcom-v3-session
Data class
financial

Query the payments collection: payment objects with vendors, amounts, funding accounts, process dates, disbursement types and statuses, registered at the financial class. The registered path covers the collection read only — single-payment reads (GET /v3/payments/{paymentId}) and check image data are not registered by this pack.

billcom.bills.create v1.0.0R3

Action
pay
Endpoint
POST https://gateway.prod.bill.com/connect/v3/bills
Connector
http
Custody
customer_vault
Credential ref
secret-ref-billcom-v3-session
Data class
financial

Create a bill. Effect-level precision: POST /v3/bills creates a bill object — object-created, request-accepted — and by itself schedules no payment: paying is the separate POST /v3/payments endpoint, which BILL gates behind an MFA-trusted session and which this pack deliberately does not register. The capability is nonetheless registered as pay at the R3 floor, because BILL documents vendor auto-pay: when autoPay is enabled for a vendor, BILL automatically pays the vendor when a bill is created for that vendor, so under that documented account configuration the call initiates a payment workflow whose documented end state is a processed payment — not money moved at request time. pay is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer). The registered cost ceiling is a budget control on the declared amount: the gateway refuses a declared amount above it and commits the ceiling against the work budget; it does not bound the amount the provider request encodes. Review whether any vendor the integration can bill has autoPay enabled.

billcom.bills.approve v1.0.0R3

Action
approve
Endpoint
POST https://gateway.prod.bill.com/connect/v3/bill-approvals/actions
Connector
http
Custody
customer_vault
Credential ref
secret-ref-billcom-v3-session
Data class
financial

Approve or deny bills (POST /v3/bill-approvals/actions, one array entry per bill). BILL documents that approved bills can be paid, and that a bill under an approval policy cannot be paid until all required approvers have approved, so the call records the approver's judgement AND releases the documented approval gate standing between the bill and payment — approval-recorded. The call itself moves no money, and an explicit payment is the separate MFA-gated POST /v3/payments endpoint this pack does not register; but BILL also documents configured automatic processing — vendor auto-pay (when autoPay is enabled for a vendor, BILL automatically pays the vendor when a bill is created for that vendor) and recurring-bill autoPayment — so releasing the approval gate can release configured automatic payment processing, and excluding POST /v3/payments from this pack does not exclude all payment initiation. Registered as approve at the R3 floor — approve is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer) and an irreversible action cannot be taken without a person. Note the credential trade-off: approve/deny is not available to AP & AR sync token sessions, so this capability requires a user-credential session.

Credential reference

The pack names a reference, never a secret. Installing a pack registers capabilities and makes them governable; registration is not connectivity. The credential is created at the provider and held in the client's own secret manager under the reference the pack names, and deployment testing is still required to show the credential path works and cannot be bypassed.

Reference
secret-ref-billcom-v3-session
Custody
customer_vault
Injection
header (sessionId)

A BILL v3 API session id, held in the client's own secret manager. The stored material must be the complete sessionId header value — the session id itself, with no scheme prefix. An external token process mints it: POST https://gateway.prod.bill.com/connect/v3/login with username, password, organizationId and devKey — where username/password are either user credentials or an AP & AR sync token name/value generated in the BILL web app (Settings > Sync & Integrations > Tokens) — and stores only the returned sessionId; the sign-in credentials (user password or sync token value) are themselves secret material and stay with that external process. The devKey has a different lifecycle: BILL documents devKey and sessionId as required headers on EVERY API call, not just login, so the devKey must also reach the trusted HTTP executor — it does not stay with the external sign-in process. The deployment must resolve the devKey from its own secret manager as a second secret reference (separate from this pack's sessionId reference), inject it into the devKey header on every call alongside the injected sessionId, and give it protections equivalent to the session id's: held in executor memory only for the lifetime of a call, never written to logs, traces or diagnostics, and never present in crash dumps. That second-secret wiring is outside this pack's single injection point and is a pre-enablement review item — if the executor cannot supply the devKey header, this pack is not enableable as wired. Expiry and revocation: BILL documents that a session minted from user credentials expires after 35 minutes idle, and a session minted from a sync token after 48 hours idle, so the external process must re-login on expiry — the executor must not attempt renewal itself; signing out with POST /v3/logout terminates the session, and an expired value fails closed; revoking a sync token in the BILL web app prevents that token minting NEW sessions — preventing issuance is a different event from invalidating sessions already minted, and BILL's documentation does not describe credential or sync-token changes as ending sessions already in flight before their documented idle expiry. Least privilege: a sync-token session has no payment operations, no approve/deny and no MFA-protected operations, and is the right shape for the reads and bill creation; the approve capability needs a user-credential session, which BILL documents as unrestricted within the user's permissions — choose the underlying BILL user's role accordingly. MFA note: payment creation requires an MFA-trusted session, which this pack never uses because it does not register payment creation. Executor hygiene: the session id must live only in executor memory for the lifetime of a call, must never be written to logs, traces or diagnostics, and must never appear in crash reports; the executor's memory, log and crash handling are otherwise the deployment's review.

Resources

  • billcom-vendors (api, pii): https://gateway.prod.bill.com/connect/v3/vendors
  • billcom-bills (api, financial): https://gateway.prod.bill.com/connect/v3/bills
  • billcom-payments (api, financial): https://gateway.prod.bill.com/connect/v3/payments
  • billcom-bill-approvals (api, financial): https://gateway.prod.bill.com/connect/v3/bill-approvals/actions

Pack notes and exclusions

Use a BILL API session whose underlying sign-in credentials carry only the access these capabilities need; the pack does not create one. The BILL v3 API authenticates every call with TWO headers, sessionId and devKey: this pack's credential reference stores the sessionId material for injection into the sessionId header, and the deployment must present the devKey header alongside every call — review how the deployment's HTTP executor supplies that second header before enabling, because if it cannot, this pack is not enableable as wired. The production host is gateway.prod.bill.com (path prefix /connect); gateway.stage.bill.com is the sandbox and is not registered. Bill creation is registered as pay at the R3 floor, not create at R2: POST /v3/bills itself creates a bill object and schedules no payment — payment is the separate, MFA-gated POST /v3/payments endpoint this pack deliberately does not register — but BILL documents vendor auto-pay (when autoPay is enabled for a vendor, BILL automatically pays the vendor when a bill is created for that vendor), so under a documented account configuration the call initiates a payment workflow whose documented end state is a processed payment; pay is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer). Approving a bill is registered as approve at the R3 floor — BILL documents that approved bills can be paid — and approve is likewise irreversible; both irreversible actions require a person, and the registered cost ceiling on bill creation plus a policy budget are the second control. All reads are collection reads only: single-record reads (GET /v3/vendors/{vendorId}, GET /v3/bills/{billId}, GET /v3/payments/{paymentId}) exist in the API and are deliberately not registered. Documented exclusions, framed as what this pack does not register: payment creation (POST /v3/payments, POST /v3/payments/bulk and POST /v3/payments/mass — money moves, and BILL requires an MFA-trusted session), recording offline AP payments, cancelling or voiding payments, vendor creation/update/archive and all vendor bank account operations, recurring bills (including recurring-bill autoPayment), bill update/replace/archive/restore, bill approval policy management, the entire AR surface, the Spend & Expense API surface (which uses a different, token-based authentication), documents and attachments upload, webhook subscription management, MFA operations, and the v2 API. An AP & AR sync token sign-in is the least-privilege credential shape for the reads and for bill creation (sync-token sessions have no payment and no approve/deny access); the approve capability requires a user-credential session, so a deployment that enables the approve capability must accept the broader session. AAES has not been certified by Bill.com; the endpoints here are a reviewable default, not a vendor guarantee.

Review record

Draft review record dated 2026-09-21 · Reviewer: aaes-eng (an opaque id that resolves internally to the responsible reviewer)

A pack review is not a vendor or examiner attestation. A retrieval date says when a source page was read; it does not by itself establish what the page said then. No pack is vendor-endorsed, and none has been connectivity-tested against a live vendor tenant.