# Fiscal rules

143 fiscal and VeriFactu rules for invoicing integrations, as pages and as data for your AI assistant, the MCP server or CI.

**A set of 143 rules your invoicing integration has to follow, as data your AI agent can check your code against.** Each one comes from the law, from AEAT or from BeeL., has a stable id (`LIF-001`), says who checks it, and lists the errors the API answers when it catches it. The guides explain how to do things; these pages say what must and must not happen.

## Use the rules in your tools

**In Claude Code**, install the [BeeL. plugin](/claude-code) and ask it for a rule:

```text
/plugin marketplace add beel-es/claude-plugins
/plugin install beel-api@beel
/beel-api:rules COR-002
```

**With the BeeL. MCP server** (shown for Claude Code; [other clients](/mcp)), add it and ask in plain words. Its [rules tools](/mcp/tools#helper-tools) answer, and a failed call names the rule behind its error:

```bash
claude mcp add --transport http beel https://mcp.beel.es/mcp
```

```text
Which BeeL. rules apply to voiding an invoice, and which are up to my integration?
```

**In any AI assistant** (Cursor, Copilot, ChatGPT…), paste this prompt, or keep the critical rules in every session with the [AGENTS.md block](/ai-agents#give-your-agent-the-rules):

```text
Review my BeeL. integration against https://docs.beel.es/api/rules.json
and list every rule it breaks, with its id and the fix.
```

**In your CI**, read the catalogue as JSON ([its format](/api/rules.schema.json)):

```bash
curl -s https://docs.beel.es/api/rules.json
```

Each rule is also Markdown at `/rules/<ID>.md` (for example [`/rules/LIF-001.md`](/rules/LIF-001.md)), and all of them are in [`/rules/llms-full.txt`](/rules/llms-full.txt).

## How to read a rule

- **Severity.** *Required* or *Recommended*.
- **Source.** *Law* and *AEAT criterion* quote the norm verbatim, with its link. *BeeL. rule* is how BeeL.'s API works.
- **Error codes.** What the API answers when it catches the rule. Each one links to its page.

### What each responsibility asks of you

| Responsibility | What you do |
|---|---|
| **Checked by the API** (`api`) | Handle the error codes the rule lists: the API rejects the request or applies the rule for you. |
| **Checked by AEAT** (`aeat`) | Track the invoice's submission status. See [Handling rejections](/verifactu/handling-rejections). |
| **Your integration** (`integrator`) | Meet it in your code, and check it in review and tests. See [Software built on the API](/verifactu/compliance-and-responsibilities#software-built-on-the-api). |
| **The issuing business** (`issuer`) | A decision of the business that issues the invoice: your integration can ask for it or show it. See [The issuing business](/verifactu/compliance-and-responsibilities#the-issuing-business). |

## All rules

### [Invoice lifecycle](/rules/lifecycle)

- [LIF-001 · An issued invoice is never edited or deleted](/rules/lifecycle#lif-001) — `Required`, Law, Checked by the API
- [LIF-002 · Only a draft can be issued](/rules/lifecycle#lif-002) — `Required`, BeeL. rule, Checked by the API
- [LIF-003 · Test in the sandbox, never with real invoices](/rules/lifecycle#lif-003) — `Required`, AEAT criterion, Responsibility: your integration
- [LIF-004 · Retry writes with the same Idempotency-Key](/rules/lifecycle#lif-004) — `Recommended`, BeeL. rule, Responsibility: your integration
- [LIF-005 · Duplicating an invoice creates a new one, not a copy](/rules/lifecycle#lif-005) — `Required`, BeeL. rule, Responsibility: your integration

### [Voiding](/rules/void)

- [VOI-001 · Void only an invoice that should never have been issued](/rules/void#voi-001) — `Required`, AEAT criterion, Responsibility: the issuing business
- [VOI-002 · Void an issued invoice through the void operation; delete a draft](/rules/void#voi-002) — `Required`, BeeL. rule, Checked by the API
- [VOI-003 · A void adds a cancellation record; the original stays](/rules/void#voi-003) — `Required`, Law, Checked by the API
- [VOI-004 · A sent or paid invoice is voided only confirming it was issued by mistake](/rules/void#voi-004) — `Required`, AEAT criterion, Checked by the API
- [VOI-005 · A corrected invoice, or a total corrective, is not voided](/rules/void#voi-005) — `Required`, AEAT criterion, Checked by the API

### [Corrective invoices](/rules/corrective)

- [COR-001 · Wrong data on an issued invoice is fixed with a corrective](/rules/corrective#cor-001) — `Required`, Law, Checked by the API
- [COR-002 · Pick the reason code: R1–R4 for standard invoices, R5 for simplified](/rules/corrective#cor-002) — `Required`, Law, Checked by the API
- [COR-003 · A corrective shows the difference or the amounts after the correction](/rules/corrective#cor-003) — `Required`, Law, Checked by the API
- [COR-004 · The corrective record says whether it substitutes or adds a difference](/rules/corrective#cor-004) — `Required`, AEAT criterion, Checked by the API
- [COR-005 · A corrective identifies the invoice it rectifies](/rules/corrective#cor-005) — `Required`, Law, Checked by the API
- [COR-006 · Issue the corrective as soon as you know, within 4 years](/rules/corrective#cor-006) — `Required`, Law, Checked by the API
- [COR-007 · A wrong corrective is fixed against the original, not corrected itself](/rules/corrective#cor-007) — `Required`, BeeL. rule, Checked by the API
- [COR-008 · A bad-debt corrective (R3) needs the legal conditions first](/rules/corrective#cor-008) — `Required`, Law, Responsibility: the issuing business
- [COR-009 · An insolvency corrective (R2) needs a declaration of insolvency](/rules/corrective#cor-009) — `Required`, Law, Responsibility: the issuing business
- [COR-010 · A provisional price is rectified once the final one is known](/rules/corrective#cor-010) — `Required`, Law, Responsibility: the issuing business
- [COR-011 · Discounts and rebates granted after the sale go on a corrective](/rules/corrective#cor-011) — `Required`, Law, Responsibility: the issuing business
- [COR-012 · Returns can be netted only on a later supply to the same customer](/rules/corrective#cor-012) — `Recommended`, Law, Responsibility: the issuing business
- [COR-013 · A corrective is only for the causes the law lists](/rules/corrective#cor-013) — `Required`, Law, Responsibility: the issuing business
- [COR-014 · A corrective keeps the operation date of the original](/rules/corrective#cor-014) — `Required`, AEAT criterion, Checked by the API
- [COR-015 · Do not raise the VAT charged to a consumer through a corrective](/rules/corrective#cor-015) — `Required`, Law, Responsibility: the issuing business
- [COR-016 · Some unpaid debts never allow an R2 or R3 corrective](/rules/corrective#cor-016) — `Required`, Law, Responsibility: the issuing business
- [COR-017 · A corrective keeps the recipient, except to correct the recipient's data](/rules/corrective#cor-017) — `Required`, Law, Checked by the API
- [COR-018 · A corrective can always correct what the original declared](/rules/corrective#cor-018) — `Required`, Law, Checked by the API
- [COR-019 · Insolvency and bad-debt correctives need a recipient established in Spain](/rules/corrective#cor-019) — `Required`, Law, Checked by the API
- [COR-020 · A bad-debt corrective waits six months and needs a business recipient under 50 €](/rules/corrective#cor-020) — `Required`, Law, Checked by the API
- [COR-021 · An identical corrective a moment after another is taken as a double submission](/rules/corrective#cor-021) — `Recommended`, BeeL. rule, Checked by the API
- [COR-022 · An invoice whose record AEAT rejected is fixed before it is corrected](/rules/corrective#cor-022) — `Required`, AEAT criterion, Checked by the API
- [COR-023 · A corrective never rectifies more than was invoiced](/rules/corrective#cor-023) — `Required`, Law, Checked by the API
- [COR-024 · A corrective does not change only the withholding](/rules/corrective#cor-024) — `Required`, Law, Checked by the API

### [Numbering and series](/rules/numbering)

- [NUM-001 · The number is assigned when the invoice is issued](/rules/numbering#num-001) — `Required`, BeeL. rule, Checked by the API
- [NUM-002 · An issued number is never reused, even when the invoice is voided](/rules/numbering#num-002) — `Required`, AEAT criterion, Checked by the API
- [NUM-003 · Numbers are correlative within each series](/rules/numbering#num-003) — `Required`, Law, Checked by the API
- [NUM-004 · Separate series may be used when there is a reason for them](/rules/numbering#num-004) — `Recommended`, Law, Responsibility: the issuing business
- [NUM-005 · Simplified invoices are numbered in their own series](/rules/numbering#num-005) — `Required`, Law, Checked by the API
- [NUM-006 · Corrective invoices are numbered in their own series](/rules/numbering#num-006) — `Required`, Law, Checked by the API
- [NUM-007 · A series cannot be renumbered once it has issued](/rules/numbering#num-007) — `Required`, BeeL. rule, Checked by the API
- [NUM-008 · An invoice number fits AEAT's length and character set](/rules/numbering#num-008) — `Required`, AEAT criterion, Checked by the API
- [NUM-009 · Reverse-charge supplies of metals and electronics go in a special series](/rules/numbering#num-009) — `Required`, Law, Responsibility: the issuing business

### [Invoice contents](/rules/contents)

- [CNT-001 · Every operation of the business is invoiced, exempt ones included](/rules/contents#cnt-001) — `Required`, Law, Responsibility: the issuing business
- [CNT-002 · A business customer always gets an invoice, identifying it when asked](/rules/contents#cnt-002) — `Required`, Law, Responsibility: the issuing business
- [CNT-003 · A full invoice names both parties by their legal name](/rules/contents#cnt-003) — `Required`, Law, Checked by the API
- [CNT-004 · Every invoice shows the issuer's NIF](/rules/contents#cnt-004) — `Required`, Law, Checked by the API
- [CNT-005 · A full invoice identifies the recipient by NIF](/rules/contents#cnt-005) — `Required`, Law, Checked by the API
- [CNT-006 · A full invoice shows the address of both parties](/rules/contents#cnt-006) — `Required`, Law, Responsibility: your integration
- [CNT-007 · Each line describes the operation, its unit price and any discount](/rules/contents#cnt-007) — `Required`, Law, Responsibility: your integration
- [CNT-008 · The tax rate and the tax amount are shown apart from the base](/rules/contents#cnt-008) — `Required`, Law, Checked by the API
- [CNT-009 · The base is broken down by rate and by kind of operation](/rules/contents#cnt-009) — `Required`, Law, Checked by the API
- [CNT-010 · An exempt operation states why it is exempt](/rules/contents#cnt-010) — `Required`, Law, Checked by the API
- [CNT-011 · Only one original of each invoice exists](/rules/contents#cnt-011) — `Required`, Law, Responsibility: the issuing business
- [CNT-012 · A reverse-charge invoice carries the mention «inversión del sujeto pasivo»](/rules/contents#cnt-012) — `Required`, Law, Checked by the API
- [CNT-013 · A cash-basis invoice carries the mention «régimen especial del criterio de caja»](/rules/contents#cnt-013) — `Required`, Law, Checked by the API
- [CNT-014 · A used-goods, art or antiques invoice carries its regime mention](/rules/contents#cnt-014) — `Required`, Law, Responsibility: the issuing business
- [CNT-015 · A travel-agency invoice carries the mention «régimen especial de las agencias de viajes»](/rules/contents#cnt-015) — `Required`, Law, Checked by the API
- [CNT-016 · An intra-EU supply of a new means of transport describes the vehicle](/rules/contents#cnt-016) — `Required`, Law, Responsibility: the issuing business
- [CNT-017 · An invoice may be in any language](/rules/contents#cnt-017) — `Recommended`, Law, Responsibility: the issuing business
- [CNT-018 · Invoices go by email only with the recipient's consent](/rules/contents#cnt-018) — `Required`, Law, Responsibility: the issuing business
- [CNT-019 · Only a corrective invoice totals less than zero](/rules/contents#cnt-019) — `Required`, BeeL. rule, Checked by the API
- [CNT-020 · A Spanish recipient's NIF is in the AEAT census](/rules/contents#cnt-020) — `Recommended`, AEAT criterion, Checked by the API
- [CNT-021 · A recipient without a Spanish NIF is identified by an alternative id](/rules/contents#cnt-021) — `Required`, AEAT criterion, Checked by the API
- [CNT-022 · Invoices to Spanish public administrations are electronic](/rules/contents#cnt-022) — `Required`, Law, Responsibility: the issuing business
- [CNT-023 · Some operations are always invoiced, whoever the customer](/rules/contents#cnt-023) — `Required`, Law, Responsibility: the issuing business
- [CNT-024 · A duplicate for several recipients shows each one's share](/rules/contents#cnt-024) — `Required`, Law, Responsibility: the issuing business
- [CNT-025 · State the establishment when it decides how the operation is taxed](/rules/contents#cnt-025) — `Required`, Law, Responsibility: the issuing business

### [Simplified invoices](/rules/simplified)

- [SIM-001 · A simplified invoice never exceeds 3,000 €](/rules/simplified#sim-001) — `Required`, AEAT criterion, Checked by the API
- [SIM-002 · Above 400 €, a simplified invoice needs an art. 4.2 activity](/rules/simplified#sim-002) — `Required`, Law, Responsibility: the issuing business
- [SIM-003 · Some operations can never go on a simplified invoice](/rules/simplified#sim-003) — `Required`, Law, Checked by the API
- [SIM-004 · A simplified invoice still carries its minimum contents](/rules/simplified#sim-004) — `Required`, Law, Checked by the API
- [SIM-005 · The record of a simplified invoice carries no recipient](/rules/simplified#sim-005) — `Required`, AEAT criterion, Checked by the API
- [SIM-006 · An identified customer gets a standard invoice (F1)](/rules/simplified#sim-006) — `Required`, BeeL. rule, Checked by the API
- [SIM-007 · Exchanging a simplified invoice for a full one](/rules/simplified#sim-007) — `Required`, Law, Checked by the API
- [SIM-008 · A simplified invoice carries the same legal mentions as a full one](/rules/simplified#sim-008) — `Required`, Law, Responsibility: the issuing business
- [SIM-009 · A customer who asks to be identified gets an invoice that identifies it](/rules/simplified#sim-009) — `Required`, Law, Responsibility: the issuing business
- [SIM-010 · A simplified invoice with several VAT rates shows the base of each](/rules/simplified#sim-010) — `Required`, Law, Responsibility: your integration

### [Taxes and exemptions](/rules/taxes)

- [TAX-001 · Apply the VAT rate in force when the operation took place](/rules/taxes#tax-001) — `Required`, Law, Responsibility: the issuing business
- [TAX-002 · Reverse-charge operations are invoiced without charging VAT](/rules/taxes#tax-002) — `Required`, Law, Checked by the API
- [TAX-003 · Reverse-charge lines carry no tax and never go on a simplified invoice](/rules/taxes#tax-003) — `Required`, AEAT criterion, Checked by the API
- [TAX-004 · Intra-EU supplies of goods are exempt only with the buyer's EU VAT number](/rules/taxes#tax-004) — `Required`, Law, Checked by the API
- [TAX-005 · Exempt and non-subject lines carry no VAT rate](/rules/taxes#tax-005) — `Required`, AEAT criterion, Checked by the API
- [TAX-006 · Services to a business abroad are not subject to Spanish VAT](/rules/taxes#tax-006) — `Required`, Law, Responsibility: the issuing business
- [TAX-007 · Sales declared through OSS use regime key 17](/rules/taxes#tax-007) — `Required`, AEAT criterion, Responsibility: the issuing business
- [TAX-008 · Disbursements go as SUPLIDO lines, without tax](/rules/taxes#tax-008) — `Required`, AEAT criterion, Checked by the API
- [TAX-009 · IRPF withholding is not part of the total AEAT receives](/rules/taxes#tax-009) — `Required`, AEAT criterion, Checked by the API
- [TAX-010 · Set the IRPF withholding when the customer must withhold](/rules/taxes#tax-010) — `Recommended`, BeeL. rule, Responsibility: your integration
- [TAX-012 · The tax and the billing record are expressed in euros](/rules/taxes#tax-012) — `Required`, Law, Checked by the API
- [TAX-013 · Send every amount in euros](/rules/taxes#tax-013) — `Required`, BeeL. rule, Responsibility: your integration
- [TAX-014 · Only the VAT rates AEAT accepts on the operation date](/rules/taxes#tax-014) — `Required`, AEAT criterion, Checked by the API
- [TAX-015 · Regime key 08 means not subject to the line's tax](/rules/taxes#tax-015) — `Required`, AEAT criterion, Checked by the API
- [TAX-016 · Regime keys 03, 06 and 14 are not accepted](/rules/taxes#tax-016) — `Required`, AEAT criterion, Checked by the API
- [TAX-017 · Special regime keys carry the classification AEAT requires](/rules/taxes#tax-017) — `Required`, AEAT criterion, Checked by the API
- [TAX-018 · An issued invoice does not use the intra-EU acquisition exemption](/rules/taxes#tax-018) — `Required`, Law, Checked by the API
- [TAX-019 · An issuer that is not an individual never bears the IRPF rates of individuals](/rules/taxes#tax-019) — `Required`, Law, Checked by the API
- [TAX-022 · Reduced withholding rates of Ceuta and Melilla derive from their base rate](/rules/taxes#tax-022) — `Required`, Law, Checked by the API

### [Equivalence surcharge](/rules/surcharge)

- [SUR-001 · The surcharge rate matches the VAT rate of its line](/rules/surcharge#sur-001) — `Required`, Law, Checked by the API
- [SUR-002 · Supplies with the surcharge go on separate invoices](/rules/surcharge#sur-002) — `Required`, Law, Responsibility: the issuing business

### [Dates and deadlines](/rules/dates)

- [DAT-001 · Do not send an issue date](/rules/dates#dat-001) — `Required`, BeeL. rule, Checked by the API
- [DAT-002 · The issue date is the day the billing record is generated](/rules/dates#dat-002) — `Required`, AEAT criterion, Checked by the API
- [DAT-003 · The operation date is never after the issue date nor over twenty years old](/rules/dates#dat-003) — `Required`, AEAT criterion, Checked by the API
- [DAT-004 · Send the operation date when it differs from the issue date](/rules/dates#dat-004) — `Required`, Law, Responsibility: your integration
- [DAT-005 · Invoice consumers when the operation takes place](/rules/dates#dat-005) — `Required`, Law, Responsibility: the issuing business
- [DAT-006 · Invoice businesses before day 16 of the following month](/rules/dates#dat-006) — `Required`, Law, Responsibility: the issuing business
- [DAT-007 · One invoice for a month of operations, issued in time](/rules/dates#dat-007) — `Required`, Law, Responsibility: the issuing business
- [DAT-008 · Deliver the invoice to the customer in time](/rules/dates#dat-008) — `Required`, Law, Responsibility: the issuing business
- [DAT-009 · VAT is charged by invoice within 1 year of accrual](/rules/dates#dat-009) — `Required`, Law, Responsibility: the issuing business
- [DAT-010 · Invoice advance payments when you receive them](/rules/dates#dat-010) — `Required`, Law, Responsibility: the issuing business
- [DAT-011 · Adapted billing systems are mandatory from 1 January 2027 or 1 July 2027](/rules/dates#dat-011) — `Required`, Law, Responsibility: the issuing business
- [DAT-012 · Plan for mandatory B2B electronic invoices](/rules/dates#dat-012) — `Recommended`, Law, Responsibility: the issuing business
- [DAT-013 · Intra-EU supplies of goods are invoiced by the month after transport starts](/rules/dates#dat-013) — `Required`, Law, Responsibility: the issuing business
- [DAT-014 · Under the cash-basis regime, the deadline runs from the operation, not the payment](/rules/dates#dat-014) — `Required`, Law, Responsibility: the issuing business

### [QR code and PDF](/rules/qr)

- [QRC-001 · Every invoice carries the tax QR code](/rules/qr#qrc-001) — `Required`, Law, Responsibility: your integration
- [QRC-002 · Wait for the QR before you distribute the PDF](/rules/qr#qrc-002) — `Required`, BeeL. rule, Responsibility: your integration
- [QRC-003 · The QR measures between 30 mm and 40 mm](/rules/qr#qrc-003) — `Required`, Law, Responsibility: your integration
- [QRC-004 · The QR follows ISO/IEC 18004 with error correction M](/rules/qr#qrc-004) — `Required`, Law, Responsibility: your integration
- [QRC-005 · Use qr_url exactly as returned](/rules/qr#qrc-005) — `Required`, Law, Checked by the API
- [QRC-006 · The VeriFactu legend goes just below the QR](/rules/qr#qrc-006) — `Required`, Law, Responsibility: your integration
- [QRC-007 · «QR tributario:» goes just above the QR](/rules/qr#qrc-007) — `Required`, AEAT criterion, Responsibility: your integration
- [QRC-008 · The QR goes once, at the start of the first page](/rules/qr#qrc-008) — `Required`, AEAT criterion, Responsibility: your integration
- [QRC-009 · Keep a blank margin around the QR](/rules/qr#qrc-009) — `Required`, AEAT criterion, Responsibility: your integration
- [QRC-010 · A structured e-invoice carries the QR URL as a field](/rules/qr#qrc-010) — `Required`, Law, Responsibility: your integration

### [VeriFactu records](/rules/records)

- [REC-001 · Each issued invoice gets a billing record built from its data](/rules/records#rec-001) — `Required`, Law, Checked by the API
- [REC-002 · The record goes to AEAT as soon as the invoice is issued](/rules/records#rec-002) — `Required`, Law, Checked by the API
- [REC-003 · VERI*FACTU is kept until the end of the year](/rules/records#rec-003) — `Required`, Law, Responsibility: the issuing business
- [REC-004 · BeeL. generates the hash and the chain](/rules/records#rec-004) — `Required`, Law, Checked by the API
- [REC-005 · One chain per NIF, one company per NIF](/rules/records#rec-005) — `Required`, Law, Responsibility: your integration
- [REC-006 · No certificate is needed to sign records](/rules/records#rec-006) — `Recommended`, Law, Checked by the API
- [REC-007 · Keep invoicing when AEAT is unreachable](/rules/records#rec-007) — `Required`, Law, Checked by the API
- [REC-008 · Follow submission_status and fix what AEAT rejects](/rules/records#rec-008) — `Required`, BeeL. rule, Responsibility: your integration
- [REC-009 · Check the data AEAT accepted with errors](/rules/records#rec-009) — `Required`, AEAT criterion, Responsibility: your integration
- [REC-010 · Subsanación is only for errors that need no corrective](/rules/records#rec-010) — `Required`, AEAT criterion, Responsibility: your integration
- [REC-011 · The NIF holder signs the AEAT representation first](/rules/records#rec-011) — `Required`, Law, Checked by the API
- [REC-012 · Tax amounts are base times rate](/rules/records#rec-012) — `Required`, AEAT criterion, Checked by the API
- [REC-013 · An invoice AEAT would reject is not numbered](/rules/records#rec-013) — `Required`, AEAT criterion, Checked by the API

### [Conservation](/rules/conservation)

- [CON-001 · Keep copies of issued invoices for the limitation period](/rules/conservation#con-001) — `Required`, Law, Responsibility: the issuing business
- [CON-002 · AEAT keeps the records, not your invoices](/rules/conservation#con-002) — `Required`, AEAT criterion, Responsibility: the issuing business
- [CON-003 · Export your invoices before leaving](/rules/conservation#con-003) — `Required`, Law, Responsibility: the issuing business
- [CON-004 · Invoices kept electronically are reachable on request](/rules/conservation#con-004) — `Required`, Law, Responsibility: the issuing business

### [Sanctions](/rules/sanctions)

- [SAN-001 · Do not hold non-compliant or altered billing software](/rules/sanctions#san-001) — `Required`, Law, Responsibility: the issuing business
- [SAN-002 · Invoicing breaches are fined in proportion to the operations](/rules/sanctions#san-002) — `Required`, Law, Responsibility: the issuing business
- [SAN-003 · A substantial breach doubles the invoicing fine](/rules/sanctions#san-003) — `Required`, Law, Responsibility: the issuing business

## By domain

<Cards>
  <Card title="Invoice lifecycle" description="5 rules. What can happen to an invoice before and after it is issued: editing, issuing, duplicating, testing and retrying." href="/rules/lifecycle" />
  <Card title="Voiding" description="5 rules. When an issued invoice can be voided, how, and what a void leaves behind." href="/rules/void" />
  <Card title="Corrective invoices" description="24 rules. When an issued invoice has to be rectified, with which reason code, how the correction is shown and within which deadline." href="/rules/corrective" />
  <Card title="Numbering and series" description="9 rules. How invoice numbers are assigned, which documents need their own series, and why a number is never reused." href="/rules/numbering" />
  <Card title="Invoice contents" description="25 rules. What every invoice has to say: when one is due, who the parties are, how operations and taxes are shown, and the mentions some operations require." href="/rules/contents" />
  <Card title="Simplified invoices" description="10 rules. When a simplified invoice (F2) may replace a full one, what it must carry and what it can never document." href="/rules/simplified" />
  <Card title="Taxes and exemptions" description="19 rules. How each line is taxed: VAT rates, reverse charge, exempt and non-subject operations, OSS, disbursements, IRPF and the currency amounts are expressed in." href="/rules/taxes" />
  <Card title="Equivalence surcharge" description="2 rules. When a supply to a retailer carries the equivalence surcharge (*recargo de equivalencia*), at which rate, and on which invoice." href="/rules/surcharge" />
  <Card title="Dates and deadlines" description="14 rules. The dates an invoice carries and the deadlines for issuing it, sending it and charging its VAT." href="/rules/dates" />
  <Card title="QR code and PDF" description="10 rules. The tax QR code on every invoice: when it exists, what it encodes, and how any document that carries it presents it." href="/rules/qr" />
  <Card title="VeriFactu records" description="13 rules. The billing record behind each invoice under VeriFactu: how it is generated, chained and sent to AEAT, and what to do with AEAT's answer." href="/rules/records" />
  <Card title="Conservation" description="4 rules. How long issued invoices and their records are kept, by whom, and what to export before changing systems." href="/rules/conservation" />
  <Card title="Sanctions" description="3 rules. The fines the General Tax Law sets for invoicing breaches and for billing software that does not comply." href="/rules/sanctions" />
</Cards>

---

Full OpenAPI spec: https://docs.beel.es/api/openapi