Invoice from budget
Wizard to issue an invoice from an accepted budget on the budget module. Supports full or partial billing: by default all uninvoiced items, but you can pick which lines and quantities to include.
At a glance
- Only from accepted budgets. If the budget is not in
accepted(or already has a non-cancelled active invoice), the Create invoice button on the budget detail does not appear. - Per-item check. Each budget line shows
invoiced / total. You can only add the remainder or part of it; the backend rejects exceeding the pending quantity. - Price snapshot. Lines are copied from the budget with their current price and VAT — so the invoice isn't affected by later catalog changes.
- Receiver. Defaults to the patient. You can switch to a different payer (company, insurer, family member) before issuing.
Invoice from a budget
Requires
billing.write.
- You arrive here from the budget detail (Create invoice).
- Review the list: tick / untick lines and adjust the quantities to invoice.
- If the invoice goes to a third party, configure the alternate payer.
- Create invoice. The endpoint
POST /billing/invoices/from-budget/{budget_id}is called with the selected items. The invoice is born indraftwith the snapshots copied. - To issue, open the detail and click Issue.
Permissions
| What you see / can do | Permission |
|---|---|
| Load the wizard and see the budget | billing.read |
| Create the invoice | billing.write |
Troubleshooting
- No Create invoice button on the budget. The budget is not
accepted, already has a non-cancelled invoice, or every item is invoiced 100%. - Backend returns 400 on create. You picked more quantity than pending. Check
invoiced_quantityvsquantityper line. - A budget line is missing. It is already 100% invoiced (
invoiced_quantity == quantity). To revert, void the previous invoice and re-enter this wizard.