Skip to content

onefacture/cfdi-to-json

Repository files navigation

CFDI to JSON

Este módulo soporta las versiónes 3.2 y 3.3 con los siguientes complementos del SAT.

  • Timbre fiscal

  • Pagos

  • Impuestos Locales

  • Nominas 1.1 y 1.2

  • Estado cuenta combustible 1.0, 1.1 y 1.2

  • Donatarias

  • Divisas

  • Leyendas fiscales

  • PFintegrante coordinado

  • Turista pasajero extranjero

  • Spei

  • Detallista

  • Cfdi registro fiscal

  • Pago en especie

  • Vales de despensa

  • Consumo de combustibles 1.0 y 1.1

  • Aerolineas

  • Notarios

  • Vehiculos usados

  • Servicio parcial construccion

  • Renovacion sustitucion vehiculos

  • Certificado destrucción

  • Obras arte antiguedades

  • ComercioExterior 1.1 y 1.1

  • Ine

  • Retenciones

    • Arrendamiento en Fideicomiso
    • Dividendos
    • Enajenacion de Acciones
    • Fideicomiso no Empresarial
    • Intereses
    • Intereses Hipotecarios
    • Operaciones con Derivados
    • Pagos a Extranjeros
    • Planes de Retiro V1.1
    • Premios
    • Sector Financiero
    • Servicios Plataformas Tecnologicas

Instalación

npm i --save cfdi-to-json

Uso

const CfdiToJson = require('cfdi-to-json');
var jsonCfdi = null;

// Uso con ruta del XML
jsonCfdi = CfdiToJson.parse({ path: 'RUTA_DEL_CFDI.xml' });

// Uso con el contenido del XML
jsonCfdi = CfdiToJson.parse({
    contentXML: `
        <?xml version="1.0" encoding="utf-8"?>
        <cfdi:Comprobante Version="3.3" ...>
            ...
        </cfdi:Comprobante>
    `
});

Estructura de datos

Este es un ejemplo de como vendría formateado el JSON resultado. Puedes probar con CFDIs complejos para ver como se formatean en tu caso.

{
    version: String,
    serie: String,
    sello: String,
    folio: String,
    fecha: String,
    formaDePago: String,
    metodoDePago: String,
    subTotal: String,
    total: String,
    certificado: String,
    noCertificado: String,
    tipoDeComprobante: String,
    moneda: String,
    tipoCambio: String,
    descuento: String,
    motivoDescuento: String,
    lugarExpedicion: String,
    numCtaPago: String,
    emisor: Object<{
        nombre: String,
        rfc: String,
        regimenFiscal: String
    }>,
    receptor: Object<{
        nombre: String,
        rfc: String,
        residenciaFiscal: String,
        numRegIdTrib: String,
        usoCFDI: String
    }>,
    conceptos: Array<{
        claveProdServ: String,
        noIdentificacion: String,
        cantidad: String,
        claveUnidad: String,
        unidad: String,
        descripcion: String,
        valorUnitario: String,
        importe: String,
        descuento: String
    }>
    impuestos: Object<{
        totalImpuestosRetenidos: String,
        totalImpuestosTrasladados: String,
        traslados: Array<{ ... }>,
        retenciones: Array<{ ... }>
    }>,
    timbreFiscal: Object<{
        fechaTimbrado: String,
        uuid: String,
        noCertificadoSAT: String,
        selloSAT: String,
        selloCFD: String,
        RFCProvCertif: String
    }>
    ...
}

Licencia

MIT