Proforma

How the proforma flow works in the BeeL API.


A proforma is a non-fiscal commercial document, a formal quote you send a customer before invoicing. It lives on the same /invoices resource as any other document, so you work with it through the invoice endpoints using type=PROFORMA. There is no separate proforma resource.

What makes it non-fiscal

A proforma never enters VeriFactu, so it carries no QR and is never submitted to the AEAT. It also consumes no invoice quota. It gets its own numbering from a dedicated non-fiscal series, so its number always looks like PRO-2026-0001.

The flow

A proforma has a single working state, ACTIVE. It does not go through the fiscal draft and issue cycle.

  1. Create. You create it with type=PROFORMA and it is born ACTIVE, already numbered. You can edit or delete it freely, and there is no separate "issue" step.
  2. Review. The proforma stays ACTIVE while the customer looks at the offer.
  3. Convert. When the customer accepts, you convert the proforma into a real STANDARD invoice. The proforma stays on record as proof of what was accepted, and the new invoice keeps a link back to it.

If the customer never accepts, you have two choices. You can void the proforma, which cancels the offer but keeps it in your records, or you can delete it if it was never sent and you just want it gone. Voiding a proforma is a plain status change, with no corrective invoice and nothing sent to the AEAT.

Offer validity

You can set an optional valid_until date. Once that date passes, the API reports the proforma as EXPIRED. This is only a signal. The proforma is still ACTIVE underneath, so you can convert or edit it as usual, and giving it a new future date shows it as ACTIVE again.

Finding proformas

Proformas appear in the normal invoice list. Pass type=PROFORMA to see only proformas, or fiscal_only=true to hide them and list just your fiscal invoices.