Los XML de esta guía son los que el CI del SDK compara en cada cambio.

Facturas (01), boletas (03), notas de crédito (07) y notas de débito (08), con el SDK en PHP, JavaScript con WebAssembly y línea de comandos. Cada ejemplo es un caso de prueba del repositorio, leído a un commit fijo.

Empezar con la guíaVer los 12 ejemplos

Estado de esta versión

Fase 1 · comprobantes
Factura (01), boleta (03), nota de crédito (07) y nota de débito (08). UBL 2.1, solo IGV.
Fase 2 · resumen y baja
Resumen diario (RC) y comunicación de baja (RA): contrato y vectores. Todavía no se construyen.
Aceptación en la SUNAT
Pendiente en la beta. Que el CI pruebe un XML no quiere decir que la SUNAT lo acepte. Lo que sí prueba el CI está en la sección siguiente.
Paquetes
PHP con Composer y npm, próximamente. Las instrucciones de instalación ya están escritas como serán.
Fuente
Repositorio Kembec/facturacion-electronica-sunat-sdk, en 59f651b de la rama principal. CI de ese commit: success.

Un ejemplo, de principio a fin

El caso Factura al contado con IGV entra como JSON, sale como XML sin firmar y termina con una firma. Los tres pasos son fragmentos reales del archivo que el repositorio prueba.

  1. Entrada en JSON

    {
      "kind": "invoice",
      "ubl_version": "2.1",
      "operation_type": "0101",
      "document_type": "01",
      "series": "F001",
      "number": "1",
      "issue_date": "2026-10-15T10:30:00-05:00",
      "currency": "PEN",
      "payment_terms": {
        "type": "Contado"
      },
  2. XML sin firmar

    <?xml version="1.0" encoding="utf-8"?><Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specificati…
  3. Firma

    DigestValue
    +te61a2ub5MlTFf8tKTPNGWE…
    SignatureValue
    b+6tExP4TNECvr8XnYDwQVeex6cOAXbL…

Ver el caso completo, con el XML firmado y los enlaces al repositorio

Qué comprueba el CI en cada cambio