Every sale, return and exchange in your store(s) is issued as a tax invoice and registered with the Spanish tax agency (AEAT) automatically, as the transaction completes. Your staff serve customers as normal. Cloud POS only stops a transaction if it would break Spanish invoicing rules, and the register tells you why.
This article covers the following topics:
- How it works
- Before you go live
- Which invoice is issued
- Full invoices
- Returns and exchanges
- External returns (FX)
- Invoice numbers
- When the register says no
- The Fiskaly logging page
- Glossary
How it works
Cloud POS works with Fiskaly, our certified partner for Spanish fiscalisation. When a transaction completes:
1) Cloud POS sends the invoice to Fiskaly, which signs it.
2) Fiskaly submits the invoice to the AEAT under SII (Suministro Inmediato de Información).
3) The AEAT checks the invoice and replies. When it's accepted, the AEAT issues a verification code (CSV), which Cloud POS stores against the transaction.
The register doesn't wait for the AEAT's reply, so customers are never kept waiting. Cloud POS checks with Fiskaly every five minutes and updates the outcome on the Fiskaly logging page.
Fiskaly keeps a record of every invoice issued. Invoices must be kept for four years, and Citrus-Lime never deletes them.
Before you go live
Citrus-Lime sets up your company with Fiskaly once, using your tax details. We'll need:
- your company details exactly as registered with the AEAT: NIF, legal name (up to 120 characters), and registered address with postcode and town;
- confirmation that you report under SII;
- a signed AEAT social collaboration agreement (acuerdo de colaboración social), which allows Fiskaly to submit invoices to the AEAT on your behalf.
Once you're live, your legal name, territory and SII setting are fixed. If any of these change, let us know in advance. We'll retire the current set-up and create a new one, and invoice numbering will start again in a new series.
Which invoice is issued
Cloud POS chooses the invoice type automatically, based on whether a customer is attached, whether items are being returned, and whether the original sale can be found.
| Scenario | Invoice issued | Series | Sent to the AEAT? |
|---|---|---|---|
| Sale with no customer attached, up to €3,000 | Simplified invoice (factura simplificada) | FS | Yes |
| Sale with a customer attached, any amount | Full invoice (factura completa) | FA | Yes |
| Return against the original receipt | Correcting invoice (factura rectificativa), linked to the original sale | FR | Yes |
| Exchange against the original receipt | One correcting invoice covering the returned and new items | FR | Yes |
| Return where the original sale can't be found | External invoice (factura externa) | FX | No |
| Exchange where the original sale can't be found | A sale for the new items, plus an external invoice for the returned items | FS or FA, plus FX | Sale yes, return no |
Full invoices
Attaching a customer to a sale on the Point of Sale screen always produces a full invoice, whatever the amount.
Attaching a customer always creates a full invoice
This includes sales where you attach a customer for other reasons, such as loyalty or warranty registration. Make sure your customer records include a valid NIF, name, address and postcode, or the register won't let the sale go through.
For a full invoice, the customer record needs:
- a valid Spanish NIF, either an individual's or a company's;
- their name;
- their address and postcode.
If anything is missing, the register lists what needs fixing before the sale can go through.
If a customer asks for a full invoice, attach them to the sale. Sales over €3,000 must always be full invoices, so a customer must be attached.
Invoices to customers outside Spain aren't currently supported – we are working on developing a flow for customers outside of Spain.
Returns and exchanges
Always process returns against the original receipt where you can. This links the correcting invoice to the original sale, which is what the AEAT expects.
- A return can be for part of the original sale, but not for more than it.
- If the receipt you've used is for a return, look up the original sale and process the return against that instead.
- An exchange is processed as a single transaction. The difference can be a refund, a payment or nothing.
Exchanges over €3,000 against a simplified invoice
If the original sale was a simplified invoice, the correcting invoice for an exchange is also simplified, and simplified invoices can't go over €3,000. If an exchange would take the total over that limit, the register will stop it.
To process it, split it into two transactions:
1) Return the original items against the receipt.
2) Process the new items as a separate sale, with the customer attached so it's issued as a full invoice.
External returns (FX)
When Cloud POS can't link a return to its original sale in Fiskaly, the refund is still processed, but it's recorded as an external invoice. External invoices are kept in Fiskaly but aren't sent to the AEAT. You can spot them by FX in the invoice number. On the Fiskaly logging page, external returns show as No válido / Invalid. This is expected and doesn't mean anything has gone wrong.
This happens when:
- the original sale was made before you started using Cloud POS;
- the return wasn't processed against the original receipt;
- the original sale was made under an earlier set-up that has since been retired.
Your finance team needs to account for external returns
External returns still reduce your sales, but the AEAT never sees them. Your finance team and tax adviser need to account for them separately, outside the AEAT submission.
Expect quite a few external returns in your first weeks on Cloud POS, as customers bring back items bought before the move. After that, processing returns against the original receipt will keep them to a minimum.
Invoice numbers
Each invoice number is made up of the store, the year, the series and a five-digit count. For example, in 549_2026_1FS00001:
- 549 is the store;
- 2026 is the year;
- 1 is the series generation;
- FS is the invoice type (simplified invoice);
- 00001 is the invoice count.
Each series restarts at 00001 every calendar year. Cloud POS stores the invoice number against the transaction.
When the register says no
The register only refuses a transaction if issuing it would break Spanish invoicing rules. The message explains why, and most can be fixed on the spot.

