chaining_hash leaves the documentation
verifactu.chaining_hash was declared but never sent, so it is being withdrawn. No response changes: the server behaves exactly as before.
The verifactu block of an invoice declared a chaining_hash, described as the chaining hash with the previous invoice. It has never travelled in a single response: the contract declared it and the server never sent it. It is gone from the guides and from the examples.
This is a correction of the document, not a change to the API. If you read it, you were reading undefined before and you will read undefined after.
What else changed
- Nothing stops being sent, because nothing was being sent. Any client that treated it as optional — which is the only way it could have worked — is unaffected.
- If you generate a client from the machine-readable contract, regenerate it. The schema still declares the field until the next contract sync, so a generated model may carry a
chainingHashthat is always empty. It is safe to drop. - The chain itself is not affected. VeriFactu chaining is maintained on the submission record; what is going away is a field that promised to show you a link in it and never did.
invoice_hashis unchanged and keeps fingerprinting the invoice. skip_reasonis in a similar position, though it stays: it is still published, but only invoices issued before VeriFactu became a fact of the taxpayer carry a value. Nothing writes it now, so on invoices issued today it is alwaysnull.
Endpoints
- GET/v1/companies/{company_id}/invoices/{invoice_id}The verifactu block no longer declares chaining_hash
Where to go next
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.
A customer used by a live recurring template cannot be deleted
Deleting a customer that an active or paused recurring template invoices is now rejected, on the single `DELETE` and row by row in the bulk delete.