Inicio Rápido
De cero a tu primera factura emitida en sandbox, en 4 pasos.
YoEmito expone una API REST con formato JSON. Toda la interacción ocurre a través de HTTP estándar, eliminando la necesidad de interactuar directamente con servicios web SOAP complejos. En Sandbox no se necesita certificado digital ni credenciales reales de SUNAT — es un entorno simulado, ideal para probar tu integración sin ningún riesgo.
Endpoint Base
https://api.yoemito.devCabeceras de Autenticación
Obtén tu API Key de sandbox (prefijo ye_test_...) desde el panel, y envíala en cada petición:
Authorization: Bearer ye_test_...Paso 1 — Crea tu emisor
Antes de emitir cualquier comprobante, necesitas registrar un emisor (la empresa a nombre de quien se factura). En sandbox solo necesitas el RUC y la razón social — no se piden credenciales SOL ni certificado digital todavía, eso solo es obligatorio para producción:
curl -X POST https://api.yoemito.dev/v1/issuers \
-H "Authorization: Bearer ye_test_..." \
-H "Content-Type: application/json" \
-d '{
"ruc": "20513469129",
"legal_name": "MI EMPRESA S.A.C."
}'La respuesta trae un id con prefijo iss_... — ese es tu issuer_id para el siguiente paso. Más detalle en Emisores & Credenciales.
Paso 2 — Control de Idempotencia
Toda emisión requiere la cabecera Idempotency-Key, un valor único por petición (UUID, o cualquier string que no repitas):
Idempotency-Key: <valor_unico_por_peticion>Si reenvías la misma petición con la misma clave (por un reintento de red, por ejemplo), te devolvemos la respuesta ya guardada sin duplicar el comprobante ni saltar un número de correlativo.
Paso 3 — Emite tu primera factura
Con tu issuer_id del Paso 1, ya puedes emitir. Usa el ejemplo completo del panel de la derecha (POST /v1/invoices) — reemplaza issuer_id por el tuyo y ejecútalo tal cual.
La respuesta llega con status: "queued": tu factura fue aceptada por nuestra API y quedó en cola para firma digital y envío a SUNAT (esto toma segundos, no minutos).
Paso 4 — Consulta el resultado
Haz GET al links.self que te devolvió la respuesta anterior para ver el estado final: accepted (SUNAT la aceptó, ya es válida tributariamente), accepted_with_warnings, o rejected con el motivo exacto. También puedes suscribir un webhook para enterarte al instante sin hacer polling.
links.cdr. Ver la explicación completa en ¿Qué es el CDR y por qué importa?Próximos pasos
- Emitir boletas o anular comprobantes con notas de crédito/débito.
- Configurar tu emisor para producción (certificado digital + credenciales SOL) en Emisores & Credenciales.
- Probar escenarios de error y rechazo antes de ir a producción con Sandbox.
- Recibir notificaciones en tiempo real con Webhooks.
Ecosistema de SDKs y Lenguajes
Puedes consumir la API directamente desde cualquier lenguaje vía HTTP/JSON, o utilizar nuestros SDKs oficiales diseñados para desarrolladores:
Librería oficial disponible en NPM: npm i @yoemito/sdk-node. Domina en aplicaciones web modernas, Next.js, startups y tiendas de e-commerce. Cero dependencias externas.
Pensado para tiendas WooCommerce y sistemas peruanos en PHP que buscan migrar o emitir facturas electrónicas ágilmente sin lidiar con SOAP. Integrable hoy mismo vía llamadas cURL o Guzzle a la API REST.
Creciendo en startups tecnológicas y empresas peruanas con ERPs modernos como Odoo. Integrable directamente usando las librerías estándar requests o httpx.