Simplified vs standard (F1 vs F2)
When to issue a factura simplificada (F2), when you must use a factura ordinaria (F1), and what BeeL enforces at the API boundary.
The simplified invoice (F2) is the "ticket" of the Spanish tax system: less data, fewer obligations, but capped in amount and use case. This page is the decision aid plus the exact rules BeeL applies before the registro reaches AEAT.
The decision in one table
| Situation | Recommended type | Why |
|---|---|---|
| Total ≤ 3 000 € AND you don't need to identify the customer | F2 (type: SIMPLIFIED) | Quickest path, no NIF required |
| Total > 3 000 € | F1 (type: STANDARD) | F2 is illegal above the threshold |
| Customer is a company / autónomo / business buyer | F1 | They will need the NIF on the invoice for their own deduction |
| Customer is a foreign B2B or B2C in the EU | F1 | Required for VIES, OSS, or exempt operations — see International customers |
| Customer explicitly requests an identified invoice | F1 | You must comply, regardless of amount |
| You're going to apply IRPF withholding | F1 | Withholding requires identifying the payer; F2 doesn't carry it |
What BeeL enforces
On the F2 path
total(IVA included) must be ≤ 3 000 € — request rejected above the threshold- Up to 400 € IVA-included the
recipientcan be an empty object{}(nonif/alternative_idrequired). Between 400 € and 3 000 €, AEAT requires identifying the customer, so the recipient must carryniforalternative_id. Above 3 000 €, F2 is not allowed at all — use F1 - IRPF lines are not allowed on F2 — see Why no IRPF on F2
- All other line semantics work exactly as on F1: IVA rates, recargo de equivalencia, regimen keys, etc.
- IRPF lines are not allowed on F2 — see Why no IRPF on F2
- All other line semantics work exactly as on F1: IVA rates, recargo de equivalencia, regimen keys, etc.
On the F1 path
recipient.niforrecipient.alternative_idis required — request rejected if both are missing- For Spanish NIFs (DNI / NIE / CIF), the name must match the AEAT census — BeeL pre-validates via the NIF Validation API and rejects mismatches before submission
- For foreign customers, use
alternative_idinstead ofnif
3 000 € is IVA-included. A line at 2 600 € + 21 % IVA = 3 146 € totals over the threshold → must be F1.
Edge cases the law handles
Operations where F2 is never allowed, regardless of amount
The Real Decreto 1619/2012 forbids F2 in a handful of operations. BeeL does not auto-detect these — if you're in one of them, you must explicitly choose STANDARD:
- Intra-EU sales of goods (Art. 25 LIVA exemption)
- Distance sales of goods
- Operations under the regime of inversión del sujeto pasivo
- Operations not located in Spain that need a Spanish invoice
- Any operation where the customer is required by law to receive an F1
If you submit any of these as F2, AEAT will not reject the registro (the format is valid), but the invoice is non-compliant. Treat F2 as "consumer-facing under 3 000 € only".
Why no IRPF on F2
IRPF withholding requires the buyer to identify themselves and report the withheld amount in their own filings. Simplified invoices don't carry the buyer's NIF, so IRPF cannot be applied. If your customer is a business that must withhold from your invoice, issue an F1 even if the total is below 3 000 €.
Upgrading an F2 to F1 (the canje case)
Sometimes a customer asks for an identified invoice after you already issued a ticket. The clean two-step path:
-
Cancel the F2 with an R5 corrective
curl -X POST "https://app.beel.es/api/v1/invoices/{f2_invoice_id}/corrective" \ -H "Authorization: Bearer beel_sk_live_xxx" \ -H "Content-Type: application/json" \ -d '{ "rectification_type": "TOTAL", "rectification_code": "R5", "reason": "Customer requested an identified invoice replacing the original simplified ticket." }' -
Issue a fresh F1 (
POST /v1/invoiceswithtype: STANDARD) with the customer's NIF and full data.
The running total stays consistent (F2 + R5 cancellation + F1 = F1 net). See Corrective invoices for the worked example.
Canonical request shapes
F2 (no recipient)
{
"type": "SIMPLIFIED",
"issue_date": "2026-05-18",
"recipient": {},
"lines": [
{
"description": "Computer repair service",
"quantity": 1,
"unit": "service",
"unit_price": 300,
"discount_percentage": 0,
"main_tax": { "type": "IVA", "percentage": 21, "regime_key": "20" }
}
],
"payment_info": { "method": "CASH" }
}F1 (Spanish customer identified)
{
"type": "STANDARD",
"issue_date": "2026-05-18",
"recipient": {
"legal_name": "Comercial Martínez SL",
"nif": "B87654321",
"address": {
"street": "Avenida de la Constitución",
"number": "45",
"postal_code": "41001",
"city": "Sevilla",
"province": "Sevilla",
"country": "España"
}
},
"lines": [
{
"description": "Business strategic consulting",
"quantity": 8,
"unit": "hours",
"unit_price": 125,
"discount_percentage": 0,
"main_tax": { "type": "IVA", "percentage": 21, "regime_key": "01" }
}
],
"payment_info": { "method": "BANK_TRANSFER", "iban": "ES9121000418450200051332", "payment_term_days": 30 }
}Related
- Invoice types — the full F1/F2/R catalogue
- Tax classification — IVA rate, exempt operations, ISP
- International customers — when F2 is never appropriate
- createInvoice API reference — full request schema