Bills
Bills represent payable obligations to vendors. They are the Accounts Payable equivalent of Invoices in the Accounts Receivable API.
Endpoints
POST
/bills
Create a bill
GET
/bills
List bills (paginated, filterable)
GET
/bills/{id}
Get bill by ID
PATCH
/bills/{id}
Update bill fields
DELETE
/bills/{id}
Soft-delete a bill
POST
/bills/{id}/submit
Submit bill for approval
POST
/bills/{id}/reject
Reject a bill
POST
/bills/{id}/pay-date
Set or update scheduled pay date
GET
/bills/{id}/document
Get bill attachment download URL
POST
/bills/upload
Upload document with OCR, create bill
POST
/bills/bulk-submit
Submit multiple bills for approval
POST
/bills/bulk-delete
Soft-delete multiple bills
Bill Lifecycle
draft -> needs_approval -> processing -> paid
-> failed
needs_approval -> draft (rejected)Bills start in draft status. They must be submitted for approval (needs_approval) before payment can be initiated. Once a payment is created, the bill transitions to processing, and eventually to paid or failed.
Create Bill
Request Body
vendor_id
string (UUID)
Yes
Vendor to associate the bill with
number
string
No
Bill/invoice number
issue_date
string
Yes
Date the bill was issued (YYYY-MM-DD)
due_date
string
Yes
Payment due date (YYYY-MM-DD)
amount
number
Yes
Total bill amount (e.g. 1500.00)
description
string
No
Bill description
status
string
No
"draft" (default) or "needs_approval"
line_items
array
No
Bill line items
Direct-to-approval: Set status to "needs_approval" to skip the draft stage and submit the bill directly for approval in a single API call.
Response (201 Created)
List Bills
Query Parameters
limit
integer
Items per page (default 100)
after
string
Forward pagination cursor
before
string
Backward pagination cursor
vendor_id
string
Filter by vendor ID
status
string
Filter by status: draft, needs_approval, processing, paid, deleted, failed
bill_number
string
Filter by bill number
source
string
Filter by source: manual, QuickBooks, ocr
include_deleted
boolean
Include soft-deleted bills (default false)
Submit Bill for Approval
Transitions a bill from draft to needs_approval. No request body required.
Reject Bill
Rejects a bill that is in needs_approval status, moving it back to draft.
Request Body
Set Pay Date
Sets or updates the scheduled payment date for a bill. This is a prerequisite for initiating a vendor payment. If pay_date is null when you try to create a vendor payment, the request will return 422.
Request Body
pay_date must be in YYYY-MM-DD format.
Upload Bill Document (OCR)
Upload a document (PDF, PNG, JPEG) as base64-encoded content. The system extracts bill data via OCR and creates a bill automatically.
Request Body
content
string
Yes
Base64-encoded file content
filename
string
Yes
Original filename
content_type
string
Yes
MIME type (application/pdf, image/png, image/jpeg)
Response (201 Created)
Bulk Submit Bills
Submit multiple bills for approval in a single request.
Request Body
Response (200 OK)
Bulk Delete Bills
Soft-delete multiple bills in a single request. Same request/response shape as bulk submit.
Bill Statuses
draft
Initial state, editable
needs_approval
Submitted for review
processing
Payment in progress
paid
Payment completed
failed
Payment failed
deleted
Soft-deleted
Bill Sources
manual
Created via API or UI
QuickBooks
Synced from QuickBooks
ocr
Created from document upload with OCR extraction
Last updated
Was this helpful?

