Saltar al contenido
DevFact

Documentación

Sandbox y datos mágicos

Prueba sin tocar el SRI y provoca a propósito sus errores reales.

El SRI simulado

Las cuentas nuevas emiten primero contra un SRI simulado: responde al instante, no necesita firma y nunca envía nada al SRI real. El RIDE lleva la marca de agua SIMULADO — SIN VALIDEZ TRIBUTARIA y el correo al comprador no sale del servicio. La respuesta trae "simulado": true.

Cuando subes tu firma, tu emisor puede emitir contra el ambiente de pruebas real del SRI (celcer). Es el último paso antes de producción: confirma que el SRI acepta tu firma y tu RUC.

Datos mágicos

Para probar cómo responde tu sistema a cada rechazo del SRI, usa estos RUC como comprador en el SRI simulado. Cualquier otro comprador se autoriza normalmente.

  • 3090000003001Qué pasa: Autorizado al instanteHTTP: 201Estado final: AUTORIZADO
  • 3090000356001Qué pasa: Devuelto 35: XML que no pasa el esquemaHTTP: 422Estado final: DEVUELTA
  • 3090000437001Qué pasa: Devuelto 43: clave ya registrada; el servicio consulta y queda autorizadoHTTP: 201Estado final: AUTORIZADO
  • 3090000453001Qué pasa: Devuelto 45: número usado por otro sistema; salta al siguiente libreHTTP: 201Estado final: AUTORIZADO
  • 3091000457001Qué pasa: Devuelto 45 en todos los números: hay que configurar el secuencialHTTP: 422Estado final: DEVUELTA
  • 3090000399001Qué pasa: No autorizado 39: firma inválidaHTTP: 422Estado final: NO_AUTORIZADO
  • 3090000526001Qué pasa: No autorizado 52: diferencias en los cálculosHTTP: 422Estado final: NO_AUTORIZADO
  • 3090000704001Qué pasa: En procesamiento 70 unos 20 s; luego autorizadoHTTP: 202Estado final: AUTORIZADO
  • 3092000019001Qué pasa: SRI caído 1 minuto (página de mantenimiento); luego autorizadoHTTP: 202Estado final: AUTORIZADO
  • 3092000027001Qué pasa: SRI sin respuesta 1 minuto (timeout); luego autorizadoHTTP: 202Estado final: AUTORIZADO
  • 3092000035001Qué pasa: SRI lento (unos 8 s): para probar los timeouts de tu clienteHTTP: 201Estado final: AUTORIZADO
Provocar un NO AUTORIZADO 39
curl -X POST "https://api.devfact.fonles.com/v1/facturas" \
  -H "Authorization: Bearer $DEVFACT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "comprador": {
    "tipoIdentificacion": "ruc",
    "identificacion": "3090000399001",
    "razonSocial": "CLIENTE DE PRUEBA"
  },
  "items": [
    {
      "descripcion": "Servicio",
      "cantidad": 1,
      "precioUnitario": "10.00",
      "iva": "15"
    }
  ],
  "pagos": [
    {
      "formaPago": "efectivo"
    }
  ]
}'
Con pasaporte también funcionan: SIMULAR-39, SIMULAR-45, SIMULAR-70, SIMULAR-CAIDO… Y para el correo: un comprador rebota@cualquier.dominio simula un rebote (webhook comprobante.correo_fallido). La tabla completa: GET /v1/sandbox/datos-magicos.

Sandbox sin cuenta

POST /v1/sandbox crea en un segundo una cuenta temporal con el emisor demo 3099999992001 y una clave fk_test_. Dura 7 días: si quieres conservarla, reclámala con tu correo (POST /v1/sandbox/reclamar). Límites: 500 comprobantes, 3 emisores y sólo el SRI simulado.

TerminalShell
# 1. Crea un sandbox (sin cuenta, sin RUC, sin firma)
export FK=$(curl -s -X POST https://api.devfact.fonles.com/v1/sandbox \
  | jq -r .token)

# 2. Emite contra el SRI simulado con el emisor demo
curl -s -X POST https://api.devfact.fonles.com/v1/comprobantes \
  -H "Authorization: Bearer $FK" \
  -H "Content-Type: application/json" \
  -d '{
    "tipo": "factura",
    "items": [{ "descripcion": "Consultoría", "cantidad": 2,
                "precioUnitario": "20.00", "iva": "15" }],
    "pagos": [{ "formaPago": "transferencia" }]
  }'