{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"request_id": "2cc8ef846029ec69613711ad1d85f6dfebf16ffb",
"sif_id": "0995C42C-6708-44FB-BFBF-B363A5FE873E",
"fingerprint": "<string>",
"vf_post_status": "success",
"vf_record_registration_status": "success",
"has_warnings": false,
"vf_error_descriptions": "<string>",
"next_request_waiting_time": 123,
"next_request_datetime": "1977-04-22T06:00:00Z",
"recovery": {
"status": "retry",
"reason_code": "temporary_service_error",
"message": "A temporary service or communication error prevented submission. KubiFactu will retry automatically.",
"attempts": 1,
"next_attempt_at": "2026-10-22T08:30:24+00:00"
}
}
}
{
"data": {
"error": {
"message": "No client with API-KEY '5tVySMGJOpq8HfMgIX28Qz6kF0dFOoq37x55PLZcWsGeGeYkNgJyAcRTlFJ5NbVoDRm8qtCywEoiN3A9JkBanMBXYmxiqR3BItxgxx' was found.",
"errors": null,
"details": null
}
}
}
{
"data": {
"error": {
"message": "The given data was invalid.",
"errors": {
"invoice_exists": [
"An invoice already exists with the indicated invoice number and fiscal for the provided SIF. Existing invoice ID: [9db6bb78-6799-4abb-b9a0-22d127c543ed]."
],
"invoice_data.incorrect_total_quota": [
"The total quota of the invoice does not match the total tax quota and equalization_tax_quota of the tax breakdown. Calculated total quota: [26.25]."
],
"invoice_data.incorrect_total_amount": [
"The total amount of the invoice does not match the total tax base of the tax breakdown. Calculated total amount: [151.25]."
]
},
"details": {
"request_id": "9ded9e2c-d59e-4432-a926-652cbcfac365"
}
}
}
}
API Reference
Anular registro de facturación en diferido
Anulación de un registro de facturación en diferido.
{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"request_id": "2cc8ef846029ec69613711ad1d85f6dfebf16ffb",
"sif_id": "0995C42C-6708-44FB-BFBF-B363A5FE873E",
"fingerprint": "<string>",
"vf_post_status": "success",
"vf_record_registration_status": "success",
"has_warnings": false,
"vf_error_descriptions": "<string>",
"next_request_waiting_time": 123,
"next_request_datetime": "1977-04-22T06:00:00Z",
"recovery": {
"status": "retry",
"reason_code": "temporary_service_error",
"message": "A temporary service or communication error prevented submission. KubiFactu will retry automatically.",
"attempts": 1,
"next_attempt_at": "2026-10-22T08:30:24+00:00"
}
}
}
{
"data": {
"error": {
"message": "No client with API-KEY '5tVySMGJOpq8HfMgIX28Qz6kF0dFOoq37x55PLZcWsGeGeYkNgJyAcRTlFJ5NbVoDRm8qtCywEoiN3A9JkBanMBXYmxiqR3BItxgxx' was found.",
"errors": null,
"details": null
}
}
}
{
"data": {
"error": {
"message": "The given data was invalid.",
"errors": {
"invoice_exists": [
"An invoice already exists with the indicated invoice number and fiscal for the provided SIF. Existing invoice ID: [9db6bb78-6799-4abb-b9a0-22d127c543ed]."
],
"invoice_data.incorrect_total_quota": [
"The total quota of the invoice does not match the total tax quota and equalization_tax_quota of the tax breakdown. Calculated total quota: [26.25]."
],
"invoice_data.incorrect_total_amount": [
"The total amount of the invoice does not match the total tax base of the tax breakdown. Calculated total amount: [151.25]."
]
},
"details": {
"request_id": "9ded9e2c-d59e-4432-a926-652cbcfac365"
}
}
}
}
API-KEY de la empresa que hace la petición. Este dato se puede consultar en el panel web, accediendo a la sección Empresas y accediendo a la ficha de la empresa en cuestión.
ID de la factura. Este ID se obtiene en la respuesta a las altas de registros de facturación. También se peude obtener desde el panel web, acediendo a la factura en el campo ID DE KUBIFACTU.
URL a la que KubiFACTU llama con el resultado de la AEAT cuando procesa el registro de anulación: su envío en diferido, un reenvío o una consulta.
Un mismo registro puede generar varios callbacks. Correlaciona cada elemento por id y procésalo de forma idempotente.
Los reintentos automáticos también llaman a esta URL: cada nuevo retry, el paso a attention y el final de la recuperación (resolved).
Se hará una petición POST a esta URL y se enviarán los siguientes campos en formato JSON:
id: string. Identificador de KubiFACTU para el registro de facturación.
client_invoice_id: string. Identificador del cliente para el registro de facturación.
record_type: string (creation|cancellation). Tipo de registro de facturación.
sif_id: string. ID del SIF utilizado para la creación del registro.
sender_company_name: string. Nombre de la empresa emisira.
sender_tax_id_number: string. CIF/NIF de la empresa emisora.
full_invoice_number: string. Número de factura.
fingerprint: string. Huella del registro de facturación.
csv: string|null. Código Seguro de Verificación (CSV) de la remisión que contiene el registro. Puede ser null aunque el registro esté aceptado: para saber si está acreditado, usa vf_record_registration_status, no la presencia del csv. Leer más en la FAQ.
vf_post_status: string. Ver valores posibles en la documentación del campo vf_post_status de la respuesta de envío de registros de facturación.
vf_record_registration_status: string. Ver valores posibles en la documentación del campo vf_record_registration_status de la respuesta de envío de registros de facturación.
has_warnings: bool. Indica si el registro contiene errores que deban ser subsanados.
vf_error_descriptions: string|null. Cadena con la descripción de los errores devueltos por Veri*Factu.
vf_response_body: string|null. Cuerpo de la respuesta de Veri*Factu en formato Base64. Contiene el XML completo devuelto por la AEAT tras el envío del registro de facturación.
xml_url: string|null. URL para descargar el XML del registro de facturación enviado a Veri*Factu mediante el endpoint Descargar XML del registro de facturación. Será null si el XML aún no está disponible.
qr_value: string|null. URL del código QR para validación de la factura en Veri*Factu. Será null si el registro fue rechazado o no aplica mostrar QR.
qr_image_url: string|null. URL para descargar la imagen PNG del código QR generado por KubiFACTU mediante el endpoint Descargar imagen QR del registro de facturación. Será null si el registro fue rechazado o no aplica mostrar QR.
recovery: object o null. Siempre presente. Vale null si la recuperación automática no sigue el registro; en ese caso puedes ignorarlo. Mismo formato que el campo recovery de la respuesta de anulación de registros de facturación.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"KubiFactu Docs","colors":{"primary":"#0D9373","light":"#07C983","dark":"#0D9373"},"logo":{"light":"https://mintcdn.com/kubicode/c_MnoHUxTdI5_O4j/logo/light.svg?fit=max\u0026auto=format\u0026n=c_MnoHUxTdI5_O4j\u0026q=85\u0026s=ed19f7b6d4dbf284f34781b6b320ac48","dark":"https://mintcdn.com/kubicode/c_MnoHUxTdI5_O4j/logo/dark.svg?fit=max\u0026auto=format\u0026n=c_MnoHUxTdI5_O4j\u0026q=85\u0026s=3bee2696fbef6e0c54653a4e98280cf1"},"favicon":"https://mintcdn.com/kubicode/c_MnoHUxTdI5_O4j/favicon.svg?fit=max\u0026auto=format\u0026n=c_MnoHUxTdI5_O4j\u0026q=85\u0026s=ddbe44a854257f5d930e11e61f5cd1a7","api":{"playground":{"display":"interactive"},"mdx":{"server":["https://api.kubifactu.com","https://devapi.kubifactu.com"]}},"navbar":{"links":[{"href":"mailto:[email protected]","label":"Soporte"}]},"styling":{"codeblocks":"dark","latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kubicode","hasAudioNarration":false,"actualSubdomain":"kubicode","customDomains":["apidocs.kubifactu.com"],"gitSource":{"type":"github","owner":"sportuondo","repo":"kubifactu-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae12722282ca4391afec090","collectionId":"290b5c66-88a3-485d-ae9a-b417d9af5d5c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae12722282ca4391afec090"},"entitlements":{},"buildId":"6ae12722282ca4391afec090","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"API Reference","count":31},{"language":"default","tag":"Ejemplos","count":22},{"language":"default","tag":"Referencia de la API","count":21},{"language":"default","tag":"Endpoints de KubiBAI","count":8},{"language":"default","tag":"Inicio","count":7},{"language":"default","tag":"Empieza","count":7},{"language":"default","tag":"Otros endpoints","count":2}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"openapi-kubibai-reference/anular-registro-de-facturación-en-diferido","slug":"/openapi-kubibai-reference/anular-registro-de-facturación-en-diferido","pageMetadata":{"title":"Anular registro de facturación en diferido","description":"Anulación de un registro de facturación en diferido.","deprecated":null,"version":null,"openapi":"/api-reference/openapi/openapi-kubibai.yaml post /api/invoicing/invoices/{invoiceId}/deferredcancel","href":"/openapi-kubibai-reference/anular-registro-de-facturación-en-diferido","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Anulación de un registro de facturación en diferido.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Anular registro de facturación en diferido","description":"Anulación de un registro de facturación en diferido.","deprecated":null,"version":null,"openapi":"/api-reference/openapi/openapi-kubibai.yaml post /api/invoicing/invoices/{invoiceId}/deferredcancel","href":"/openapi-kubibai-reference/anular-registro-de-facturación-en-diferido","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Anular registro de facturación en diferido","description":"Anulación de un registro de facturación en diferido.","operationId":"cancelInvoiceRecordDeferred","parameters":["ce9574b8-6657-4871-bd92-a4fc825144a4"],"requestBody":"3b158e1f-1102-432b-827c-7758c1090a76","responses":{"200":"33e65a75-6773-4f22-9579-a3b2531f9e16","403":"f90d674e-531d-4046-929f-85e4a793ecf3","422":"34a5c030-48d8-4f21-9325-84c09302d2c9","500":"bc0cf50c-22c7-47a3-8a46-c1be4af37ff4"},"security":["7db4d216-f768-44d9-b22a-efc281800c6f"],"method":"post","type":"path","servers":["b8d02f72-7742-4357-99d6-39c721fc1a12","1cd4c6ab-98fe-451b-a18a-71f7500f3354"],"path":"/api/invoicing/invoices/{invoiceId}/deferredcancel","baseUrlOptions":["https://api.kubifactu.com","https://devapi.kubifactu.com"],"title":"Anular registro de facturación en diferido","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ce9574b8-6657-4871-bd92-a4fc825144a4":{"name":"invoiceId","in":"path","description":"ID de la factura. Este ID se obtiene en la respuesta a las altas de registros de facturación. También se peude obtener desde el panel web, acediendo a la factura en el campo **ID DE KUBIFACTU**.\n","required":true,"schema":{"type":"string","isRequired":true,"description":"ID de la factura. Este ID se obtiene en la respuesta a las altas de registros de facturación. También se peude obtener desde el panel web, acediendo a la factura en el campo **ID DE KUBIFACTU**.\n","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"callback_url":{"type":"string","format":"url","description":"URL a la que KubiFACTU llama con el resultado de la AEAT cuando procesa el registro de anulación: su envío en diferido, un reenvío o una [consulta](/openapi-kubibai-reference/consultar-registro-de-facturación-con-veri*factu).\n\nUn mismo registro puede generar varios callbacks. Correlaciona cada elemento por `id` y procésalo de forma idempotente.\n\nLos reintentos automáticos también llaman a esta URL: cada nuevo `retry`, el paso a `attention` y el final de la recuperación (`resolved`).\n\nSe hará una petición POST a esta URL y se enviarán los siguientes campos en formato JSON:\n\n- `id`: `string`. Identificador de KubiFACTU para el registro de facturación.\n- `client_invoice_id`: `string`. Identificador del cliente para el registro de facturación.\n- `record_type`: `string (creation|cancellation)`. Tipo de registro de facturación.\n- `sif_id`: `string`. ID del SIF utilizado para la creación del registro.\n- `sender_company_name`: `string`. Nombre de la empresa emisira.\n- `sender_tax_id_number`: `string`. CIF/NIF de la empresa emisora.\n- `full_invoice_number`: `string`. Número de factura.\n- `fingerprint`: `string`. Huella del registro de facturación.\n- `csv`: `string|null`. Código Seguro de Verificación (CSV) de la remisión que contiene el registro. Puede ser `null` aunque el registro esté aceptado: para saber si está acreditado, usa `vf_record_registration_status`, no la presencia del `csv`. [Leer más en la FAQ](/faq).\n- `vf_post_status`: `string`. Ver valores posibles en la documentación del campo `vf_post_status` de la respuesta de envío de registros de facturación.\n- `vf_record_registration_status`: `string`. Ver valores posibles en la documentación del campo `vf_record_registration_status` de la respuesta de envío de registros de facturación.\n- `has_warnings`: `bool`. Indica si el registro contiene errores que deban ser subsanados.\n- `vf_error_descriptions`: `string|null`. Cadena con la descripción de los errores devueltos por Veri*Factu.\n- `vf_response_body`: `string|null`. Cuerpo de la respuesta de Veri*Factu en formato Base64. Contiene el XML completo devuelto por la AEAT tras el envío del registro de facturación.\n- `xml_url`: `string|null`. URL para descargar el XML del registro de facturación enviado a Veri*Factu mediante el endpoint [Descargar XML del registro de facturación](/openapi-kubibai-reference/descargar-xml-del-registro-de-facturación). Será `null` si el XML aún no está disponible.\n- `qr_value`: `string|null`. URL del código QR para validación de la factura en Veri*Factu. Será `null` si el registro fue rechazado o no aplica mostrar QR.\n- `qr_image_url`: `string|null`. URL para descargar la imagen PNG del código QR generado por KubiFACTU mediante el endpoint [Descargar imagen QR del registro de facturación](/openapi-kubibai-reference/descargar-imagen-qr-del-registro-de-facturación). Será `null` si el registro fue rechazado o no aplica mostrar QR.\n- `recovery`: `object` o `null`. Siempre presente. Vale `null` si la recuperación automática no sigue el registro; en ese caso puedes ignorarlo. Mismo formato que el campo `recovery` de la respuesta de anulación de registros de facturación.\n","example":"https://www.tuempresa.com/kubifactu/callback","uniqueKey":"callback_url","typeLabel":"string\u003curl>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"callback_url":"https://www.tuempresa.com/kubifactu/callback"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"33e65a75-6773-4f22-9579-a3b2531f9e16":{"description":"Factura enviada con éxito.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Identificador (ID) de la factura en el sistema de **KubiFACTU**. Se utiliza para hacer referencia al registro de facturación desde otros endpoints como, por ejemplo, el de anulación de facturas.\n","uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"request_id":{"type":"string","description":"Identificador de la petición como referencia para el soporte técnico.","example":"2cc8ef846029ec69613711ad1d85f6dfebf16ffb","uniqueKey":"data.request_id","typeLabel":"string"},"sif_id":{"type":"string","description":"ID del SIF utilizado para la creación del registro.","format":"uuid","example":"0995C42C-6708-44FB-BFBF-B363A5FE873E","uniqueKey":"data.sif_id","typeLabel":"string\u003cuuid>"},"fingerprint":{"oneOf":[{"type":"string","description":"Huella SHA-256 de la factura registrada.","uniqueKey":"data.fingerprint.oneOf.0","typeLabel":"string"},{"type":"null","description":"Huella SHA-256 de la factura registrada.","uniqueKey":"data.fingerprint.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.fingerprint","typeLabel":"string | null"},"vf_post_status":{"oneOf":[{"type":"string","description":"Este campo indica si la factura ha sido enviada a Veri*Factu, pero no indica si el registro ha sido aceptado.\nLos valores posibles son:\n\n- `success`: Se ha realizado el envío a Veri*Factu.\n- `failure`: No se ha podido hacer el envío a Veri*Factu.\n","enum":["success","failure"],"uniqueKey":"data.vf_post_status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Este campo indica si la factura ha sido enviada a Veri*Factu, pero no indica si el registro ha sido aceptado.\nLos valores posibles son:\n\n- `success`: Se ha realizado el envío a Veri*Factu.\n- `failure`: No se ha podido hacer el envío a Veri*Factu.\n","enum":["success","failure"],"uniqueKey":"data.vf_post_status.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.vf_post_status","typeLabel":"enum\u003cstring> | null"},"vf_record_registration_status":{"oneOf":[{"type":"string","description":"Valores posibles para el campo `vf_record_registration_status`, que indican el estado del registro en Veri*Factu.\n\n- `success`: El registro ha sido correctamente registrado en Veri*Factu.\n- `accepted_with_errors`: El registro ha sido registrado en Veri*Factu, pero tiene **errores que deben ser subsanados**.\n- `failed`: El registro tiene errores no aceptables y ha sido **rechazado** por Veri*Factu.\n- `not_registered`: No se ha encontrado el registro en Veri*Factu.\n- `cancelled`: El registro está anulado.\n- `unknown`: Se desconoce el estado del registro.\n","enum":["success","accepted_with_errors","failed","not_registered","cancelled","unknown"],"uniqueKey":"data.vf_record_registration_status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Valores posibles para el campo `vf_record_registration_status`, que indican el estado del registro en Veri*Factu.\n\n- `success`: El registro ha sido correctamente registrado en Veri*Factu.\n- `accepted_with_errors`: El registro ha sido registrado en Veri*Factu, pero tiene **errores que deben ser subsanados**.\n- `failed`: El registro tiene errores no aceptables y ha sido **rechazado** por Veri*Factu.\n- `not_registered`: No se ha encontrado el registro en Veri*Factu.\n- `cancelled`: El registro está anulado.\n- `unknown`: Se desconoce el estado del registro.\n","enum":["success","accepted_with_errors","failed","not_registered","cancelled","unknown"],"uniqueKey":"data.vf_record_registration_status.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.vf_record_registration_status","typeLabel":"enum\u003cstring> | null"},"has_warnings":{"type":"boolean","description":"Indica si el registro contiene errores que deban ser subsanados.","example":false,"uniqueKey":"data.has_warnings","typeLabel":"boolean"},"vf_error_descriptions":{"oneOf":[{"type":"string","description":"Cadena con la descripción de los errores devueltos por Veri*Factu.","uniqueKey":"data.vf_error_descriptions.oneOf.0","typeLabel":"string"},{"type":"null","description":"Cadena con la descripción de los errores devueltos por Veri*Factu.","uniqueKey":"data.vf_error_descriptions.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.vf_error_descriptions","typeLabel":"string | null"},"next_request_waiting_time":{"type":"integer","description":"Tiempo que se debe esperar en segundos para que la empresa cliente pueda enviar una nueva petición.","uniqueKey":"data.next_request_waiting_time","typeLabel":"integer"},"next_request_datetime":{"type":"string","format":"date-time","example":"1977-04-22T06:00:00Z","description":"Fecha y hora en la que la empresa cliente pueda enviar una nueva petición en formato ISO-8601 (ej.- 1977-04-22T06:00:00Z) con zona horaria UTC.","uniqueKey":"data.next_request_datetime","typeLabel":"string\u003cdate-time>"},"recovery":{"oneOf":[{"type":"object","description":"Estado de la [recuperación automática de envíos](/faq#¿qué-es-la-recuperación-automática-de-envíos) del registro. Siempre está presente. Vale `null` cuando la recuperación automática no sigue el registro, y en ese caso puedes ignorarlo. Va relleno en los registros diferidos desde su creación y en los envíos inmediatos cuyo resultado dejó la cadena esperando. Un envío inmediato aceptado, o rechazado de forma definitiva por la AEAT, lleva `recovery: null`.\n\nEn el alta inmediata de KubiBAI (`POST /api/invoicing/invoices`), si el envío falla con un error de conexión, una respuesta ilegible, un error al generar el XML o un error inesperado, responde HTTP `500` sin `recovery`, aunque el registro entra igualmente en la recuperación. Para conocer su estado, [obtén el registro](/openapi-kubibai-reference/obtener-registro-de-facturación).\n","required":["status","reason_code","message","attempts","next_attempt_at"],"properties":{"status":{"type":"string","description":"Estado de la recuperación:\n\n- `pending`: el registro espera su envío. Si `reason_code` tiene valor, espera detrás de un registro anterior con una incidencia.\n- `processing`: KubiFACTU está enviando o consultando el registro.\n- `retry`: el último intento falló y KubiFACTU lo repetirá en `next_attempt_at`.\n- `resolved`: la recuperación ha terminado. **No significa que la AEAT haya aceptado el registro.** El resultado está en `vf_record_registration_status`. Por ejemplo, un alta que la AEAT rechaza como duplicada (código 3000) porque ya tiene registrada otra alta anterior de la misma factura termina en `resolved` con `vf_record_registration_status = failed`. Si el registro no guardaba la descripción del error de la AEAT, como ocurre en los diferidos y los reenvíos, `vf_error_descriptions` muestra «3000 - La AEAT ya tiene registrada otra alta de esta factura.».\n- `attention`: KubiFACTU ha detenido los reintentos y el registro necesita intervención. Corrige la causa y solicita el [reenvío](/openapi-reference/reenviar-registro-de-facturación).\n\nMientras el estado no es `resolved`, el registro bloquea la cadena: el siguiente envío inmediato de la misma empresa cliente y SIF recibe HTTP `409`.\n","enum":["pending","processing","retry","resolved","attention"],"example":"retry","isRequired":true,"uniqueKey":"data.recovery.oneOf.0.status","typeLabel":"enum\u003cstring>"},"reason_code":{"oneOf":[{"type":"string","description":"Motivo del último fallo, que decide qué hace KubiFACTU. Es `null` en `resolved` y en un registro `pending` sin incidencia delante. En `pending` con valor, es el motivo de la incidencia del registro anterior que bloquea la cadena.\n\n- `temporary_service_error`: conexión sin respuesta, timeout, HTTP 429 o 5xx, una página HTML en lugar de la respuesta SOAP o un código técnico de la AEAT. Se reintenta al cabo de 1, 5 y 15 minutos, y después cada 30 minutos, sin límite.\n- `remote_certificate_verification_error`: la AEAT no puede verificar el certificado presentado (código 4108). Se reintenta con el mismo calendario.\n- `unexpected_error`: un error o un código que KubiFACTU no reconoce. Se reintenta al cabo de 1 y 5 minutos.\n- `unexpected_error_limit_reached`: tercer fallo inesperado consecutivo. Pasa a `attention`.\n- `local_configuration_error`: certificado o configuración local incompleta o no válida. Pasa a `attention`.\n- `invalid_xml`: la AEAT rechaza el XML o un campo de la cabecera que genera KubiFACTU. Pasa a `attention`.\n- `authorization_error`: falta de autorización para remitir (código 4112, HTTP 401 o 403). Pasa a `attention`.\n- `service_suspended`: servicio suspendido (código 4141). Pasa a `attention`.\n","enum":["temporary_service_error","remote_certificate_verification_error","unexpected_error","unexpected_error_limit_reached","local_configuration_error","invalid_xml","authorization_error","service_suspended"],"example":"temporary_service_error","isRequired":true,"uniqueKey":"data.recovery.oneOf.0.reason_code.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Motivo del último fallo, que decide qué hace KubiFACTU. Es `null` en `resolved` y en un registro `pending` sin incidencia delante. En `pending` con valor, es el motivo de la incidencia del registro anterior que bloquea la cadena.\n\n- `temporary_service_error`: conexión sin respuesta, timeout, HTTP 429 o 5xx, una página HTML en lugar de la respuesta SOAP o un código técnico de la AEAT. Se reintenta al cabo de 1, 5 y 15 minutos, y después cada 30 minutos, sin límite.\n- `remote_certificate_verification_error`: la AEAT no puede verificar el certificado presentado (código 4108). Se reintenta con el mismo calendario.\n- `unexpected_error`: un error o un código que KubiFACTU no reconoce. Se reintenta al cabo de 1 y 5 minutos.\n- `unexpected_error_limit_reached`: tercer fallo inesperado consecutivo. Pasa a `attention`.\n- `local_configuration_error`: certificado o configuración local incompleta o no válida. Pasa a `attention`.\n- `invalid_xml`: la AEAT rechaza el XML o un campo de la cabecera que genera KubiFACTU. Pasa a `attention`.\n- `authorization_error`: falta de autorización para remitir (código 4112, HTTP 401 o 403). Pasa a `attention`.\n- `service_suspended`: servicio suspendido (código 4141). Pasa a `attention`.\n","enum":["temporary_service_error","remote_certificate_verification_error","unexpected_error","unexpected_error_limit_reached","local_configuration_error","invalid_xml","authorization_error","service_suspended"],"example":"temporary_service_error","isRequired":true,"uniqueKey":"data.recovery.oneOf.0.reason_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.recovery.oneOf.0.reason_code","typeLabel":"enum\u003cstring> | null"},"message":{"type":"string","description":"Descripción del estado, siempre en inglés. Usa `status` y `reason_code` para decidir qué hacer, no este texto.\n\nEn `retry` y `attention`, es el mensaje del motivo:\n\n- `temporary_service_error`: \"A temporary service or communication error prevented submission. KubiFactu will retry automatically.\"\n- `remote_certificate_verification_error`: \"The certificate presented to AEAT could not be verified. KubiFactu will retry automatically.\"\n- `unexpected_error`: \"An unexpected error prevented submission. KubiFactu will retry automatically a limited number of times.\"\n- `unexpected_error_limit_reached`: \"Automatic retries have stopped after three consecutive unexpected failures. This record remains unresolved. Contact KubiFactu support to investigate the issue.\"\n- `local_configuration_error`: \"Submission requires attention because the local configuration is incomplete or invalid. Correct the configuration and retry the record.\"\n- `invalid_xml`: \"Submission requires attention because the generated record is not valid XML for the configured schema. Contact KubiFactu support.\"\n- `authorization_error`: \"Submission requires attention because authorization failed. Review the credentials or certificate and retry the record.\"\n- `service_suspended`: \"Automatic submission is suspended for this service. Restore the service and retry the record.\"\n\nEn los demás casos depende del estado:\n\n- `pending`: \"Submission is pending.\" Si espera detrás de una incidencia anterior: \"Submission is waiting for an earlier incident to be resolved.\"\n- `processing`: \"Submission is being processed.\"\n- `resolved`: \"Automatic recovery has finished. Check the registration status for the result.\"\n- `retry` sin motivo: \"Submission will be retried automatically.\"\n- `attention` sin motivo: \"Submission requires intervention before it can continue.\"\n","example":"A temporary service or communication error prevented submission. KubiFactu will retry automatically.","isRequired":true,"uniqueKey":"data.recovery.oneOf.0.message","typeLabel":"string"},"attempts":{"type":"integer","description":"Número de envíos del registro a la AEAT dentro de la recuperación, incluido el envío inmediato que falló. Las consultas no cuentan. Un registro diferido recién creado tiene `0`.\n","example":1,"isRequired":true,"uniqueKey":"data.recovery.oneOf.0.attempts","typeLabel":"integer"},"next_attempt_at":{"oneOf":[{"type":"string","format":"date-time","description":"En `retry`, fecha y hora del siguiente intento, en formato ISO-8601 con zona horaria UTC. En `pending`, fecha y hora en la que el registro entró en la cola, no una cita para el envío. Es `null` en `processing`, `attention` y `resolved`.\n","example":"2026-10-22T08:30:24+00:00","isRequired":true,"uniqueKey":"data.recovery.oneOf.0.next_attempt_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"En `retry`, fecha y hora del siguiente intento, en formato ISO-8601 con zona horaria UTC. En `pending`, fecha y hora en la que el registro entró en la cola, no una cita para el envío. Es `null` en `processing`, `attention` y `resolved`.\n","example":"2026-10-22T08:30:24+00:00","isRequired":true,"uniqueKey":"data.recovery.oneOf.0.next_attempt_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.recovery.oneOf.0.next_attempt_at","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"data.recovery.oneOf.0","typeLabel":"object"},{"type":"null","description":"Estado de la [recuperación automática de envíos](/faq#¿qué-es-la-recuperación-automática-de-envíos) del registro. Siempre está presente. Vale `null` cuando la recuperación automática no sigue el registro, y en ese caso puedes ignorarlo. Va relleno en los registros diferidos desde su creación y en los envíos inmediatos cuyo resultado dejó la cadena esperando. Un envío inmediato aceptado, o rechazado de forma definitiva por la AEAT, lleva `recovery: null`.\n\nEn el alta inmediata de KubiBAI (`POST /api/invoicing/invoices`), si el envío falla con un error de conexión, una respuesta ilegible, un error al generar el XML o un error inesperado, responde HTTP `500` sin `recovery`, aunque el registro entra igualmente en la recuperación. Para conocer su estado, [obtén el registro](/openapi-kubibai-reference/obtener-registro-de-facturación).\n","required":["status","reason_code","message","attempts","next_attempt_at"],"properties":{"status":{"type":"string","description":"Estado de la recuperación:\n\n- `pending`: el registro espera su envío. Si `reason_code` tiene valor, espera detrás de un registro anterior con una incidencia.\n- `processing`: KubiFACTU está enviando o consultando el registro.\n- `retry`: el último intento falló y KubiFACTU lo repetirá en `next_attempt_at`.\n- `resolved`: la recuperación ha terminado. **No significa que la AEAT haya aceptado el registro.** El resultado está en `vf_record_registration_status`. Por ejemplo, un alta que la AEAT rechaza como duplicada (código 3000) porque ya tiene registrada otra alta anterior de la misma factura termina en `resolved` con `vf_record_registration_status = failed`. Si el registro no guardaba la descripción del error de la AEAT, como ocurre en los diferidos y los reenvíos, `vf_error_descriptions` muestra «3000 - La AEAT ya tiene registrada otra alta de esta factura.».\n- `attention`: KubiFACTU ha detenido los reintentos y el registro necesita intervención. Corrige la causa y solicita el [reenvío](/openapi-reference/reenviar-registro-de-facturación).\n\nMientras el estado no es `resolved`, el registro bloquea la cadena: el siguiente envío inmediato de la misma empresa cliente y SIF recibe HTTP `409`.\n","enum":["pending","processing","retry","resolved","attention"],"example":"retry"},"reason_code":{"oneOf":[{"type":"string","description":"Motivo del último fallo, que decide qué hace KubiFACTU. Es `null` en `resolved` y en un registro `pending` sin incidencia delante. En `pending` con valor, es el motivo de la incidencia del registro anterior que bloquea la cadena.\n\n- `temporary_service_error`: conexión sin respuesta, timeout, HTTP 429 o 5xx, una página HTML en lugar de la respuesta SOAP o un código técnico de la AEAT. Se reintenta al cabo de 1, 5 y 15 minutos, y después cada 30 minutos, sin límite.\n- `remote_certificate_verification_error`: la AEAT no puede verificar el certificado presentado (código 4108). Se reintenta con el mismo calendario.\n- `unexpected_error`: un error o un código que KubiFACTU no reconoce. Se reintenta al cabo de 1 y 5 minutos.\n- `unexpected_error_limit_reached`: tercer fallo inesperado consecutivo. Pasa a `attention`.\n- `local_configuration_error`: certificado o configuración local incompleta o no válida. Pasa a `attention`.\n- `invalid_xml`: la AEAT rechaza el XML o un campo de la cabecera que genera KubiFACTU. Pasa a `attention`.\n- `authorization_error`: falta de autorización para remitir (código 4112, HTTP 401 o 403). Pasa a `attention`.\n- `service_suspended`: servicio suspendido (código 4141). Pasa a `attention`.\n","enum":["temporary_service_error","remote_certificate_verification_error","unexpected_error","unexpected_error_limit_reached","local_configuration_error","invalid_xml","authorization_error","service_suspended"],"example":"temporary_service_error"},{"type":"null","description":"Motivo del último fallo, que decide qué hace KubiFACTU. Es `null` en `resolved` y en un registro `pending` sin incidencia delante. En `pending` con valor, es el motivo de la incidencia del registro anterior que bloquea la cadena.\n\n- `temporary_service_error`: conexión sin respuesta, timeout, HTTP 429 o 5xx, una página HTML en lugar de la respuesta SOAP o un código técnico de la AEAT. Se reintenta al cabo de 1, 5 y 15 minutos, y después cada 30 minutos, sin límite.\n- `remote_certificate_verification_error`: la AEAT no puede verificar el certificado presentado (código 4108). Se reintenta con el mismo calendario.\n- `unexpected_error`: un error o un código que KubiFACTU no reconoce. Se reintenta al cabo de 1 y 5 minutos.\n- `unexpected_error_limit_reached`: tercer fallo inesperado consecutivo. Pasa a `attention`.\n- `local_configuration_error`: certificado o configuración local incompleta o no válida. Pasa a `attention`.\n- `invalid_xml`: la AEAT rechaza el XML o un campo de la cabecera que genera KubiFACTU. Pasa a `attention`.\n- `authorization_error`: falta de autorización para remitir (código 4112, HTTP 401 o 403). Pasa a `attention`.\n- `service_suspended`: servicio suspendido (código 4141). Pasa a `attention`.\n","enum":["temporary_service_error","remote_certificate_verification_error","unexpected_error","unexpected_error_limit_reached","local_configuration_error","invalid_xml","authorization_error","service_suspended"],"example":"temporary_service_error"}]},"message":{"type":"string","description":"Descripción del estado, siempre en inglés. Usa `status` y `reason_code` para decidir qué hacer, no este texto.\n\nEn `retry` y `attention`, es el mensaje del motivo:\n\n- `temporary_service_error`: \"A temporary service or communication error prevented submission. KubiFactu will retry automatically.\"\n- `remote_certificate_verification_error`: \"The certificate presented to AEAT could not be verified. KubiFactu will retry automatically.\"\n- `unexpected_error`: \"An unexpected error prevented submission. KubiFactu will retry automatically a limited number of times.\"\n- `unexpected_error_limit_reached`: \"Automatic retries have stopped after three consecutive unexpected failures. This record remains unresolved. Contact KubiFactu support to investigate the issue.\"\n- `local_configuration_error`: \"Submission requires attention because the local configuration is incomplete or invalid. Correct the configuration and retry the record.\"\n- `invalid_xml`: \"Submission requires attention because the generated record is not valid XML for the configured schema. Contact KubiFactu support.\"\n- `authorization_error`: \"Submission requires attention because authorization failed. Review the credentials or certificate and retry the record.\"\n- `service_suspended`: \"Automatic submission is suspended for this service. Restore the service and retry the record.\"\n\nEn los demás casos depende del estado:\n\n- `pending`: \"Submission is pending.\" Si espera detrás de una incidencia anterior: \"Submission is waiting for an earlier incident to be resolved.\"\n- `processing`: \"Submission is being processed.\"\n- `resolved`: \"Automatic recovery has finished. Check the registration status for the result.\"\n- `retry` sin motivo: \"Submission will be retried automatically.\"\n- `attention` sin motivo: \"Submission requires intervention before it can continue.\"\n","example":"A temporary service or communication error prevented submission. KubiFactu will retry automatically."},"attempts":{"type":"integer","description":"Número de envíos del registro a la AEAT dentro de la recuperación, incluido el envío inmediato que falló. Las consultas no cuentan. Un registro diferido recién creado tiene `0`.\n","example":1},"next_attempt_at":{"oneOf":[{"type":"string","format":"date-time","description":"En `retry`, fecha y hora del siguiente intento, en formato ISO-8601 con zona horaria UTC. En `pending`, fecha y hora en la que el registro entró en la cola, no una cita para el envío. Es `null` en `processing`, `attention` y `resolved`.\n","example":"2026-10-22T08:30:24+00:00"},{"type":"null","format":"date-time","description":"En `retry`, fecha y hora del siguiente intento, en formato ISO-8601 con zona horaria UTC. En `pending`, fecha y hora en la que el registro entró en la cola, no una cita para el envío. Es `null` en `processing`, `attention` y `resolved`.\n","example":"2026-10-22T08:30:24+00:00"}]}},"uniqueKey":"data.recovery.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.recovery","typeLabel":"object | null"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","request_id":"2cc8ef846029ec69613711ad1d85f6dfebf16ffb","sif_id":"0995C42C-6708-44FB-BFBF-B363A5FE873E","fingerprint":"\u003cstring>","vf_post_status":"success","vf_record_registration_status":"success","has_warnings":false,"vf_error_descriptions":"\u003cstring>","next_request_waiting_time":123,"next_request_datetime":"1977-04-22T06:00:00Z","recovery":{"status":"retry","reason_code":"temporary_service_error","message":"A temporary service or communication error prevented submission. KubiFactu will retry automatically.","attempts":1,"next_attempt_at":"2026-10-22T08:30:24+00:00"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"f90d674e-531d-4046-929f-85e4a793ecf3":{"description":"No autorizado. La API-KEY proporcionada no es válida.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string","description":"Mensaje detallado del error.","example":"No client with API-KEY '5tVySMGJOpq8HfMgIX28Qz6kF0dFOoq37x55PLZcWsGeGeYkNgJyAcRTlFJ5NbVoDRm8qtCywEoiN3A9JkBanMBXYmxiqR3BItxgxx' was found.","uniqueKey":"data.error.message","typeLabel":"string"},"errors":{"oneOf":[{"type":"object","description":"Detalles adicionales del error. Puede ser `null` si no hay información específica.\n","example":null,"uniqueKey":"data.error.errors.oneOf.0","typeLabel":"object"},{"type":"null","description":"Detalles adicionales del error. Puede ser `null` si no hay información específica.\n","example":null,"uniqueKey":"data.error.errors.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.error.errors","typeLabel":"object | null"},"details":{"oneOf":[{"type":"object","enum":[null],"description":"Siempre es `null` en esta respuesta. La API-KEY se rechaza antes de asignar el identificador de la solicitud.","example":null,"uniqueKey":"data.error.details.oneOf.0","typeLabel":"object"},{"type":"null","enum":[null],"description":"Siempre es `null` en esta respuesta. La API-KEY se rechaza antes de asignar el identificador de la solicitud.","example":null,"uniqueKey":"data.error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.error.details","typeLabel":"object | null"}},"uniqueKey":"data.error","typeLabel":"object"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"error":{"message":"No client with API-KEY '5tVySMGJOpq8HfMgIX28Qz6kF0dFOoq37x55PLZcWsGeGeYkNgJyAcRTlFJ5NbVoDRm8qtCywEoiN3A9JkBanMBXYmxiqR3BItxgxx' was found.","errors":null,"details":null}}}}},"exampleType":"generated"}},"exampleType":"generated"},"34a5c030-48d8-4f21-9325-84c09302d2c9":{"description":"Errores de validación.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string","description":"Mensaje general del error.","example":"The given data was invalid.","uniqueKey":"data.error.message","typeLabel":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"data.error.errors.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.error.errors.additionalProperties","typeLabel":"string[]"},"description":"Lista de errores de validación organizados por campo.\nCada clave es el nombre del campo asociado al error y contiene un array de mensajes.\n","example":{"invoice_exists":["An invoice already exists with the indicated invoice number and fiscal for the provided SIF. Existing invoice ID: [9db6bb78-6799-4abb-b9a0-22d127c543ed]."],"invoice_data.incorrect_total_quota":["The total quota of the invoice does not match the total tax quota and equalization_tax_quota of the tax breakdown. Calculated total quota: [26.25]."],"invoice_data.incorrect_total_amount":["The total amount of the invoice does not match the total tax base of the tax breakdown. Calculated total amount: [151.25]."]},"uniqueKey":"data.error.errors","typeLabel":"object"},"details":{"type":"object","properties":{"request_id":{"type":"string","format":"uuid","description":"Identificador único de la solicitud para rastreo.","example":"9ded9e2c-d59e-4432-a926-652cbcfac365","uniqueKey":"data.error.details.request_id","typeLabel":"string\u003cuuid>"}},"uniqueKey":"data.error.details","typeLabel":"object"}},"uniqueKey":"data.error","typeLabel":"object"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"error":{"message":"The given data was invalid.","errors":{"invoice_exists":["An invoice already exists with the indicated invoice number and fiscal for the provided SIF. Existing invoice ID: [9db6bb78-6799-4abb-b9a0-22d127c543ed]."],"invoice_data.incorrect_total_quota":["The total quota of the invoice does not match the total tax quota and equalization_tax_quota of the tax breakdown. Calculated total quota: [26.25]."],"invoice_data.incorrect_total_amount":["The total amount of the invoice does not match the total tax base of the tax breakdown. Calculated total amount: [151.25]."]},"details":{"request_id":"9ded9e2c-d59e-4432-a926-652cbcfac365"}}}}}},"exampleType":"generated"}},"exampleType":"generated"},"bc0cf50c-22c7-47a3-8a46-c1be4af37ff4":{"description":"Error interno del servidor.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"7db4d216-f768-44d9-b22a-efc281800c6f":{"client_api_key":{"type":"apiKey","name":"X-Qbikode-ClientApiKey","in":"header","description":"API-KEY de la empresa que hace la petición. Este dato se puede consultar en el panel web, accediendo a la sección _Empresas_ y accediendo a la ficha de la empresa en cuestión.\n","scopes":[],"schemeName":"client_api_key"}}},"servers":{"b8d02f72-7742-4357-99d6-39c721fc1a12":{"url":"https://api.kubifactu.com","description":"Servidor de producción"},"1cd4c6ab-98fe-451b-a18a-71f7500f3354":{"url":"https://devapi.kubifactu.com","description":"Servidor de pruebas"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","name":"X-Qbikode-ClientApiKey","in":"header","description":"API-KEY de la empresa que hace la petición. Este dato se puede consultar en el panel web, accediendo a la sección _Empresas_ y accediendo a la ficha de la empresa en cuestión.\n","scopes":[],"schemeName":"client_api_key"},"schema":{"title":"X-Qbikode-ClientApiKey","type":"string","description":"API-KEY de la empresa que hace la petición. Este dato se puede consultar en el panel web, accediendo a la sección _Empresas_ y accediendo a la ficha de la empresa en cuestión.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"client_api_key","name":"X-Qbikode-ClientApiKey"}],"title":"client_api_key"}]},"originalFileLocation":"api-reference/openapi/openapi-kubibai.yaml"},"subdomain":"kubicode","siteName":"KubiFactu Docs","title":"Anular registro de facturación en diferido - KubiFactu Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T22:36:06.566Z","originalFileLocation":"openapi-kubibai-reference/anular-registro-de-facturación-en-diferido.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Anulación de un registro de facturación en diferido.\">\u003cmeta data-mint-head name=\"application-name\" content=\"KubiFactu Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kubicode/1A_Cda9BuxxW99b3/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/kubicode/1A_Cda9BuxxW99b3/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kubicode/1A_Cda9BuxxW99b3/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kubicode/1A_Cda9BuxxW99b3/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kubicode/1A_Cda9BuxxW99b3/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kubicode/1A_Cda9BuxxW99b3/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kubicode/1A_Cda9BuxxW99b3/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kubicode/1A_Cda9BuxxW99b3/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kubicode/1A_Cda9BuxxW99b3/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Anular registro de facturación en diferido - KubiFactu Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Anulación de un registro de facturación en diferido.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"KubiFactu Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://apidocs.kubifactu.com/openapi-kubibai-reference/anular-registro-de-facturación-en-diferido\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kubicode.mintlify.app/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Anular+registro+de+facturaci%C3%B3n+en+diferido\u0026amp;description=Anulaci%C3%B3n+de+un+registro+de+facturaci%C3%B3n+en+diferido.\u0026amp;theme=01d1c3eb4c7167906a629986\u0026amp;signature=49aadcdaa80c9d60614a90b728953c7f650eeb78877b8a989a46c645e69daf8a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Anular registro de facturación en diferido - KubiFactu Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Anulación de un registro de facturación en diferido.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kubicode.mintlify.app/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Anular+registro+de+facturaci%C3%B3n+en+diferido\u0026amp;description=Anulaci%C3%B3n+de+un+registro+de+facturaci%C3%B3n+en+diferido.\u0026amp;theme=01d1c3eb4c7167906a629986\u0026amp;signature=49aadcdaa80c9d60614a90b728953c7f650eeb78877b8a989a46c645e69daf8a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/kubicode/1A_Cda9BuxxW99b3/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"KubiFactu Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D9373\">\u003clink data-mint-head rel=\"canonical\" href=\"https://apidocs.kubifactu.com/openapi-kubibai-reference/anular-registro-de-facturación-en-diferido\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/openapi-kubibai-reference/anular-registro-de-facturaci%C3%B3n-en-diferido.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://apidocs.kubifactu.com/#organization\",\"name\":\"KubiFactu Docs\",\"url\":\"https://apidocs.kubifactu.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kubicode/c_MnoHUxTdI5_O4j/logo/light.svg?fit=max\u0026auto=format\u0026n=c_MnoHUxTdI5_O4j\u0026q=85\u0026s=ed19f7b6d4dbf284f34781b6b320ac48\"}},{\"@type\":\"WebSite\",\"@id\":\"https://apidocs.kubifactu.com#website\",\"name\":\"KubiFactu Docs\",\"url\":\"https://apidocs.kubifactu.com\",\"publisher\":{\"@id\":\"https://apidocs.kubifactu.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://apidocs.kubifactu.com/openapi-kubibai-reference/anular-registro-de-facturaci%C3%B3n-en-diferido#webpage\",\"url\":\"https://apidocs.kubifactu.com/openapi-kubibai-reference/anular-registro-de-facturaci%C3%B3n-en-diferido\",\"name\":\"Anular registro de facturación en diferido\",\"description\":\"Anulación de un registro de facturación en diferido.\",\"dateModified\":\"2026-10-27T22:36:06.566Z\",\"isPartOf\":{\"@id\":\"https://apidocs.kubifactu.com#website\"},\"breadcrumb\":{\"@id\":\"https://apidocs.kubifactu.com/openapi-kubibai-reference/anular-registro-de-facturaci%C3%B3n-en-diferido#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://apidocs.kubifactu.com/openapi-kubibai-reference/anular-registro-de-facturaci%C3%B3n-en-diferido#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://apidocs.kubifactu.com/openapi-kubibai-reference/enviar-registro-de-facturaci%C3%B3n\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Anular registro de facturación en diferido\",\"item\":\"https://apidocs.kubifactu.com/openapi-kubibai-reference/anular-registro-de-facturaci%C3%B3n-en-diferido\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://apidocs.kubifactu.com/openapi-kubibai-reference/anular-registro-de-facturaci%C3%B3n-en-diferido#apireference\",\"headline\":\"Anular registro de facturación en diferido\",\"name\":\"Anular registro de facturación en diferido\",\"description\":\"Anulación de un registro de facturación en diferido.\",\"url\":\"https://apidocs.kubifactu.com/openapi-kubibai-reference/anular-registro-de-facturaci%C3%B3n-en-diferido\",\"mainEntityOfPage\":{\"@id\":\"https://apidocs.kubifactu.com/openapi-kubibai-reference/anular-registro-de-facturaci%C3%B3n-en-diferido#webpage\"},\"dateModified\":\"2026-10-27T22:36:06.566Z\",\"publisher\":{\"@id\":\"https://apidocs.kubifactu.com/#organization\"},\"isPartOf\":{\"@id\":\"https://apidocs.kubifactu.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"KubiFactu Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"KubiFactu Docs","nav":{"global":null,"tabs":[{"tab":"Inicio","pages":[{"title":"Inicio","href":"/changelog"}]},{"tab":"Referencia de la API","pages":[{"title":"Referencia de la API","href":"/openapi-reference/listar-registros-de-facturación-con-filtros"}]},{"tab":"Endpoints de KubiBAI","groups":[{"group":"API Reference","pages":[{"title":"Enviar registro de facturación","deprecated":null,"version":null,"openapi":"/api-reference/openapi/openapi-kubibai.yaml post /api/invoicing/invoices","href":"/openapi-kubibai-reference/enviar-registro-de-facturación"},{"title":"Enviar registro de facturación en diferido","deprecated":null,"version":null,"openapi":"/api-reference/openapi/openapi-kubibai.yaml post /api/invoicing/invoices/deferred","href":"/openapi-kubibai-reference/enviar-registro-de-facturación-en-diferido"},{"title":"Obtener registro de facturación","deprecated":null,"version":null,"openapi":"/api-reference/openapi/openapi-kubibai.yaml get /api/invoicing/invoices/{invoiceId}","href":"/openapi-kubibai-reference/obtener-registro-de-facturación"},{"title":"Descargar XML del registro de facturación","deprecated":null,"version":null,"openapi":"/api-reference/openapi/openapi-kubibai.yaml get /api/invoices/{invoiceId}/xml","href":"/openapi-kubibai-reference/descargar-xml-del-registro-de-facturación"},{"title":"Descargar imagen QR del registro de facturación","deprecated":null,"version":null,"openapi":"/api-reference/openapi/openapi-kubibai.yaml get /api/invoices/{invoiceId}/qr-image","href":"/openapi-kubibai-reference/descargar-imagen-qr-del-registro-de-facturación"},{"title":"Consultar registro de facturación con Veri*Factu","deprecated":null,"version":null,"openapi":"/api-reference/openapi/openapi-kubibai.yaml get /api/invoicing/invoices/{invoiceId}/query","href":"/openapi-kubibai-reference/consultar-registro-de-facturación-con-veri*factu"},{"title":"Anular registro de facturación","description":"Anulación de un registro de facturación.\n\nSi se considera que \"toda la factura\" en sí misma está mal o no debería haberse emitido, siempre que para solucionarlo no deba emplearse algún procedimiento (de rectificativa u otro) previsto en el Reglamento de Obligaciones de Facturación (ROF), se podrá anular, generando para ello un registro de facturación de anulación.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi/openapi-kubibai.yaml post /api/invoicing/invoices/{invoiceId}/cancel","href":"/openapi-kubibai-reference/anular-registro-de-facturación"},{"title":"Anular registro de facturación en diferido","deprecated":null,"version":null,"openapi":"/api-reference/openapi/openapi-kubibai.yaml post /api/invoicing/invoices/{invoiceId}/deferredcancel","href":"/openapi-kubibai-reference/anular-registro-de-facturación-en-diferido"}]}]},{"tab":"Otros endpoints","pages":[{"title":"Otros endpoints","href":"/openapi-common/buscar-registros-de-facturación"}]},{"tab":"Ejemplos","pages":[{"title":"Ejemplos","href":"/api-reference/facturas/examples/basic"}]}]},"basePath":"","title":"Anular registro de facturación en diferido - KubiFactu Docs","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}