Download OpenAPI specification:Download
Emisión y constatación de comprobantes electrónicos de ARCA/AFIP: facturas, notas de débito y notas de crédito, en sus variantes local (letra A/B/C/M), de exportación (E) y de turismo (T) — para N usuarios, en modo contador (un certificado delegado por N CUITs) o autoservicio (certificado propio por usuario).
Emisión, consulta, reintento y constatación de comprobantes: facturas, notas de débito y notas de crédito, en sus variantes local, de exportación y de turismo — el corazón de la API.
| page | number >= 1 Número de página, arranca en 1. Default: 1. |
| size | number >= 1 Cantidad de resultados por página. Default 20, máximo 100 (valores mayores se recortan a 100, nunca rechazan la request). |
| represented_cuit_id | string Opcional — un contador/usuario en autoservicio lo manda para acotar a un cliente puntual. Si no viene, se listan todas las facturas que el usuario autenticado creó, sin importar el tier. |
| date_from | string Filtra por issueDate >= esta fecha. |
| date_to | string Filtra por issueDate <= esta fecha. |
| status | string Enum: "PENDING" "APPROVED" "REJECTED" "OBSERVED" PENDING (esperando respuesta de ARCA), APPROVED (CAE otorgado), OBSERVED (CAE otorgado con observaciones) o REJECTED (ARCA no autorizó — reintentable vía POST /invoices/:id/retry). |
| receptor_identification_value | string Filtra por a quién se le emitió la factura (identificationValue del receptor, no el CUIT del emisor). |
| voucher_type | number Código de comprobante de ARCA (ver GET /catalogs/tipos-comprobante), ej. 6=Factura B, 1=Factura A. |
| sales_point_number | number Filtra por punto de venta. |
Array of objects (InvoiceSearchResultDto) | |
object (SearchMetaDto) |
null| represented_cuit_id | string Solo para un contador o usuario en autoservicio que factura por varios clientes — elige a cuál. Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el certificado de la plataforma si no tiene uno propio. |
| letter required | string Enum: "A" "B" "C" "M" "E" "T" Letra del comprobante. A/B/C/M son facturas locales; E es exportación (requiere |
| kind required | string Enum: "FACTURA" "NOTA_DEBITO" "NOTA_CREDITO" FACTURA, NOTA_DEBITO o NOTA_CREDITO. Una nota de crédito/débito requiere |
| sales_point_number required | number Punto de venta habilitado en ARCA para el CUIT que emite. |
| issue_date required | string Fecha de emisión (yyyy-mm-dd). Tiene que estar dentro de la ventana que ARCA exige respecto de hoy (400 si no). |
| total_amount required | number >= 0 Total del comprobante, en centavos (ej. 12100 = $121,00). |
required | object A quién se le emite el comprobante. |
Array of objects (InvoiceAssociationDto) non-empty Comprobante(s) original(es) que esta nota ajusta — obligatorio para kind=NOTA_DEBITO/NOTA_CREDITO, salvo en turismo. | |
| concept_type | string Enum: "PRODUCTS" "SERVICES" "PRODUCTS_AND_SERVICES" PRODUCTS/SERVICES/PRODUCTS_AND_SERVICES. Requerido para facturas locales (letter A/B/C/M). SERVICES/PRODUCTS_AND_SERVICES exigen serviceStartDate/serviceEndDate. |
| taxable_amount | number >= 0 Monto gravado, en centavos. Requerido para facturas locales (letter A/B/C/M). |
| non_taxable_amount | number >= 0 Monto no gravado, en centavos. Requerido para facturas locales. |
| exempt_amount | number >= 0 Monto exento, en centavos. Requerido para facturas locales. |
| vat_amount | number >= 0 IVA total, en centavos — debe coincidir con la suma de |
| other_taxes_amount | number >= 0 Otros tributos, en centavos — debe coincidir con la suma de |
| currency_code | string Código de moneda (ver GET /catalogs/monedas) — PES para pesos. Requerido para facturas locales. |
| exchange_rate | number Cotización de |
| service_start_date | string Fecha de inicio del servicio facturado. Requerido junto con serviceEndDate y paymentDueDate si conceptType es SERVICES o PRODUCTS_AND_SERVICES. |
| service_end_date | string Fecha de fin del servicio facturado — ver serviceStartDate. |
| payment_due_date | string Fecha límite de pago — ver serviceStartDate. |
Array of objects (InvoiceLineItemDto) non-empty Renglones de detalle (qué se vendió). Opcionales en el circuito estándar (solo se usan para el PDF); obligatorios y fiscalmente validados en el circuito itemizado (RG 2904). | |
Array of objects (InvoiceVatItemDto) non-empty Desglose de IVA por alícuota. Requerido para facturas locales — la suma debe coincidir con | |
Array of objects (InvoiceTaxItemDto) non-empty Otros tributos (además del IVA) — la suma debe coincidir con | |
object Campos propios de una factura de exportación. Obligatorio si letter=E, ignorado en cualquier otro caso. | |
object Campos propios de una factura de turismo. Obligatorio si letter=T, ignorado en cualquier otro caso. |
| Location | string Example: "/invoices/b3f1c2a0-1234-4abc-9def-0123456789ab" Path del comprobante recién creado (regla 180 de rest-api-guidelines). |
| id required | string |
| represented_cuit_id required | string |
| created_by_user_id required | string |
| created_at required | string <date-time> |
| status required | string Enum: "PENDING" "APPROVED" "REJECTED" "OBSERVED" |
required | Array of objects (InvoiceProviderErrorResponseDto) Errores/observaciones que devolvió ARCA, ya normalizados a un shape único — vacío si no hubo ninguno (comprobante APPROVED sin observaciones). |
required | object (VoucherResponseDto) |
| issue_date required | string <date-time> |
| total_amount required | number |
required | object or null
|
required | object (InvoiceReceptorResponseDto) |
required | Array of objects (InvoiceLineItemResponseDto) |
required | Array of objects (InvoiceVatItemResponseDto) |
required | Array of objects (InvoiceTaxItemResponseDto) |
required | Array of objects (InvoiceAssociationResponseDto) |
required | object or null
|
required | any |
Letra A/B/C/M sin adhesión a RG 2904 en el RepresentedCuit.
{- "represented_cuit_id": "{{represented_cuit_id}}",
- "letter": "B",
- "kind": "FACTURA",
- "sales_point_number": 1,
- "concept_type": "PRODUCTS",
- "receptor": {
- "identification_category": "NATIONAL_DOCUMENT",
- "document_type": 80,
- "identification_value": "20111111112",
- "tax_condition_id": 5
}, - "issue_date": "2026-09-09",
- "total_amount": 12100,
- "taxable_amount": 10000,
- "non_taxable_amount": 0,
- "exempt_amount": 0,
- "vat_amount": 2100,
- "other_taxes_amount": 0,
- "currency_code": "PES",
- "exchange_rate": 1,
- "items": [
- {
- "description": "Producto de ejemplo",
- "quantity": 2,
- "unit_of_measure_id": 7,
- "unit_price": 5000,
- "amount": 10000
}
], - "vat_items": [
- {
- "vat_rate_id": 5,
- "taxable_base": 10000,
- "amount": 2100
}
]
}detail.type depende de voucher.letter/adhesión a RG 2904: STANDARD (este caso) o ITEMIZED para A/B/C/M, EXPORT para letter=E, TOURISM para letter=T. amounts es null únicamente en EXPORT.
{- "id": "b3f1c2a0-1234-4abc-9def-0123456789ab",
- "represented_cuit_id": "b1a2c3d4-0000-4000-8000-000000000001",
- "created_by_user_id": "a0f1e2d3-0000-4000-8000-000000000009",
- "created_at": "2026-09-09T12:00:00.000Z",
- "associations": [ ],
- "voucher": {
- "letter": "B",
- "kind": "FACTURA",
- "sales_point_number": 1,
- "number": 124
}, - "issue_date": "2026-09-09T00:00:00.000Z",
- "total_amount": 12100,
- "authorization": {
- "code": "71234567890123",
- "expires_at": "2026-09-19T00:00:00.000Z"
}, - "status": "APPROVED",
- "provider_errors": [ ],
- "receptor": {
- "name": null,
- "identification": {
- "category": "NATIONAL_DOCUMENT",
- "value": "20111111112",
- "document_type": {
- "id": 80,
- "label": "CUIT"
}
}, - "tax_condition": {
- "id": 5,
- "label": "Consumidor Final"
}, - "country_code": null,
- "address": null
}, - "line_items": [
- {
- "description": "Producto de ejemplo",
- "quantity": 2,
- "unit_of_measure_id": 7,
- "unit_price": 5000,
- "discount_amount": 0,
- "amount": 10000
}
], - "vat_items": [
- {
- "vat_rate_id": 5,
- "taxable_base": 10000,
- "amount": 2100
}
], - "tax_items": [ ],
- "amounts": {
- "taxable": 10000,
- "non_taxable": 0,
- "exempt": 0,
- "other_taxes": 0,
- "currency_code": "PES",
- "exchange_rate": 1
}, - "detail": {
- "type": "STANDARD",
- "concept_type": "PRODUCTS",
- "vat_amount": 2100,
- "service_start_date": null,
- "service_end_date": null,
- "payment_due_date": null
}
}| id required | string Id del comprobante. |
| id required | string |
| represented_cuit_id required | string |
| created_by_user_id required | string |
| created_at required | string <date-time> |
| status required | string Enum: "PENDING" "APPROVED" "REJECTED" "OBSERVED" |
required | Array of objects (InvoiceProviderErrorResponseDto) Errores/observaciones que devolvió ARCA, ya normalizados a un shape único — vacío si no hubo ninguno (comprobante APPROVED sin observaciones). |
required | object (VoucherResponseDto) |
| issue_date required | string <date-time> |
| total_amount required | number |
required | object or null
|
required | object (InvoiceReceptorResponseDto) |
required | Array of objects (InvoiceLineItemResponseDto) |
required | Array of objects (InvoiceVatItemResponseDto) |
required | Array of objects (InvoiceTaxItemResponseDto) |
required | Array of objects (InvoiceAssociationResponseDto) |
required | object or null
|
required | any |
detail.type depende de voucher.letter/adhesión a RG 2904: STANDARD (este caso) o ITEMIZED para A/B/C/M, EXPORT para letter=E, TOURISM para letter=T. amounts es null únicamente en EXPORT.
{- "id": "b3f1c2a0-1234-4abc-9def-0123456789ab",
- "represented_cuit_id": "b1a2c3d4-0000-4000-8000-000000000001",
- "created_by_user_id": "a0f1e2d3-0000-4000-8000-000000000009",
- "created_at": "2026-09-09T12:00:00.000Z",
- "associations": [ ],
- "voucher": {
- "letter": "B",
- "kind": "FACTURA",
- "sales_point_number": 1,
- "number": 124
}, - "issue_date": "2026-09-09T00:00:00.000Z",
- "total_amount": 12100,
- "authorization": {
- "code": "71234567890123",
- "expires_at": "2026-09-19T00:00:00.000Z"
}, - "status": "APPROVED",
- "provider_errors": [ ],
- "receptor": {
- "name": null,
- "identification": {
- "category": "NATIONAL_DOCUMENT",
- "value": "20111111112",
- "document_type": {
- "id": 80,
- "label": "CUIT"
}
}, - "tax_condition": {
- "id": 5,
- "label": "Consumidor Final"
}, - "country_code": null,
- "address": null
}, - "line_items": [
- {
- "description": "Producto de ejemplo",
- "quantity": 2,
- "unit_of_measure_id": 7,
- "unit_price": 5000,
- "discount_amount": 0,
- "amount": 10000
}
], - "vat_items": [
- {
- "vat_rate_id": 5,
- "taxable_base": 10000,
- "amount": 2100
}
], - "tax_items": [ ],
- "amounts": {
- "taxable": 10000,
- "non_taxable": 0,
- "exempt": 0,
- "other_taxes": 0,
- "currency_code": "PES",
- "exchange_rate": 1
}, - "detail": {
- "type": "STANDARD",
- "concept_type": "PRODUCTS",
- "vat_amount": 2100,
- "service_start_date": null,
- "service_end_date": null,
- "payment_due_date": null
}
}| id required | string Id del comprobante REJECTED a reintentar. |
| Location | string Example: "/invoices/c4a2d3b1-5678-4def-8abc-1234567890cd" Path del comprobante del reintento (regla 180 de rest-api-guidelines). |
| id required | string |
| represented_cuit_id required | string |
| created_by_user_id required | string |
| created_at required | string <date-time> |
| status required | string Enum: "PENDING" "APPROVED" "REJECTED" "OBSERVED" |
required | Array of objects (InvoiceProviderErrorResponseDto) Errores/observaciones que devolvió ARCA, ya normalizados a un shape único — vacío si no hubo ninguno (comprobante APPROVED sin observaciones). |
required | object (VoucherResponseDto) |
| issue_date required | string <date-time> |
| total_amount required | number |
required | object or null
|
required | object (InvoiceReceptorResponseDto) |
required | Array of objects (InvoiceLineItemResponseDto) |
required | Array of objects (InvoiceVatItemResponseDto) |
required | Array of objects (InvoiceTaxItemResponseDto) |
required | Array of objects (InvoiceAssociationResponseDto) |
required | object or null
|
required | any |
detail.type depende de voucher.letter/adhesión a RG 2904: STANDARD (este caso) o ITEMIZED para A/B/C/M, EXPORT para letter=E, TOURISM para letter=T. amounts es null únicamente en EXPORT.
{- "id": "b3f1c2a0-1234-4abc-9def-0123456789ab",
- "represented_cuit_id": "b1a2c3d4-0000-4000-8000-000000000001",
- "created_by_user_id": "a0f1e2d3-0000-4000-8000-000000000009",
- "created_at": "2026-09-09T12:00:00.000Z",
- "associations": [ ],
- "voucher": {
- "letter": "B",
- "kind": "FACTURA",
- "sales_point_number": 1,
- "number": 124
}, - "issue_date": "2026-09-09T00:00:00.000Z",
- "total_amount": 12100,
- "authorization": {
- "code": "71234567890123",
- "expires_at": "2026-09-19T00:00:00.000Z"
}, - "status": "APPROVED",
- "provider_errors": [ ],
- "receptor": {
- "name": null,
- "identification": {
- "category": "NATIONAL_DOCUMENT",
- "value": "20111111112",
- "document_type": {
- "id": 80,
- "label": "CUIT"
}
}, - "tax_condition": {
- "id": 5,
- "label": "Consumidor Final"
}, - "country_code": null,
- "address": null
}, - "line_items": [
- {
- "description": "Producto de ejemplo",
- "quantity": 2,
- "unit_of_measure_id": 7,
- "unit_price": 5000,
- "discount_amount": 0,
- "amount": 10000
}
], - "vat_items": [
- {
- "vat_rate_id": 5,
- "taxable_base": 10000,
- "amount": 2100
}
], - "tax_items": [ ],
- "amounts": {
- "taxable": 10000,
- "non_taxable": 0,
- "exempt": 0,
- "other_taxes": 0,
- "currency_code": "PES",
- "exchange_rate": 1
}, - "detail": {
- "type": "STANDARD",
- "concept_type": "PRODUCTS",
- "vat_amount": 2100,
- "service_start_date": null,
- "service_end_date": null,
- "payment_due_date": null
}
}| id required | string Id del comprobante a constatar. |
| result required | string 'A' Autorizado / 'R' Rechazado / 'N' No encontrado — tal cual lo informa ARCA. |
required | Array of objects (VerifyVoucherObservationDto) |
required | Array of objects (VerifyVoucherObservationDto) |
{- "result": "A",
- "observations": [ ],
- "errors": [ ]
}| id required | string Id del comprobante. |
{- "title": "Api",
- "status": 401,
- "detail": "Falta el header Authorization con un Bearer token",
- "instance": "/...",
- "code": 40101037
}Constatación de cualquier comprobante autorizado (con CAE/CAI/CAEA), incluido uno emitido fuera de este sistema — a diferencia de invoices, no depende de que el comprobante exista en esta base.
| represented_cuit_id | string Con cuya credential se autentica la consulta — no tiene por qué ser el emisor del comprobante que se está constatando (ver issuerCuit). Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el de la plataforma si no tiene uno propio. |
| issuer_cuit required | string CUIT del emisor del comprobante a constatar — no tiene por qué coincidir con representedCuitId. |
| sales_point_number required | number Punto de venta del comprobante a constatar. |
| voucher_type required | number Código de comprobante de ARCA (ver GET /catalogs/tipos-comprobante). |
| voucher_number required | number Número del comprobante a constatar. |
| issue_date required | string Fecha de emisión del comprobante (yyyy-mm-dd). |
| total_amount required | number >= 0 Total del comprobante, en centavos. |
| authorization_code required | string CAE/CAI/CAEA del comprobante a constatar. |
| receptor_document_type | number Tipo de documento del receptor (ver GET /catalogs/tipos-documento-receptor) — ARCA lo exige según el tipo de comprobante y su importe. |
| receptor_document_value | string Identificación del receptor — ver receptorDocumentType. |
| result required | string 'A' Autorizado / 'R' Rechazado / 'N' No encontrado — tal cual lo informa ARCA. |
required | Array of objects (VerifyVoucherObservationDto) |
required | Array of objects (VerifyVoucherObservationDto) |
{- "represented_cuit_id": "{{represented_cuit_id}}",
- "issuer_cuit": "20222222223",
- "sales_point_number": 1,
- "voucher_type": 6,
- "voucher_number": 124,
- "issue_date": "2026-09-09",
- "total_amount": 12100,
- "authorization_code": "71234567890123"
}{- "result": "A",
- "observations": [ ],
- "errors": [ ]
}| id required | string |
| email required | string |
| display_name required | string or null |
| cuit required | string or null |
| created_at required | string <date-time> |
| tipo_persona required | string or null |
| razon_social required | string or null |
| nombre required | string or null |
| apellido required | string or null |
| domicilio_direccion required | string or null |
| domicilio_localidad required | string or null |
| domicilio_provincia required | string or null |
| domicilio_cod_postal required | string or null |
| condicion_iva_inferida_id required | number or null |
| padron_consultado_at required | string or null <date-time> |
| rg2904_adherent required | boolean or null Del RepresentedCuit propio (autoservicio, o el de la plataforma) — |
{- "id": "string",
- "email": "string",
- "display_name": "string",
- "cuit": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "tipo_persona": "string",
- "razon_social": "string",
- "nombre": "string",
- "apellido": "string",
- "domicilio_direccion": "string",
- "domicilio_localidad": "string",
- "domicilio_provincia": "string",
- "domicilio_cod_postal": "string",
- "condicion_iva_inferida_id": 0,
- "padron_consultado_at": "2019-08-24T14:15:22Z",
- "rg2904_adherent": true
}Reenviar el mismo CUIT que ya tenía es un no-op idempotente. Cambiarlo a uno distinto da 409 una vez que el usuario ya facturó y el padrón de ARCA confirmó ese CUIT. rg2904_adherent es opcional: si viene, declara o corrige la adhesión a RG 2904 del CUIT propio del usuario.
| cuit required | string^\d{11}$ CUIT para facturar con el certificado de la plataforma (11 dígitos, sin guiones). Reenviar el mismo que ya tenía es un no-op idempotente; cambiarlo a uno distinto da 409 una vez que ya facturaste con ese CUIT. |
| rg2904_adherent | boolean Si el usuario está adherido a RG 2904 (factura con detalle de ítem) — cambia qué datos exige ARCA en sus comprobantes locales. Se aplica al CUIT propio (autoservicio, o el de la plataforma si factura sin certificado propio), creándolo ahí mismo si todavía no existe. Omitido: no cambia el valor actual. |
| id required | string |
| email required | string |
| display_name required | string or null |
| cuit required | string or null |
| created_at required | string <date-time> |
| tipo_persona required | string or null |
| razon_social required | string or null |
| nombre required | string or null |
| apellido required | string or null |
| domicilio_direccion required | string or null |
| domicilio_localidad required | string or null |
| domicilio_provincia required | string or null |
| domicilio_cod_postal required | string or null |
| condicion_iva_inferida_id required | number or null |
| padron_consultado_at required | string or null <date-time> |
| rg2904_adherent required | boolean or null Del RepresentedCuit propio (autoservicio, o el de la plataforma) — |
{- "cuit": "string",
- "rg2904_adherent": true
}{- "id": "string",
- "email": "string",
- "display_name": "string",
- "cuit": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "tipo_persona": "string",
- "razon_social": "string",
- "nombre": "string",
- "apellido": "string",
- "domicilio_direccion": "string",
- "domicilio_localidad": "string",
- "domicilio_provincia": "string",
- "domicilio_cod_postal": "string",
- "condicion_iva_inferida_id": 0,
- "padron_consultado_at": "2019-08-24T14:15:22Z",
- "rg2904_adherent": true
}Alta y baja del certificado ARCA (cert + clave privada, cifrados) usado para autenticarse ante ARCA. El servidor siempre genera la clave privada — nunca se acepta una subida directa.
| page | number >= 1 Número de página, arranca en 1. Default: 1. |
| size | number >= 1 Cantidad de resultados por página. Default 20, máximo 100 (valores mayores se recortan a 100, nunca rechazan la request). |
Array of objects (CredentialSearchResultDto) | |
object (SearchMetaDto) |
nullEl servidor SIEMPRE genera la clave privada acá — nunca se acepta una subida directa de clave privada. Sin body: usa el CUIT ya configurado en el perfil (PATCH /users/me tiene que haberse llamado antes) y la razón social/nombre que haya en el padrón para ese CUIT.
| id required | string |
| cuit required | string |
| csr_pem required | string |
| status required | string Value: "PENDING_CERT" |
{- "id": "string",
- "cuit": "string",
- "csr_pem": "string",
- "status": "PENDING_CERT"
}| id required | string Credential creada en el paso 1 (POST /credentials/csr). |
| cert_pem required | string El .crt que devuelve AFIP al procesar el CSR de POST /credentials/csr. |
| id required | string |
| owner_user_id required | string or null Null solo sería una credential de la plataforma — esa nunca se expone acá (no existe ningún endpoint HTTP que la devuelva), este campo es siempre string en la práctica. |
| cuit required | string |
| status required | string Enum: "PENDING_CERT" "ACTIVE" "REVOKED" |
| csr_pem required | string or null Solo presente mientras status=PENDING_CERT — para volver a pegarlo en AFIP si se perdió. |
| expires_at required | string or null <date-time> |
| revoked_at required | string or null <date-time> |
| created_at required | string <date-time> |
{- "cert_pem": "string"
}{- "id": "string",
- "owner_user_id": "string",
- "cuit": "string",
- "status": "PENDING_CERT",
- "csr_pem": "string",
- "expires_at": "2019-08-24T14:15:22Z",
- "revoked_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z"
}| id required | string Id de la credential. |
| id required | string |
| owner_user_id required | string or null Null solo sería una credential de la plataforma — esa nunca se expone acá (no existe ningún endpoint HTTP que la devuelva), este campo es siempre string en la práctica. |
| cuit required | string |
| status required | string Enum: "PENDING_CERT" "ACTIVE" "REVOKED" |
| csr_pem required | string or null Solo presente mientras status=PENDING_CERT — para volver a pegarlo en AFIP si se perdió. |
| expires_at required | string or null <date-time> |
| revoked_at required | string or null <date-time> |
| created_at required | string <date-time> |
{- "id": "string",
- "owner_user_id": "string",
- "cuit": "string",
- "status": "PENDING_CERT",
- "csr_pem": "string",
- "expires_at": "2019-08-24T14:15:22Z",
- "revoked_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z"
}| id required | string Id de la credential a revocar. |
{- "title": "Api",
- "status": 401,
- "detail": "Falta el header Authorization con un Bearer token",
- "instance": "/...",
- "code": 40101037
}CUITs en cuyo nombre se puede facturar bajo una credential — el propio (autoservicio) o delegados por un tercero (modo contador).
| page | number >= 1 Número de página, arranca en 1. Default: 1. |
| size | number >= 1 Cantidad de resultados por página. Default 20, máximo 100 (valores mayores se recortan a 100, nunca rechazan la request). |
| credential_id required | string Credential bajo la cual buscar los CUITs (propio + delegados). |
| q | string Texto libre — busca por coincidencia parcial contra CUIT, etiqueta, razón social, nombre y apellido. No matchea contra campos de padrón que todavía están en null (ver GET /represented-cuits). |
Array of objects (RepresentedCuitSearchResultDto) | |
object (SearchMetaDto) |
nullEl sistema no puede verificar que la delegación exista del lado de ARCA, solo la registra — si no está hecha, POST /invoices va a rechazar con "CUIT representada no incluida en token". Dispara best-effort (nunca bloquea esta respuesta si falla) la consulta al padrón de ARCA para este CUIT y persiste ese snapshot en el propio cliente, para que listarlos después no necesite volver a consultarlo.
| credential_id required | string Credential bajo la cual se registra este CUIT delegado. |
| cuit required | string^\d{11}$ CUIT del cliente delegado (modo contador) — 11 dígitos, sin guiones. |
| label | string Etiqueta descriptiva opcional (ej. nombre del cliente). |
| rg2904_adherent | boolean Si este CUIT está adherido a RG 2904 (factura con detalle de ítem) — dato que ARCA no informa por ninguna vía consultable, se declara acá. Corregible después vía PATCH /represented-cuits/{id}. |
| id required | string |
| credential_id required | string |
| cuit required | string |
| label required | string or null |
| is_self required | boolean |
| rg2904_adherent required | boolean |
| default_sales_point_number required | number or null Punto de venta a preseleccionar en "Emitir factura" para este CUIT — pura conveniencia de UI, |
| created_at required | string <date-time> |
| tipo_persona required | string or null |
| razon_social required | string or null |
| nombre required | string or null |
| apellido required | string or null |
| domicilio_direccion required | string or null |
| domicilio_localidad required | string or null |
| domicilio_provincia required | string or null |
| domicilio_cod_postal required | string or null |
| condicion_iva_inferida_id required | number or null |
| padron_consultado_at required | string or null <date-time> |
{- "credential_id": "string",
- "cuit": "string",
- "label": "string",
- "rg2904_adherent": true
}{- "id": "string",
- "credential_id": "string",
- "cuit": "string",
- "label": "string",
- "is_self": true,
- "rg2904_adherent": true,
- "default_sales_point_number": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "tipo_persona": "string",
- "razon_social": "string",
- "nombre": "string",
- "apellido": "string",
- "domicilio_direccion": "string",
- "domicilio_localidad": "string",
- "domicilio_provincia": "string",
- "domicilio_cod_postal": "string",
- "condicion_iva_inferida_id": 0,
- "padron_consultado_at": "2019-08-24T14:15:22Z"
}Los 2 campos editables después de crear, cada uno independiente (mandar solo uno deja el otro sin tocar). rg2904_adherent lo declara el usuario (ARCA no lo informa por ninguna vía consultable) y puede haberse cargado mal al alta — antes de este endpoint la única forma de corregirlo era borrar y crear de nuevo el CUIT delegado, pero eso es imposible en cuanto ya facturó algo (DELETE devuelve 409 REPRESENTED_CUIT_HAS_INVOICES); cambiarlo solo afecta comprobantes emitidos DESPUÉS de este PATCH. default_sales_point_number es pura conveniencia de UI (preseleccionar el punto de venta en "Emitir factura") — nunca se usa server-side, acepta null para quitarlo.
| id required | string Id del CUIT (propio o delegado) a corregir. |
| rg2904_adherent | boolean Si este CUIT está adherido a RG 2904 (factura con detalle de ítem). Cambiarlo solo afecta comprobantes emitidos DESPUÉS de este PATCH — los ya emitidos no se re-emiten ni cambian de circuito. |
| default_sales_point_number | number or null >= 1 Punto de venta a preseleccionar en "Emitir factura" para este CUIT — null para quitarlo. No se valida contra ARCA al setearlo. |
| id required | string |
| credential_id required | string |
| cuit required | string |
| label required | string or null |
| is_self required | boolean |
| rg2904_adherent required | boolean |
| default_sales_point_number required | number or null Punto de venta a preseleccionar en "Emitir factura" para este CUIT — pura conveniencia de UI, |
| created_at required | string <date-time> |
| tipo_persona required | string or null |
| razon_social required | string or null |
| nombre required | string or null |
| apellido required | string or null |
| domicilio_direccion required | string or null |
| domicilio_localidad required | string or null |
| domicilio_provincia required | string or null |
| domicilio_cod_postal required | string or null |
| condicion_iva_inferida_id required | number or null |
| padron_consultado_at required | string or null <date-time> |
{- "rg2904_adherent": true,
- "default_sales_point_number": 1
}{- "id": "string",
- "credential_id": "string",
- "cuit": "string",
- "label": "string",
- "is_self": true,
- "rg2904_adherent": true,
- "default_sales_point_number": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "tipo_persona": "string",
- "razon_social": "string",
- "nombre": "string",
- "apellido": "string",
- "domicilio_direccion": "string",
- "domicilio_localidad": "string",
- "domicilio_provincia": "string",
- "domicilio_cod_postal": "string",
- "condicion_iva_inferida_id": 0,
- "padron_consultado_at": "2019-08-24T14:15:22Z"
}| id required | string Id del CUIT delegado a quitar. |
{- "title": "Api",
- "status": 400,
- "detail": "No se puede eliminar el RepresentedCuit propio (isSelf) de una credential",
- "instance": "/...",
- "code": 40001005
}ARCA no informa esta relación por ninguna vía consultable — el contribuyente tiene que haber dado de alta este punto de venta para esta modalidad directamente en ARCA primero (servicio REAR/RECE/RFI); esto solo le dice a esta API qué punto de venta imprimir con esa leyenda en el PDF.
| id required | string Id del CUIT (propio o delegado). |
| sales_point_number required | number >= 1 Punto de venta ya dado de alta en ARCA para esta modalidad (ver GET /catalogs/puntos-venta para los puntos de venta habilitados en general). |
| cbu | string CBU a imprimir en el PDF junto a la leyenda — opcional, recomendado por ARCA para facilitarle el pago al receptor. Sin esto, igual se imprime la leyenda, sin el número de cuenta. |
| id required | string |
| sales_point_number required | number |
| cbu required | string or null |
| created_at required | string <date-time> |
{- "sales_point_number": 1,
- "cbu": "string"
}{- "id": "string",
- "sales_point_number": 0,
- "cbu": "string",
- "created_at": "2019-08-24T14:15:22Z"
}| id required | string Id del CUIT (propio o delegado). |
| id required | string |
| sales_point_number required | number |
| cbu required | string or null |
| created_at required | string <date-time> |
[- {
- "id": "string",
- "sales_point_number": 0,
- "cbu": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
]Único campo editable después de marcar un punto de venta — para cambiar el número de punto de venta en sí hay que desmarcarlo y marcar el nuevo. cbu acepta null para quitarlo sin desmarcar el punto (la leyenda se sigue imprimiendo igual, solo sin el número de cuenta).
| id required | string Id del CUIT (propio o delegado). |
| salesPointNumber required | number Número de punto de venta a corregir. |
| cbu required | string or null CBU nuevo, o null para quitarlo (la leyenda se sigue imprimiendo igual, sin el número de cuenta). |
| id required | string |
| sales_point_number required | number |
| cbu required | string or null |
| created_at required | string <date-time> |
{- "cbu": "string"
}{- "id": "string",
- "sales_point_number": 0,
- "cbu": "string",
- "created_at": "2019-08-24T14:15:22Z"
}| id required | string Id del CUIT (propio o delegado). |
| salesPointNumber required | number Número de punto de venta a desmarcar. |
{- "title": "Bad Request",
- "status": 400,
- "detail": "field must not be empty",
- "instance": "/...",
- "errors": [
- "field must not be empty"
]
}Catálogos de referencia (tipos de comprobante, alícuotas de IVA, tipos de documento, puntos de venta, monedas, etc.) para completar los campos codificados de POST /invoices y otros endpoints.
Provincias argentinas (más CABA), con su código y nombre. Sin uso directo en esta API todavía — expuesto de referencia.
required | number or string |
| descripcion required | string |
| observaciones | string or null Solo en |
[- {
- "codigo": 0,
- "descripcion": "Ciudad Autónoma de Buenos Aires"
}, - {
- "codigo": 1,
- "descripcion": "Buenos Aires"
}, - {
- "codigo": 3,
- "descripcion": "Córdoba"
}
]1=Responsable Inscripto, 5=Consumidor Final, 6=Monotributo, etc. Usado en receptor.tax_condition de POST /invoices.
required | number or string |
| descripcion required | string |
| observaciones | string or null Solo en |
[- {
- "codigo": 1,
- "descripcion": "IVA Responsable Inscripto"
}, - {
- "codigo": 5,
- "descripcion": "Consumidor Final"
}, - {
- "codigo": 6,
- "descripcion": "Responsable Monotributo"
}
]CUIT, CUIL, DNI, Pasaporte, etc. Usado en receptor.identification.document_type de POST /invoices y receptor_document_type de POST /voucher-verifications.
required | number or string |
| descripcion required | string |
| observaciones | string or null Solo en |
[- {
- "codigo": 80,
- "descripcion": "CUIT"
}, - {
- "codigo": 94,
- "descripcion": "Pasaporte"
}, - {
- "codigo": 96,
- "descripcion": "DNI"
}
]Usado en export.invoice_language de POST /invoices (exportación).
required | number or string |
| descripcion required | string |
| observaciones | string or null Solo en |
[- {
- "codigo": 1,
- "descripcion": "Español"
}, - {
- "codigo": 2,
- "descripcion": "Inglés"
}, - {
- "codigo": 3,
- "descripcion": "Portugués"
}
]EXW, FOB, CIF, etc. Usado en export.incoterms de POST /invoices (exportación).
required | number or string |
| descripcion required | string |
| observaciones | string or null Solo en |
[- {
- "codigo": "EXW",
- "descripcion": "Ex Works"
}, - {
- "codigo": "FOB",
- "descripcion": "Free On Board"
}, - {
- "codigo": "CIF",
- "descripcion": "Cost, Insurance and Freight"
}
]Kg, metros, litros, etc. Usado en items[].unit_of_measure_id de POST /invoices (cualquier familia con renglones de detalle).
required | number or string |
| descripcion required | string |
| observaciones | string or null Solo en |
[- {
- "codigo": "01",
- "descripcion": "KILOGRAMO"
}, - {
- "codigo": "02",
- "descripcion": "METROS"
}, - {
- "codigo": "07",
- "descripcion": "UNIDAD"
}
]Identificador genérico que ARCA asigna a cada país para clientes del exterior. Usado en receptor.identification.value de POST /invoices cuando identification.category=FOREIGN_TAX_ID (exportación/turismo).
| cuit_pais required | string CUIT genérico que ARCA asigna a este país para clientes del exterior. |
| descripcion required | string |
| codigo_tipo_sujeto required | number |
[- {
- "cuit_pais": "50000000024",
- "descripcion": "PARAGUAY",
- "codigo_tipo_sujeto": 1
}, - {
- "cuit_pais": "50000002124",
- "descripcion": "ESTADOS UNIDOS",
- "codigo_tipo_sujeto": 1
}
]Alícuotas y valores como "No Corresponde"/"Exento"/"Gravado". Tabla legado de AFIP, sin uso directo en esta API — expuesta de referencia.
required | number or string |
| descripcion required | string |
| observaciones | string or null Solo en |
[- {
- "codigo": 2,
- "descripcion": "Exento",
- "observaciones": null
}, - {
- "codigo": 4,
- "descripcion": "10.5%",
- "observaciones": null
}, - {
- "codigo": 5,
- "descripcion": "21%",
- "observaciones": null
}
]1=Factura A, 6=Factura B, 11=Factura C, etc. Usado en GET /invoices?voucher_type, associations[].related_voucher_type (nota de crédito/débito) y voucher_type de POST /voucher-verifications.
| represented_cuit_id | string Solo para un contador o usuario en autoservicio que factura por varios clientes — elige con cuál credential consultar el catálogo. Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el certificado de la plataforma si no tiene uno propio. |
required | number or string |
| description required | string |
| start_date required | string or null <date> |
| end_date required | string or null <date> |
[- {
- "id": 1,
- "description": "Factura A",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": 6,
- "description": "Factura B",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": 11,
- "description": "Factura C",
- "start_date": "2010-01-01",
- "end_date": null
}
]Usado en vat_items[].vat_rate_id de POST /invoices y en tourism.items[].vat_rate_id.
| represented_cuit_id | string Solo para un contador o usuario en autoservicio que factura por varios clientes — elige con cuál credential consultar el catálogo. Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el certificado de la plataforma si no tiene uno propio. |
required | number or string |
| description required | string |
| start_date required | string or null <date> |
| end_date required | string or null <date> |
[- {
- "id": 3,
- "description": "0%",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": 4,
- "description": "10.5%",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": 5,
- "description": "21%",
- "start_date": "2010-01-01",
- "end_date": null
}
]80=CUIT, 96=DNI, etc. Usado en receptor.identification.document_type de POST /invoices y receptor_document_type de POST /voucher-verifications. Complementa GET /catalogs/tipos-documento (esa es una tabla local de mantenimiento manual; esta siempre está actualizada).
| represented_cuit_id | string Solo para un contador o usuario en autoservicio que factura por varios clientes — elige con cuál credential consultar el catálogo. Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el certificado de la plataforma si no tiene uno propio. |
required | number or string |
| description required | string |
| start_date required | string or null <date> |
| end_date required | string or null <date> |
[- {
- "id": 80,
- "description": "CUIT",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": 96,
- "description": "DNI",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": 99,
- "description": "Consumidor Final",
- "start_date": "2010-01-01",
- "end_date": null
}
]Usado en currency_code de POST /invoices (facturas locales, de exportación y de turismo).
| represented_cuit_id | string Solo para un contador o usuario en autoservicio que factura por varios clientes — elige con cuál credential consultar el catálogo. Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el certificado de la plataforma si no tiene uno propio. |
required | number or string |
| description required | string |
| start_date required | string or null <date> |
| end_date required | string or null <date> |
[- {
- "id": "PES",
- "description": "Pesos Argentinos",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": "DOL",
- "description": "Dolar Estadounidense",
- "start_date": "2010-01-01",
- "end_date": null
}
]Puntos de venta habilitados para el CUIT consultado (se dan de alta en el portal de AFIP, no vía esta API). Usado en sales_point_number de POST /invoices, GET /invoices y POST /voucher-verifications.
| represented_cuit_id | string Solo para un contador o usuario en autoservicio que factura por varios clientes — elige con cuál credential consultar el catálogo. Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el certificado de la plataforma si no tiene uno propio. |
| number required | number |
| emission_type required | string |
| blocked required | boolean |
| deactivated_at required | string or null <date> |
[- {
- "number": 1,
- "emission_type": "CAE",
- "blocked": false,
- "deactivated_at": null
}, - {
- "number": 2,
- "emission_type": "CAEA",
- "blocked": false,
- "deactivated_at": null
}
]Productos/servicios/ambos. Esta API declara el concepto directo como concept_type (PRODUCTS/SERVICES/PRODUCTS_AND_SERVICES) en POST /invoices, sin pasar por este catálogo — expuesto solo de referencia.
| represented_cuit_id | string Solo para un contador o usuario en autoservicio que factura por varios clientes — elige con cuál credential consultar el catálogo. Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el certificado de la plataforma si no tiene uno propio. |
required | number or string |
| description required | string |
| start_date required | string or null <date> |
| end_date required | string or null <date> |
[- {
- "id": 1,
- "description": "Productos",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": 2,
- "description": "Servicios",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": 3,
- "description": "Productos y Servicios",
- "start_date": "2010-01-01",
- "end_date": null
}
]Usado en tax_items[].tax_type_id de POST /invoices.
| represented_cuit_id | string Solo para un contador o usuario en autoservicio que factura por varios clientes — elige con cuál credential consultar el catálogo. Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el certificado de la plataforma si no tiene uno propio. |
required | number or string |
| description required | string |
| start_date required | string or null <date> |
| end_date required | string or null <date> |
[- {
- "id": 1,
- "description": "Impuestos Nacionales",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": 3,
- "description": "Impuestos Municipales",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": 99,
- "description": "Otro",
- "start_date": "2010-01-01",
- "end_date": null
}
]Vigente desde RG 5616. Usado en receptor.tax_condition de POST /invoices. Complementa GET /catalogs/tipos-responsable (esa es la tabla legado de mantenimiento manual; esta siempre está actualizada).
| represented_cuit_id | string Solo para un contador o usuario en autoservicio que factura por varios clientes — elige con cuál credential consultar el catálogo. Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el certificado de la plataforma si no tiene uno propio. |
required | number or string |
| description required | string |
| start_date required | string or null <date> |
| end_date required | string or null <date> |
[- {
- "id": 1,
- "description": "IVA Responsable Inscripto",
- "start_date": "2022-01-01",
- "end_date": null
}, - {
- "id": 5,
- "description": "Consumidor Final",
- "start_date": "2022-01-01",
- "end_date": null
}, - {
- "id": 6,
- "description": "Responsable Monotributo",
- "start_date": "2022-01-01",
- "end_date": null
}
]Campos opcionales que ARCA admite en un comprobante. Sin uso directo en esta API todavía — expuesto de referencia para quien necesite mandar uno que esta API no modela explícitamente.
| represented_cuit_id | string Solo para un contador o usuario en autoservicio que factura por varios clientes — elige con cuál credential consultar el catálogo. Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el certificado de la plataforma si no tiene uno propio. |
required | number or string |
| description required | string |
| start_date required | string or null <date> |
| end_date required | string or null <date> |
[- {
- "id": "17",
- "description": "Fecha Vto Servicio",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": "22",
- "description": "CBU",
- "start_date": "2010-01-01",
- "end_date": null
}
]Usado en receptor.country_code y export.destination_country_code/export.permits[].destination_country_code de POST /invoices (exportación/turismo).
| represented_cuit_id | string Solo para un contador o usuario en autoservicio que factura por varios clientes — elige con cuál credential consultar el catálogo. Un usuario final nunca lo manda: se resuelve solo contra su propio certificado, o contra el certificado de la plataforma si no tiene uno propio. |
required | number or string |
| description required | string |
| start_date required | string or null <date> |
| end_date required | string or null <date> |
[- {
- "id": 200,
- "description": "ESTADOS UNIDOS",
- "start_date": "2010-01-01",
- "end_date": null
}, - {
- "id": 203,
- "description": "BRASIL",
- "start_date": "2010-01-01",
- "end_date": null
}
]Consulta pública y de solo lectura del padrón de ARCA (razón social, domicilio, condición frente al IVA) para previsualizar un CUIT antes de guardarlo en algún lado.
Público dentro de la plataforma: no está scoped al usuario autenticado, cualquiera puede consultar cualquier CUIT/CUIL. 404 si ARCA no reconoce ese CUIT como un contribuyente real.
| cuit required | string CUIT o CUIL a consultar (11 dígitos, sin guiones). |
| cuit required | string |
| tipo_persona required | string or null |
| razon_social required | string or null |
| nombre required | string or null |
| apellido required | string or null |
| domicilio_direccion required | string or null |
| domicilio_localidad required | string or null |
| domicilio_provincia required | string or null |
| domicilio_cod_postal required | string or null |
| condicion_iva_inferida_id required | number or null Condición frente al IVA inferida a partir de los datos del padrón — no es autoritativa. Mismo código que GET /catalogs/tipos-responsable. |
| consultado_at required | string <date-time> |
{- "cuit": "string",
- "tipo_persona": "string",
- "razon_social": "string",
- "nombre": "string",
- "apellido": "string",
- "domicilio_direccion": "string",
- "domicilio_localidad": "string",
- "domicilio_provincia": "string",
- "domicilio_cod_postal": "string",
- "condicion_iva_inferida_id": 0,
- "consultado_at": "2019-08-24T14:15:22Z"
}Catálogo completo de errores que puede devolver esta API — pensado para generar documentación aparte o un diccionario de errores del lado del cliente. Sin autenticación, es metadata estática del contrato.
Todo ApiError declarado en el servicio (ver common/errors/api-error.ts), con su code compuesto ya resuelto contra el API_NUMBER real de este deployment. Orden estable por id ascendente.
| name required | string Nombre del miembro estático en |
| id required | number Id estable del error dentro de |
| status required | number |
| code required | number
|
| message required | string Template crudo ( |
| example_params required | Array of strings Valores de fallback para resolver |
| example_detail required | string
|
[- {
- "name": "SERVICE_UNAVAILABLE",
- "id": 1,
- "status": 503,
- "code": 50301001,
- "message": "%s",
- "example_params": [
- "El servicio no está disponible en este momento"
], - "example_detail": "El servicio no está disponible en este momento"
}, - {
- "name": "RESOURCE_NOT_FOUND",
- "id": 2,
- "status": 404,
- "code": 40401002,
- "message": "%s no encontrado",
- "example_params": [
- "recurso"
], - "example_detail": "recurso no encontrado"
}, - {
- "name": "CATALOG_NOT_FOUND",
- "id": 3,
- "status": 400,
- "code": 40001003,
- "message": "Catálogo no soportado: %s",
- "example_params": [
- "tipos-comprobante"
], - "example_detail": "Catálogo no soportado: tipos-comprobante"
}, - {
- "name": "STATIC_CATALOG_NOT_FOUND",
- "id": 4,
- "status": 400,
- "code": 40001004,
- "message": "Catálogo estático no soportado: %s",
- "example_params": [
- "provincias"
], - "example_detail": "Catálogo estático no soportado: provincias"
}, - {
- "name": "CANNOT_DELETE_SELF_REPRESENTED_CUIT",
- "id": 5,
- "status": 400,
- "code": 40001005,
- "message": "No se puede eliminar el RepresentedCuit propio (isSelf) de una credential",
- "example_params": [ ],
- "example_detail": "No se puede eliminar el RepresentedCuit propio (isSelf) de una credential"
}, - {
- "name": "REPRESENTED_CUIT_HAS_INVOICES",
- "id": 6,
- "status": 409,
- "code": 40901006,
- "message": "No se puede eliminar el RepresentedCuit: tiene comprobantes asociados",
- "example_params": [ ],
- "example_detail": "No se puede eliminar el RepresentedCuit: tiene comprobantes asociados"
}, - {
- "name": "REPRESENTED_CUIT_NOT_FOUND",
- "id": 7,
- "status": 404,
- "code": 40401007,
- "message": "RepresentedCuit no encontrado",
- "example_params": [ ],
- "example_detail": "RepresentedCuit no encontrado"
}, - {
- "name": "CREDENTIAL_REVOKED",
- "id": 8,
- "status": 403,
- "code": 40301008,
- "message": "La credential asociada fue revocada",
- "example_params": [ ],
- "example_detail": "La credential asociada fue revocada"
}, - {
- "name": "USER_CUIT_NOT_CONFIGURED",
- "id": 9,
- "status": 400,
- "code": 40001009,
- "message": "El usuario no tiene un CUIT configurado",
- "example_params": [ ],
- "example_detail": "El usuario no tiene un CUIT configurado"
}, - {
- "name": "PLATFORM_CREDENTIAL_NOT_CONFIGURED",
- "id": 10,
- "status": 503,
- "code": 50301010,
- "message": "No hay ninguna credential de plataforma activa configurada",
- "example_params": [ ],
- "example_detail": "No hay ninguna credential de plataforma activa configurada"
}, - {
- "name": "INVOICE_NOT_REJECTED",
- "id": 11,
- "status": 409,
- "code": 40901011,
- "message": "Solo se puede reintentar un comprobante REJECTED",
- "example_params": [ ],
- "example_detail": "Solo se puede reintentar un comprobante REJECTED"
}, - {
- "name": "INVOICE_REJECTED_NO_PDF",
- "id": 12,
- "status": 409,
- "code": 40901012,
- "message": "Un comprobante REJECTED no tiene PDF (nunca tuvo autorización)",
- "example_params": [ ],
- "example_detail": "Un comprobante REJECTED no tiene PDF (nunca tuvo autorización)"
}, - {
- "name": "INVOICE_PDF_NOT_SUPPORTED_FOR_SERVICE",
- "id": 13,
- "status": 409,
- "code": 40901013,
- "message": "El PDF todavía no está soportado para este tipo de comprobante",
- "example_params": [ ],
- "example_detail": "El PDF todavía no está soportado para este tipo de comprobante"
}, - {
- "name": "INVOICE_NOT_AUTHORIZED",
- "id": 14,
- "status": 409,
- "code": 40901014,
- "message": "El comprobante no tiene autorización de ARCA todavía",
- "example_params": [ ],
- "example_detail": "El comprobante no tiene autorización de ARCA todavía"
}, - {
- "name": "INVOICE_NOT_FOUND",
- "id": 15,
- "status": 404,
- "code": 40401015,
- "message": "Comprobante no encontrado",
- "example_params": [ ],
- "example_detail": "Comprobante no encontrado"
}, - {
- "name": "TOTAL_AMOUNT_MISMATCH",
- "id": 16,
- "status": 400,
- "code": 40001016,
- "message": "total_amount debe ser igual a taxable_amount + non_taxable_amount + exempt_amount + vat_amount + other_taxes_amount",
- "example_params": [ ],
- "example_detail": "total_amount debe ser igual a taxable_amount + non_taxable_amount + exempt_amount + vat_amount + other_taxes_amount"
}, - {
- "name": "VAT_AMOUNT_MISMATCH",
- "id": 17,
- "status": 400,
- "code": 40001017,
- "message": "vat_amount debe ser igual a la suma de vat_items[].amount",
- "example_params": [ ],
- "example_detail": "vat_amount debe ser igual a la suma de vat_items[].amount"
}, - {
- "name": "OTHER_TAXES_AMOUNT_MISMATCH",
- "id": 18,
- "status": 400,
- "code": 40001018,
- "message": "other_taxes_amount debe ser igual a la suma de tax_items[].amount",
- "example_params": [ ],
- "example_detail": "other_taxes_amount debe ser igual a la suma de tax_items[].amount"
}, - {
- "name": "SERVICE_DATES_REQUIRED",
- "id": 19,
- "status": 400,
- "code": 40001019,
- "message": "service_start_date, service_end_date y payment_due_date son obligatorios para este concept_type",
- "example_params": [ ],
- "example_detail": "service_start_date, service_end_date y payment_due_date son obligatorios para este concept_type"
}, - {
- "name": "TOURISM_VOUCHER_ONLY_SURPLUS_ITEMS",
- "id": 20,
- "status": 400,
- "code": 40001020,
- "message": "Un comprobante de turismo no puede tener únicamente ítems con tourism_code=5 (Excedente)",
- "example_params": [ ],
- "example_detail": "Un comprobante de turismo no puede tener únicamente ítems con tourism_code=5 (Excedente)"
}, - {
- "name": "ISSUE_DATE_OUT_OF_RANGE",
- "id": 21,
- "status": 400,
- "code": 40001021,
- "message": "issue_date debe estar dentro de %s días de la fecha actual",
- "example_params": [
- "5"
], - "example_detail": "issue_date debe estar dentro de 5 días de la fecha actual"
}, - {
- "name": "CREDENTIAL_NOT_FOUND",
- "id": 22,
- "status": 404,
- "code": 40401022,
- "message": "Credential no encontrada",
- "example_params": [ ],
- "example_detail": "Credential no encontrada"
}, - {
- "name": "PLATFORM_CREDENTIAL_ALREADY_EXISTS",
- "id": 23,
- "status": 409,
- "code": 40901023,
- "message": "Ya existe una credential de plataforma",
- "example_params": [ ],
- "example_detail": "Ya existe una credential de plataforma"
}, - {
- "name": "PLATFORM_CREDENTIAL_SECRET_NOT_FOUND",
- "id": 24,
- "status": 404,
- "code": 40401024,
- "message": "No hay clave ni certificado guardados para la credential de plataforma",
- "example_params": [ ],
- "example_detail": "No hay clave ni certificado guardados para la credential de plataforma"
}, - {
- "name": "PLATFORM_CREDENTIAL_STILL_PENDING",
- "id": 25,
- "status": 409,
- "code": 40901025,
- "message": "La credential de plataforma todavía no tiene certificado",
- "example_params": [ ],
- "example_detail": "La credential de plataforma todavía no tiene certificado"
}, - {
- "name": "CREDENTIAL_ALREADY_ACTIVE",
- "id": 26,
- "status": 409,
- "code": 40901026,
- "message": "La credential ya tiene un certificado activo",
- "example_params": [ ],
- "example_detail": "La credential ya tiene un certificado activo"
}, - {
- "name": "CREDENTIAL_PENDING_CERT",
- "id": 27,
- "status": 403,
- "code": 40301027,
- "message": "La credential todavía no tiene certificado (PENDING_CERT)",
- "example_params": [ ],
- "example_detail": "La credential todavía no tiene certificado (PENDING_CERT)"
}, - {
- "name": "CREDENTIAL_EXPIRED",
- "id": 28,
- "status": 403,
- "code": 40301028,
- "message": "La credential expiró",
- "example_params": [ ],
- "example_detail": "La credential expiró"
}, - {
- "name": "PLATFORM_CREDENTIAL_SECRET_EXISTS_USE_RECOVER",
- "id": 29,
- "status": 409,
- "code": 40901029,
- "message": "La credential de plataforma ya tiene clave y certificado guardados — hay que recuperarla, no pedir un CSR nuevo",
- "example_params": [ ],
- "example_detail": "La credential de plataforma ya tiene clave y certificado guardados — hay que recuperarla, no pedir un CSR nuevo"
}, - {
- "name": "CREDENTIAL_SECRET_MISSING",
- "id": 30,
- "status": 500,
- "code": 50001030,
- "message": "La credential existe pero no se encontró su clave privada",
- "example_params": [ ],
- "example_detail": "La credential existe pero no se encontró su clave privada"
}, - {
- "name": "CERT_DOES_NOT_MATCH_GENERATED_KEY",
- "id": 31,
- "status": 400,
- "code": 40001031,
- "message": "El certificado no corresponde a la clave generada por este sistema",
- "example_params": [ ],
- "example_detail": "El certificado no corresponde a la clave generada por este sistema"
}, - {
- "name": "INVALID_CERT_PEM",
- "id": 32,
- "status": 400,
- "code": 40001032,
- "message": "El PEM del certificado no es válido",
- "example_params": [ ],
- "example_detail": "El PEM del certificado no es válido"
}, - {
- "name": "USER_NOT_FOUND",
- "id": 33,
- "status": 404,
- "code": 40401033,
- "message": "Usuario no encontrado",
- "example_params": [ ],
- "example_detail": "Usuario no encontrado"
}, - {
- "name": "CUIT_ALREADY_CONFIGURED",
- "id": 34,
- "status": 409,
- "code": 40901034,
- "message": "El usuario ya facturó con este CUIT confirmado por ARCA — ya no se puede modificar",
- "example_params": [ ],
- "example_detail": "El usuario ya facturó con este CUIT confirmado por ARCA — ya no se puede modificar"
}, - {
- "name": "API_CLIENT_NOT_FOUND",
- "id": 35,
- "status": 404,
- "code": 40401035,
- "message": "Api Client no encontrado",
- "example_params": [ ],
- "example_detail": "Api Client no encontrado"
}, - {
- "name": "CONTRIBUYENTE_NOT_FOUND",
- "id": 36,
- "status": 404,
- "code": 40401036,
- "message": "ARCA no devolvió constancia para este CUIT",
- "example_params": [ ],
- "example_detail": "ARCA no devolvió constancia para este CUIT"
}, - {
- "name": "MISSING_BEARER_TOKEN",
- "id": 37,
- "status": 401,
- "code": 40101037,
- "message": "Falta el header Authorization con un Bearer token",
- "example_params": [ ],
- "example_detail": "Falta el header Authorization con un Bearer token"
}, - {
- "name": "INVALID_TOKEN",
- "id": 38,
- "status": 401,
- "code": 40101038,
- "message": "El token es inválido o expiró",
- "example_params": [ ],
- "example_detail": "El token es inválido o expiró"
}, - {
- "name": "SIGNING_KEY_NOT_FOUND",
- "id": 39,
- "status": 401,
- "code": 40101039,
- "message": "No se encontró la clave pública para verificar el token (kid)",
- "example_params": [ ],
- "example_detail": "No se encontró la clave pública para verificar el token (kid)"
}, - {
- "name": "JWKS_FETCH_FAILED",
- "id": 40,
- "status": 401,
- "code": 40101040,
- "message": "No se pudieron obtener las claves públicas para verificar el token",
- "example_params": [ ],
- "example_detail": "No se pudieron obtener las claves públicas para verificar el token"
}, - {
- "name": "MISSING_API_CLIENT_TOKEN",
- "id": 41,
- "status": 401,
- "code": 40101041,
- "message": "Falta el header Authorization con un token de Api Client",
- "example_params": [ ],
- "example_detail": "Falta el header Authorization con un token de Api Client"
}, - {
- "name": "INVALID_API_CLIENT",
- "id": 42,
- "status": 401,
- "code": 40101042,
- "message": "El Api Client es inválido o fue revocado",
- "example_params": [ ],
- "example_detail": "El Api Client es inválido o fue revocado"
}, - {
- "name": "CREDENTIAL_STORE_OPERATION_FAILED",
- "id": 43,
- "status": 500,
- "code": 50001043,
- "message": "No se pudo completar la operación sobre las credenciales guardadas — reintentá más tarde",
- "example_params": [ ],
- "example_detail": "No se pudo completar la operación sobre las credenciales guardadas — reintentá más tarde"
}, - {
- "name": "ARCA_BUSINESS_ERROR",
- "id": 44,
- "status": 500,
- "code": 50001044,
- "message": "ARCA rechazó la operación — revisá los datos del comprobante e intentá de nuevo",
- "example_params": [ ],
- "example_detail": "ARCA rechazó la operación — revisá los datos del comprobante e intentá de nuevo"
}, - {
- "name": "ARCA_HTTP_ERROR",
- "id": 45,
- "status": 500,
- "code": 50001045,
- "message": "ARCA no está disponible en este momento — reintentá más tarde",
- "example_params": [ ],
- "example_detail": "ARCA no está disponible en este momento — reintentá más tarde"
}, - {
- "name": "ARCA_UNEXPECTED_RESPONSE",
- "id": 46,
- "status": 500,
- "code": 50001046,
- "message": "ARCA devolvió una respuesta que no se pudo interpretar — reintentá más tarde",
- "example_params": [ ],
- "example_detail": "ARCA devolvió una respuesta que no se pudo interpretar — reintentá más tarde"
}, - {
- "name": "API_CLIENT_OPERATION_FAILED",
- "id": 47,
- "status": 500,
- "code": 50001047,
- "message": "No se pudo completar la operación sobre el API Client — reintentá más tarde",
- "example_params": [ ],
- "example_detail": "No se pudo completar la operación sobre el API Client — reintentá más tarde"
}, - {
- "name": "ITEMS_REQUIRED_FOR_ITEMIZED_INVOICE",
- "id": 48,
- "status": 400,
- "code": 40001048,
- "message": "items es obligatorio: el emisor está adherido a RG 2904, este comprobante necesita el detalle de ítems",
- "example_params": [ ],
- "example_detail": "items es obligatorio: el emisor está adherido a RG 2904, este comprobante necesita el detalle de ítems"
}, - {
- "name": "CBU_SALES_POINT_ALREADY_EXISTS",
- "id": 49,
- "status": 409,
- "code": 40901049,
- "message": "Este punto de venta ya está marcado como CBU informada para este cliente",
- "example_params": [ ],
- "example_detail": "Este punto de venta ya está marcado como CBU informada para este cliente"
}, - {
- "name": "CBU_SALES_POINT_NOT_FOUND",
- "id": 50,
- "status": 404,
- "code": 40401050,
- "message": "No se encontró ese punto de venta marcado como CBU informada",
- "example_params": [ ],
- "example_detail": "No se encontró ese punto de venta marcado como CBU informada"
}
]Credenciales OAuth 2.0 (client_credentials) para acceso programático — integraciones server-to-server y agentes. Siempre se gestionan con un token de sesión de usuario, nunca con otro API Client.
Para integraciones server-to-server y agentes, no para uso humano interactivo. Requiere un token de sesión de usuario (no puede crearse con otro API Client). Devuelve client_id + metadata — el client_secret NO viaja acá, se pide aparte con GET /api-clients/{id}/secret.
| label required | string <= 120 characters Nombre descriptivo para identificar este API Client (ej. "CI/CD", "Zapier"). |
| id required | string |
| label required | string Nombre descriptivo cargado al crear este API Client. |
| client_id required | string client_id OAuth 2.0 — se usa para el grant client_credentials. |
| created_at required | string <date-time> |
| last_used_at required | string or null <date-time> |
| revoked_at required | string or null <date-time> |
{- "label": "string"
}{- "id": "string",
- "label": "string",
- "client_id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "last_used_at": "2019-08-24T14:15:22Z",
- "revoked_at": "2019-08-24T14:15:22Z"
}| page | number >= 1 Número de página, arranca en 1. Default: 1. |
| size | number >= 1 Cantidad de resultados por página. Default 20, máximo 100 (valores mayores se recortan a 100, nunca rechazan la request). |
Array of objects (ApiClientSearchResultDto) | |
object (SearchMetaDto) |
nullA demanda, no "se ve una sola vez": se puede volver a pedir cuantas veces haga falta. Requiere un token de sesión de usuario (no puede pedirse con otro API Client).
| id required | string Id del API Client. |
| client_secret required | string Secreto en texto plano — junto con clientId, para el client_credentials grant. |
{- "client_secret": "string"
}| id required | string Id del API Client a revocar. |
{- "title": "Api",
- "status": 401,
- "detail": "Falta el header Authorization con un Bearer token",
- "instance": "/...",
- "code": 40101037
}