| The register says | Why | What to do |
|---|---|---|
| Sale over €3,000 needs a customer | Simplified invoices are limited to €3,000 | Attach the customer, with full details |
| Customer details incomplete or NIF invalid | A full invoice needs a valid NIF, name, address and postcode | Correct the customer record and try again |
| Customer outside Spain | Invoices to customers outside Spain aren't currently supported | Contact Citrus-Lime support |
| Return is more than the original sale | You can't refund more than was sold | Check the items and quantities being returned |
| Original is itself a return | The receipt is for an earlier return, not a sale | Look up the original sale and process the return against that |
| Exchange over €3,000 against a simplified invoice | The correcting invoice would go over the simplified limit | Process it as a return and a separate sale |
| Totals don't add up, or a tax code isn't recognised | The transaction data is inconsistent | Contact Citrus-Lime support |
| Any other error, or the service is unavailable | A temporary problem reaching Fiskaly | Try again. If it keeps happening, contact Citrus-Lime support |
The Fiskaly logging page
You can see the AEAT's outcome for every transaction on the Fiskaly logging page. In the Back Office menu, navigate to Payments & Transactions and open the Fiskaly logging page. Cloud POS checks with Fiskaly every five minutes and updates the outcome here.

| Outcome | What it means | Next steps |
|---|---|---|
| Registrado / Registered | Accepted by the AEAT. The verification code (CSV) is stored against the transaction | None needed |
| Pendiente / Pending | The AEAT hasn't replied yet | None needed. Cloud POS will check again |
| Requiere revisión / Requires Inspection | Accepted by the AEAT, but with a problem, for example a 0% line without the right tax code | We'll contact you to agree the fix |
| Requiere corrección / Requires Correction | Rejected by the AEAT | We'll contact you to agree the fix, which may include a correcting invoice |
| No válido / Invalid | Either rejected by the AEAT, or an external return that was deliberately not sent to the AEAT | If the invoice type is Factura externa / External invoice, your finance team accounts for it separately (see External returns). Otherwise, we'll contact you to agree the fix |
You don't need to check this page every day
Citrus-Lime monitors Fiskaly daily for any invoices that require inspection or correction, or are invalid, and we'll contact you if action is needed. The page is there so you can check any transaction whenever you need to.
Glossary
| Term | Meaning |
|---|---|
| AEAT | Agencia Estatal de Administración Tributaria, the Spanish tax agency |
| CSV | Código Seguro de Verificación, the AEAT's verification code for a registered invoice |
| Factura completa / Full invoice | An invoice that names the customer, with their NIF and address |
| Factura externa / External invoice | A return recorded in Fiskaly but not sent to the AEAT, because the original sale isn't in Fiskaly |
| Factura rectificativa / Correcting invoice | A return or exchange linked to the original sale |
| Factura simplificada / Simplified invoice | An invoice with no customer details, up to €3,000 |
| Fiskaly | Citrus-Lime's certified fiscalisation partner, which signs invoices and submits them to the AEAT |
| NIF | Número de Identificación Fiscal, the Spanish tax identification number |
| SII | Suministro Inmediato de Información, the AEAT reporting system Cloud POS uses for Spanish invoicing |