Factumel — Tu facturación electrónica, más simple.
Integraciones · Ejemplos seguros

Probá la API de Factumel

Una colección Postman descargable contiene las 23 operaciones. Las consultas son independientes y las operaciones de emisión se ejecutan sólo a pedido. Las solicitudes POST se bloquean cuando la clave no comienza por fmk_test_.

Descargar colección Postman v1 ↗

Preparar un ambiente de TEST

Creá una clave con los scopes necesarios desde Credenciales API, copiá el secreto en el entorno del servidor y conseguí el identificador de una empresa de prueba. No publiques credenciales ni uses una clave fmk_live_ para practicar.

export FACTUMEL_API_KEY="fmk_test_..."
export COMPANY_ID="empresa-de-test"

curl --fail-with-body -sS "https://factumel.com/api/v1/companies?limit=10" \
  -H "Authorization: Bearer $FACTUMEL_API_KEY"

curl --fail-with-body -sS \
  "https://factumel.com/api/v1/companies/$COMPANY_ID/issuance-readiness?documentType=111" \
  -H "Authorization: Bearer $FACTUMEL_API_KEY"

Crear un borrador idempotente

El externalId es opcional por compatibilidad de la API, pero es obligatorio en los SDKs y lo recomendamos para todas las integraciones. Reutilizá el ID estable de tu factura en tu sistema de origen. El JSON que sigue es un ejemplo técnico de TEST, no una factura fiscal válida por sí sola.

curl --fail-with-body -sS -X POST "https://factumel.com/api/v1/documents" \
  -H "Authorization: Bearer $FACTUMEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "companyId": "EMPRESA_DE_TEST",
    "externalId": "pedido-test-1001",
    "documentType": "111",
    "currencyCode": "UYU",
    "items": [
      { "description": "Servicio", "quantity": 1,
        "unitPrice": 1000, "taxRate": 22 }
    ]
  }'

Reemplazá EMPRESA_DE_TEST con el ID real de una empresa TEST propia. El endpoint devuelve HTTP 201 para un borrador nuevo y 200 para un replay idempotente. No asumir que una creación exitosa significa que se consumió un CAE.

Recuperar errores de red sin facturar doble

curl --fail-with-body -sS -G \
  "https://factumel.com/api/v1/documents/lookup" \
  -H "Authorization: Bearer $FACTUMEL_API_KEY" \
  --data-urlencode "companyId=$COMPANY_ID" \
  --data-urlencode "externalId=pedido-test-1001"

Ante cualquier timeout al crear, firmar o enviar, la operación puede haber ocurrido. Primero recuperá el comprobante existente, consultá su estado y conciliá el resultado de DGI. No hagas retries automáticos de emisión o envío.

Errores que una integración debe manejar

HTTPQué hacer
401Rotar/revisar clave y ambiente.
403Solicitar scope específico.
404Verificar recurso, organización y ambiente; no inferir existencia en otro tenant.
409Conciliar estado e idempotencia antes de cualquier nueva acción.
413 / 415Reducir JSON a 1 MiB / establecer Content-Type application/json.
422Corregir parámetros o datos fiscales, sin reintentar idénticos.
429Respetar Retry-After y consultar estado al reanudar si hubo incertidumbre.
5xx / timeoutNo presuponer fracaso de emisión o envío. Consultar y conciliar.

Antes de integrar en producción

Comprobá aislamiento entre organizaciones y ambientes, validez de certificado y CAE, conectividad y habilitación DGI, manejo de estados UNKNOWN, webhooks duplicados y firma de eventos. Ni la colección de pruebas ni los SDKs acreditan homologación fiscal.

Abrir referencia completa y OpenAPI →