Pide el CAE a ARCA y devuelve el comprobante autorizado.
Idempotency-Key es obligatorio. Un duplicado fiscal no se deshace, así que el default tiene que ser el seguro: si te quedás sin respuesta, reintentá con la misma clave y vas a recibir el comprobante original con Idempotent-Replay: true.
Las emisiones de una misma serie (contribuyente + punto de venta + tipo) se procesan de a una: ARCA exige que los números lleguen en orden. Si la serie está ocupada devuelve 503 SERIES_BUSY y hay que reintentar.
Un rechazo de ARCA no consume el número: la serie no queda envenenada.
externalReference es opcional y única por contribuyente y ambiente: mandá la referencia de tu sistema —el cobro, la orden— y después podés preguntar por ella con GET /v1/invoices/search?externalReference=. Si la reusás, la respuesta es 409 con el id del comprobante que ya existe. No reemplaza a Idempotency-Key: esa vence a los 7 días y cubre el reintento de un pedido; la referencia no vence y contesta por el comprobante meses después.
Scope de API key:invoice:write. Una key sin ese scope recibe 403 API_KEY_INSUFFICIENT_SCOPE, aunque el rol de quien la creó lo permita: el permiso efectivo es la intersección de los dos.
Clave elegida por el cliente, única por operación (un UUID sirve). Reintentar con la misma clave y el mismo cuerpo devuelve el comprobante original sin emitir uno nuevo. Vive 7 días. Máximo 255 caracteres.
El producto que origina el pedido (inmos, por ejemplo). Opcional, sólo con API key. Formato ^[a-z0-9-]{1,32}$; otro valor da 400 INVALID_INPUT. Queda en el comprobante, en el consumo y en el registro de pedidos.
Con una key sin producto es sólo atribución: no autoriza ni restringe nada. Con una key atada a un producto el pedido se etiqueta con el de la key aunque no mandes la cabecera, y si mandás otro valor la respuesta es 403 API_KEY_PRODUCTO_DISTINTO.
Tu identificador para este comprobante — el cobro, la orden, el ticket. Única por contribuyente y ambiente: reusarla devuelve 409EXTERNAL_REFERENCE_ALREADY_USED`` con el id del comprobante que ya existe, así que sirve para preguntar "¿ya emití el de mi cobro X?".
Se busca con GET /v1/invoices/search?externalReference=.
No vence, a diferencia de Idempotency-Key, que dura 7 días y resuelve otra cosa: el reintento de un pedido.
La referencia de tu sistema, tal como la mandaste al emitir. (5.7) null si no mandaste ninguna, que es el caso de todo lo emitido desde el panel y de todo lo anterior a la 5.7.
Es única por contribuyente y ambiente: reusarla al emitir devuelve 409 EXTERNAL_REFERENCE_ALREADY_USED, con el id del comprobante que ya existe en details. Se busca con GET /v1/invoices/search?externalReference=.
Por dónde entró el comprobante: API lo emitió una integración con API key, PANEL se cargó a mano desde el panel. Se estampa al emitir y no cambia.
null en los comprobantes emitidos antes de que se registrara el origen. No quiere decir PANEL: quiere decir que no se sabe, y ponerles un valor sería inventar el dato.
El producto que originó el pedido, de la cabecera X-Emissa-Producto que mandó quien emitió. Se estampa al emitir y no cambia: un reintento idempotente con otra etiqueta no lo reescribe.
null si no se mandó la cabecera, si se emitió desde el panel o si el comprobante es anterior a la etiqueta.
El tipo de comprobante según ARCA: 1 factura A, 6 factura B, 3 nota de crédito A, 8 nota de crédito B. Es el campo autoritativo; cbteTipoNombre y letra se derivan de él.
La letra, que sale de cbteTipo. Depende de la condición frente al IVA de emisor y receptor: entre responsables inscriptos es A, a consumidor final es B.
Fecha del comprobante, YYYY-MM-DD. ARCA no acepta cualquier fecha: tiene una ventana alrededor del día de hoy y exige que la numeración sea cronológica dentro del punto de venta.
La etiqueta de saleCondition, que es la que va impresa en el comprobante. null cuando no se informó, y también cuando el valor guardado no está en el catálogo.
En qué quedó. AUTHORIZED es el único con validez fiscal.REJECTED: ARCA lo rechazó y no hay CAE. PENDING y UNKNOWN: no se sabe si ARCA lo autorizó —se cortó la comunicación— y hay que reconciliar con POST /v1/invoices/{id}/reconcile antes de reintentar, o se emite dos veces. CANCELLED: se anuló con una nota de crédito.
Hasta cuándo vale el CAE, YYYY-MM-DD. Es la fecha límite para entregar el comprobante al receptor, no para emitirlo: pasada esa fecha el comprobante sigue siendo válido pero se entregó tarde.
Por qué ARCA rechazó el comprobante. Sólo si status es REJECTED; null en cualquier otro estado. Es un rechazo fiscal, no un error de Emissa: ARCA contestó y dijo que no. Los textos son los de ARCA, literales, y sirven para que quien emite corrija el dato y reintente.
Con la misma forma que details.arca del error ARCA_WSFEV1_REJECTED y que data.rechazoArca de invoice.resolved. Un REJECTED con las dos listas vacías es un comprobante que el reconciliar no encontró en ARCA.
Crudo de la respuesta de ARCA. Diagnóstico, no contractual.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Emissa","description":"Infraestructura de emisión de comprobantes electrónicos ARCA.","colors":{"primary":"#0c0cc8","light":"#f6f6f9","dark":"#0c0cc8"},"logo":{"light":"https://mintcdn.com/emissa/54zD7qivv8TCTuUU/images/marca/navigation-positive-on-white.svg?fit=max\u0026auto=format\u0026n=54zD7qivv8TCTuUU\u0026q=85\u0026s=31720f0a4e045e64fd37cff5a02df0d4","dark":"https://mintcdn.com/emissa/54zD7qivv8TCTuUU/images/marca/navigation-inverse-on-blue.svg?fit=max\u0026auto=format\u0026n=54zD7qivv8TCTuUU\u0026q=85\u0026s=94c73488d90524c9d870ce2e88cc0f09","href":"https://www.emissa.com.ar"},"favicon":"https://mintcdn.com/emissa/54zD7qivv8TCTuUU/images/marca/isotipo-small-positive.svg?fit=max\u0026auto=format\u0026n=54zD7qivv8TCTuUU\u0026q=85\u0026s=a94dd93de76510c2799744fe81825e31","appearance":{"default":"light","strict":false},"navbar":{"links":[{"href":"https://www.emissa.com.ar/panel","label":"Panel"}],"primary":{"type":"button","label":"Empezar gratis","href":"https://www.emissa.com.ar/register"}},"footer":{"socials":{"website":"https://www.emissa.com.ar"}},"search":{"prompt":"Buscar en la documentación…"},"contextual":{"options":["copy","view"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"emissa","hasAudioNarration":false,"actualSubdomain":"emissa","customDomains":["www.emissa.com.ar"],"gitSource":{"type":"github","owner":"defineit-ar","repo":"emissa","deployBranch":"master","contentDirectory":"apps/web/src/content","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ad7da6b81a20d9693c12bb3","collectionId":"6fe54883-a619-4bdc-8c5e-d410543096e4","liveDeploymentHistoryId":"6ad7da6b81a20d9693c12bb3","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ad7da6b81a20d9693c12bb3","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Referencia de la API","count":20},{"language":"default","tag":"Guías","count":14},{"language":"default","tag":"Comprobantes","count":8},{"language":"default","tag":"Contribuyentes","count":7},{"language":"default","tag":"Empezar","count":5},{"language":"default","tag":"Integrar","count":4},{"language":"default","tag":"Credenciales ARCA","count":3},{"language":"default","tag":"Planes y cobro","count":2},{"language":"default","tag":"Referencia de consulta","count":2},{"language":"default","tag":"Usar el panel","count":1}],"searchSettings":{"showContentSnippets":true,"isFiltersEnabled":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","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}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#navbar>div,div:has(>#sidebar){max-width:none}#content,#header{max-width:1100px}.dgm{margin:1.75rem 0;width:100%}.dgm img{border-radius:14px;height:auto;width:100%}.dgm-cap{color:#5a6072;font-size:.8125rem;line-height:1.45;margin:.75rem 0 0;text-align:center}.dgm img.dgm-claro{display:block}.dark .dgm img.dgm-claro,.dgm img.dgm-oscuro{display:none}.dark .dgm-cap{color:#9aa0b0}.dark .dgm img.dgm-oscuro{display:block}"}],"page":{"pagePath":"api-reference/comprobantes/emitir-un-comprobante","slug":"/api-reference/comprobantes/emitir-un-comprobante","pageMetadata":{"title":"Emitir un comprobante","description":"Pide el CAE a ARCA y devuelve el comprobante autorizado.\n\n**`Idempotency-Key` es obligatorio.** Un duplicado fiscal no se deshace, así que el default tiene que ser el seguro: si te quedás sin respuesta, reintentá con **la misma clave** y vas a recibir el comprobante original con `Idempotent-Replay: true`.\n\nLas emisiones de una misma serie (contribuyente + punto de venta + tipo) se procesan **de a una**: ARCA exige que los números lleguen en orden. Si la serie está ocupada devuelve `503 SERIES_BUSY` y hay que reintentar.\n\nUn rechazo de ARCA **no consume el número**: la serie no queda envenenada.\n\n`externalReference` es opcional y **única por contribuyente y ambiente**: mandá la referencia de tu sistema —el cobro, la orden— y después podés preguntar por ella con `GET /v1/invoices/search?externalReference=`. Si la reusás, la respuesta es 409 con el id del comprobante que ya existe. **No reemplaza a `Idempotency-Key`**: esa vence a los 7 días y cubre el reintento de un pedido; la referencia no vence y contesta por el comprobante meses después.\n\n**Scope de API key:** `invoice:write`. Una key sin ese scope recibe `403 API_KEY_INSUFFICIENT_SCOPE`, aunque el rol de quien la creó lo permita: el permiso efectivo es la **intersección** de los dos.","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json post /v1/invoices/authorize","href":"/api-reference/comprobantes/emitir-un-comprobante","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Pide el CAE a ARCA y devuelve el comprobante autorizado.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsxs(_components.strong, {\n children: [_jsx(_components.code, {\n children: \"Idempotency-Key\"\n }), \" es obligatorio.\"]\n }), \" Un duplicado fiscal no se deshace, así que el default tiene que ser el seguro: si te quedás sin respuesta, reintentá con \", _jsx(_components.strong, {\n children: \"la misma clave\"\n }), \" y vas a recibir el comprobante original con \", _jsx(_components.code, {\n children: \"Idempotent-Replay: true\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Las emisiones de una misma serie (contribuyente + punto de venta + tipo) se procesan \", _jsx(_components.strong, {\n children: \"de a una\"\n }), \": ARCA exige que los números lleguen en orden. Si la serie está ocupada devuelve \", _jsx(_components.code, {\n children: \"503 SERIES_BUSY\"\n }), \" y hay que reintentar.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Un rechazo de ARCA \", _jsx(_components.strong, {\n children: \"no consume el número\"\n }), \": la serie no queda envenenada.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"externalReference\"\n }), \" es opcional y \", _jsx(_components.strong, {\n children: \"única por contribuyente y ambiente\"\n }), \": mandá la referencia de tu sistema —el cobro, la orden— y después podés preguntar por ella con \", _jsx(_components.code, {\n children: \"GET /v1/invoices/search?externalReference=\"\n }), \". Si la reusás, la respuesta es 409 con el id del comprobante que ya existe. \", _jsxs(_components.strong, {\n children: [\"No reemplaza a \", _jsx(_components.code, {\n children: \"Idempotency-Key\"\n })]\n }), \": esa vence a los 7 días y cubre el reintento de un pedido; la referencia no vence y contesta por el comprobante meses después.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Scope de API key:\"\n }), \" \", _jsx(_components.code, {\n children: \"invoice:write\"\n }), \". Una key sin ese scope recibe \", _jsx(_components.code, {\n children: \"403 API_KEY_INSUFFICIENT_SCOPE\"\n }), \", aunque el rol de quien la creó lo permita: el permiso efectivo es la \", _jsx(_components.strong, {\n children: \"intersección\"\n }), \" de los dos.\"]\n })]\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":{"config":{},"pageMetadata":{"title":"Emitir un comprobante","description":"Pide el CAE a ARCA y devuelve el comprobante autorizado.\n\n**`Idempotency-Key` es obligatorio.** Un duplicado fiscal no se deshace, así que el default tiene que ser el seguro: si te quedás sin respuesta, reintentá con **la misma clave** y vas a recibir el comprobante original con `Idempotent-Replay: true`.\n\nLas emisiones de una misma serie (contribuyente + punto de venta + tipo) se procesan **de a una**: ARCA exige que los números lleguen en orden. Si la serie está ocupada devuelve `503 SERIES_BUSY` y hay que reintentar.\n\nUn rechazo de ARCA **no consume el número**: la serie no queda envenenada.\n\n`externalReference` es opcional y **única por contribuyente y ambiente**: mandá la referencia de tu sistema —el cobro, la orden— y después podés preguntar por ella con `GET /v1/invoices/search?externalReference=`. Si la reusás, la respuesta es 409 con el id del comprobante que ya existe. **No reemplaza a `Idempotency-Key`**: esa vence a los 7 días y cubre el reintento de un pedido; la referencia no vence y contesta por el comprobante meses después.\n\n**Scope de API key:** `invoice:write`. Una key sin ese scope recibe `403 API_KEY_INSUFFICIENT_SCOPE`, aunque el rol de quien la creó lo permita: el permiso efectivo es la **intersección** de los dos.","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json post /v1/invoices/authorize","href":"/api-reference/comprobantes/emitir-un-comprobante","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Pide el CAE a ARCA y devuelve el comprobante autorizado.\n\n**`Idempotency-Key` es obligatorio.** Un duplicado fiscal no se deshace, así que el default tiene que ser el seguro: si te quedás sin respuesta, reintentá con **la misma clave** y vas a recibir el comprobante original con `Idempotent-Replay: true`.\n\nLas emisiones de una misma serie (contribuyente + punto de venta + tipo) se procesan **de a una**: ARCA exige que los números lleguen en orden. Si la serie está ocupada devuelve `503 SERIES_BUSY` y hay que reintentar.\n\nUn rechazo de ARCA **no consume el número**: la serie no queda envenenada.\n\n`externalReference` es opcional y **única por contribuyente y ambiente**: mandá la referencia de tu sistema —el cobro, la orden— y después podés preguntar por ella con `GET /v1/invoices/search?externalReference=`. Si la reusás, la respuesta es 409 con el id del comprobante que ya existe. **No reemplaza a `Idempotency-Key`**: esa vence a los 7 días y cubre el reintento de un pedido; la referencia no vence y contesta por el comprobante meses después.\n\n**Scope de API key:** `invoice:write`. Una key sin ese scope recibe `403 API_KEY_INSUFFICIENT_SCOPE`, aunque el rol de quien la creó lo permita: el permiso efectivo es la **intersección** de los dos.","operationId":"InvoicesController_authorize","parameters":["b870c082-3136-4da9-8508-719f2d9c2f65","93976250-3abb-493b-b07d-2d04f98e5aeb"],"requestBody":"ecaa1bad-4c2a-4060-8c5d-5ced68528bb4","responses":{"201":"764e8665-155e-4ad3-a47e-d3bdecf4b728","400":"9cc3d18d-4f6a-4194-be9d-bffee6d69698","401":"997c1236-3596-42da-8874-d8caad408a00","403":"fe2abaa4-64af-43ef-8967-0f26975a4aee","404":"aa72c632-dcb5-4f6d-9ae1-e73daea7d8ba","409":"4dacae27-bce6-44a4-a8e6-e092c8205f6c","422":"9d367c74-8795-4852-ae50-ba967082d451","429":"4fda9736-1ed9-4ca3-b580-7fd25fa430d8","500":"5a2f4a51-f77f-48fc-97b6-0f135d2b54ba","502":"5e7aa930-44fd-437b-8e65-6dd61d9f8c50","503":"291b6994-2037-4c3b-9021-929a8dc35ddb"},"security":["e625d04e-f349-41fa-9b73-de965b5c4229","ecfe63b7-9368-4a7a-bc99-20aab5e79ef1"],"summary":"Emitir un comprobante","tags":["Comprobantes"],"x-scopes":["invoice:write"],"method":"post","type":"path","servers":["4c3ac454-1611-42e6-9972-fdce75c66d95","59c0321e-fc8e-4fd2-8484-7481e01419e1"],"path":"/v1/invoices/authorize","baseUrlOptions":["https://api.emissa.com.ar","http://localhost:3001"],"title":"Emitir un comprobante","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"b870c082-3136-4da9-8508-719f2d9c2f65":{"name":"Idempotency-Key","in":"header","description":"Clave elegida por el cliente, única por operación (un UUID sirve). Reintentar con la misma clave y el mismo cuerpo devuelve el comprobante original **sin emitir uno nuevo**. Vive 7 días. Máximo 255 caracteres.","required":true,"schema":{"type":"string","maxLength":255,"example":"pedido-8421","isRequired":true,"description":"Clave elegida por el cliente, única por operación (un UUID sirve). Reintentar con la misma clave y el mismo cuerpo devuelve el comprobante original **sin emitir uno nuevo**. Vive 7 días. Máximo 255 caracteres.","uniqueKey":"","typeLabel":"string"}},"93976250-3abb-493b-b07d-2d04f98e5aeb":{"name":"X-Emissa-Producto","in":"header","description":"El producto que origina el pedido (`inmos`, por ejemplo). Opcional, sólo con API key. Formato `^[a-z0-9-]{1,32}$`; otro valor da `400 INVALID_INPUT`. Queda en el comprobante, en el consumo y en el registro de pedidos.\n\nCon una key **sin** producto es sólo atribución: no autoriza ni restringe nada. Con una key **atada a un producto** el pedido se etiqueta con el de la key aunque no mandes la cabecera, y si mandás otro valor la respuesta es `403 API_KEY_PRODUCTO_DISTINTO`.","required":false,"schema":{"type":"string","pattern":"^[a-z0-9-]{1,32}$","example":"inmos","isRequired":false,"description":"El producto que origina el pedido (`inmos`, por ejemplo). Opcional, sólo con API key. Formato `^[a-z0-9-]{1,32}$`; otro valor da `400 INVALID_INPUT`. Queda en el comprobante, en el consumo y en el registro de pedidos.\n\nCon una key **sin** producto es sólo atribución: no autoriza ni restringe nada. Con una key **atada a un producto** el pedido se etiqueta con el de la key aunque no mandes la cabecera, y si mandás otro valor la respuesta es `403 API_KEY_PRODUCTO_DISTINTO`.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"taxpayerId":{"type":"string","example":"cmfa1b2c30000","description":"Contribuyente desde el que se emite. Tiene que estar entre los que alcanza tu credencial: si no, 403 `API_KEY_INSUFFICIENT_PERMISSIONS`.","isRequired":true,"uniqueKey":"taxpayerId","typeLabel":"string"},"cbteTipo":{"type":"number","enum":[1,2,3,6,7,8,11,12,13],"example":1,"description":"`CbteTipo` de ARCA: 1 Factura A, 2 ND A, 3 NC A, 6 Factura B, 7 ND B, 8 NC B, 11 Factura C, 12 ND C, 13 NC C.","isRequired":true,"uniqueKey":"cbteTipo","typeLabel":"enum\u003cnumber>"},"concepto":{"type":"number","enum":[1,2,3],"example":1,"description":"1 productos, 2 servicios, 3 ambos. Con 2 o 3, `serviceFrom`, `serviceTo` y `paymentDueDate` **son obligatorios**.","isRequired":true,"uniqueKey":"concepto","typeLabel":"enum\u003cnumber>"},"receiverDocTipo":{"type":"number","enum":[80,86,96,99],"example":80,"description":"80 CUIT, 86 CUIL, 96 DNI, 99 consumidor final.","isRequired":true,"uniqueKey":"receiverDocTipo","typeLabel":"enum\u003cnumber>"},"receiverDocNro":{"type":"string","maxLength":20,"example":"30500010912","description":"Consumidor final sin identificar va con `\"0\"`.","isRequired":true,"uniqueKey":"receiverDocNro","typeLabel":"string"},"receiverName":{"type":"string","maxLength":255,"example":"Cliente SA","description":"Razón social del receptor. Obligatoria en Factura A y no se puede inventar.","isRequired":true,"uniqueKey":"receiverName","typeLabel":"string"},"receiverVatConditionId":{"type":"number","enum":[1,4,5,6,7,8,9,10,13,15,16],"example":1,"description":"`CondicionIVAReceptorId`, **obligatorio desde la RG 5616**: 1 RI, 4 exento, 5 consumidor final, 6 monotributo, 7 no categorizado, 8 proveedor del exterior, 9 cliente del exterior, 10 liberado ley 19.640, 13 monotributista social, 15 no alcanzado, 16 trabajador independiente promovido.","isRequired":true,"uniqueKey":"receiverVatConditionId","typeLabel":"enum\u003cnumber>"},"issueDate":{"type":"string","format":"date","example":"2026-07-26","description":"`CbteFch`, en `yyyy-mm-dd`. **Es un día, no un instante.** ARCA sólo acepta una ventana alrededor de hoy y exige que la serie no retroceda.","isRequired":true,"uniqueKey":"issueDate","typeLabel":"string\u003cdate>"},"items":{"minItems":1,"maxItems":250,"description":"Hasta 250, que es el máximo que `FECAESolicitar` admite por pedido.","type":"array","items":{"type":"object","properties":{"description":{"type":"string","example":"Servicio de consultoría","maxLength":255,"description":"Qué se vendió. **Va impreso en el comprobante y no viaja a ARCA**: el WSFEv1 sólo recibe los totales.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].description","typeLabel":"string"},"unit":{"type":"string","enum":["UNIDADES"],"example":"UNIDADES","description":"Unidad de medida. Hoy sólo `UNIDADES`; el catálogo completo de ARCA tiene más y se irá abriendo con valores nuevos, que son compatibles hacia adelante.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].unit","typeLabel":"enum\u003cstring>"},"quantity":{"type":"number","example":1,"description":"Hasta 6 decimales.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].quantity","typeLabel":"number"},"unitPrice":{"type":"number","example":1000,"description":"Precio unitario **sin IVA**. Hasta 6 decimales.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].unitPrice","typeLabel":"number"},"tratamiento":{"type":"string","enum":["GRAVADO","NO_GRAVADO","EXENTO"],"default":"GRAVADO","description":"Exento y no gravado son cosas distintas y suman a importes distintos del comprobante.","uniqueKey":"\\items.items.[INDEX].tratamiento","typeLabel":"enum\u003cstring>"},"vatRateId":{"type":"number","enum":[3,4,5,6,8,9],"example":5,"description":"**Obligatorio si `tratamiento` es `GRAVADO`.** Es el `Id` del catálogo, **no el porcentaje**: 3=0%, 4=10,5%, 5=21%, 6=27%, 8=5%, 9=2,5%. WSFEv1 no recibe porcentajes.","uniqueKey":"\\items.items.[INDEX].vatRateId","typeLabel":"enum\u003cnumber>"}},"required":["description","unit","quantity","unitPrice"],"uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"},"externalReference":{"type":"string","maxLength":64,"example":"COBRO-8842","pattern":"^[A-Za-z0-9._:-]{1,64}$","description":"Tu identificador para este comprobante — el cobro, la orden, el ticket. **Única por contribuyente y ambiente**: reusarla devuelve `409 `EXTERNAL_REFERENCE_ALREADY_USED`` con el id del comprobante que ya existe, así que sirve para preguntar \"¿ya emití el de mi cobro X?\".\n\nSe busca con `GET /v1/invoices/search?externalReference=`.\n\nNo vence, a diferencia de `Idempotency-Key`, que dura 7 días y resuelve otra cosa: el reintento de **un** pedido.","uniqueKey":"externalReference","typeLabel":"string"},"receiverAddress":{"type":"string","maxLength":255,"example":"Av. Santa Fe 1234, CABA","description":"Domicilio del receptor, para el comprobante impreso. **No viaja a ARCA** y no afecta la autorización.","uniqueKey":"receiverAddress","typeLabel":"string"},"currency":{"type":"string","maxLength":3,"default":"PES","example":"PES","description":"`MonId`. Con `PES` la cotización tiene que ser 1.","uniqueKey":"currency","typeLabel":"string"},"exchangeRate":{"type":"number","example":1,"description":"`MonCotiz`.","uniqueKey":"exchangeRate","typeLabel":"number"},"saleCondition":{"type":"string","enum":["CONTADO","CUENTA_CORRIENTE","TARJETA_DE_CREDITO","TARJETA_DE_DEBITO","CHEQUE","TRANSFERENCIA","OTRA"],"example":"CONTADO","description":"Condición de venta, **impresa en el comprobante**. No viaja a ARCA: `FECAESolicitar` no tiene campo para esto, y la RG 1415 lo exige en el papel.\n\nSi no se manda, el comprobante sale sin esa línea — no se supone `CONTADO`, porque suponerlo imprimiría un dato falso sobre una venta a plazo.","uniqueKey":"saleCondition","typeLabel":"enum\u003cstring>"},"serviceFrom":{"type":"string","format":"date","example":"2026-07-01","description":"Obligatorio con `concepto` 2 o 3.","uniqueKey":"serviceFrom","typeLabel":"string\u003cdate>"},"serviceTo":{"type":"string","format":"date","example":"2026-07-31","description":"Obligatorio con `concepto` 2 o 3.","uniqueKey":"serviceTo","typeLabel":"string\u003cdate>"},"paymentDueDate":{"type":"string","format":"date","example":"2026-08-10","description":"Vencimiento del pago. Obligatorio con `concepto` 2 o 3.","uniqueKey":"paymentDueDate","typeLabel":"string\u003cdate>"},"taxes":{"maxItems":20,"description":"Percepciones, impuestos internos, municipales. **Nunca IVA.**","type":"array","items":{"type":"object","properties":{"taxId":{"type":"number","enum":[1,2,3,4,6,7,8,9,99],"example":2,"description":"`Id` del catálogo de tributos: 1 nacionales, 2 provinciales, 3 municipales, 4 internos, 99 otros. **El IVA nunca va acá** — va en `items[].vatRateId`.","isRequired":true,"uniqueKey":"taxes.items.[INDEX].taxId","typeLabel":"enum\u003cnumber>"},"baseAmount":{"type":"number","example":1000,"description":"Sobre cuánto se calcula el tributo. **No tiene por qué ser el neto del comprobante**: Ingresos Brutos suele calcularse sobre otra base.","isRequired":true,"uniqueKey":"taxes.items.[INDEX].baseAmount","typeLabel":"number"},"amount":{"type":"number","example":30,"description":"El importe del tributo. **Es el que suma al total**, y ARCA lo toma tal cual: no lo recalcula a partir de `baseAmount` y `rate`.","isRequired":true,"uniqueKey":"taxes.items.[INDEX].amount","typeLabel":"number"},"description":{"type":"string","maxLength":255,"example":"IIBB CABA","description":"Cómo se identifica el tributo en el comprobante impreso. Si no se manda, sale la etiqueta genérica del catálogo.","uniqueKey":"taxes.items.[INDEX].description","typeLabel":"string"},"rate":{"type":"number","example":3,"description":"Alícuota, hasta 4 decimales.","uniqueKey":"taxes.items.[INDEX].rate","typeLabel":"number"}},"required":["taxId","baseAmount","amount"],"uniqueKey":"taxes.items.[INDEX]","typeLabel":"object"},"uniqueKey":"taxes","typeLabel":"object[]"},"associations":{"maxItems":20,"description":"`CbtesAsoc` — comprobantes que éste referencia. Es lo que convierte una nota de crédito en la anulación de una factura concreta.","type":"array","items":{"type":"object","properties":{"cbteTipo":{"type":"number","enum":[1,2,3,6,7,8,11,12,13],"example":1,"description":"El `CbteTipo` del comprobante asociado — el de la factura, no el de la nota de crédito que se está emitiendo.","isRequired":true,"uniqueKey":"associations.items.[INDEX].cbteTipo","typeLabel":"enum\u003cnumber>"},"salePoint":{"type":"number","example":1,"description":"El punto de venta del comprobante al que se asocia.","isRequired":true,"uniqueKey":"associations.items.[INDEX].salePoint","typeLabel":"number"},"number":{"type":"number","example":7,"description":"Su número correlativo, sin el punto de venta adelante.","isRequired":true,"uniqueKey":"associations.items.[INDEX].number","typeLabel":"number"},"cuit":{"type":"string","maxLength":11,"description":"CUIT del emisor, **sólo** si el comprobante asociado es de otro.","uniqueKey":"associations.items.[INDEX].cuit","typeLabel":"string"},"issueDate":{"type":"string","example":"2026-07-20","format":"date","description":"Fecha del comprobante asociado, `YYYY-MM-DD`. Opcional: ARCA lo encuentra igual con tipo, punto de venta y número.","uniqueKey":"associations.items.[INDEX].issueDate","typeLabel":"string\u003cdate>"}},"required":["cbteTipo","salePoint","number"],"uniqueKey":"associations.items.[INDEX]","typeLabel":"object"},"uniqueKey":"associations","typeLabel":"object[]"}},"required":["taxpayerId","cbteTipo","concepto","receiverDocTipo","receiverDocNro","receiverName","receiverVatConditionId","issueDate","items"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"taxpayerId":"cmfa1b2c30000","cbteTipo":1,"concepto":1,"receiverDocTipo":80,"receiverDocNro":"30500010912","receiverName":"Cliente SA","receiverVatConditionId":1,"issueDate":"2026-07-26","items":[{"description":"Servicio de consultoría","unit":"UNIDADES","quantity":1,"unitPrice":1000,"tratamiento":"GRAVADO","vatRateId":5}],"externalReference":"COBRO-8842","receiverAddress":"Av. Santa Fe 1234, CABA","currency":"PES","exchangeRate":1,"saleCondition":"CONTADO","serviceFrom":"2026-07-01","serviceTo":"2026-07-31","paymentDueDate":"2026-08-10","taxes":[{"taxId":2,"baseAmount":1000,"amount":30,"description":"IIBB CABA","rate":3}],"associations":[{"cbteTipo":1,"salePoint":1,"number":7,"cuit":"\u003cstring>","issueDate":"2026-07-20"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"764e8665-155e-4ad3-a47e-d3bdecf4b728":{"description":"Comprobante emitido, o el original si fue un reintento.","headers":{"X-Request-Id":{"description":"Identificador del pedido. Va en TODA respuesta. Si lo mandás en el pedido y respeta `[A-Za-z0-9._:-]{1,128}`, se te devuelve el mismo; si no, se genera uno. Es lo que hay que citar en un ticket.","schema":{"type":"string"}},"Idempotent-Replay":{"description":"`true` si la respuesta es la del pedido original y no se emitió nada nuevo. `false` en la primera ejecución.","schema":{"type":"boolean"}},"X-Cuota-Limite":{"description":"Comprobantes incluidos en el período, o `ilimitado`. En el plan Plataforma es dinámico: 150 por cada CUIT que emitió.","schema":{"type":"string"}},"X-Cuota-Usada":{"description":"Comprobantes autorizados por ARCA en el período, este incluido.","schema":{"type":"integer"}},"X-Cuota-Restante":{"description":"Nunca negativo. **Llegar a cero no bloquea nada**: la cuota es blanda y se sigue emitiendo. No lo confundas con `X-RateLimit-Remaining`, que sí es duro.","schema":{"type":"string"}},"X-Cuota-Reinicio":{"description":"ISO 8601 UTC del primer instante del período siguiente.","schema":{"type":"string","format":"date-time"}},"X-Cuota-Excedente-Unitario":{"description":"Sólo si se excedió la cuota: a qué precio se factura cada comprobante por encima del límite.","schema":{"type":"string","example":"ARS 25.00"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"cmft8x2k30001","description":"Id interno de Emissa. **No es el número del comprobante**: es lo que se usa en `GET /v1/invoices/{id}` y en la anulación.","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"taxpayerId":{"type":"string","example":"cmfa1b2c30000","description":"Bajo qué contribuyente se emitió.","isRequired":true,"uniqueKey":"taxpayerId","typeLabel":"string"},"externalReference":{"oneOf":[{"type":"string","example":"COBRO-8842","description":"La referencia de **tu** sistema, tal como la mandaste al emitir. (5.7) `null` si no mandaste ninguna, que es el caso de todo lo emitido desde el panel y de todo lo anterior a la 5.7.\n\nEs **única por contribuyente y ambiente**: reusarla al emitir devuelve 409 `EXTERNAL_REFERENCE_ALREADY_USED`, con el id del comprobante que ya existe en `details`. Se busca con `GET /v1/invoices/search?externalReference=`.","isRequired":true,"uniqueKey":"externalReference.oneOf.0","typeLabel":"string"},{"type":"null","example":"COBRO-8842","description":"La referencia de **tu** sistema, tal como la mandaste al emitir. (5.7) `null` si no mandaste ninguna, que es el caso de todo lo emitido desde el panel y de todo lo anterior a la 5.7.\n\nEs **única por contribuyente y ambiente**: reusarla al emitir devuelve 409 `EXTERNAL_REFERENCE_ALREADY_USED`, con el id del comprobante que ya existe en `details`. Se busca con `GET /v1/invoices/search?externalReference=`.","isRequired":true,"uniqueKey":"externalReference.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"externalReference","typeLabel":"string | null"},"environment":{"type":"string","enum":["HOMOLOGACION","PRODUCCION"],"example":"HOMOLOGACION","description":"Contra qué ambiente de ARCA se emitió. Un comprobante de `HOMOLOGACION` **no tiene validez fiscal**, aunque traiga CAE.","isRequired":true,"uniqueKey":"environment","typeLabel":"enum\u003cstring>"},"origin":{"oneOf":[{"type":"string","enum":["API","PANEL"],"example":"API","description":"Por dónde entró el comprobante: `API` lo emitió una integración con API key, `PANEL` se cargó a mano desde el panel. Se estampa al emitir y no cambia.\n\n`null` en los comprobantes emitidos antes de que se registrara el origen. **No quiere decir `PANEL`**: quiere decir que no se sabe, y ponerles un valor sería inventar el dato.","isRequired":true,"uniqueKey":"origin.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["API","PANEL"],"example":"API","description":"Por dónde entró el comprobante: `API` lo emitió una integración con API key, `PANEL` se cargó a mano desde el panel. Se estampa al emitir y no cambia.\n\n`null` en los comprobantes emitidos antes de que se registrara el origen. **No quiere decir `PANEL`**: quiere decir que no se sabe, y ponerles un valor sería inventar el dato.","isRequired":true,"uniqueKey":"origin.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"origin","typeLabel":"enum\u003cstring> | null"},"producto":{"oneOf":[{"type":"string","example":"inmos","description":"El producto que originó el pedido, de la cabecera `X-Emissa-Producto` que mandó quien emitió. Se estampa al emitir y **no cambia**: un reintento idempotente con otra etiqueta no lo reescribe.\n\n`null` si no se mandó la cabecera, si se emitió desde el panel o si el comprobante es anterior a la etiqueta.","isRequired":true,"uniqueKey":"producto.oneOf.0","typeLabel":"string"},{"type":"null","example":"inmos","description":"El producto que originó el pedido, de la cabecera `X-Emissa-Producto` que mandó quien emitió. Se estampa al emitir y **no cambia**: un reintento idempotente con otra etiqueta no lo reescribe.\n\n`null` si no se mandó la cabecera, si se emitió desde el panel o si el comprobante es anterior a la etiqueta.","isRequired":true,"uniqueKey":"producto.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"producto","typeLabel":"string | null"},"cbteTipo":{"type":"number","example":1,"description":"El tipo de comprobante según ARCA: `1` factura A, `6` factura B, `3` nota de crédito A, `8` nota de crédito B. **Es el campo autoritativo**; `cbteTipoNombre` y `letra` se derivan de él.","isRequired":true,"uniqueKey":"cbteTipo","typeLabel":"number"},"cbteTipoNombre":{"oneOf":[{"type":"string","example":"FACTURA_A","description":"La etiqueta de `cbteTipo`. `null` si el código no está en el catálogo local — el número igual es correcto.","isRequired":true,"uniqueKey":"cbteTipoNombre.oneOf.0","typeLabel":"string"},{"type":"null","example":"FACTURA_A","description":"La etiqueta de `cbteTipo`. `null` si el código no está en el catálogo local — el número igual es correcto.","isRequired":true,"uniqueKey":"cbteTipoNombre.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cbteTipoNombre","typeLabel":"string | null"},"letra":{"oneOf":[{"type":"string","example":"A","description":"La letra, que sale de `cbteTipo`. Depende de la condición frente al IVA de emisor y receptor: entre responsables inscriptos es A, a consumidor final es B.","isRequired":true,"uniqueKey":"letra.oneOf.0","typeLabel":"string"},{"type":"null","example":"A","description":"La letra, que sale de `cbteTipo`. Depende de la condición frente al IVA de emisor y receptor: entre responsables inscriptos es A, a consumidor final es B.","isRequired":true,"uniqueKey":"letra.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"letra","typeLabel":"string | null"},"concepto":{"type":"number","example":1,"description":"Qué se factura: `1` productos, `2` servicios, `3` ambos. **Con 2 o 3 ARCA exige `servicePeriod`**, y con 1 lo rechaza.","isRequired":true,"uniqueKey":"concepto","typeLabel":"number"},"conceptoNombre":{"oneOf":[{"type":"string","example":"PRODUCTOS","description":"La etiqueta de `concepto`.","isRequired":true,"uniqueKey":"conceptoNombre.oneOf.0","typeLabel":"string"},{"type":"null","example":"PRODUCTOS","description":"La etiqueta de `concepto`.","isRequired":true,"uniqueKey":"conceptoNombre.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"conceptoNombre","typeLabel":"string | null"},"salePoint":{"type":"number","example":1,"description":"El punto de venta con el que se emitió. Cada punto de venta lleva su propia numeración correlativa.","isRequired":true,"uniqueKey":"salePoint","typeLabel":"number"},"number":{"type":"number","example":7,"description":"El número correlativo dentro del punto de venta. Lo asigna Emissa pidiéndole a ARCA el último autorizado: **no lo elige el cliente**.","isRequired":true,"uniqueKey":"number","typeLabel":"number"},"comprobante":{"type":"string","example":"0001-00000007","description":"Punto de venta y número, como se lee un comprobante argentino","isRequired":true,"uniqueKey":"comprobante","typeLabel":"string"},"issueDate":{"oneOf":[{"type":"string","example":"2026-07-26","description":"Fecha del comprobante, `YYYY-MM-DD`. **ARCA no acepta cualquier fecha**: tiene una ventana alrededor del día de hoy y exige que la numeración sea cronológica dentro del punto de venta.","isRequired":true,"uniqueKey":"issueDate.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-07-26","description":"Fecha del comprobante, `YYYY-MM-DD`. **ARCA no acepta cualquier fecha**: tiene una ventana alrededor del día de hoy y exige que la numeración sea cronológica dentro del punto de venta.","isRequired":true,"uniqueKey":"issueDate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"issueDate","typeLabel":"string | null"},"emitter":{"type":"object","description":"Quién emite, congelado al momento de emitir.","required":["cuit","name","vatStatus","address","grossIncomeTax","activityStartDate"],"properties":{"cuit":{"type":"string","example":"20437136697","description":"El CUIT que emite, sin guiones.","isRequired":true,"uniqueKey":"emitter.cuit","typeLabel":"string"},"name":{"type":"string","example":"Estudio Contable SRL","description":"Razón social, como va impresa.","isRequired":true,"uniqueKey":"emitter.name","typeLabel":"string"},"vatStatus":{"type":"string","example":"RESPONSABLE_INSCRIPTO","description":"Condición frente al IVA del emisor. Junto con la del receptor decide qué letra de comprobante corresponde.","isRequired":true,"uniqueKey":"emitter.vatStatus","typeLabel":"string"},"address":{"oneOf":[{"type":"string","example":"Av. Corrientes 1234, CABA","description":"Domicilio comercial. `null` si el contribuyente no lo tenía cargado al emitir: el comprobante sale igual pero **incompleto para la RG 1415**.","isRequired":true,"uniqueKey":"emitter.address.oneOf.0","typeLabel":"string"},{"type":"null","example":"Av. Corrientes 1234, CABA","description":"Domicilio comercial. `null` si el contribuyente no lo tenía cargado al emitir: el comprobante sale igual pero **incompleto para la RG 1415**.","isRequired":true,"uniqueKey":"emitter.address.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"emitter.address","typeLabel":"string | null"},"grossIncomeTax":{"oneOf":[{"type":"string","example":"901-123456-01","description":"Ingresos Brutos. Obligatorio en el papel (RG 1415).","isRequired":true,"uniqueKey":"emitter.grossIncomeTax.oneOf.0","typeLabel":"string"},{"type":"null","example":"901-123456-01","description":"Ingresos Brutos. Obligatorio en el papel (RG 1415).","isRequired":true,"uniqueKey":"emitter.grossIncomeTax.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"emitter.grossIncomeTax","typeLabel":"string | null"},"activityStartDate":{"oneOf":[{"type":"string","example":"2020-03-01","description":"Inicio de actividades. Obligatorio en el papel (RG 1415).","isRequired":true,"uniqueKey":"emitter.activityStartDate.oneOf.0","typeLabel":"string"},{"type":"null","example":"2020-03-01","description":"Inicio de actividades. Obligatorio en el papel (RG 1415).","isRequired":true,"uniqueKey":"emitter.activityStartDate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"emitter.activityStartDate","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"emitter","typeLabel":"object"},"receiver":{"type":"object","description":"A quién se le factura, congelado al momento de emitir.","required":["docTipo","docTipoNombre","docNro","name","vatConditionId","vatConditionNombre","address"],"properties":{"docTipo":{"type":"number","example":80,"description":"80 CUIT, 86 CUIL, 96 DNI, 99 CF","isRequired":true,"uniqueKey":"receiver.docTipo","typeLabel":"number"},"docTipoNombre":{"oneOf":[{"type":"string","example":"CUIT","description":"La etiqueta de `docTipo`, para no mantener la tabla afuera.","isRequired":true,"uniqueKey":"receiver.docTipoNombre.oneOf.0","typeLabel":"string"},{"type":"null","example":"CUIT","description":"La etiqueta de `docTipo`, para no mantener la tabla afuera.","isRequired":true,"uniqueKey":"receiver.docTipoNombre.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"receiver.docTipoNombre","typeLabel":"string | null"},"docNro":{"type":"string","example":"30500010912","description":"El número del documento, sin guiones. Con `docTipo` 99 (consumidor final) va `0`.","isRequired":true,"uniqueKey":"receiver.docNro","typeLabel":"string"},"name":{"type":"string","example":"Cliente SA","description":"Nombre o razón social del receptor, como va impreso.","isRequired":true,"uniqueKey":"receiver.name","typeLabel":"string"},"vatConditionId":{"type":"number","example":1,"description":"La condición frente al IVA **del receptor**, según el catálogo de ARCA. Es lo que decide si corresponde factura A o B: a un responsable inscripto se le emite A, a un consumidor final o monotributista, B.","isRequired":true,"uniqueKey":"receiver.vatConditionId","typeLabel":"number"},"vatConditionNombre":{"oneOf":[{"type":"string","example":"IVA Responsable Inscripto","description":"La etiqueta de `vatConditionId`.","isRequired":true,"uniqueKey":"receiver.vatConditionNombre.oneOf.0","typeLabel":"string"},{"type":"null","example":"IVA Responsable Inscripto","description":"La etiqueta de `vatConditionId`.","isRequired":true,"uniqueKey":"receiver.vatConditionNombre.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"receiver.vatConditionNombre","typeLabel":"string | null"},"address":{"oneOf":[{"type":"string","example":"Av. Rivadavia 500, CABA","description":"Domicilio del receptor. Opcional.","isRequired":true,"uniqueKey":"receiver.address.oneOf.0","typeLabel":"string"},{"type":"null","example":"Av. Rivadavia 500, CABA","description":"Domicilio del receptor. Opcional.","isRequired":true,"uniqueKey":"receiver.address.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"receiver.address","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"receiver","typeLabel":"object"},"currency":{"oneOf":[{"type":"string","example":"PES","description":"Moneda según ARCA: `PES` pesos, `DOL` dólares. Con una moneda distinta de `PES` hace falta `exchangeRate`.","isRequired":true,"uniqueKey":"currency.oneOf.0","typeLabel":"string"},{"type":"null","example":"PES","description":"Moneda según ARCA: `PES` pesos, `DOL` dólares. Con una moneda distinta de `PES` hace falta `exchangeRate`.","isRequired":true,"uniqueKey":"currency.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"currency","typeLabel":"string | null"},"exchangeRate":{"type":"string","example":"1","description":"Cotización de la moneda contra el peso. **`1` cuando es `PES`**; con otra moneda es la que ARCA va a usar para convertir.","isRequired":true,"uniqueKey":"exchangeRate","typeLabel":"string"},"totals":{"type":"object","description":"Los totales. `totalAmount` tiene que cerrar exacto.","required":["netAmount","nonTaxedAmount","exemptAmount","vatAmount","otherTaxesAmount","totalAmount"],"properties":{"netAmount":{"type":"string","example":"1000.00","description":"Lo que paga IVA, **antes** del IVA. Es la base sobre la que se calcula el desglose.","isRequired":true,"uniqueKey":"totals.netAmount","typeLabel":"string"},"nonTaxedAmount":{"type":"string","example":"0.00","description":"Conceptos que **no** están alcanzados por el IVA, como una percepción que se traslada. No confundir con exento.","isRequired":true,"uniqueKey":"totals.nonTaxedAmount","typeLabel":"string"},"exemptAmount":{"type":"string","example":"0.00","description":"Lo alcanzado por el IVA pero con **exención**: libros, leche, ciertos servicios de salud. Está gravado a tasa cero, que no es lo mismo que no gravado.","isRequired":true,"uniqueKey":"totals.exemptAmount","typeLabel":"string"},"vatAmount":{"type":"string","example":"210.00","description":"El IVA total. Igual a la suma de `vatBreakdown[].vatAmount`.","isRequired":true,"uniqueKey":"totals.vatAmount","typeLabel":"string"},"otherTaxesAmount":{"type":"string","example":"0.00","description":"Todo lo que no es IVA: Ingresos Brutos, internos, tasas. Igual a la suma de `taxes[].amount`.","isRequired":true,"uniqueKey":"totals.otherTaxesAmount","typeLabel":"string"},"totalAmount":{"type":"string","example":"1210.00","description":"Lo que el receptor paga. **Suma exacta de los cinco anteriores**, y ARCA lo verifica.","isRequired":true,"uniqueKey":"totals.totalAmount","typeLabel":"string"}},"isRequired":true,"uniqueKey":"totals","typeLabel":"object"},"vatBreakdown":{"description":"El IVA por alícuota. Vacío en los comprobantes sin IVA discriminado (letra B o C).","type":"array","items":{"type":"object","properties":{"vatRateId":{"type":"number","example":5,"description":"El **id** de alícuota de ARCA, no el porcentaje: `5` es 21 %, `4` es 10,5 %, `3` es 0 %. Mandar `21` acá es el error más común, y ARCA lo rechaza porque `21` no existe como id.","isRequired":true,"uniqueKey":"vatBreakdown.items.[INDEX].vatRateId","typeLabel":"number"},"vatRatePercent":{"oneOf":[{"type":"number","example":21,"description":"El porcentaje que corresponde a ese id, para no tener que mantener la tabla del lado del cliente. `null` si el id no está en el catálogo local — el id igual es válido.","isRequired":true,"uniqueKey":"vatBreakdown.items.[INDEX].vatRatePercent.oneOf.0","typeLabel":"number"},{"type":"null","example":21,"description":"El porcentaje que corresponde a ese id, para no tener que mantener la tabla del lado del cliente. `null` si el id no está en el catálogo local — el id igual es válido.","isRequired":true,"uniqueKey":"vatBreakdown.items.[INDEX].vatRatePercent.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"vatBreakdown.items.[INDEX].vatRatePercent","typeLabel":"number | null"},"baseAmount":{"type":"string","example":"1000.00","description":"Sobre cuánto se calculó el IVA de esta alícuota.","isRequired":true,"uniqueKey":"vatBreakdown.items.[INDEX].baseAmount","typeLabel":"string"},"vatAmount":{"type":"string","example":"210.00","description":"El IVA de esta alícuota. La suma de todas da `totals.vatAmount`.","isRequired":true,"uniqueKey":"vatBreakdown.items.[INDEX].vatAmount","typeLabel":"string"}},"required":["vatRateId","vatRatePercent","baseAmount","vatAmount"],"uniqueKey":"vatBreakdown.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"vatBreakdown","typeLabel":"object[]"},"taxes":{"description":"Los tributos que no son IVA. Vacío si no hay ninguno.","type":"array","items":{"type":"object","properties":{"taxId":{"type":"number","example":2,"description":"El código de tributo de ARCA. `1` nacional, `2` provincial, `3` municipal, `4` interno, `99` otro.","isRequired":true,"uniqueKey":"taxes.items.[INDEX].taxId","typeLabel":"number"},"description":{"oneOf":[{"type":"string","example":"Ingresos Brutos CABA","description":"Texto libre para identificarlo en el comprobante impreso.","isRequired":true,"uniqueKey":"taxes.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","example":"Ingresos Brutos CABA","description":"Texto libre para identificarlo en el comprobante impreso.","isRequired":true,"uniqueKey":"taxes.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"taxes.items.[INDEX].description","typeLabel":"string | null"},"baseAmount":{"type":"string","example":"1000.00","description":"Sobre cuánto se calculó.","isRequired":true,"uniqueKey":"taxes.items.[INDEX].baseAmount","typeLabel":"string"},"rate":{"oneOf":[{"type":"string","example":"3.0000","description":"La alícuota aplicada, en porcentaje y con hasta 4 decimales. `null` cuando el tributo es un monto fijo y no sale de un porcentaje.","isRequired":true,"uniqueKey":"taxes.items.[INDEX].rate.oneOf.0","typeLabel":"string"},{"type":"null","example":"3.0000","description":"La alícuota aplicada, en porcentaje y con hasta 4 decimales. `null` cuando el tributo es un monto fijo y no sale de un porcentaje.","isRequired":true,"uniqueKey":"taxes.items.[INDEX].rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"taxes.items.[INDEX].rate","typeLabel":"string | null"},"amount":{"type":"string","example":"30.00","description":"El importe del tributo. Suma a `totals.otherTaxesAmount`.","isRequired":true,"uniqueKey":"taxes.items.[INDEX].amount","typeLabel":"string"}},"required":["taxId","description","baseAmount","rate","amount"],"uniqueKey":"taxes.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"taxes","typeLabel":"object[]"},"servicePeriod":{"oneOf":[{"type":"object","description":"`null` en los comprobantes de productos (`concepto` 1).","required":["from","to","paymentDueDate"],"properties":{"from":{"oneOf":[{"type":"string","example":"2026-07-01","description":"Desde cuándo se prestó el servicio, `YYYY-MM-DD`.","isRequired":true,"uniqueKey":"servicePeriod.oneOf.0.from.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-07-01","description":"Desde cuándo se prestó el servicio, `YYYY-MM-DD`.","isRequired":true,"uniqueKey":"servicePeriod.oneOf.0.from.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"servicePeriod.oneOf.0.from","typeLabel":"string | null"},"to":{"oneOf":[{"type":"string","example":"2026-07-31","description":"Hasta cuándo, `YYYY-MM-DD`. No puede ser anterior a `from`.","isRequired":true,"uniqueKey":"servicePeriod.oneOf.0.to.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-07-31","description":"Hasta cuándo, `YYYY-MM-DD`. No puede ser anterior a `from`.","isRequired":true,"uniqueKey":"servicePeriod.oneOf.0.to.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"servicePeriod.oneOf.0.to","typeLabel":"string | null"},"paymentDueDate":{"oneOf":[{"type":"string","example":"2026-08-10","description":"Vencimiento del pago, `YYYY-MM-DD`. Es un dato del comprobante, no una condición que el sistema controle: nadie se entera si se paga después.","isRequired":true,"uniqueKey":"servicePeriod.oneOf.0.paymentDueDate.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-08-10","description":"Vencimiento del pago, `YYYY-MM-DD`. Es un dato del comprobante, no una condición que el sistema controle: nadie se entera si se paga después.","isRequired":true,"uniqueKey":"servicePeriod.oneOf.0.paymentDueDate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"servicePeriod.oneOf.0.paymentDueDate","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"servicePeriod.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"servicePeriod.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"servicePeriod","typeLabel":"object | null"},"saleCondition":{"oneOf":[{"type":"string","example":"CUENTA_CORRIENTE","description":"La condición de venta tal como se mandó al emitir. `null` en los comprobantes emitidos sin informarla — **no se supone `CONTADO`**.","isRequired":true,"uniqueKey":"saleCondition.oneOf.0","typeLabel":"string"},{"type":"null","example":"CUENTA_CORRIENTE","description":"La condición de venta tal como se mandó al emitir. `null` en los comprobantes emitidos sin informarla — **no se supone `CONTADO`**.","isRequired":true,"uniqueKey":"saleCondition.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"saleCondition","typeLabel":"string | null"},"saleConditionNombre":{"oneOf":[{"type":"string","example":"Cuenta corriente","description":"La etiqueta de `saleCondition`, que es la que va impresa en el comprobante. `null` cuando no se informó, y también cuando el valor guardado no está en el catálogo.","isRequired":true,"uniqueKey":"saleConditionNombre.oneOf.0","typeLabel":"string"},{"type":"null","example":"Cuenta corriente","description":"La etiqueta de `saleCondition`, que es la que va impresa en el comprobante. `null` cuando no se informó, y también cuando el valor guardado no está en el catálogo.","isRequired":true,"uniqueKey":"saleConditionNombre.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"saleConditionNombre","typeLabel":"string | null"},"status":{"type":"string","enum":["AUTHORIZED","REJECTED","PENDING","UNKNOWN","CANCELLED"],"example":"AUTHORIZED","description":"En qué quedó. **`AUTHORIZED` es el único con validez fiscal.** `REJECTED`: ARCA lo rechazó y no hay CAE. `PENDING` y `UNKNOWN`: no se sabe si ARCA lo autorizó —se cortó la comunicación— y hay que reconciliar con `POST /v1/invoices/{id}/reconcile` antes de reintentar, o se emite dos veces. `CANCELLED`: se anuló con una nota de crédito.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"cae":{"oneOf":[{"type":"string","example":"75123456789012","description":"El CAE. `null` mientras el comprobante no esté autorizado.","isRequired":true,"uniqueKey":"cae.oneOf.0","typeLabel":"string"},{"type":"null","example":"75123456789012","description":"El CAE. `null` mientras el comprobante no esté autorizado.","isRequired":true,"uniqueKey":"cae.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cae","typeLabel":"string | null"},"caeExpiresAt":{"oneOf":[{"type":"string","example":"2026-08-05","description":"Hasta cuándo vale el CAE, `YYYY-MM-DD`. **Es la fecha límite para entregar el comprobante al receptor**, no para emitirlo: pasada esa fecha el comprobante sigue siendo válido pero se entregó tarde.","isRequired":true,"uniqueKey":"caeExpiresAt.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-08-05","description":"Hasta cuándo vale el CAE, `YYYY-MM-DD`. **Es la fecha límite para entregar el comprobante al receptor**, no para emitirlo: pasada esa fecha el comprobante sigue siendo válido pero se entregó tarde.","isRequired":true,"uniqueKey":"caeExpiresAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"caeExpiresAt","typeLabel":"string | null"},"cancelledByInvoiceId":{"oneOf":[{"type":"string","description":"Id de la nota de crédito que anuló este comprobante.","isRequired":true,"uniqueKey":"cancelledByInvoiceId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Id de la nota de crédito que anuló este comprobante.","isRequired":true,"uniqueKey":"cancelledByInvoiceId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cancelledByInvoiceId","typeLabel":"string | null"},"associations":{"description":"A qué comprobantes hace referencia. **Una nota de crédito sin esto no anula nada.** Vacío en una factura.","type":"array","items":{"type":"object","properties":{"cbteTipo":{"type":"number","example":1,"description":"El `CbteTipo` del comprobante asociado (`1` factura A, etc.).","isRequired":true,"uniqueKey":"associations.items.[INDEX].cbteTipo","typeLabel":"number"},"salePoint":{"type":"number","example":1,"description":"El punto de venta del comprobante asociado.","isRequired":true,"uniqueKey":"associations.items.[INDEX].salePoint","typeLabel":"number"},"number":{"type":"number","example":7,"description":"Su número correlativo, sin el punto de venta adelante.","isRequired":true,"uniqueKey":"associations.items.[INDEX].number","typeLabel":"number"},"cuit":{"oneOf":[{"type":"string","example":"20437136697","description":"El CUIT del emisor del comprobante asociado. Sólo hace falta cuando no es el mismo que emite este.","isRequired":true,"uniqueKey":"associations.items.[INDEX].cuit.oneOf.0","typeLabel":"string"},{"type":"null","example":"20437136697","description":"El CUIT del emisor del comprobante asociado. Sólo hace falta cuando no es el mismo que emite este.","isRequired":true,"uniqueKey":"associations.items.[INDEX].cuit.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"associations.items.[INDEX].cuit","typeLabel":"string | null"},"issueDate":{"oneOf":[{"type":"string","example":"2026-07-20","description":"Fecha del comprobante asociado, `YYYY-MM-DD`.","isRequired":true,"uniqueKey":"associations.items.[INDEX].issueDate.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-07-20","description":"Fecha del comprobante asociado, `YYYY-MM-DD`.","isRequired":true,"uniqueKey":"associations.items.[INDEX].issueDate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"associations.items.[INDEX].issueDate","typeLabel":"string | null"}},"required":["cbteTipo","salePoint","number","cuit","issueDate"],"uniqueKey":"associations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"associations","typeLabel":"object[]"},"optionals":{"description":"Campos opcionales de ARCA, que dependen del régimen. Vacío en el caso corriente.","type":"array","items":{"type":"object","properties":{"optionalId":{"type":"string","example":"2","description":"El Id es texto: lo define el WSDL","isRequired":true,"uniqueKey":"optionals.items.[INDEX].optionalId","typeLabel":"string"},"value":{"type":"string","example":"20437136697","description":"El valor, **siempre como texto**, aunque represente un número o una fecha. Lo define el WSDL de ARCA para cada `optionalId`.","isRequired":true,"uniqueKey":"optionals.items.[INDEX].value","typeLabel":"string"}},"required":["optionalId","value"],"uniqueKey":"optionals.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"optionals","typeLabel":"object[]"},"observations":{"description":"Lo que ARCA observó **junto con el CAE**. No son errores: el comprobante se autorizó igual. Tratarlas como fallo hace creer que la emisión no salió.","type":"array","items":{"type":"object","properties":{"code":{"type":"number","example":10048,"description":"El código de observación de ARCA. Es lo estable para ramificar; el texto cambia sin aviso.","isRequired":true,"uniqueKey":"observations.items.[INDEX].code","typeLabel":"number"},"message":{"type":"string","example":"El campo Condicion Frente al IVA...","description":"Qué observó ARCA, en sus palabras. **No es un error**: el comprobante ya tiene CAE.","isRequired":true,"uniqueKey":"observations.items.[INDEX].message","typeLabel":"string"}},"required":["code","message"],"uniqueKey":"observations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"observations","typeLabel":"object[]"},"rechazoArca":{"oneOf":[{"type":"object","description":"**Por qué ARCA rechazó el comprobante.** Sólo si `status` es `REJECTED`; `null` en cualquier otro estado. Es un **rechazo fiscal**, no un error de Emissa: ARCA contestó y dijo que no. Los textos son los de ARCA, literales, y sirven para que quien emite corrija el dato y reintente.\n\nCon la misma forma que `details.arca` del error `ARCA_WSFEV1_REJECTED` y que `data.rechazoArca` de `invoice.resolved`. Un `REJECTED` con las dos listas vacías es un comprobante que el reconciliar no encontró en ARCA.","required":["errores","observaciones"],"properties":{"errores":{"description":"Los `Errors` de WSFEv1: **por qué ARCA no autorizó**. Hasta 20. Puede venir vacío: cuando ARCA no manda `Errors`, el motivo está en `observaciones`.","type":"array","items":{"type":"object","properties":{"codigo":{"type":"number","example":10016,"description":"El código de ARCA. Es lo estable para ramificar; el texto cambia sin aviso.","isRequired":true,"uniqueKey":"rechazoArca.oneOf.0.errores.items.[INDEX].codigo","typeLabel":"number"},"mensaje":{"type":"string","example":"El campo DocNro es incorrecto. Debe ser mayor o igual a 0 y menor o igual a 99999999999.","description":"**El texto de ARCA, literal.** Emissa no lo traduce ni lo reescribe; sólo lo recorta a 500 caracteres.","isRequired":true,"uniqueKey":"rechazoArca.oneOf.0.errores.items.[INDEX].mensaje","typeLabel":"string"}},"required":["codigo","mensaje"],"uniqueKey":"rechazoArca.oneOf.0.errores.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"rechazoArca.oneOf.0.errores","typeLabel":"object[]"},"observaciones":{"description":"Las `Observaciones` de ARCA sobre este comprobante. Hasta 20. **No son lo mismo que `errores`**: en un comprobante autorizado son avisos, y en uno rechazado a veces son el único motivo.","type":"array","items":{"type":"object","properties":{"codigo":{"type":"number","example":10016,"description":"El código de ARCA. Es lo estable para ramificar; el texto cambia sin aviso.","isRequired":true,"uniqueKey":"rechazoArca.oneOf.0.observaciones.items.[INDEX].codigo","typeLabel":"number"},"mensaje":{"type":"string","example":"El campo DocNro es incorrecto. Debe ser mayor o igual a 0 y menor o igual a 99999999999.","description":"**El texto de ARCA, literal.** Emissa no lo traduce ni lo reescribe; sólo lo recorta a 500 caracteres.","isRequired":true,"uniqueKey":"rechazoArca.oneOf.0.observaciones.items.[INDEX].mensaje","typeLabel":"string"}},"required":["codigo","mensaje"],"uniqueKey":"rechazoArca.oneOf.0.observaciones.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"rechazoArca.oneOf.0.observaciones","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"rechazoArca.oneOf.0","typeLabel":"object"},{"type":"null","isRequired":true,"uniqueKey":"rechazoArca.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"rechazoArca","typeLabel":"object | null"},"items":{"description":"El detalle. **No viaja a ARCA**: se guarda para imprimir y para que el integrador recupere lo que mandó.","type":"array","items":{"type":"object","properties":{"position":{"type":"number","example":1,"description":"El orden en que va impreso. Arranca en 1.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].position","typeLabel":"number"},"description":{"type":"string","example":"Servicio de consultoría","description":"Qué se vendió, como va impreso.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].description","typeLabel":"string"},"unit":{"type":"string","example":"UNIDADES","description":"Unidad de medida: `UNIDADES`, `HORAS`, `KILOGRAMOS`, etc.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].unit","typeLabel":"string"},"quantity":{"type":"string","example":"1","description":"Cantidad, como **string** para no perder precisión al parsear. Admite hasta 6 decimales.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].quantity","typeLabel":"string"},"unitPrice":{"type":"string","example":"1000","description":"Precio unitario **sin IVA**, como string.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].unitPrice","typeLabel":"string"},"tratamiento":{"type":"string","example":"GRAVADO","description":"Cómo trata el IVA esta línea: `GRAVADO`, `NO_GRAVADO` o `EXENTO`. Es lo que decide a qué total de `totals` suma.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].tratamiento","typeLabel":"string"},"vatRateId":{"oneOf":[{"type":"number","example":5,"description":"El id de alícuota de ARCA. `null` en las líneas no gravadas o exentas, donde no hay alícuota que aplicar.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].vatRateId.oneOf.0","typeLabel":"number"},{"type":"null","example":5,"description":"El id de alícuota de ARCA. `null` en las líneas no gravadas o exentas, donde no hay alícuota que aplicar.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].vatRateId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].vatRateId","typeLabel":"number | null"},"vatRatePercent":{"oneOf":[{"type":"number","example":21,"description":"El porcentaje de `vatRateId`, para no mantener la tabla afuera.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].vatRatePercent.oneOf.0","typeLabel":"number"},{"type":"null","example":21,"description":"El porcentaje de `vatRateId`, para no mantener la tabla afuera.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].vatRatePercent.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].vatRatePercent","typeLabel":"number | null"},"netAmount":{"type":"string","example":"1000.00","description":"Neto de la línea: `quantity × unitPrice`, sin IVA.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].netAmount","typeLabel":"string"},"vatAmount":{"type":"string","example":"210.00","description":"El IVA de esta línea. `0.00` si no está gravada.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].vatAmount","typeLabel":"string"}},"required":["position","description","unit","quantity","unitPrice","tratamiento","vatRateId","vatRatePercent","netAmount","vatAmount"],"uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"},"createdAt":{"type":"string","example":"2026-07-26T18:30:00.000Z","description":"Cuándo se creó el registro en Emissa, en UTC. **No es `issueDate`**: la fecha del comprobante es un dato fiscal y ésta es de auditoría.","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string"},"customer":{"type":"object","description":"La ficha del cliente guardada, con su estado **actual**. Difiere de `receiver` si el cliente cambió después de emitir.","required":["id","documentType","documentNumber","name","vatCondition"],"properties":{"id":{"type":"string","example":"cms5182zy00hkurgsa6512cha","description":"Id del cliente guardado, para reusarlo en otra emisión.","isRequired":true,"uniqueKey":"customer.id","typeLabel":"string"},"documentType":{"type":"string","example":"80","description":"Tipo de documento: `80` CUIT, `86` CUIL, `96` DNI, `99` CF.","isRequired":true,"uniqueKey":"customer.documentType","typeLabel":"string"},"documentNumber":{"type":"string","example":"30500010912","description":"El número, sin guiones.","isRequired":true,"uniqueKey":"customer.documentNumber","typeLabel":"string"},"name":{"type":"string","example":"Cliente SA","description":"Nombre o razón social, con el último valor conocido.","isRequired":true,"uniqueKey":"customer.name","typeLabel":"string"},"vatCondition":{"oneOf":[{"type":"string","example":"IVA Responsable Inscripto","description":"Su condición frente al IVA. `null` si nunca se validó contra el padrón ni se declaró.","isRequired":true,"uniqueKey":"customer.vatCondition.oneOf.0","typeLabel":"string"},{"type":"null","example":"IVA Responsable Inscripto","description":"Su condición frente al IVA. `null` si nunca se validó contra el padrón ni se declaró.","isRequired":true,"uniqueKey":"customer.vatCondition.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"customer.vatCondition","typeLabel":"string | null"}},"uniqueKey":"customer","typeLabel":"object"},"arcaMetadata":{"type":"object","additionalProperties":true,"description":"Crudo de la respuesta de ARCA. Diagnóstico, no contractual.","uniqueKey":"arcaMetadata","typeLabel":"object"}},"required":["id","taxpayerId","externalReference","environment","origin","producto","cbteTipo","cbteTipoNombre","letra","concepto","conceptoNombre","salePoint","number","comprobante","issueDate","emitter","receiver","currency","exchangeRate","totals","vatBreakdown","taxes","servicePeriod","saleCondition","saleConditionNombre","status","cae","caeExpiresAt","cancelledByInvoiceId","associations","optionals","observations","rechazoArca","items","createdAt"],"uniqueKey":"","typeLabel":"object"},"example":{"id":"cmt42xaaj000turi4uvmjb298","taxpayerId":"cmt42x6jb000curi4sz1gyeij","environment":"HOMOLOGACION","origin":"API","externalReference":null,"cbteTipo":1,"cbteTipoNombre":"FACTURA_A","letra":"A","concepto":1,"conceptoNombre":"PRODUCTOS","salePoint":1,"number":1,"comprobante":"0001-00000001","issueDate":"2026-08-22","emitter":{"cuit":"20000000001","name":"Estudio Contable SRL","vatStatus":"Responsable Inscripto","address":"Av. Corrientes 1234, CABA","grossIncomeTax":"901-123456-01","activityStartDate":"2020-03-01"},"receiver":{"docTipo":80,"docTipoNombre":"CUIT","docNro":"30000000007","name":"Cliente Mayorista SA","vatConditionId":1,"vatConditionNombre":"IVA_RESPONSABLE_INSCRIPTO","address":null},"currency":"PES","exchangeRate":"1","totals":{"netAmount":"1000.00","nonTaxedAmount":"0.00","exemptAmount":"0.00","vatAmount":"210.00","otherTaxesAmount":"0.00","totalAmount":"1210.00"},"vatBreakdown":[{"vatRateId":5,"vatRatePercent":21,"baseAmount":"1000.00","vatAmount":"210.00"}],"taxes":[],"saleCondition":null,"saleConditionNombre":null,"servicePeriod":null,"status":"AUTHORIZED","cae":"70001000000001","caeExpiresAt":"2026-09-01","cancelledByInvoiceId":null,"associations":[],"optionals":[],"observations":[],"rechazoArca":null,"items":[{"position":1,"description":"Servicio de consultoría","unit":"UNIDADES","quantity":"1","unitPrice":"1000","tratamiento":"GRAVADO","vatRateId":5,"vatRatePercent":21,"netAmount":"1000.00","vatAmount":"210.00"}],"customer":{"id":"cmt42x8pf000ruri4bt2gjtai","documentType":"CUIT","documentNumber":"30000000007","name":"Cliente Mayorista SA","vatCondition":"IVA_RESPONSABLE_INSCRIPTO"},"arcaMetadata":{"service":"wsfev1","resultado":"A","authorized":true,"observaciones":0},"createdAt":"2026-08-22T07:51:14.780Z"},"examples":{"Example":{"title":"Example","value":{"id":"cmt42xaaj000turi4uvmjb298","taxpayerId":"cmt42x6jb000curi4sz1gyeij","environment":"HOMOLOGACION","origin":"API","externalReference":null,"cbteTipo":1,"cbteTipoNombre":"FACTURA_A","letra":"A","concepto":1,"conceptoNombre":"PRODUCTOS","salePoint":1,"number":1,"comprobante":"0001-00000001","issueDate":"2026-08-22","emitter":{"cuit":"20000000001","name":"Estudio Contable SRL","vatStatus":"Responsable Inscripto","address":"Av. Corrientes 1234, CABA","grossIncomeTax":"901-123456-01","activityStartDate":"2020-03-01"},"receiver":{"docTipo":80,"docTipoNombre":"CUIT","docNro":"30000000007","name":"Cliente Mayorista SA","vatConditionId":1,"vatConditionNombre":"IVA_RESPONSABLE_INSCRIPTO","address":null},"currency":"PES","exchangeRate":"1","totals":{"netAmount":"1000.00","nonTaxedAmount":"0.00","exemptAmount":"0.00","vatAmount":"210.00","otherTaxesAmount":"0.00","totalAmount":"1210.00"},"vatBreakdown":[{"vatRateId":5,"vatRatePercent":21,"baseAmount":"1000.00","vatAmount":"210.00"}],"taxes":[],"saleCondition":null,"saleConditionNombre":null,"servicePeriod":null,"status":"AUTHORIZED","cae":"70001000000001","caeExpiresAt":"2026-09-01","cancelledByInvoiceId":null,"associations":[],"optionals":[],"observations":[],"rechazoArca":null,"items":[{"position":1,"description":"Servicio de consultoría","unit":"UNIDADES","quantity":"1","unitPrice":"1000","tratamiento":"GRAVADO","vatRateId":5,"vatRatePercent":21,"netAmount":"1000.00","vatAmount":"210.00"}],"customer":{"id":"cmt42x8pf000ruri4bt2gjtai","documentType":"CUIT","documentNumber":"30000000007","name":"Cliente Mayorista SA","vatCondition":"IVA_RESPONSABLE_INSCRIPTO"},"arcaMetadata":{"service":"wsfev1","resultado":"A","authorized":true,"observaciones":0},"createdAt":"2026-08-22T07:51:14.780Z"}}},"exampleType":"examples"}},"exampleType":"examples"},"9cc3d18d-4f6a-4194-be9d-bffee6d69698":{"description":"Pedido mal formado o inválido. También: el comprobante no cierra, o ARCA no lo puede recibir así. **No se emitió nada** — corregí y mandá con una `Idempotency-Key` nueva.\n\n`errorCode`: `INVALID_INPUT`, `INVALID_INVOICE_ITEMS`, `INVALID_INVOICE_AMOUNTS`, `INVALID_INVOICE_TYPE`, `INVALID_EXCHANGE_RATE`, `INVALID_SERVICE_PERIOD`, `INVOICE_DATE_OUT_OF_WINDOW`, `INVOICE_DATE_NOT_MONOTONIC`, `ARCA_SALE_POINT_NOT_ENABLED`, `CERTIFICATE_EXPIRED`","content":{"application/json":{"schema":{"type":"object","required":["statusCode","errorCode","message","timestamp","path"],"properties":{"statusCode":{"type":"number","example":401,"description":"El mismo código HTTP de la respuesta. Va repetido en el cuerpo para que un cliente que sólo loguea el JSON no pierda el dato.","isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"errorCode":{"type":"string","description":"Siempre una entrada del catálogo de errores. Es el campo por el que se ramifica.","enum":["INVALID_INPUT","INVALID_INVOICE_ITEMS","INVALID_INVOICE_AMOUNTS","INVALID_INVOICE_TYPE","INVALID_EXCHANGE_RATE","INVALID_SERVICE_PERIOD","INVOICE_DATE_OUT_OF_WINDOW","INVOICE_DATE_NOT_MONOTONIC","ARCA_SALE_POINT_NOT_ENABLED","CERTIFICATE_EXPIRED"],"example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"errorCode","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"No autorizado","description":"**Siempre un string**, nunca un arreglo.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"timestamp":{"type":"string","example":"2026-07-26T18:30:00.000Z","description":"Cuándo falló, en UTC. Sirve para ubicarlo en los logs.","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","example":"/v1/invoices/authorize","description":"La ruta que se pidió, sin el host ni la query.","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","uniqueKey":"details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","additionalProperties":true,"uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"string | object"},"retryable":{"type":"boolean","example":false,"description":"**¿Tiene sentido reintentar?** Si viene, le gana a cualquier heurística basada en el status.\n\nExiste porque el status no alcanza: `ARCA_TICKET_ALREADY_ISSUED` es un 409 que **se resuelve esperando**, y `ARCA_COMPUTER_NOT_AUTHORIZED` es un 502 que **no se arregla nunca esperando** — hay que autorizar el certificado en ARCA. Un cliente que ramifique sólo por 4xx/5xx acierta al revés en los dos.\n\n**Ausente significa \"no lo sabemos\"**, y es distinto de `false`: ahí corresponde la heurística de siempre. Sólo se declara donde la respuesta es certera.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"number","example":43200,"description":"Cuántos segundos esperar antes de reintentar. **Sólo cuando el número es real** —el vencimiento de un ticket, la ventana de un límite—, nunca una estimación.\n\nEl 429 y el bloqueo del segundo factor ya lo mandaban como `details.reintentarEnSegundos`, en castellano y anidado. Sigue ahí para no romper a nadie, y ahora **también arriba**, con el nombre del resto del sobre.","uniqueKey":"retryAfterSeconds","typeLabel":"number"},"requestId":{"type":"string","example":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e","description":"El mismo valor de la cabecera `X-Request-Id`. Es lo que hay que pegar en un ticket.","uniqueKey":"requestId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":401,"errorCode":"UNAUTHORIZED","message":"No autorizado","timestamp":"2026-07-26T18:30:00.000Z","path":"/v1/invoices/authorize","details":"\u003cstring>","retryable":false,"retryAfterSeconds":43200,"requestId":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e"}}},"exampleType":"generated"}},"headers":{"X-Request-Id":{"description":"Identificador del pedido. Va en TODA respuesta. Si lo mandás en el pedido y respeta `[A-Za-z0-9._:-]{1,128}`, se te devuelve el mismo; si no, se genera uno. Es lo que hay que citar en un ticket.","schema":{"type":"string"}},"X-Emissa-Mode":{"description":"`test` o `live`. **Va en toda respuesta autenticada con API key**, y es la forma más barata de verificar que no estás emitiendo contra el ambiente equivocado. No aparece cuando se entra con sesión de panel: ahí el ambiente lo decide cada contribuyente, no la credencial.","schema":{"type":"string","enum":["test","live"]}}},"exampleType":"generated"},"997c1236-3596-42da-8874-d8caad408a00":{"description":"Falta la credencial o no es válida.\n\n`errorCode`: `UNAUTHORIZED`, `INVALID_API_KEY`, `API_KEY_WRONG_HEADER`","content":{"application/json":{"schema":{"type":"object","required":["statusCode","errorCode","message","timestamp","path"],"properties":{"statusCode":{"type":"number","example":401,"description":"El mismo código HTTP de la respuesta. Va repetido en el cuerpo para que un cliente que sólo loguea el JSON no pierda el dato.","isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"errorCode":{"type":"string","description":"Siempre una entrada del catálogo de errores. Es el campo por el que se ramifica.","enum":["UNAUTHORIZED","INVALID_API_KEY","API_KEY_WRONG_HEADER"],"example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"errorCode","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"No autorizado","description":"**Siempre un string**, nunca un arreglo.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"timestamp":{"type":"string","example":"2026-07-26T18:30:00.000Z","description":"Cuándo falló, en UTC. Sirve para ubicarlo en los logs.","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","example":"/v1/invoices/authorize","description":"La ruta que se pidió, sin el host ni la query.","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","uniqueKey":"details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","additionalProperties":true,"uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"string | object"},"retryable":{"type":"boolean","example":false,"description":"**¿Tiene sentido reintentar?** Si viene, le gana a cualquier heurística basada en el status.\n\nExiste porque el status no alcanza: `ARCA_TICKET_ALREADY_ISSUED` es un 409 que **se resuelve esperando**, y `ARCA_COMPUTER_NOT_AUTHORIZED` es un 502 que **no se arregla nunca esperando** — hay que autorizar el certificado en ARCA. Un cliente que ramifique sólo por 4xx/5xx acierta al revés en los dos.\n\n**Ausente significa \"no lo sabemos\"**, y es distinto de `false`: ahí corresponde la heurística de siempre. Sólo se declara donde la respuesta es certera.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"number","example":43200,"description":"Cuántos segundos esperar antes de reintentar. **Sólo cuando el número es real** —el vencimiento de un ticket, la ventana de un límite—, nunca una estimación.\n\nEl 429 y el bloqueo del segundo factor ya lo mandaban como `details.reintentarEnSegundos`, en castellano y anidado. Sigue ahí para no romper a nadie, y ahora **también arriba**, con el nombre del resto del sobre.","uniqueKey":"retryAfterSeconds","typeLabel":"number"},"requestId":{"type":"string","example":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e","description":"El mismo valor de la cabecera `X-Request-Id`. Es lo que hay que pegar en un ticket.","uniqueKey":"requestId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":401,"errorCode":"UNAUTHORIZED","message":"No autorizado","timestamp":"2026-07-26T18:30:00.000Z","path":"/v1/invoices/authorize","details":"\u003cstring>","retryable":false,"retryAfterSeconds":43200,"requestId":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e"}}},"exampleType":"generated"}},"headers":{"X-Request-Id":{"description":"Identificador del pedido. Va en TODA respuesta. Si lo mandás en el pedido y respeta `[A-Za-z0-9._:-]{1,128}`, se te devuelve el mismo; si no, se genera uno. Es lo que hay que citar en un ticket.","schema":{"type":"string"}},"X-Emissa-Mode":{"description":"`test` o `live`. **Va en toda respuesta autenticada con API key**, y es la forma más barata de verificar que no estás emitiendo contra el ambiente equivocado. No aparece cuando se entra con sesión de panel: ahí el ambiente lo decide cada contribuyente, no la credencial.","schema":{"type":"string","enum":["test","live"]}}},"exampleType":"generated"},"fe2abaa4-64af-43ef-8967-0f26975a4aee":{"description":"La credencial es válida pero no alcanza. Con API key, también: el **modo de la key no coincide con el ambiente del contribuyente**. Una `emi_test_` contra un contribuyente de `PRODUCCION` nunca emite.\n\n`errorCode`: `FORBIDDEN`, `API_KEY_INSUFFICIENT_PERMISSIONS`, `API_KEY_INSUFFICIENT_SCOPE`, `API_KEY_WRONG_MODE`","content":{"application/json":{"schema":{"type":"object","required":["statusCode","errorCode","message","timestamp","path"],"properties":{"statusCode":{"type":"number","example":401,"description":"El mismo código HTTP de la respuesta. Va repetido en el cuerpo para que un cliente que sólo loguea el JSON no pierda el dato.","isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"errorCode":{"type":"string","description":"Siempre una entrada del catálogo de errores. Es el campo por el que se ramifica.","enum":["FORBIDDEN","API_KEY_INSUFFICIENT_PERMISSIONS","API_KEY_INSUFFICIENT_SCOPE","API_KEY_WRONG_MODE"],"example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"errorCode","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"No autorizado","description":"**Siempre un string**, nunca un arreglo.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"timestamp":{"type":"string","example":"2026-07-26T18:30:00.000Z","description":"Cuándo falló, en UTC. Sirve para ubicarlo en los logs.","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","example":"/v1/invoices/authorize","description":"La ruta que se pidió, sin el host ni la query.","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","uniqueKey":"details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","additionalProperties":true,"uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"string | object"},"retryable":{"type":"boolean","example":false,"description":"**¿Tiene sentido reintentar?** Si viene, le gana a cualquier heurística basada en el status.\n\nExiste porque el status no alcanza: `ARCA_TICKET_ALREADY_ISSUED` es un 409 que **se resuelve esperando**, y `ARCA_COMPUTER_NOT_AUTHORIZED` es un 502 que **no se arregla nunca esperando** — hay que autorizar el certificado en ARCA. Un cliente que ramifique sólo por 4xx/5xx acierta al revés en los dos.\n\n**Ausente significa \"no lo sabemos\"**, y es distinto de `false`: ahí corresponde la heurística de siempre. Sólo se declara donde la respuesta es certera.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"number","example":43200,"description":"Cuántos segundos esperar antes de reintentar. **Sólo cuando el número es real** —el vencimiento de un ticket, la ventana de un límite—, nunca una estimación.\n\nEl 429 y el bloqueo del segundo factor ya lo mandaban como `details.reintentarEnSegundos`, en castellano y anidado. Sigue ahí para no romper a nadie, y ahora **también arriba**, con el nombre del resto del sobre.","uniqueKey":"retryAfterSeconds","typeLabel":"number"},"requestId":{"type":"string","example":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e","description":"El mismo valor de la cabecera `X-Request-Id`. Es lo que hay que pegar en un ticket.","uniqueKey":"requestId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":401,"errorCode":"UNAUTHORIZED","message":"No autorizado","timestamp":"2026-07-26T18:30:00.000Z","path":"/v1/invoices/authorize","details":"\u003cstring>","retryable":false,"retryAfterSeconds":43200,"requestId":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e"}}},"exampleType":"generated"}},"headers":{"X-Request-Id":{"description":"Identificador del pedido. Va en TODA respuesta. Si lo mandás en el pedido y respeta `[A-Za-z0-9._:-]{1,128}`, se te devuelve el mismo; si no, se genera uno. Es lo que hay que citar en un ticket.","schema":{"type":"string"}},"X-Emissa-Mode":{"description":"`test` o `live`. **Va en toda respuesta autenticada con API key**, y es la forma más barata de verificar que no estás emitiendo contra el ambiente equivocado. No aparece cuando se entra con sesión de panel: ahí el ambiente lo decide cada contribuyente, no la credencial.","schema":{"type":"string","enum":["test","live"]}}},"exampleType":"generated"},"aa72c632-dcb5-4f6d-9ae1-e73daea7d8ba":{"description":"No existe el contribuyente, o no tiene credencial para su ambiente.\n\n`errorCode`: `TAXPAYER_NOT_FOUND`, `CREDENTIALS_NOT_FOUND`","content":{"application/json":{"schema":{"type":"object","required":["statusCode","errorCode","message","timestamp","path"],"properties":{"statusCode":{"type":"number","example":401,"description":"El mismo código HTTP de la respuesta. Va repetido en el cuerpo para que un cliente que sólo loguea el JSON no pierda el dato.","isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"errorCode":{"type":"string","description":"Siempre una entrada del catálogo de errores. Es el campo por el que se ramifica.","enum":["TAXPAYER_NOT_FOUND","CREDENTIALS_NOT_FOUND"],"example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"errorCode","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"No autorizado","description":"**Siempre un string**, nunca un arreglo.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"timestamp":{"type":"string","example":"2026-07-26T18:30:00.000Z","description":"Cuándo falló, en UTC. Sirve para ubicarlo en los logs.","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","example":"/v1/invoices/authorize","description":"La ruta que se pidió, sin el host ni la query.","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","uniqueKey":"details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","additionalProperties":true,"uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"string | object"},"retryable":{"type":"boolean","example":false,"description":"**¿Tiene sentido reintentar?** Si viene, le gana a cualquier heurística basada en el status.\n\nExiste porque el status no alcanza: `ARCA_TICKET_ALREADY_ISSUED` es un 409 que **se resuelve esperando**, y `ARCA_COMPUTER_NOT_AUTHORIZED` es un 502 que **no se arregla nunca esperando** — hay que autorizar el certificado en ARCA. Un cliente que ramifique sólo por 4xx/5xx acierta al revés en los dos.\n\n**Ausente significa \"no lo sabemos\"**, y es distinto de `false`: ahí corresponde la heurística de siempre. Sólo se declara donde la respuesta es certera.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"number","example":43200,"description":"Cuántos segundos esperar antes de reintentar. **Sólo cuando el número es real** —el vencimiento de un ticket, la ventana de un límite—, nunca una estimación.\n\nEl 429 y el bloqueo del segundo factor ya lo mandaban como `details.reintentarEnSegundos`, en castellano y anidado. Sigue ahí para no romper a nadie, y ahora **también arriba**, con el nombre del resto del sobre.","uniqueKey":"retryAfterSeconds","typeLabel":"number"},"requestId":{"type":"string","example":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e","description":"El mismo valor de la cabecera `X-Request-Id`. Es lo que hay que pegar en un ticket.","uniqueKey":"requestId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":401,"errorCode":"UNAUTHORIZED","message":"No autorizado","timestamp":"2026-07-26T18:30:00.000Z","path":"/v1/invoices/authorize","details":"\u003cstring>","retryable":false,"retryAfterSeconds":43200,"requestId":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e"}}},"exampleType":"generated"}},"headers":{"X-Request-Id":{"description":"Identificador del pedido. Va en TODA respuesta. Si lo mandás en el pedido y respeta `[A-Za-z0-9._:-]{1,128}`, se te devuelve el mismo; si no, se genera uno. Es lo que hay que citar en un ticket.","schema":{"type":"string"}},"X-Emissa-Mode":{"description":"`test` o `live`. **Va en toda respuesta autenticada con API key**, y es la forma más barata de verificar que no estás emitiendo contra el ambiente equivocado. No aparece cuando se entra con sesión de panel: ahí el ambiente lo decide cada contribuyente, no la credencial.","schema":{"type":"string","enum":["test","live"]}}},"exampleType":"generated"},"4dacae27-bce6-44a4-a8e6-e092c8205f6c":{"description":"Conflicto de idempotencia, o **ya emitiste un comprobante con esa `externalReference`** —el id del que existe viene en `details`, así que este 409 es la respuesta a \"¿ya emití el de mi cobro X?\" y no un fallo—. O bien **ARCA no dijo si autorizó**: el número quedó consumido y el comprobante en `UNKNOWN`. **No reintentes la emisión** — llamá a `POST /v1/invoices/{id}/reconcile`, que le pregunta a ARCA qué pasó. Reintentar sin reconciliar es cómo se emite dos veces.\n\n`errorCode`: `IDEMPOTENCY_KEY_REUSED`, `IDEMPOTENCY_IN_PROGRESS`, `ARCA_CAE_UNKNOWN`, `EXTERNAL_REFERENCE_ALREADY_USED`","content":{"application/json":{"schema":{"type":"object","required":["statusCode","errorCode","message","timestamp","path"],"properties":{"statusCode":{"type":"number","example":401,"description":"El mismo código HTTP de la respuesta. Va repetido en el cuerpo para que un cliente que sólo loguea el JSON no pierda el dato.","isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"errorCode":{"type":"string","description":"Siempre una entrada del catálogo de errores. Es el campo por el que se ramifica.","enum":["IDEMPOTENCY_KEY_REUSED","IDEMPOTENCY_IN_PROGRESS","ARCA_CAE_UNKNOWN","EXTERNAL_REFERENCE_ALREADY_USED"],"example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"errorCode","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"No autorizado","description":"**Siempre un string**, nunca un arreglo.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"timestamp":{"type":"string","example":"2026-07-26T18:30:00.000Z","description":"Cuándo falló, en UTC. Sirve para ubicarlo en los logs.","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","example":"/v1/invoices/authorize","description":"La ruta que se pidió, sin el host ni la query.","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","uniqueKey":"details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","additionalProperties":true,"uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"string | object"},"retryable":{"type":"boolean","example":false,"description":"**¿Tiene sentido reintentar?** Si viene, le gana a cualquier heurística basada en el status.\n\nExiste porque el status no alcanza: `ARCA_TICKET_ALREADY_ISSUED` es un 409 que **se resuelve esperando**, y `ARCA_COMPUTER_NOT_AUTHORIZED` es un 502 que **no se arregla nunca esperando** — hay que autorizar el certificado en ARCA. Un cliente que ramifique sólo por 4xx/5xx acierta al revés en los dos.\n\n**Ausente significa \"no lo sabemos\"**, y es distinto de `false`: ahí corresponde la heurística de siempre. Sólo se declara donde la respuesta es certera.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"number","example":43200,"description":"Cuántos segundos esperar antes de reintentar. **Sólo cuando el número es real** —el vencimiento de un ticket, la ventana de un límite—, nunca una estimación.\n\nEl 429 y el bloqueo del segundo factor ya lo mandaban como `details.reintentarEnSegundos`, en castellano y anidado. Sigue ahí para no romper a nadie, y ahora **también arriba**, con el nombre del resto del sobre.","uniqueKey":"retryAfterSeconds","typeLabel":"number"},"requestId":{"type":"string","example":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e","description":"El mismo valor de la cabecera `X-Request-Id`. Es lo que hay que pegar en un ticket.","uniqueKey":"requestId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":401,"errorCode":"UNAUTHORIZED","message":"No autorizado","timestamp":"2026-07-26T18:30:00.000Z","path":"/v1/invoices/authorize","details":"\u003cstring>","retryable":false,"retryAfterSeconds":43200,"requestId":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e"}}},"exampleType":"generated"}},"headers":{"X-Request-Id":{"description":"Identificador del pedido. Va en TODA respuesta. Si lo mandás en el pedido y respeta `[A-Za-z0-9._:-]{1,128}`, se te devuelve el mismo; si no, se genera uno. Es lo que hay que citar en un ticket.","schema":{"type":"string"}},"X-Emissa-Mode":{"description":"`test` o `live`. **Va en toda respuesta autenticada con API key**, y es la forma más barata de verificar que no estás emitiendo contra el ambiente equivocado. No aparece cuando se entra con sesión de panel: ahí el ambiente lo decide cada contribuyente, no la credencial.","schema":{"type":"string","enum":["test","live"]}}},"exampleType":"generated"},"9d367c74-8795-4852-ae50-ba967082d451":{"description":"ARCA rechazó el comprobante. **Un rechazo de ARCA no consume cuota.** Es un rechazo fiscal, no una caída de Emissa: el motivo viaja **también en producción**, con el texto de ARCA, en `details.arca` (`{ errores: [{ codigo, mensaje }], observaciones: [{ codigo, mensaje }] }`). Corregí lo que señala y reintentá.\n\n`errorCode`: `ARCA_WSFEV1_REJECTED`","content":{"application/json":{"schema":{"type":"object","required":["statusCode","errorCode","message","timestamp","path"],"properties":{"statusCode":{"type":"number","example":401,"description":"El mismo código HTTP de la respuesta. Va repetido en el cuerpo para que un cliente que sólo loguea el JSON no pierda el dato.","isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"errorCode":{"type":"string","description":"Siempre una entrada del catálogo de errores. Es el campo por el que se ramifica.","enum":["ARCA_WSFEV1_REJECTED"],"example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"errorCode","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"No autorizado","description":"**Siempre un string**, nunca un arreglo.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"timestamp":{"type":"string","example":"2026-07-26T18:30:00.000Z","description":"Cuándo falló, en UTC. Sirve para ubicarlo en los logs.","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","example":"/v1/invoices/authorize","description":"La ruta que se pidió, sin el host ni la query.","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","uniqueKey":"details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","additionalProperties":true,"uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"string | object"},"retryable":{"type":"boolean","example":false,"description":"**¿Tiene sentido reintentar?** Si viene, le gana a cualquier heurística basada en el status.\n\nExiste porque el status no alcanza: `ARCA_TICKET_ALREADY_ISSUED` es un 409 que **se resuelve esperando**, y `ARCA_COMPUTER_NOT_AUTHORIZED` es un 502 que **no se arregla nunca esperando** — hay que autorizar el certificado en ARCA. Un cliente que ramifique sólo por 4xx/5xx acierta al revés en los dos.\n\n**Ausente significa \"no lo sabemos\"**, y es distinto de `false`: ahí corresponde la heurística de siempre. Sólo se declara donde la respuesta es certera.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"number","example":43200,"description":"Cuántos segundos esperar antes de reintentar. **Sólo cuando el número es real** —el vencimiento de un ticket, la ventana de un límite—, nunca una estimación.\n\nEl 429 y el bloqueo del segundo factor ya lo mandaban como `details.reintentarEnSegundos`, en castellano y anidado. Sigue ahí para no romper a nadie, y ahora **también arriba**, con el nombre del resto del sobre.","uniqueKey":"retryAfterSeconds","typeLabel":"number"},"requestId":{"type":"string","example":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e","description":"El mismo valor de la cabecera `X-Request-Id`. Es lo que hay que pegar en un ticket.","uniqueKey":"requestId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":401,"errorCode":"UNAUTHORIZED","message":"No autorizado","timestamp":"2026-07-26T18:30:00.000Z","path":"/v1/invoices/authorize","details":"\u003cstring>","retryable":false,"retryAfterSeconds":43200,"requestId":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e"}}},"exampleType":"generated"}},"headers":{"X-Request-Id":{"description":"Identificador del pedido. Va en TODA respuesta. Si lo mandás en el pedido y respeta `[A-Za-z0-9._:-]{1,128}`, se te devuelve el mismo; si no, se genera uno. Es lo que hay que citar en un ticket.","schema":{"type":"string"}},"X-Emissa-Mode":{"description":"`test` o `live`. **Va en toda respuesta autenticada con API key**, y es la forma más barata de verificar que no estás emitiendo contra el ambiente equivocado. No aparece cuando se entra con sesión de panel: ahí el ambiente lo decide cada contribuyente, no la credencial.","schema":{"type":"string","enum":["test","live"]}}},"exampleType":"generated"},"4fda9736-1ed9-4ca3-b580-7fd25fa430d8":{"description":"Se excedió el límite de peticiones. **Reintentá con backoff.**\n\n`errorCode`: `RATE_LIMIT_EXCEEDED`","content":{"application/json":{"schema":{"type":"object","required":["statusCode","errorCode","message","timestamp","path"],"properties":{"statusCode":{"type":"number","example":401,"description":"El mismo código HTTP de la respuesta. Va repetido en el cuerpo para que un cliente que sólo loguea el JSON no pierda el dato.","isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"errorCode":{"type":"string","description":"Siempre una entrada del catálogo de errores. Es el campo por el que se ramifica.","enum":["RATE_LIMIT_EXCEEDED"],"example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"errorCode","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"No autorizado","description":"**Siempre un string**, nunca un arreglo.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"timestamp":{"type":"string","example":"2026-07-26T18:30:00.000Z","description":"Cuándo falló, en UTC. Sirve para ubicarlo en los logs.","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","example":"/v1/invoices/authorize","description":"La ruta que se pidió, sin el host ni la query.","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","uniqueKey":"details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","additionalProperties":true,"uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"string | object"},"retryable":{"type":"boolean","example":false,"description":"**¿Tiene sentido reintentar?** Si viene, le gana a cualquier heurística basada en el status.\n\nExiste porque el status no alcanza: `ARCA_TICKET_ALREADY_ISSUED` es un 409 que **se resuelve esperando**, y `ARCA_COMPUTER_NOT_AUTHORIZED` es un 502 que **no se arregla nunca esperando** — hay que autorizar el certificado en ARCA. Un cliente que ramifique sólo por 4xx/5xx acierta al revés en los dos.\n\n**Ausente significa \"no lo sabemos\"**, y es distinto de `false`: ahí corresponde la heurística de siempre. Sólo se declara donde la respuesta es certera.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"number","example":43200,"description":"Cuántos segundos esperar antes de reintentar. **Sólo cuando el número es real** —el vencimiento de un ticket, la ventana de un límite—, nunca una estimación.\n\nEl 429 y el bloqueo del segundo factor ya lo mandaban como `details.reintentarEnSegundos`, en castellano y anidado. Sigue ahí para no romper a nadie, y ahora **también arriba**, con el nombre del resto del sobre.","uniqueKey":"retryAfterSeconds","typeLabel":"number"},"requestId":{"type":"string","example":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e","description":"El mismo valor de la cabecera `X-Request-Id`. Es lo que hay que pegar en un ticket.","uniqueKey":"requestId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":401,"errorCode":"UNAUTHORIZED","message":"No autorizado","timestamp":"2026-07-26T18:30:00.000Z","path":"/v1/invoices/authorize","details":"\u003cstring>","retryable":false,"retryAfterSeconds":43200,"requestId":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e"}}},"exampleType":"generated"}},"headers":{"X-Request-Id":{"description":"Identificador del pedido. Va en TODA respuesta. Si lo mandás en el pedido y respeta `[A-Za-z0-9._:-]{1,128}`, se te devuelve el mismo; si no, se genera uno. Es lo que hay que citar en un ticket.","schema":{"type":"string"}},"X-Emissa-Mode":{"description":"`test` o `live`. **Va en toda respuesta autenticada con API key**, y es la forma más barata de verificar que no estás emitiendo contra el ambiente equivocado. No aparece cuando se entra con sesión de panel: ahí el ambiente lo decide cada contribuyente, no la credencial.","schema":{"type":"string","enum":["test","live"]}}},"exampleType":"generated"},"5a2f4a51-f77f-48fc-97b6-0f135d2b54ba":{"description":"Error interno. Citá el `requestId` al reportarlo.\n\n`errorCode`: `INTERNAL_ERROR`","content":{"application/json":{"schema":{"type":"object","required":["statusCode","errorCode","message","timestamp","path"],"properties":{"statusCode":{"type":"number","example":401,"description":"El mismo código HTTP de la respuesta. Va repetido en el cuerpo para que un cliente que sólo loguea el JSON no pierda el dato.","isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"errorCode":{"type":"string","description":"Siempre una entrada del catálogo de errores. Es el campo por el que se ramifica.","enum":["INTERNAL_ERROR"],"example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"errorCode","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"No autorizado","description":"**Siempre un string**, nunca un arreglo.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"timestamp":{"type":"string","example":"2026-07-26T18:30:00.000Z","description":"Cuándo falló, en UTC. Sirve para ubicarlo en los logs.","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","example":"/v1/invoices/authorize","description":"La ruta que se pidió, sin el host ni la query.","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","uniqueKey":"details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","additionalProperties":true,"uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"string | object"},"retryable":{"type":"boolean","example":false,"description":"**¿Tiene sentido reintentar?** Si viene, le gana a cualquier heurística basada en el status.\n\nExiste porque el status no alcanza: `ARCA_TICKET_ALREADY_ISSUED` es un 409 que **se resuelve esperando**, y `ARCA_COMPUTER_NOT_AUTHORIZED` es un 502 que **no se arregla nunca esperando** — hay que autorizar el certificado en ARCA. Un cliente que ramifique sólo por 4xx/5xx acierta al revés en los dos.\n\n**Ausente significa \"no lo sabemos\"**, y es distinto de `false`: ahí corresponde la heurística de siempre. Sólo se declara donde la respuesta es certera.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"number","example":43200,"description":"Cuántos segundos esperar antes de reintentar. **Sólo cuando el número es real** —el vencimiento de un ticket, la ventana de un límite—, nunca una estimación.\n\nEl 429 y el bloqueo del segundo factor ya lo mandaban como `details.reintentarEnSegundos`, en castellano y anidado. Sigue ahí para no romper a nadie, y ahora **también arriba**, con el nombre del resto del sobre.","uniqueKey":"retryAfterSeconds","typeLabel":"number"},"requestId":{"type":"string","example":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e","description":"El mismo valor de la cabecera `X-Request-Id`. Es lo que hay que pegar en un ticket.","uniqueKey":"requestId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":401,"errorCode":"UNAUTHORIZED","message":"No autorizado","timestamp":"2026-07-26T18:30:00.000Z","path":"/v1/invoices/authorize","details":"\u003cstring>","retryable":false,"retryAfterSeconds":43200,"requestId":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e"}}},"exampleType":"generated"}},"headers":{"X-Request-Id":{"description":"Identificador del pedido. Va en TODA respuesta. Si lo mandás en el pedido y respeta `[A-Za-z0-9._:-]{1,128}`, se te devuelve el mismo; si no, se genera uno. Es lo que hay que citar en un ticket.","schema":{"type":"string"}},"X-Emissa-Mode":{"description":"`test` o `live`. **Va en toda respuesta autenticada con API key**, y es la forma más barata de verificar que no estás emitiendo contra el ambiente equivocado. No aparece cuando se entra con sesión de panel: ahí el ambiente lo decide cada contribuyente, no la credencial.","schema":{"type":"string","enum":["test","live"]}}},"exampleType":"generated"},"5e7aa930-44fd-437b-8e65-6dd61d9f8c50":{"description":"ARCA no está disponible o contestó algo ilegible. **Reintentá con la misma `Idempotency-Key`.**\n\n`errorCode`: `ARCA_WSAA_UNAVAILABLE`, `ARCA_WSAA_REJECTED`, `ARCA_WSFEV1_UNAVAILABLE`, `ARCA_INVALID_RESPONSE`","content":{"application/json":{"schema":{"type":"object","required":["statusCode","errorCode","message","timestamp","path"],"properties":{"statusCode":{"type":"number","example":401,"description":"El mismo código HTTP de la respuesta. Va repetido en el cuerpo para que un cliente que sólo loguea el JSON no pierda el dato.","isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"errorCode":{"type":"string","description":"Siempre una entrada del catálogo de errores. Es el campo por el que se ramifica.","enum":["ARCA_WSAA_UNAVAILABLE","ARCA_WSAA_REJECTED","ARCA_WSFEV1_UNAVAILABLE","ARCA_INVALID_RESPONSE"],"example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"errorCode","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"No autorizado","description":"**Siempre un string**, nunca un arreglo.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"timestamp":{"type":"string","example":"2026-07-26T18:30:00.000Z","description":"Cuándo falló, en UTC. Sirve para ubicarlo en los logs.","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","example":"/v1/invoices/authorize","description":"La ruta que se pidió, sin el host ni la query.","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","uniqueKey":"details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","additionalProperties":true,"uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"string | object"},"retryable":{"type":"boolean","example":false,"description":"**¿Tiene sentido reintentar?** Si viene, le gana a cualquier heurística basada en el status.\n\nExiste porque el status no alcanza: `ARCA_TICKET_ALREADY_ISSUED` es un 409 que **se resuelve esperando**, y `ARCA_COMPUTER_NOT_AUTHORIZED` es un 502 que **no se arregla nunca esperando** — hay que autorizar el certificado en ARCA. Un cliente que ramifique sólo por 4xx/5xx acierta al revés en los dos.\n\n**Ausente significa \"no lo sabemos\"**, y es distinto de `false`: ahí corresponde la heurística de siempre. Sólo se declara donde la respuesta es certera.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"number","example":43200,"description":"Cuántos segundos esperar antes de reintentar. **Sólo cuando el número es real** —el vencimiento de un ticket, la ventana de un límite—, nunca una estimación.\n\nEl 429 y el bloqueo del segundo factor ya lo mandaban como `details.reintentarEnSegundos`, en castellano y anidado. Sigue ahí para no romper a nadie, y ahora **también arriba**, con el nombre del resto del sobre.","uniqueKey":"retryAfterSeconds","typeLabel":"number"},"requestId":{"type":"string","example":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e","description":"El mismo valor de la cabecera `X-Request-Id`. Es lo que hay que pegar en un ticket.","uniqueKey":"requestId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":401,"errorCode":"UNAUTHORIZED","message":"No autorizado","timestamp":"2026-07-26T18:30:00.000Z","path":"/v1/invoices/authorize","details":"\u003cstring>","retryable":false,"retryAfterSeconds":43200,"requestId":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e"}}},"exampleType":"generated"}},"headers":{"X-Request-Id":{"description":"Identificador del pedido. Va en TODA respuesta. Si lo mandás en el pedido y respeta `[A-Za-z0-9._:-]{1,128}`, se te devuelve el mismo; si no, se genera uno. Es lo que hay que citar en un ticket.","schema":{"type":"string"}},"X-Emissa-Mode":{"description":"`test` o `live`. **Va en toda respuesta autenticada con API key**, y es la forma más barata de verificar que no estás emitiendo contra el ambiente equivocado. No aparece cuando se entra con sesión de panel: ahí el ambiente lo decide cada contribuyente, no la credencial.","schema":{"type":"string","enum":["test","live"]}}},"exampleType":"generated"},"291b6994-2037-4c3b-9021-929a8dc35ddb":{"description":"La serie está ocupada por otra emisión. **Reintentá**: la emisión está serializada por serie para que los números lleguen a ARCA en orden, y este 503 es la espera hecha explícita, no una falla.\n\n`errorCode`: `SERIES_BUSY`","content":{"application/json":{"schema":{"type":"object","required":["statusCode","errorCode","message","timestamp","path"],"properties":{"statusCode":{"type":"number","example":401,"description":"El mismo código HTTP de la respuesta. Va repetido en el cuerpo para que un cliente que sólo loguea el JSON no pierda el dato.","isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"errorCode":{"type":"string","description":"Siempre una entrada del catálogo de errores. Es el campo por el que se ramifica.","enum":["SERIES_BUSY"],"example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"errorCode","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"No autorizado","description":"**Siempre un string**, nunca un arreglo.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"timestamp":{"type":"string","example":"2026-07-26T18:30:00.000Z","description":"Cuándo falló, en UTC. Sirve para ubicarlo en los logs.","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","example":"/v1/invoices/authorize","description":"La ruta que se pidió, sin el host ni la query.","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"details":{"oneOf":[{"type":"string","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","uniqueKey":"details.oneOf.0","typeLabel":"string"},{"type":"object","description":"Detalle adicional. Lo contractual viaja siempre; lo de diagnóstico **no viaja en producción**. No ramifiques por este campo.","additionalProperties":true,"uniqueKey":"details.oneOf.1","typeLabel":"object"}],"uniqueKey":"details","typeLabel":"string | object"},"retryable":{"type":"boolean","example":false,"description":"**¿Tiene sentido reintentar?** Si viene, le gana a cualquier heurística basada en el status.\n\nExiste porque el status no alcanza: `ARCA_TICKET_ALREADY_ISSUED` es un 409 que **se resuelve esperando**, y `ARCA_COMPUTER_NOT_AUTHORIZED` es un 502 que **no se arregla nunca esperando** — hay que autorizar el certificado en ARCA. Un cliente que ramifique sólo por 4xx/5xx acierta al revés en los dos.\n\n**Ausente significa \"no lo sabemos\"**, y es distinto de `false`: ahí corresponde la heurística de siempre. Sólo se declara donde la respuesta es certera.","uniqueKey":"retryable","typeLabel":"boolean"},"retryAfterSeconds":{"type":"number","example":43200,"description":"Cuántos segundos esperar antes de reintentar. **Sólo cuando el número es real** —el vencimiento de un ticket, la ventana de un límite—, nunca una estimación.\n\nEl 429 y el bloqueo del segundo factor ya lo mandaban como `details.reintentarEnSegundos`, en castellano y anidado. Sigue ahí para no romper a nadie, y ahora **también arriba**, con el nombre del resto del sobre.","uniqueKey":"retryAfterSeconds","typeLabel":"number"},"requestId":{"type":"string","example":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e","description":"El mismo valor de la cabecera `X-Request-Id`. Es lo que hay que pegar en un ticket.","uniqueKey":"requestId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":401,"errorCode":"UNAUTHORIZED","message":"No autorizado","timestamp":"2026-07-26T18:30:00.000Z","path":"/v1/invoices/authorize","details":"\u003cstring>","retryable":false,"retryAfterSeconds":43200,"requestId":"0f2c1a5e-1d9b-4c7a-9a55-7f1a2b3c4d5e"}}},"exampleType":"generated"}},"headers":{"X-Request-Id":{"description":"Identificador del pedido. Va en TODA respuesta. Si lo mandás en el pedido y respeta `[A-Za-z0-9._:-]{1,128}`, se te devuelve el mismo; si no, se genera uno. Es lo que hay que citar en un ticket.","schema":{"type":"string"}},"X-Emissa-Mode":{"description":"`test` o `live`. **Va en toda respuesta autenticada con API key**, y es la forma más barata de verificar que no estás emitiendo contra el ambiente equivocado. No aparece cuando se entra con sesión de panel: ahí el ambiente lo decide cada contribuyente, no la credencial.","schema":{"type":"string","enum":["test","live"]}}},"exampleType":"generated"}},"security":{"e625d04e-f349-41fa-9b73-de965b5c4229":{"api-key":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key de integración. **El modo va en el prefijo**: `emi_test_` opera contra homologación, `emi_live_` contra producción. Después, 64 hexadecimales.","scopes":[],"schemeName":"api-key"}},"ecfe63b7-9368-4a7a-bc99-20aab5e79ef1":{"panel-jwt":{"scheme":"bearer","bearerFormat":"JWT","type":"http","description":"Sesión del panel. **No** es donde va la API key.","scopes":[],"schemeName":"panel-jwt"}}},"servers":{"4c3ac454-1611-42e6-9972-fdce75c66d95":{"url":"https://api.emissa.com.ar","description":"Producción"},"59c0321e-fc8e-4fd2-8484-7481e01419e1":{"url":"http://localhost:3001","description":"Local"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key de integración. **El modo va en el prefijo**: `emi_test_` opera contra homologación, `emi_live_` contra producción. Después, 64 hexadecimales.","scopes":[],"schemeName":"api-key"},"schema":{"title":"X-API-Key","type":"string","description":"API key de integración. **El modo va en el prefijo**: `emi_test_` opera contra homologación, `emi_live_` contra producción. Después, 64 hexadecimales.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"api-key","name":"X-API-Key"}],"title":"api-key"},{"schemes":[{"scheme":{"scheme":"bearer","bearerFormat":"JWT","type":"http","description":"Sesión del panel. **No** es donde va la API key.","scopes":[],"schemeName":"panel-jwt"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Sesión del panel. **No** es donde va la API key.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"panel-jwt","name":"Authorization"}],"title":"panel-jwt"}]},"originalFileLocation":"https://api.emissa.com.ar/openapi.json"},"subdomain":"emissa","siteName":"Emissa","title":"Emitir un comprobante - Emissa","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-20T17:08:37.563Z","originalFileLocation":"api-reference/comprobantes/emitir-un-comprobante.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=\"light\"}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=\"Pide el CAE a ARCA y devuelve el comprobante autorizado. Idempotency-Key es obligatorio. Un duplicado fiscal no se deshace, así que el default tiene que ser el seguro: si te quedás sin respuesta, reintentá con la misma clave y vas a recibir el comprobante original con Idempotent-Replay: true. Las emisiones de una misma serie (contribuyente + punto de venta + tipo) se procesan de a una: ARCA exige que los números lleguen en orden. Si la serie está ocupada devuelve 503 SERIES_BUSY y hay que reintentar. Un rechazo de ARCA no consume el número: la serie no queda envenenada. externalReference es opcional y única por contribuyente y ambiente: mandá la referencia de tu sistema —el cobro, la orden— y después podés preguntar por ella con GET /v1/invoices/search?externalReference=. Si la reusás, la respuesta es 409 con el id del comprobante que ya existe. No reemplaza a Idempotency-Key: esa vence a los 7 días y cubre el reintento de un pedido; la referencia no vence y contesta por el comprobante meses después. Scope de API key: invoice:write. Una key sin ese scope recibe 403 API_KEY_INSUFFICIENT_SCOPE, aunque el rol de quien la creó lo permita: el permiso efectivo es la intersección de los dos.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Emissa\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/emissa/WZ2UJ_VM2VRN59-L/_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=\"/docs/mintlify-assets/_mintlify/favicons/emissa/WZ2UJ_VM2VRN59-L/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/emissa/WZ2UJ_VM2VRN59-L/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/emissa/WZ2UJ_VM2VRN59-L/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/emissa/WZ2UJ_VM2VRN59-L/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/emissa/WZ2UJ_VM2VRN59-L/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/emissa/WZ2UJ_VM2VRN59-L/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/emissa/WZ2UJ_VM2VRN59-L/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/emissa/WZ2UJ_VM2VRN59-L/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Emitir un comprobante - Emissa\">\u003cmeta data-mint-head property=\"og:description\" content=\"Pide el CAE a ARCA y devuelve el comprobante autorizado. Idempotency-Key es obligatorio. Un duplicado fiscal no se deshace, así que el default tiene que ser el seguro: si te quedás sin respuesta, reintentá con la misma clave y vas a recibir el comprobante original con Idempotent-Replay: true. Las emisiones de una misma serie (contribuyente + punto de venta + tipo) se procesan de a una: ARCA exige que los números lleguen en orden. Si la serie está ocupada devuelve 503 SERIES_BUSY y hay que reintentar. Un rechazo de ARCA no consume el número: la serie no queda envenenada. externalReference es opcional y única por contribuyente y ambiente: mandá la referencia de tu sistema —el cobro, la orden— y después podés preguntar por ella con GET /v1/invoices/search?externalReference=. Si la reusás, la respuesta es 409 con el id del comprobante que ya existe. No reemplaza a Idempotency-Key: esa vence a los 7 días y cubre el reintento de un pedido; la referencia no vence y contesta por el comprobante meses después. Scope de API key: invoice:write. Una key sin ese scope recibe 403 API_KEY_INSUFFICIENT_SCOPE, aunque el rol de quien la creó lo permita: el permiso efectivo es la intersección de los dos.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Emissa\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.emissa.com.ar/docs/api-reference/comprobantes/emitir-un-comprobante\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://emissa.mintlify.app/_mintlify/api/og/v2?division=Comprobantes\u0026amp;title=Emitir+un+comprobante\u0026amp;description=Pide+el+CAE+a+ARCA+y+devuelve+el+comprobante+autorizado.%0A%0A**%60Idempotency-Key%60+es+obligatorio.**+Un+duplicado+fiscal+no+se+deshace%2C+as%C3%AD+que+el+default+tiene+que+\u0026amp;theme=86e15709e365c8147b74cd50\u0026amp;signature=b36b5f2da81055b6e1a5f18841ed7f496c43b9b824a369706b4bec0546eba9e4\">\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=\"Emitir un comprobante - Emissa\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Pide el CAE a ARCA y devuelve el comprobante autorizado. Idempotency-Key es obligatorio. Un duplicado fiscal no se deshace, así que el default tiene que ser el seguro: si te quedás sin respuesta, reintentá con la misma clave y vas a recibir el comprobante original con Idempotent-Replay: true. Las emisiones de una misma serie (contribuyente + punto de venta + tipo) se procesan de a una: ARCA exige que los números lleguen en orden. Si la serie está ocupada devuelve 503 SERIES_BUSY y hay que reintentar. Un rechazo de ARCA no consume el número: la serie no queda envenenada. externalReference es opcional y única por contribuyente y ambiente: mandá la referencia de tu sistema —el cobro, la orden— y después podés preguntar por ella con GET /v1/invoices/search?externalReference=. Si la reusás, la respuesta es 409 con el id del comprobante que ya existe. No reemplaza a Idempotency-Key: esa vence a los 7 días y cubre el reintento de un pedido; la referencia no vence y contesta por el comprobante meses después. Scope de API key: invoice:write. Una key sin ese scope recibe 403 API_KEY_INSUFFICIENT_SCOPE, aunque el rol de quien la creó lo permita: el permiso efectivo es la intersección de los dos.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://emissa.mintlify.app/_mintlify/api/og/v2?division=Comprobantes\u0026amp;title=Emitir+un+comprobante\u0026amp;description=Pide+el+CAE+a+ARCA+y+devuelve+el+comprobante+autorizado.%0A%0A**%60Idempotency-Key%60+es+obligatorio.**+Un+duplicado+fiscal+no+se+deshace%2C+as%C3%AD+que+el+default+tiene+que+\u0026amp;theme=86e15709e365c8147b74cd50\u0026amp;signature=b36b5f2da81055b6e1a5f18841ed7f496c43b9b824a369706b4bec0546eba9e4\">\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=\"/docs/mintlify-assets/_mintlify/favicons/emissa/WZ2UJ_VM2VRN59-L/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Emissa\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0c0cc8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.emissa.com.ar/docs/api-reference/comprobantes/emitir-un-comprobante\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/comprobantes/emitir-un-comprobante.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.emissa.com.ar/#organization\",\"name\":\"Emissa\",\"url\":\"https://www.emissa.com.ar\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/emissa/54zD7qivv8TCTuUU/images/marca/navigation-positive-on-white.svg?fit=max\u0026auto=format\u0026n=54zD7qivv8TCTuUU\u0026q=85\u0026s=31720f0a4e045e64fd37cff5a02df0d4\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.emissa.com.ar/docs#website\",\"name\":\"Emissa\",\"url\":\"https://www.emissa.com.ar/docs\",\"publisher\":{\"@id\":\"https://www.emissa.com.ar/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.emissa.com.ar/docs/api-reference/comprobantes/emitir-un-comprobante#webpage\",\"url\":\"https://www.emissa.com.ar/docs/api-reference/comprobantes/emitir-un-comprobante\",\"name\":\"Emitir un comprobante\",\"description\":\"Pide el CAE a ARCA y devuelve el comprobante autorizado. Idempotency-Key es obligatorio. Un duplicado fiscal no se deshace, así que el default tiene que ser el seguro: si te quedás sin respuesta, reintentá con la misma clave y vas a recibir el comprobante original con Idempotent-Replay: true. Las emisiones de una misma serie (contribuyente + punto de venta + tipo) se procesan de a una: ARCA exige que los números lleguen en orden. Si la serie está ocupada devuelve 503 SERIES_BUSY y hay que reintentar. Un rechazo de ARCA no consume el número: la serie no queda envenenada. externalReference es opcional y única por contribuyente y ambiente: mandá la referencia de tu sistema —el cobro, la orden— y después podés preguntar por ella con GET /v1/invoices/search?externalReference=. Si la reusás, la respuesta es 409 con el id del comprobante que ya existe. No reemplaza a Idempotency-Key: esa vence a los 7 días y cubre el reintento de un pedido; la referencia no vence y contesta por el comprobante meses después. Scope de API key: invoice:write. Una key sin ese scope recibe 403 API_KEY_INSUFFICIENT_SCOPE, aunque el rol de quien la creó lo permita: el permiso efectivo es la intersección de los dos.\",\"dateModified\":\"2026-10-20T17:08:37.563Z\",\"isPartOf\":{\"@id\":\"https://www.emissa.com.ar/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.emissa.com.ar/docs/api-reference/comprobantes/emitir-un-comprobante#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.emissa.com.ar/docs/api-reference/comprobantes/emitir-un-comprobante#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Emissa\",\"item\":\"https://www.emissa.com.ar/docs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Emitir un comprobante\",\"item\":\"https://www.emissa.com.ar/docs/api-reference/comprobantes/emitir-un-comprobante\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://www.emissa.com.ar/docs/api-reference/comprobantes/emitir-un-comprobante#apireference\",\"headline\":\"Emitir un comprobante\",\"name\":\"Emitir un comprobante\",\"description\":\"Pide el CAE a ARCA y devuelve el comprobante autorizado. Idempotency-Key es obligatorio. Un duplicado fiscal no se deshace, así que el default tiene que ser el seguro: si te quedás sin respuesta, reintentá con la misma clave y vas a recibir el comprobante original con Idempotent-Replay: true. Las emisiones de una misma serie (contribuyente + punto de venta + tipo) se procesan de a una: ARCA exige que los números lleguen en orden. Si la serie está ocupada devuelve 503 SERIES_BUSY y hay que reintentar. Un rechazo de ARCA no consume el número: la serie no queda envenenada. externalReference es opcional y única por contribuyente y ambiente: mandá la referencia de tu sistema —el cobro, la orden— y después podés preguntar por ella con GET /v1/invoices/search?externalReference=. Si la reusás, la respuesta es 409 con el id del comprobante que ya existe. No reemplaza a Idempotency-Key: esa vence a los 7 días y cubre el reintento de un pedido; la referencia no vence y contesta por el comprobante meses después. Scope de API key: invoice:write. Una key sin ese scope recibe 403 API_KEY_INSUFFICIENT_SCOPE, aunque el rol de quien la creó lo permita: el permiso efectivo es la intersección de los dos.\",\"url\":\"https://www.emissa.com.ar/docs/api-reference/comprobantes/emitir-un-comprobante\",\"mainEntityOfPage\":{\"@id\":\"https://www.emissa.com.ar/docs/api-reference/comprobantes/emitir-un-comprobante#webpage\"},\"dateModified\":\"2026-10-20T17:08:37.563Z\",\"publisher\":{\"@id\":\"https://www.emissa.com.ar/#organization\"},\"isPartOf\":{\"@id\":\"https://www.emissa.com.ar/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Emissa\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Emissa","nav":{"global":null,"tabs":[{"tab":"Guías","pages":[{"title":"Guías","href":"/guias/inicio"}]},{"tab":"Referencia de la API","groups":[{"group":"Contribuyentes","pages":[{"title":"Listar contribuyentes","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json get /v1/taxpayers","href":"/api-reference/contribuyentes/listar-contribuyentes"},{"title":"Alta o edición de un contribuyente","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json post /v1/taxpayers","href":"/api-reference/contribuyentes/alta-o-edición-de-un-contribuyente"},{"title":"Verificar la conexión con ARCA","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json post /v1/taxpayers/{id}/conexion/verificar","href":"/api-reference/contribuyentes/verificar-la-conexión-con-arca"},{"title":"Descargar el logo del emisor","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json get /v1/taxpayers/{id}/logo","href":"/api-reference/contribuyentes/descargar-el-logo-del-emisor"},{"title":"Subir o reemplazar el logo del emisor","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json put /v1/taxpayers/{id}/logo","href":"/api-reference/contribuyentes/subir-o-reemplazar-el-logo-del-emisor"},{"title":"Borrar el logo del emisor","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json delete /v1/taxpayers/{id}/logo","href":"/api-reference/contribuyentes/borrar-el-logo-del-emisor"},{"title":"Consultar el padrón de ARCA por CUIT","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json get /v1/arca/padron/{cuit}","href":"/api-reference/contribuyentes/consultar-el-padrón-de-arca-por-cuit"}]},{"group":"Credenciales ARCA","pages":[{"title":"Historial de credenciales","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json get /v1/arca/credentials","href":"/api-reference/credenciales-arca/historial-de-credenciales"},{"title":"Cargar el certificado y la clave privada","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json post /v1/arca/credentials","href":"/api-reference/credenciales-arca/cargar-el-certificado-y-la-clave-privada"},{"title":"Revocar una credencial","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json delete /v1/arca/credentials/{id}","href":"/api-reference/credenciales-arca/revocar-una-credencial"}]},{"group":"Clientes","pages":[{"title":"Validar un receptor contra el padrón de ARCA","description":"Consulta el padrón de ARCA y devuelve lo que tiene registrado para ese documento, para no emitir con una razón social inventada.\n\nSi el padrón no está disponible **no falla la operación**: devuelve lo que se pudo determinar. El padrón es una ayuda, no una dependencia de la emisión.\n\n**Scope de API key:** `taxpayer:read`. Una key sin ese scope recibe `403 API_KEY_INSUFFICIENT_SCOPE`, aunque el rol de quien la creó lo permita: el permiso efectivo es la **intersección** de los dos.","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json post /v1/customers/validate-tax","href":"/api-reference/clientes/validar-un-receptor-contra-el-padrón-de-arca"}]},{"group":"Comprobantes","pages":[{"title":"Emitir un comprobante","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json post /v1/invoices/authorize","href":"/api-reference/comprobantes/emitir-un-comprobante"},{"title":"Listar comprobantes","description":"Paginación **keyset**, ordenada por fecha de creación descendente. Para la página siguiente se manda el `pagination.nextCursor` tal cual vino, en `?cursor=`.\n\nNo hay `offset` a propósito: quien factura mientras pagina movería las filas debajo del cursor y vería un comprobante dos veces mientras se pierde otro. Con keyset eso no pasa.\n\nSe filtra por tipo, **estado** (`?status=PENDING\u0026status=UNKNOWN`), punto de venta, número y rango de fechas, y se busca por texto con `?q=` contra el número, el receptor, su documento y el CAE.\n\n`?withTotal=true` agrega `pagination.total`. **No viene por defecto**: es un `COUNT(*)` sobre el histórico filtrado y no hace falta para paginar. Conviene pedirlo en la primera página, no en cada una.\n\n**Scope de API key:** `invoice:read`. Una key sin ese scope recibe `403 API_KEY_INSUFFICIENT_SCOPE`, aunque el rol de quien la creó lo permita: el permiso efectivo es la **intersección** de los dos.","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json get /v1/invoices/search","href":"/api-reference/comprobantes/listar-comprobantes"},{"title":"Exportar el histórico","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json get /v1/invoices/export","href":"/api-reference/comprobantes/exportar-el-histórico"},{"title":"Anular un comprobante","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json post /v1/invoices/{id}/cancel","href":"/api-reference/comprobantes/anular-un-comprobante"},{"title":"Reconciliar un comprobante sin resolver","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json post /v1/invoices/{id}/reconcile","href":"/api-reference/comprobantes/reconciliar-un-comprobante-sin-resolver"},{"title":"Comprobantes sin resolver","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json get /v1/invoices/unresolved","href":"/api-reference/comprobantes/comprobantes-sin-resolver"},{"title":"Un comprobante por id","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json get /v1/invoices/{id}","href":"/api-reference/comprobantes/un-comprobante-por-id"},{"title":"PDF del comprobante","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json get /v1/invoices/{id}/pdf","href":"/api-reference/comprobantes/pdf-del-comprobante"}]},{"group":"Consumo","pages":[{"title":"Consumo del período","deprecated":null,"version":null,"openapi":"https://api.emissa.com.ar/openapi.json get /v1/consumo","href":"/api-reference/consumo/consumo-del-período"}]}]}]},"basePath":"","title":"Emitir un comprobante - Emissa","buildId":"dpl_6cCEiK8XNNvaLBBkWzcBhdE9QfLC","deploymentId":"dpl_6cCEiK8XNNvaLBBkWzcBhdE9QfLC","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CLz2_Z5D.js","utils-7A5jZhOT.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BVWmkKuv.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-4SOfrh0F.js","snippetPresets-CMc8KicP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ba9tX7z3.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Be8krXvv.js","shallow-CBC3K1uB.js","getApiPlaygroundDisplay-4tKcUAYo.js","CodeSnippet-C1Xa06ft.js","CodeSnippets-vqiz27A_.js","Page-DeQN5MDd.js","getPastedJson-NUwRfM32.js","icon-DkIVqWh9.js","MethodPill-qmhT7_wz.js","DuplicateIcon-_gWp1vhn.js","createIcon-NA1p_TVA.js","DynamicMarkdown-Bas9A7wq.js","SectionHeading-a1cS-24U.js","axios-vUo_bRtp.js","Markdown-D3ZTwq_a.js","clsx-BcghKhHb.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-B66mVNPp.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DmooSyTN.js"]}