canonical: https://jentic.com/apis/bill.com/vendor-management

# Bill AP | Vendor management

Jentic publishes the only available OpenAPI specification for AP | Vendor management, keeping it validated and agent-ready. This BILL surface manages the vendors an organisation pays and the bank accounts attached to those vendors. Agents create, update, and bulk-load Vendor records, soft-delete or restore them to preserve audit trail, and add or remove the VendorBankAccount records that determine where ACH payments land. It is the prerequisite layer for every AP payment workflow.

## For AI agents

Onboard vendors, attach their bank account details, and keep vendor records in sync with the procurement system inside BILL.

## Scope

Does not handle bills, payment runs, or customer invoicing - use for vendor master data and vendor bank account setup only.

## Capabilities

- Create and update vendor records individually or in bulk batches
- Soft-delete and undelete vendors to preserve historical AP audit trail
- Attach vendor bank accounts that drive ACH payment routing
- List vendors and vendor bank accounts for reconciliation against the master data source
- Read individual vendor and vendor bank account records by ID for downstream automation

## Use cases

### Vendor onboarding from procurement

Sync new vendors from a procurement system into BILL the moment a master record is approved. The API exposes Crud/Create/Vendor and Bulk/Crud/Create/Vendor so an agent can mirror Coupa or NetSuite vendor data into BILL ahead of the first bill being raised. This removes the manual data-entry step that often delays vendor go-live.

Example prompt: Call Bulk/Crud/Create/Vendor.json with 20 vendor records exported from procurement, then call List/Vendor to confirm they are active

### Vendor bank account attachment

Attach the correct bank account to each vendor so ACH payment runs land at the right destination. The API exposes Crud/Create/VendorBankAccount and Bulk/Crud/Create/VendorBankAccount for batch loads, plus Crud/Read and List variants for verification. Useful when finance ops needs to validate vendor banking before a payment run.

Example prompt: Call Crud/Create/VendorBankAccount.json for vendor ID 0vd01AAAAA with the routing and account numbers from the vendor portal, then verify with Crud/Read/VendorBankAccount

### Vendor master data audit

Audit the full vendor list against an external source of truth such as the ERP. Calling List/Vendor returns active vendors and their key attributes, while List/VendorBankAccount returns the banking detail. An agent can flag mismatches and call Crud/Update/Vendor or Crud/Delete/Vendor to remediate.

Example prompt: Call List/Vendor and List/VendorBankAccount, then identify vendors whose banking detail is missing

### Soft-delete and restoration

Retire vendors that are no longer active without breaking the AP audit trail. Crud/Delete/Vendor performs a soft delete that hides the vendor from new bill creation but preserves the historical record. Crud/Undelete/Vendor restores a vendor if a relationship resumes.

Example prompt: Call Crud/Delete/Vendor for vendor ID 0vd02AAAAA, then verify with Crud/Read/Vendor that the record is marked inactive

### Agent-driven vendor onboarding via Jentic

An AI agent uses Jentic to discover vendor operations from intents like 'onboard a vendor in BILL'. Jentic returns the matching Crud/Create/Vendor operation, loads its schema, and executes with credentials from the vault. The agent can stand up a vendor record plus its bank account in two chained calls.

Example prompt: Search Jentic for 'onboard a vendor in bill.com', load the Crud/Create/Vendor schema, and execute it for vendor 'Acme Supplies Ltd'

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /Crud/Create/Vendor.json | Create a vendor record |
| POST | /Bulk/Crud/Create/Vendor.json | Bulk create vendor records |
| POST | /Crud/Update/Vendor.json | Update a vendor record |
| POST | /List/Vendor.json | List vendor records |
| POST | /Crud/Delete/Vendor.json | Soft-delete a vendor |
| POST | /Crud/Create/VendorBankAccount.json | Attach a bank account to a vendor |
| POST | /Crud/Read/VendorBankAccount.json | Read a vendor bank account |
| POST | /List/VendorBankAccount.json | List vendor bank accounts |

## Key resources

- **Vendor** — Full CRUD, bulk, and undelete operations on vendor records
- **VendorBankAccount** — Create, read, list, delete, and bulk-modify vendor banking details

## Why Jentic

- **Setup:** Wiring the BILL vendor-management API by hand means logging in for a session id, pairing it with your developer key on every RPC-style POST, and shaping each vendor and vendor bank-account body yourself. Through Jentic you install once, import this BILL API from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** This API carries the vendor id in the request body of RPC-style operations rather than the URL path, so limit the agent to the operations it needs, such as creating a vendor or reading a vendor bank account. You choose that set, so deleting a vendor or adding a bank account is not reachable unless you include them.
- **Credential handling:** Your BILL developer key and session token are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'onboard a vendor' or 'add a vendor bank account', and Jentic returns the matching Crud/Create operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **BILL AP Vendor Transactions** — Vendor transactions raise bills and pay vendors created here.
- **Xero Accounting** — Xero stores vendor (contact) records at the ledger level.
- **BILL Organization Accounts Tracking** — Tracking dimensions are referenced when bills are coded against vendors.

## FAQ

### Why is there no official OpenAPI spec for AP | Vendor management?

BILL does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call AP | Vendor management via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Vendor Management API use?

BILL uses an API key plus session token model. Agents authenticate once to obtain a session token and pass it on each call alongside the developer key. Jentic stores both encrypted in the vault and exposes only a scoped reference to the agent.

### Can I bulk-import vendors with this API?

Yes. POST /Bulk/Crud/Create/Vendor.json accepts a batch of vendor records in one call. POST /Bulk/Crud/Create/VendorBankAccount.json does the same for banking detail, which is faster than serial creates when migrating from another AP system.

### How do I add a vendor bank account through Jentic?

Search Jentic for 'add a vendor bank account in bill.com'. Jentic returns the Crud/Create/VendorBankAccount operation, loads its schema, and your agent calls POST /Crud/Create/VendorBankAccount.json with the vendor ID, routing number, and account number.

### What rate limits apply to this API?

BILL applies per-organisation throttling. Specific quotas are not exposed in the spec, so prefer POST /Bulk/Crud/Create/Vendor.json over looped single-create calls during a vendor migration.

### Is the AP Vendor Management API free?

API access is bundled with paid BILL plans rather than a separate free tier. You need an active BILL organisation and a developer key. Jentic does not add usage charges on top.

### Can I limit what my agent is allowed to do with the BILL Vendor Management API?

Yes. Because Jentic One is self-hosted, your own rules decide which vendor-management operations and credentials the agent may use, so you can grant only what a task needs, such as Crud/Create/Vendor and Crud/Read/VendorBankAccount. Operations you leave out, like Crud/Delete/Vendor or Crud/Create/VendorBankAccount, stay unreachable to the agent. Since these RPC-style calls carry the vendor id in the request body rather than the URL path, scoping is done at the operation level you define.
