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

# BILL Customer Management API

Jentic publishes the only available OpenAPI specification for BILL Customer Management API, keeping it validated and agent-ready. The Customer Management surface on BILL's accounts receivable platform models customer master data - Customer, CustomerContact, and CustomerBankAccount - through the standard BILL v2 /Crud and /List endpoints, with both single-item and bulk operations. Use it to keep AR records in sync with a CRM, sales-ops tool, or e-commerce platform feeding receivables into BILL.

## For AI agents

Create, read, update, and delete customers, customer contacts, and customer bank accounts in BILL's accounts receivable platform via single-item and bulk operations.

## Scope

Does not handle invoicing, payment execution, or AP bill workflows - use only for BILL AR customer, contact, and bank account master data operations.

## Capabilities

- Create customers individually or in bulk via /Crud/Create/Customer.json and /Bulk/Crud/Create/Customer.json
- List and read customers through /List/Customer.json and /Crud/Read/Customer.json
- Update or delete customer records using the corresponding /Crud and /Bulk/Crud endpoints
- Manage customer contacts (multiple per customer) with the CustomerContact CRUD set
- Store and retrieve customer bank account details via CustomerBankAccount endpoints
- Undelete previously deleted customers and contacts when records are restored
- Bulk-update large customer or contact sets in a single call for end-of-day syncs

## Use cases

### CRM-to-AR Customer Sync

Sales-ops teams keep BILL customer records in sync with the CRM so finance can invoice without rekeying. The integration listens for new accounts in the CRM, calls /Crud/Create/Customer.json with the matching org details, and writes the BILL customer ID back to the CRM record. /Bulk/Crud/Create/Customer.json handles backfills, and /Crud/Update/Customer.json handles ongoing field changes.

Example prompt: Call POST /Crud/Create/Customer.json with the new account name, email, and address, then write the returned customer objectId back to the CRM

### Multi-Contact Customer Records

AR teams need multiple contacts per customer - billing, AP, and operations. The /CustomerContact CRUD set supports adding many contacts per customer, retrieving them via /List/CustomerContact.json filtered by customer ID, and updating individual contact fields without touching the parent customer record. Bulk endpoints accelerate end-of-quarter contact refreshes.

Example prompt: Call POST /Crud/Create/CustomerContact.json with customer objectId and contact details, then GET /List/CustomerContact.json filtered by that customer to confirm

### ACH-Ready Customer Onboarding

Customers who pay by ACH need their bank account on file before the first electronic payment runs. /Crud/Create/CustomerBankAccount.json stores the account details, /Crud/Read/CustomerBankAccount.json verifies them, and /Crud/Delete/CustomerBankAccount.json removes accounts on request. Combined with /Crud/Create/Customer.json this is the full first-time onboarding flow.

Example prompt: Call POST /Crud/Create/Customer.json, then POST /Crud/Create/CustomerBankAccount.json with the routing and account numbers

### Agent-Driven Customer Master Data via Jentic

An AI ops agent connected through Jentic answers 'add Acme Corp to BILL with a primary contact at ops@acme.com' by chaining the customer create and contact create operations behind a single search. The BILL session credentials sit in Jentic's vault, so the agent never sees the devKey or session ID, and the same flow scales to bulk imports from a CRM extract. Cleanup actions (Delete, Undelete) are exposed as separate intents.

Example prompt: Search Jentic for 'create an AR customer in BILL', load /Crud/Create/Customer.json, execute, then chain into /Crud/Create/CustomerContact.json

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /Crud/Create/Customer.json | Create an AR customer |
| POST | /Bulk/Crud/Create/Customer.json | Create multiple AR customers in one call |
| POST | /Crud/Update/Customer.json | Update fields on a customer |
| POST | /List/Customer.json | List customers with filters |
| POST | /Crud/Create/CustomerContact.json | Add a contact to a customer |
| POST | /List/CustomerContact.json | List contacts, filterable by customer |
| POST | /Crud/Create/CustomerBankAccount.json | Store a customer's bank account details |
| POST | /Crud/Delete/Customer.json | Delete a customer record |

## Key resources

- **Customers** — CRUD plus bulk operations on AR customer master records
- **Customer Contacts** — CRUD plus bulk operations on per-customer contacts
- **Customer Bank Accounts** — Create, read, list, and delete customer bank account details
- **Undelete** — Restore previously deleted customers and contacts

## Why Jentic

- **Setup:** Wiring the BILL Customer 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 customer and contact body yourself. Through Jentic you install once, import BILL Customer Management from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** Customer Management carries the customer 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 customer or adding a contact. You choose that set, so deleting a customer is not reachable unless you include it.
- **Credential handling:** Your BILL developer key and session id 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 'create an AR customer' or 'add a customer contact', and Jentic returns the matching Customer Management operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **BILL Authentication API** — Provides the session ID required by every Customer Management call
- **BILL Approvals API** — AP approval workflow that runs alongside AR customer master data
- **BILL Connect Events API** — Webhook subscriptions for events including customer changes

## FAQ

### Why is there no official OpenAPI spec for BILL Customer Management API?

BILL documents its v2 API in narrative form on developer.bill.com but does not publish the underlying OpenAPI document. Jentic generates and maintains a structured OpenAPI specification so AI agents and developers can call BILL Customer Management API via 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 BILL Customer Management API use?

All BILL v2 endpoints require a session ID obtained from /Login.json on the BILL Authentication API, plus the developer key. The same session ID works across Customer Management, Approvals, and other BILL v2 surfaces. Through Jentic, the credentials and session lifecycle are managed in the vault.

### Can I bulk-create customers in one call?

Yes. POST /Bulk/Crud/Create/Customer.json accepts an array of customer objects and creates them in one transaction, returning the per-record results. Use it for backfills and end-of-day batches rather than looping single-item /Crud/Create/Customer.json calls.

### What are the rate limits for the BILL Customer Management API?

BILL applies platform-wide rate limits at the v2 gateway and the Customer Management surface inherits those limits. For high-volume operations always prefer the bulk endpoints (/Bulk/Crud/Create/Customer.json, /Bulk/Crud/Update/Customer.json) since they count as a single call against the limit.

### How do I create a customer through Jentic?

Run `pip install jentic`, then `await client.search('create an AR customer in BILL')`, `await client.load(...)` for /Crud/Create/Customer.json, and `await client.execute(...)` with the customer fields. Jentic injects the BILL devKey and session ID from the vault.

### Can I store customer bank account details for ACH payments?

Yes. POST /Crud/Create/CustomerBankAccount.json stores the bank routing and account numbers against a customer, /Crud/Read/CustomerBankAccount.json fetches the masked details for verification, and /Crud/Delete/CustomerBankAccount.json removes them on request.

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

Yes. Because you run Jentic One yourself, you decide which Customer Management operations the agent can reach, so you can grant it just the calls it needs, such as /Crud/Create/Customer.json to add a customer or /Crud/Create/CustomerContact.json to add a contact. Destructive operations like /Crud/Delete/Customer.json stay unreachable unless you include them in that set. Your BILL developer key and session ID are held by your own instance and injected only at execution time, so the agent scopes access through your rules rather than by holding the credentials itself.
