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

SituationRecommended typeWhy
Total ≤ 3 000 € AND you don't need to identify the customerF2 (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 buyerF1They will need the NIF on the invoice for their own deduction
Customer is a foreign B2B or B2C in the EUF1Required for VIES, OSS, or exempt operations — see International customers
Customer explicitly requests an identified invoiceF1You must comply, regardless of amount
You're going to apply IRPF withholdingF1Withholding 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 recipient can be an empty object {} (no nif/alternative_id required). Between 400 € and 3 000 €, AEAT requires identifying the customer, so the recipient must carry nif or alternative_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.nif or recipient.alternative_id is 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_id instead of nif

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:

  1. 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."
      }'
  2. Issue a fresh F1 (POST /v1/invoices with type: 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 }
}