API de catálogo
Las llamadas de catálogo son la base de cualquier integración: productos, impuestos, retenciones, unidades, términos de pago, monedas y validación de RNC. Los identificadores que devuelven se usan en el cuerpo de cada comprobante.
Resumen
El catálogo del espacio de trabajo se gestiona con un patrón uniforme: list paginado, get por id y, para productos, mutaciones (create, update, delete). Los demás recursos (impuestos, retenciones, unidades, términos de pago, monedas) son listas administradas por la plataforma.
Productos
Los productos se reutilizan en facturas, notas y compras. Cada producto define unidad, precio por defecto e impuestos por defecto. Las líneas pueden sobreescribir cualquier campo del producto al emitir.
/api/v1/products X-Api-Key Estable Devuelve un PagedResult de productos del catálogo del espacio de trabajo.
| Nombre | Tipo | Descripción |
|---|---|---|
pageNumber query | integer Opcional | Página solicitada. Por defecto 1. |
pageSize query | integer Opcional | Tamaño de página. Por defecto 10. La API no impone un máximo. |
search query | string Opcional | Filtra por código o nombre del producto. |
isActive query | boolean Opcional | Filtra por estado del producto. Sin valor devuelve activos e inactivos. |
/api/v1/products/{id} X-Api-Key Estable Devuelve el detalle completo de un producto del catálogo.
| Nombre | Tipo | Descripción |
|---|---|---|
id path | string (uuid) Requerido | Identificador del producto. |
/api/v1/products X-Api-Key Estable Registra un producto en el catálogo del espacio de trabajo.
| Nombre | Tipo | Descripción |
|---|---|---|
code body | string Requerido | Código único del producto en el espacio de trabajo. |
reference body | string Opcional | Referencia interna del producto (alias o código secundario). |
isService body | boolean Opcional | Marca si el producto es un servicio en lugar de un bien físico. Por defecto `false`. |
description body | string Requerido | Descripción del producto que se imprime en el comprobante. |
unitId body | integer Requerido | Identificador de la unidad de medida del catálogo. |
price body | decimal Requerido | Precio por defecto. Se puede sobreescribir en cada línea de factura. |
currencyId body | integer Requerido | Identificador de la moneda asociada al precio del producto. |
taxes body | string[] (uuid) Opcional | Impuestos por defecto a aplicar en el comprobante. |
/api/v1/products/{id} X-Api-Key Estable Modifica los datos de un producto del catálogo.
| Nombre | Tipo | Descripción |
|---|---|---|
id path | string (uuid) Requerido | Identificador del producto. |
code body | string Requerido | Código del producto. Debe seguir siendo único en el espacio de trabajo. |
reference body | string Opcional | Referencia interna del producto. |
isService body | boolean Opcional | Marca si el producto es un servicio en lugar de un bien físico. |
description body | string Requerido | Descripción del producto. |
unitId body | integer Requerido | Identificador de la unidad de medida. |
price body | decimal Requerido | Precio por defecto. |
currencyId body | integer Requerido | Identificador de la moneda asociada al precio del producto. |
taxes body | string[] (uuid) Opcional | Impuestos por defecto. |
/api/v1/products/{id} X-Api-Key Estable Marca un producto como eliminado (soft-delete) sin afectar comprobantes históricos.
| Nombre | Tipo | Descripción |
|---|---|---|
id path | string (uuid) Requerido | Identificador del producto. |
Ejemplo: crear producto
POST /api/v1/products
curl -X POST https://tuempresa.factura.com.do/api/v1/products \ -H "X-Api-Key: $FACTURA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "code": "SRV-001", "reference": "CONS", "isService": true, "description": "Consultoría", "unitId": 1, "price": 4500.00, "currencyId": 1, "taxes": ["3a5e98e0-33ff-44be-bd37-e3f9b35a25e2"] }'Respuesta
{ "productId": "2d7e9b1c-4a6f-4e3d-8b2a-9c1f0e5d7a38", "success": true, "message": "The product has been successfully saved"}Impuestos y retenciones
Listas administradas por la plataforma. Los impuestos cubren ITBIS, ISC y demás tributos. Las retenciones cubren los esquemas de retención obligatorios en pagos a proveedores y a no domiciliados.
/api/v1/taxes X-Api-Key Estable Devuelve el catálogo de impuestos vigentes en República Dominicana.
| Nombre | Tipo | Descripción |
|---|---|---|
search query | string Opcional | Filtra por nombre o código del impuesto. |
pageNumber query | integer Opcional | Página solicitada. Por defecto 1. |
pageSize query | integer Opcional | Tamaño de página. Por defecto 10. La API no impone un máximo. |
/api/v1/withholdings X-Api-Key Estable Devuelve el catálogo de retenciones vigentes en República Dominicana.
| Nombre | Tipo | Descripción |
|---|---|---|
search query | string Opcional | Filtra por nombre de la retención. |
pageNumber query | integer Opcional | Página solicitada. Por defecto 1. |
pageSize query | integer Opcional | Tamaño de página. Por defecto 10. La API no impone un máximo. |
Ejemplo: respuesta de impuestos
{ "items": [ { "taxId": "3a5e98e0-33ff-44be-bd37-e3f9b35a25e2", "taxName": "ITBIS", "taxTypeId": 1, "taxTypeName": "ITBIS", "taxRate": "18.00", "stillValid": true, "taxCode": "ITBIS18", "isExempt": false, "sequenceTypeId": [1, 2, 7, 8, 9], "fullName": ["ITBIS 18%"] } ], "totalCount": 1, "pageNumber": 1, "pageSize": 10, "totalPages": 1}Unidades y términos de pago
Las unidades de medida (unidad, hora, kilo, litro, servicio, etc.) y los términos de pago (las plantillas nuevas traen crédito a 15, 30, 50, 70 y 90 días; no hay uno de contado sembrado) son listas con identificadores que se usan al crear productos y al emitir comprobantes.
/api/v1/units X-Api-Key Estable Devuelve el catálogo de unidades de medida (codificadas por la DGII).
| Nombre | Tipo | Descripción |
|---|---|---|
search query | string Opcional | Filtra por nombre de la unidad. La API devuelve la lista completa sin paginación. |
/api/v1/payment-terms X-Api-Key Estable Devuelve el catálogo de términos de pago configurados en el espacio de trabajo.
| Nombre | Tipo | Descripción |
|---|---|---|
search query | string Opcional | Filtra por nombre del término de pago. |
pageNumber query | integer Opcional | Página solicitada. Por defecto 1. |
pageSize query | integer Opcional | Tamaño de página. Por defecto 10. La API no impone un máximo. |
Monedas
Las monedas disponibles incluyen DOP, USD y EUR como mínimo. La tasa de cambio se envía en el cuerpo del comprobante (currencyRate) y la API la persiste sin recalcularla.
/api/v1/currencies X-Api-Key Estable Devuelve el catálogo de monedas disponibles para emisión de comprobantes.
| Nombre | Tipo | Descripción |
|---|---|---|
search query | string Opcional | Filtra por nombre, código o símbolo de la moneda. |
pageNumber query | integer Opcional | Página solicitada. Por defecto 1. |
pageSize query | integer Opcional | Tamaño de página. Por defecto 10. La API no impone un máximo. |
Validación de RNC
Consulta el RNC antes de crear un cliente o un proveedor: esas rutas no lo validan contra la DGII. La API reenvía la consulta al servicio de contribuyentes y devuelve el cuerpo tal cual, plano y en español: rncCedula, razonSocial, nombreComercial, categoria, regimenPagos, estado, actividadEconomica, administracionLocal, facturadorElectronico y licenciasComercializacionVhm. No hay envoltorio contributor ni campo isSuccess. Si el servicio responde con error (por ejemplo, porque el RNC no existe), la API responde 404 con { message }.
/api/v1/rnc/{rnc} X-Api-Key Estable Consulta un RNC o cédula en el servicio de contribuyentes de la DGII y devuelve sus datos tal como llegan.
| Nombre | Tipo | Descripción |
|---|---|---|
rnc path | string Requerido | RNC a consultar. Acepta formato 9 u 11 dígitos. |
GET /api/v1/rnc/{rnc}
curl -X GET https://tuempresa.factura.com.do/api/v1/rnc/131000001 \ -H "X-Api-Key: $FACTURA_API_KEY"const res = await fetch( `https://tuempresa.factura.com.do/api/v1/rnc/${rnc}`, { headers: { "X-Api-Key": process.env.FACTURA_API_KEY! }, },);if (!res.ok) throw new Error(`factura.com.do: ${res.status}`);const payload = await res.json();// cuerpo plano: payload.razonSocial, payload.estado, payload.facturadorElectronico…// 404 con { message } cuando el servicio responde con errorRespuesta
{ "rncCedula": "131000001", "razonSocial": "EMPRESA RECEPTORA SRL", "nombreComercial": "EMPRESA RECEPTORA", "categoria": "…", "regimenPagos": "…", "estado": "…", "actividadEconomica": "…", "administracionLocal": "…", "facturadorElectronico": "SI", "licenciasComercializacionVhm": "…"}Consultas planas para integraciones
Estas rutas devuelven arreglos planos, sin paginación, pensados para llenar selectores. Nacieron para los plugins instalados, pero también aceptan la X-Api-Key. accounts es la excepción: es paginada y la sirve el plugin de contabilidad, así que responde 503 si está instalado pero no contesta.
/api/v1/payment-methods X-Api-Key Estable Devuelve las formas de pago de la empresa como arreglo plano, con id, name, isCredit y codigoDgii.
/api/v1/company-branding X-Api-Key Estable Devuelve nombre comercial, razón social, RNC, contacto, dirección y el logo en base64 de la empresa; si no hay logo, el de factura.com.do.
/api/v1/accounts X-Api-Key Estable Devuelve, paginado, el catálogo de cuentas del plugin de contabilidad. Responde 503 si el plugin está instalado pero no contesta.
| Nombre | Tipo | Descripción |
|---|---|---|
search query | string Opcional | Filtra por código o nombre de la cuenta. |
pageNumber query | integer Opcional | Página solicitada. Por defecto 1. |
pageSize query | integer Opcional | Tamaño de página. Por defecto 100, máximo 500. |
isActive query | boolean Opcional | Filtra por cuentas activas o inactivas. |
postableOnly query | boolean Opcional | Con `true`, devuelve solo las cuentas que admiten asientos. Por defecto se devuelven todas. |
/api/v1/currencies-lookup X-Api-Key Estable Devuelve hasta 100 monedas como arreglo plano (currencyId, code, symbol, name, isActive), incluidas las inactivas.
/api/v1/countries-lookup X-Api-Key Estable Devuelve los países como arreglo plano (countryId, name), ordenados por nombre.
/api/v1/taxes-lookup X-Api-Key Estable Devuelve los impuestos vigentes como arreglo plano (taxId, taxName, taxTypeName, taxRate, isExempt, taxCode).
/api/v1/withholdings-lookup X-Api-Key Estable Devuelve las retenciones vigentes como arreglo plano (withholdingId, withholdingName, rate, isBaseOnTax).
/api/v1/customers-lookup X-Api-Key Estable Devuelve clientes activos como arreglo plano (id, legalName, taxIdentification, phone, email).
| Nombre | Tipo | Descripción |
|---|---|---|
search query | string Opcional | Término de búsqueda. |
pageSize query | integer Opcional | Cantidad máxima de resultados. Por defecto 20. |
/api/v1/suppliers-lookup X-Api-Key Estable Devuelve proveedores activos como arreglo plano (id, legalName, taxIdentification, phone, email).
| Nombre | Tipo | Descripción |
|---|---|---|
search query | string Opcional | Término de búsqueda. |
pageSize query | integer Opcional | Cantidad máxima de resultados. Por defecto 20. |
/api/v1/users-lookup X-Api-Key Estable Devuelve todos los usuarios del espacio de trabajo, incluidos los inactivos, como arreglo plano (id, name, email).
/api/v1/products/documents/lookup X-Api-Key Estable Devuelve el detalle resumido (monto, estado, secuencia…) de los documentos cuyos ids envías.
| Nombre | Tipo | Descripción |
|---|---|---|
documentIds body | string (uuid)[] Requerido | Ids de los documentos. Se descartan los repetidos y se procesan como máximo 200. |