# The VeriFactu records of an invoice, each with its own status

`GET …/invoices/{invoice_id}/verifactu-records` lists the registration and, after a void, the cancellation — each with its own `submission_status`, so you can tell whether AEAT accepted the cancellation.

Sep 19, 2026 · New

The `verifactu` block of an invoice summarises its **registration**. When you void the invoice, `submission_status` moves with the cancellation, but `invoice_hash`, `registration_number` and `registered_at` keep describing the registration record — so the block could not tell you whether AEAT had accepted the cancellation, or refused it and why.

The new resource lists every record submitted to AEAT for the invoice, ordered by `registered_at`: the `REGISTRATION` first and, if the invoice was voided, the `VOID` after it. Each carries its own `submission_status`, `registration_number`, `registered_at` and, when AEAT reported something, `error_code` and `error_message`.

Nothing changes on the invoice resource: the `verifactu` block keeps the same fields and the same meaning.

## What else changed

- **A `VOID` record ends in `VOIDED`, not `ACCEPTED`.** While AEAT has not replied it is `PENDING`; a refused cancellation is `REJECTED`, with `error_code` and `error_message` explaining why.
- **`invoice_hash` and `qr_url` travel only on `REGISTRATION` records.** A cancellation has neither.
- **Each record's `id` is the `verifactu_registration_id`** of the `verifactu.status.updated` webhook event, so a notification can be matched to the exact record it reports on.
- **Voiding while the registration is still `PENDING` is allowed.** The cancellation is sent once the registration is accepted; until then the list shows only the `REGISTRATION` record, and the `VOID` one appears when the cancellation goes out.
- **The collection is closed**: no pagination, no `page`/`limit`, the whole set on every response. An invoice never submitted — a draft, or one outside VeriFactu — answers `200` with an empty list.

## Endpoints

- `GET /v1/companies/{company_id}/invoices/{invoice_id}/verifactu-records` — Registration and cancellation records, each with its own submission_status

## Where to go next

- [List the VeriFactu records of an invoice](/invoices/listCompanyInvoiceVerifactuRecords)
- [Did AEAT accept the cancellation?](/verifactu/cancel-and-fix#did-aeat-accept-the-cancellation)
- [Submission states](/verifactu/submission-states)

---

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