Create Bill
POST/api/bills
Creates a standalone bill. Note: This endpoint is currently not used in practice — bills are typically created via purchase order or warehouse transfer nested routes.
purchase-orders:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token.
Fields:
- supplier_id (required): Supplier ID — must be a service-type supplier
- invoice_number (required, unique): Invoice reference number
- invoice_date (required): Invoice date (YYYY-MM-DD)
- link_type (required): Type of link — 'purchase_order' or 'warehouse_transfer'
- link_id (required): ID of the linked record
- currency_id (optional): Currency ID
- currency_rate (optional): Exchange rate
- proration_strategy (required): One of cost_based, quantity_based, manual
- lines (required): Array of bill lines
- lines.*.description: Line description
- lines.*.quantity: Quantity
- lines.*.amount: Unit amount
- lines.*.nominal_code_id (optional, nullable): The line's debit (expense/clearing) account that faces Accounts Payable. Optional — omit it or send null and NO default is frozen onto the line at save; the GL debit is resolved at posting time from the bill's link_type (landed-cost bills linked to a purchase order / warehouse transfer / inbound shipment capitalize to the configured inventory_control account).
- lines.*.tax_rate_id: Tax rate ID (optional)
- allocations (optional): Array of allocation objects
- allocations.*.purchase_order_line_id: PO line ID
- allocations.*.allocation_amount: Amount to allocate
Request
Responses
- 200
- 401
- 403
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.