Bills
Bills represent accounts payable — money your business owes to vendors for goods or services received.
Bill Status Flow
| Status | Description |
|---|---|
draft |
Editable, not yet approved |
forecasted |
Approved, awaiting receipt |
received |
Goods/services received, AP journal entry created |
paid |
Fully paid via linked bank transaction |
canceled |
Cancelled |
Create a Bill
bash
curl -X POST "https://api.ondayzero.com/api/v1/bills" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"vendor_id": "VENDOR_UUID",
"description": "March office supplies",
"due_on": "2026-04-30",
"type": "one-time",
"expected_amount": 45000,
"expected_paid_on_date": "2026-05-01"
}'
expected_amountis in cents.45000= $450.00.
You can also use the AI extraction endpoint to create bills from uploaded documents:
bash
curl -X POST "https://api.ondayzero.com/api/v1/bills/ai-create" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"single_bill_s3_keys": ["uploaded-file-key.pdf"]
}'Approve a Bill
Draft bills must be approved before they can be received or paid:
bash
curl -X PATCH "https://api.ondayzero.com/api/v1/bills/{bill_id}/approval" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID"Mark as Received
When goods or services are received, mark the bill and link it to an expense account:
bash
curl -X PATCH "https://api.ondayzero.com/api/v1/bills/{bill_id}/receipt" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"received_date": "2026-03-20",
"ledger_id": "EXPENSE_LEDGER_UUID",
"amount": 45000
}'This creates the accounts payable journal entry.
Record a Payment
bash
curl -X POST "https://api.ondayzero.com/api/v1/bills/{bill_id}/payments" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"transaction_id": "BANK_TRANSACTION_UUID",
"amount": 45000
}'When the payment covers the full balance, the bill status automatically transitions to paid.
List Bills
bash
curl "https://api.ondayzero.com/api/v1/bills?status=received&sort_by=expected_paid_on_date" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID"Filter Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | draft, forecasted, received, paid, canceled |
vendor_search |
string | Filter by vendor name (partial match) |
vendor_id |
UUID | Filter by vendor |
search |
string | Text search on bill fields |
payment_method |
string | Filter by payment method |
Payment Suggestions
DayZero can automatically match bank transactions to open bills:
bash
curl -X POST "https://api.ondayzero.com/api/v1/bills/payment-suggestions/trigger" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{"min_confidence": 0.8}'Review suggestions and accept or reject them individually, or bulk-approve above a confidence threshold.
Cancel a Bill
bash
curl -X PATCH "https://api.ondayzero.com/api/v1/bills/{bill_id}/cancellation" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID"