Invoicing — proforma, final, PDF, UBL
Updated on 2026-04-22
BedFlow automatically generates proforma invoices for every booking. After departure that is converted into a final invoice that can be pushed to Yuki (accounting) and optionally via Peppol (for B2B).
Proforma invoice
- Generated as soon as a booking is created (via BookingService or widget or admin form)
- Contains: booking ref, guest, period, nights × price, extras, tourist tax, total
financial_state=unpaid/partial/paiddepending on payment status- PDF generated automatically and stored in
storage/app/invoices/
Final invoice
After check-out the proforma is converted into a final invoice. This can be:
- Manual via admin ("Finalise invoice")
- Automatic via
FinalizeWellnessInvoicesdaily at 23:30
The final invoice gets a sequential number from the invoice series and is kept immutable (only adding payments remains possible).
PDF + UBL
- PDF: visual — stored as
pdf_pathon the Invoice record - UBL (Universal Business Language XML): for Peppol and e-invoicing. Generated by
GenerateAllInvoicesUblevery hour for new invoices, stored asubl_path
Download both via the download button on the invoice detail page.
Yuki push
Every 2 hours PushInvoices runs → new final invoices are sent to your Yuki administration.
- B2C invoices → simply submitted
- B2B invoices (with VAT number) → also sent via Peppol (if
yuki_peppol_enabled = truesetting)
Invoices that already have a yuki_journal_at timestamp are skipped.
Negative invoices (credit notes)
BedFlow supports credit notes (e.g. on cancellation with partial refund). The matching payout is automatically set to the debtor's IBAN — a missing IBAN blocks the payout until an admin fills it in.
Payment reconciliation
CODA exports from your Belfius account are matched against outstanding invoices via structured_communication / payment_reference by ReconcilePayments (every 2 hours). It supports split payments across multiple invoices.