STUDIO
Invoice
TEST-INV-00001
| Description | Qty. | Price | Amount |
|---|---|---|---|
| Consulting | 8 | €75.00 | €600.00 |
- Subtotal
- €600.00
- VAT 21%
- €126.00
- Total
- €726.00
Issue, correct, render, and register Spanish invoices through a REST API, including VERI*FACTU records.
No credit card required. Test every operation in a free sandbox.
Send the commercial facts. FiscalRail resolves the invoice machinery around them.
$ curl "https://api.fiscalrail.com/api/v1/invoices" \
-H "Authorization: Bearer ak_test_..." \
-H "Content-Type: application/json" \
-d '{
"customer": "cus_...",
"lines": [{
"description": "Consulting",
"quantity": "8",
"unit_price": "75.00",
"taxes": [{"tax": "vat", "rule": "general"}]
}]
}'
{
"id": "inv_...",
"object": "invoice",
"live": false,
"account": "acct_...",
"kind": "invoice",
"code": "TEST-INV-00001",
"series": "inv_ser_...",
"issue_date": "2026-08-11",
"supply_period": null,
"preceding_invoice": null,
"currency": "EUR",
"supplier": {
"source": {"type": "account", "id": "acct_..."},
"name": "Acme Studio SL",
"tax_id": {"country": "ES", "type": "es_nif", "value": "B02850360"},
"email": "billing@acme.example",
"phone": null,
"address": {
"line_1": "Example street 1",
"line_2": null,
"city": "Madrid",
"postal_code": "28001",
"state": null,
"country": "ES"
}
},
"customer": {
"source": {"type": "customer", "id": "cus_..."},
"name": "Example Client SL",
"tax_id": {"country": "ES", "type": "es_nif", "value": "B87654323"},
"email": "billing@client.example",
"phone": null,
"address": {
"line_1": "Example avenue 2",
"line_2": null,
"city": "Vigo",
"postal_code": "36201",
"state": "Pontevedra",
"country": "ES"
}
},
"lines": [{
"index": 1,
"description": "Consulting",
"quantity": "8.0",
"unit_price": "75.00",
"subtotal": "600.00",
"taxes": [{
"tax": "vat",
"rule": "general",
"effect": "added",
"treatment": "taxable",
"description": "IVA 21%",
"rate": "21%",
"taxable_base": "600.00"
}]
}],
"tax_totals": [{
"tax": "vat",
"rule": "general",
"effect": "added",
"treatment": "taxable",
"description": "IVA 21%",
"rate": "21%",
"taxable_base": "600.00",
"amount": "126.00"
}],
"totals": {
"subtotal": "600.00",
"tax": "126.00",
"total_with_tax": "726.00",
"withheld_tax": "0.00",
"payable": "726.00"
},
"created_at": "2026-08-11T09:30:00Z",
"tax_regime": {
"key": "es",
"es": {
"qr": {
"content": "https://fiscalrail.test/tax-regimes/es/mock-verifications/...",
"image_url": "https://fiscalrail.test/tax-regimes/es/invoice-qrs/..."
},
"verifactu": {
"registrations": [{
"id": "es_inv_reg_...",
"object": "verifactu_registration",
"live": false,
"invoice": "inv_...",
"kind": "alta",
"status": "pending",
"submitted_at": null,
"csv": null,
"error": null
}]
}
}
},
"amendments": []
}
TEST-INV-00001
| Description | Qty. | Price | Amount |
|---|---|---|---|
| Consulting | 8 | €75.00 | €600.00 |
Validate, number, calculate, and persist an invoice atomically.
Resolve VAT and withholding rules without trusting client-side arithmetic.
Render synchronous PDFs with your logo, language, and footer.
Keep automatic numbering and durable invoice facts you can retrieve later.
Issue linked credit notes and replacements without rewriting invoice history.
Receive verifiable invoice, tax-ID, PDF, and compliance events.
Register invoices with VERI*FACTU, render verification QR codes, and handle corrections.
Add balance when you are ready to issue live invoices. Sandbox usage is free.
to issue, register, and render a typical Spanish invoice
Rejected AEAT submissions and retries are free.
FiscalRail journal
Product updates, implementation guides, comparisons, and commentary on invoicing infrastructure.

An AEAT outage does not require invoicing to stop. Learn how issuance, retries and pending VERI*FACTU registration records should work.

An issued invoice should not be edited or deleted. Learn when to use a credit note, replacement or cancellation and how FiscalRail preserves the history.

Tell us what you are building. We will help you make the first request.