Overview
Bills follow an approval workflow similar to journal entries. This page covers all workflow-related actions for bills.
Workflow Actions
Submit for Approval Move from Draft to Pending Approval
Request Change Return to Draft for modifications
Place on Hold Temporarily hold the bill
Remove from Hold Resume the approval process
Submit for Approval
POST /service/general-ledger/bills/{bill_id}/submit-for-approval
Submits a Draft bill for approval.
curl -X POST https://kube.acho.io/service/general-ledger/bills/BILL-2024-001/submit-for-approval \
-H "Authorization: jwt YOUR_TOKEN"
{
"bill_id" : "BILL-2024-001" ,
"status" : "Pending Approval" ,
"submitted_at" : "2024-01-15T11:00:00Z"
}
Approve Bill
POST /service/general-ledger/bills/{bill_id}/approve
Approve a bill. Supports multi-level approval.
Optional. Prevents duplicate approvals.
Body Parameters
Optional approval comments
curl -X POST https://kube.acho.io/service/general-ledger/bills/BILL-2024-001/approve \
-H "Authorization: jwt YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Idempotency-Key: unique-key-123" \
-d '{
"comments": "Approved - invoice verified against PO"
}'
{
"bill_id" : "BILL-2024-001" ,
"status" : "Posted" ,
"posted" : true ,
"approved_at" : "2024-01-15T14:00:00Z"
}
Reject Bill
POST /service/general-ledger/bills/{bill_id}/reject
Reject a bill. Reason is required.
Body Parameters
curl -X POST https://kube.acho.io/service/general-ledger/bills/BILL-2024-001/reject \
-H "Authorization: jwt YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"reason": "Invoice does not match PO - incorrect quantities"
}'
{
"bill_id" : "BILL-2024-001" ,
"status" : "Rejected" ,
"reason" : "Invoice does not match PO - incorrect quantities" ,
"rejected_at" : "2024-01-15T14:00:00Z"
}
Request Change
POST /service/general-ledger/bills/{bill_id}/request-change
Request changes and return the bill to Draft status.
Body Parameters
Description of requested changes
curl -X POST https://kube.acho.io/service/general-ledger/bills/BILL-2024-001/request-change \
-H "Authorization: jwt YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"comments": "Please correct the line item amounts and add missing expense category"
}'
{
"bill_id" : "BILL-2024-001" ,
"status" : "Draft" ,
"comments" : "Please correct the line item amounts and add missing expense category"
}
Place on Hold
POST /service/general-ledger/bills/{bill_id}/hold
Place the bill on hold.
Body Parameters
Reason for placing on hold
curl -X POST https://kube.acho.io/service/general-ledger/bills/BILL-2024-001/hold \
-H "Authorization: jwt YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"reason": "Pending vendor confirmation on pricing"
}'
{
"bill_id" : "BILL-2024-001" ,
"status" : "On Hold" ,
"reason" : "Pending vendor confirmation on pricing"
}
Remove from Hold
POST /service/general-ledger/bills/{bill_id}/unhold
Remove the bill from hold and return to Pending Approval.
curl -X POST https://kube.acho.io/service/general-ledger/bills/BILL-2024-001/unhold \
-H "Authorization: jwt YOUR_TOKEN"
{
"bill_id" : "BILL-2024-001" ,
"status" : "Pending Approval"
}
Get Audit Trail
GET /service/general-ledger/bills/{bill_id}/audit-trail
Returns the complete audit trail for the bill.
curl -X GET https://kube.acho.io/service/general-ledger/bills/BILL-2024-001/audit-trail \
-H "Authorization: jwt YOUR_TOKEN"
{
"bill_id" : "BILL-2024-001" ,
"audit_trail" : [
{
"action" : "Created" ,
"performed_by" : "user_123" ,
"performed_at" : "2024-01-15T10:00:00Z"
},
{
"action" : "Submit for Approval" ,
"performed_by" : "user_123" ,
"performed_at" : "2024-01-15T11:00:00Z"
},
{
"action" : "Approve" ,
"performed_by" : "user_456" ,
"performed_at" : "2024-01-15T14:00:00Z" ,
"comments" : "Approved - invoice verified against PO"
}
]
}