vxml-cfdi
v2.0.1
Published
Modulo para generar, firmar, sellar, timbrar y cancelar comprobantes fiscales digitales en Mexico (CFDI 4.0, RETENCIONES 2.0). Incluye funciones de DESCARGA MASIVA
Maintainers
Readme
vxml-cfdi
Librería para firmar, sellar y timbrar CFDI v4.0, Retenciones 2.0, cancelaciones y descargas masivas
- vxml-cfdi
- Funciones Referenciadas para Timbrado
- CFDI40.Básicas
- CFDI40.Conceptos
- CFDI.Conceptos.ComplementoConcepto.iedu10
- CFDI.Conceptos.ComplementoConcepto.ventavehiculos11
- CFDI.Complemento.CartaPorte31
- CFDI.Complemento.Nomina12
- CFDI.Complemento.cce20
- CFDI.Complemento.pagos20
- CFDI.Complemento.ImpuestosLocales10
- CFDI.Complemento.Donatarias11
- CFDI.Complemento.INE11
- CFDI.Complemento.Divisas10
- CFDI.Complemento.Aerolineas10
- CFDI.Complemento.NotariosPublicos10
- CFDI.Complemento.VehiculoRenovacionSustitucionVehiculo10
- CFDI.Complemento.LeyendasFiscales10
- CFDI.Complemento.VehiculoUsado10
- CFDI.Complemento.ServicioParcial10
- CFDI.Complemento.SPEI10
- CFDI.Complemento.EstadoCuentaCombustible12
- CFDI.Complemento.ConsumoDeCombustibles11
- CFDI.Complemento.PagoEnEspecie10
- CFDI.Complemento.PFIntegranteCoordinado10
- CFDI.Complemento.TuristaPasajeroExtranjero10
- CFDI.Complemento.ValesDeDespensa10
- CFDI.Complemento.Detallista10
- CFDI.Especiales
- RET.Básicas
- RET.Complemento.Arrendamientoenfideicomiso10
- RET.Complemento.Dividendos10
- RET.Complemento.EnajenaciondeAcciones10
- RET.Complemento.Fideicomisonoempresarial10
- RET.Complemento.Intereses10
- RET.Complemento.Intereseshipotecarios10
- RET.Complemento.Operacionesconderivados10
- RET.Complemento.Pagosaextranjeros10
- RET.Complemento.Planesderetiro11
- RET.Complemento.PlataformasTecnologicas10
- RET.Complemento.Premios10
- RET.Complemento.SectorFinanciero10
- RET20.Especiales
- Ejemplos
- Funciones Referenciadas para Timbrado
Introducción
Librería para la generación y cancelación de CFDI 4.0, incluidos todos los complementos vigentes. Incluye el proceso de firmado, Sellado y tambien el Timbrado por medio del servicio de VXML, de acuerdo a la especificación del SAT.
Características
- Generación de CFDI 4.0
- Generación de todos los complementos vigentes:
- [Complementos y Complementos Concepto]
- Cancelación de CFDI 4.0
- Generación de representacion impresa simple (PDF)
- Generación de Codigo de Barras Bidimensional en formatos: png, jpg y bmp
- Sellado local (tu llave privada y clave son usadas localmente)
- Soporta la solicitud de Cancelación de CFDI con el formato vigente a 2022 (tu llave privada y clave son usadas localmente)
Instalación
NPM:
$ npm install --save vxml-cfdiRequisitos
- Contar con un CSD vigente (Certificado de Sello Digital).
- Contar con los archivos .cer, .key
- Contar con la clave del archivo .key
- En caso de desear timbrar con credenciales diferentes al demo; haber contratado un plan de timbres con VXML
NOTA: Los archivos .cer/.key de la FIEL no funcionan para el proceso de timbrado, deberan usarse los del CSD
Información DEMO
Estas credenciales pueden usarse sin necesidad de ningun tipo de registro
- usuario: demo_nodejs
- rfcemisor: EKU9003173C9
- Certificado Emisor: CSD_EKU9003173C9.cer (archivo ubicado dentro de la carpeta "test" del paquete)
- Llave Privada Emisor: CSD_EKU9003173C9.key (archivo ubicado dentro de la carpeta "test" del paquete)
- Clave Llave Privada: 12345678a
Contacto
- Correo electronico: [email protected]
Métodos
cancelaCFDI2022
Procesa la solicitud de cancelación y devuelve el Acuse de solicitud/estatus Cancelación en caso de ser exitoso.
Esta funcion implementa los nuevos requisitos de cancelacion aplicables a partir de 2022.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 uuid | Cadena | Sí | FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF motivo | Cadena | Sí | 02 foliosust | Cadena | Sí | Texto en blanco si no se usa certificado | Cadena | Sí | ./MisCertificados/EKU9003173C9.cer o Base64 (MIIF+TCCA+GgAwIBAgI...) llaveprivada | Cadena | Sí | ./MisCertificados/EKU9003173C9.key o Base64 (MIIFDjBABgkqhkiG9w0...) clave | Cadena | Sí | 12345678a outbasepath | Cadena | No | ../../salida/ outprefix | Cadena | No | prefijo outsuffix | Cadena | No | sufijo
Retorno Regresa una promesa. Una solicitud exitosa resolvera la promesa (resolve/then) y la respuesta contendra un exitcode = 201 o exitcode = 202, un uuid y un acuse. Cualquier otro valor sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 201, "message": "201 - Solicitud de cancelación recibida." "uuid": "025357315-4D60-4E56-A056-7AA0B1D8D95F", "acuse": "XML del acuse en base64" }Resolve (Then)
{ "exitcode": 202, "message": "202 - UUID Previamente cancelado." "uuid": "025357315-4D60-4E56-A056-7AA0B1D8D95F", "acuse": "XML del acuse en base64" }Reject (Catch)
{ "exitcode": 205, "message": "CA205 - El UUID no existe => Error al cancelar el UUID de la factura" }
addFunctionCall
Agrega al Stack FIFO una llamada referenciada a la funcion funcName con los parámetros especificados.
- Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- funcName | Cadena | Sí | VXML_SetEmisorInfo_cfdi40 ...args | Multi parámetros | Sí | 'EKU9003173C9', 'NombreDelEmisorRazónSocial', '601'
NOTA: Dependiendo de la funcion referenciada (funcName), el numero de parámetros varía. Ver las funciones disponibles y numero de argumentos en la sección funciones referenciadas para timbrado
- Retorno La instancia de la clase, para usarse con llamadas secuenciales en 1 sola linea si se desea.
emiteCFDI40
Procesa Stack de funciones e intenta timbrar el documento generado.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 certificado | Cadena | Sí | ./MisCertificados/EKU9003173C9.cer o Base64 (MIIF+TCCA+GgAwIBAgI...) llaveprivada | Cadena | Sí | ./MisCertificados/EKU9003173C9.key o Base64 (MIIFDjBABgkqhkiG9w0...) clave | Cadena | Sí | 12345678a outbasepath | Cadena | No | ../../salida/ outprefix | Cadena | No | prefijo outsuffix | Cadena | No | sufijo qrpng | Bool | No | true qrbmp | Bool | No | false qrjpg | Bool | No | false pdf | Bool | No | true
Retorno Regresa una promesa. Un timbrado exitoso resolvera la promesa (resolve/then) y la respuesta contendra un exitcode = 0, un uuid y un xmltimbrado. Cualquier otro valor sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 0, "message": "" "uuid": "025357315-4D60-4E56-A056-7AA0B1D8D95F", "xmltimbrado": "XML en base64", "cadenasat": "Cadena Original del complemento de certificación digital del SAT", "qrpng": "QR.png en base64", "qrjpg": "QR.jpg en base64", "qrbmp": "QR.bmp en base64", "pdf": "Representacion impresa PDF en base64", }Reject (Catch)
{ "exitcode": -5, "message": "Algunas funciones no son validas: VXML_NoExiste" }
Métodos Retenciones 2.0
Métodos para la generación/timbrado y cancelación de CFDI de Retenciones e Información de Pagos 2.0. El llenado del documento usa el mismo Stack FIFO del metodo addFunctionCall, con las funciones referenciadas VXMLRET_* (ej. VXMLRET_SetRetencionesInfo_ret20, VXMLRET_SetRetencionesEmisor_ret20, VXMLRET_SetRetencionesReceptor_ret20, VXMLRET_SetRetencionesTotales_ret20).
emiteRetencion20
Procesa Stack de funciones e intenta timbrar el documento de Retenciones 2.0 generado.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 certificado | Cadena | Sí | ./MisCertificados/EKU9003173C9.cer o Base64 (MIIF+TCCA+GgAwIBAgI...) llaveprivada | Cadena | Sí | ./MisCertificados/EKU9003173C9.key o Base64 (MIIFDjBABgkqhkiG9w0...) clave | Cadena | Sí | 12345678a outbasepath | Cadena | No | ../../salida/ outprefix | Cadena | No | prefijo outsuffix | Cadena | No | sufijo qrpng | Bool | No | true qrbmp | Bool | No | false qrjpg | Bool | No | false pdf | Bool | No | true
Retorno Regresa una promesa. Un timbrado exitoso resolvera la promesa (resolve/then) y la respuesta contendra un exitcode = 0, un uuid y un xmltimbrado. Cualquier otro valor sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 0, "message": "", "uuid": "025357315-4D60-4E56-A056-7AA0B1D8D95F", "xmltimbrado": "XML en base64", "qrpng": "QR.png en base64", "qrjpg": "QR.jpg en base64", "qrbmp": "QR.bmp en base64", "pdf": "Representacion impresa PDF en base64", }Reject (Catch)
{ "exitcode": -5, "message": "Algunas funciones no son validas: VXMLRET_NoExiste" }
cancelaRetencion20
Procesa la solicitud de cancelación de un CFDI de Retenciones y devuelve el Acuse de solicitud/estatus Cancelación en caso de ser exitoso.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 uuid | Cadena | Sí | FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF motivo | Cadena | Sí | 02 foliosust | Cadena | Sí | Texto en blanco si no se usa certificado | Cadena | Sí | ./MisCertificados/EKU9003173C9.cer o Base64 (MIIF+TCCA+GgAwIBAgI...) llaveprivada | Cadena | Sí | ./MisCertificados/EKU9003173C9.key o Base64 (MIIFDjBABgkqhkiG9w0...) clave | Cadena | Sí | 12345678a outbasepath | Cadena | No | ../../salida/ outprefix | Cadena | No | prefijo outsuffix | Cadena | No | sufijo
Retorno Regresa una promesa. Una solicitud exitosa resolvera la promesa (resolve/then) y la respuesta contendra un exitcode = 1201 o exitcode = 1202, un uuid y un acuse. Cualquier otro valor sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 1201, "message": "1201 - Solicitud de cancelación recibida.", "uuid": "025357315-4D60-4E56-A056-7AA0B1D8D95F", "acuse": "XML del acuse en base64" }Reject (Catch)
{ "exitcode": 1205, "message": "CA205 - El UUID no existe => Error al cancelar el UUID de la factura" }
Métodos Descarga Masiva
Métodos para el servicio de Descarga Masiva del SAT: descarga de los XML o la Metadata de los CFDI emitidos o recibidos en un periodo. El proceso consta de 3 pasos, cada uno con su propio método:
- Solicitar la descarga con alguno de los métodos masivaSolicita* (devuelve un idsolicitud)
- Verificar el estado de la solicitud con masivaVerificaSolicitud hasta que el SAT la termine (devuelve idspaquetes)
- Descargar cada paquete ZIP con masivaDescargaPaquete
IMPORTANTE: Los métodos de descarga masiva requieren el uso del certificado FIEL, no un CSD común. El archivo KEY y la clave del mismo solo se ocupan localmente para el firmado de peticiones y NUNCA se envian
masivaSolicitaEmitidosCFDI
Solicita al SAT la descarga masiva de los XML de los CFDI EMITIDOS en un periodo.
NOTA: Los parámetros "filter..." deberán ser una cadena vacía si no se desea aplicar el filtro
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 certificado | Cadena | Sí | ./CertificadosFIEL/EKU9003173C9.cer o Base64 (MIIF+TCCA+GgAwIBAgI...) llaveprivada | Cadena | Sí | ./CertificadosFIEL/EKU9003173C9.key o Base64 (MIIFDjBABgkqhkiG9w0...) clave | Cadena | Sí | 12345678a dtFrom | Cadena | Sí | 2024-01-01T00:00:00 dtTo | Cadena | Sí | 2024-01-31T23:59:59 filterEstadoComprobante | Cadena | No | Todos, Vigente o Cancelado. Texto en blanco = Todos filterRfcReceptor | Cadena | No | MAG041126GT8. Texto en blanco si no se usa filterTipoComprobante | Cadena | No | I, E, T, N o P. Texto en blanco = todos filterComplemento | Cadena | No | nomina12, pagos10, comercioexterior11, etc. Texto en blanco = todos filterRfcACuentaTerceros | Cadena | No | Texto en blanco si no se usa filterUuid | Cadena | No | FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF. Texto en blanco si no se usa
Retorno Regresa una promesa. Una solicitud exitosa resolvera la promesa (resolve/then) y la respuesta contendra un exitcode = 0 y un solicitastatus con el idsolicitud para usarse en masivaVerificaSolicitud. Cualquier otro valor sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 0, "message": "", "solicitastatus": { "idsolicitud": "d59a1a7d-4f0b-4a63-b674-63c24e011b73", "codestatus": "5000", "mensaje": "Solicitud Aceptada" } }Reject (Catch)
{ "exitcode": 5002, "message": "Limite de solicitud con mismos criterios agotado" }
masivaSolicitaEmitidosMetadata
Solicita al SAT la descarga masiva de la Metadata de los CFDI EMITIDOS en un periodo. Los parámetros y el retorno son los mismos que en masivaSolicitaEmitidosCFDI.
masivaSolicitaRecibidosCFDI
Solicita al SAT la descarga masiva de los XML de los CFDI RECIBIDOS en un periodo.
NOTA1: Los parámetros "filter..." deberán ser una cadena vacía si no se desea aplicar el filtro
NOTA2: El SAT solo entrega XML de recibidos VIGENTES, por lo que el estado se envia siempre como "Vigente" y el parámetro filterEstadoComprobante se ignora en este método.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 certificado | Cadena | Sí | ./CertificadosFIEL/EKU9003173C9.cer o Base64 (MIIF+TCCA+GgAwIBAgI...) llaveprivada | Cadena | Sí | ./CertificadosFIEL/EKU9003173C9.key o Base64 (MIIFDjBABgkqhkiG9w0...) clave | Cadena | Sí | 12345678a dtFrom | Cadena | Sí | 2024-01-01T00:00:00 dtTo | Cadena | Sí | 2024-01-31T23:59:59 filterEstadoComprobante | Cadena | No | Ignorado: se envia siempre "Vigente" (ver NOTA) filterRfcEmisor | Cadena | No | MAG041126GT8. Texto en blanco si no se usa filterTipoComprobante | Cadena | No | I, E, T, N o P. Texto en blanco = todos filterComplemento | Cadena | No | nomina12, pagos10, comercioexterior11, etc. Texto en blanco = todos filterRfcACuentaTerceros | Cadena | No | Texto en blanco si no se usa filterUuid | Cadena | No | FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF. Texto en blanco si no se usa
Retorno El mismo que en masivaSolicitaEmitidosCFDI.
masivaSolicitaRecibidosMetadata
Solicita al SAT la descarga masiva de la Metadata de los CFDI RECIBIDOS en un periodo. Los parámetros y el retorno son los mismos que en masivaSolicitaRecibidosCFDI, con la diferencia de que filterEstadoComprobante sí es tomado en cuenta (Todos, Vigente o Cancelado. Texto en blanco = Todos).
masivaVerificaSolicitud
Verifica el estado de una solicitud de descarga masiva previamente creada con alguno de los métodos masivaSolicita*.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 certificado | Cadena | Sí | ./MisCertificados/EKU9003173C9.cer o Base64 (MIIF+TCCA+GgAwIBAgI...) llaveprivada | Cadena | Sí | ./MisCertificados/EKU9003173C9.key o Base64 (MIIFDjBABgkqhkiG9w0...) clave | Cadena | Sí | 12345678a idSolicitud | Cadena | Sí | d59a1a7d-4f0b-4a63-b674-63c24e011b73
Retorno Regresa una promesa. La promesa se resolvera (resolve/then) solamente cuando la solicitud este terminada y la respuesta contendra un exitcode = 0 y un verificastatus con los ids de paquetes idspaquetes para usarse en masivaDescargaPaquete.
NOTA: El SAT procesa las solicitudes de forma asíncrona y puede tardar. Mientras la solicitud no este Terminada, la promesa se rechazara (reject/catch); debera reintentarse mas tarde. Valores de exitcode/estadosolicitud: 1: Aceptada | 2: En Proceso | 3: Terminada | 4: Error | 5: Rechazada | 6: Vencida
Resolve (Then)
{ "exitcode": 0, "message": "", "verificastatus": { "codestatus": "5000", "estadosolicitud": "3", "codigoestadosolicitud": "5000", "numerocfdis": "24", "mensaje": "Solicitud Aceptada", "idspaquetes": ["5BBCFC1B-42D5-4BDF-8D38-8F46FFCB3A4D_01"] } }Reject (Catch)
{ "exitcode": 1, "message": "Aceptada - Verificar nuevamente mas tarde" }
masivaDescargaPaquete
Descarga un paquete ZIP de una solicitud de descarga masiva verificada. El contenido llega en descargastatus.paquetebase64 y, de indicarse zipoutpath, tambien se guarda a disco.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 certificado | Cadena | Sí | ./CertificadosFIEL/EKU9003173C9.cer o Base64 (MIIF+TCCA+GgAwIBAgI...) llaveprivada | Cadena | Sí | ./CertificadosFIEL/EKU9003173C9.key o Base64 (MIIFDjBABgkqhkiG9w0...) clave | Cadena | Sí | 12345678a idPaquete | Cadena | Sí | 5BBCFC1B-42D5-4BDF-8D38-8F46FFCB3A4D_01 zipoutpath | Cadena | No | ../../salida/paquete01.zip. Texto en blanco para no guardar
Retorno Regresa una promesa. Una descarga exitosa resolvera la promesa (resolve/then) y la respuesta contendra un exitcode = 0 y un descargastatus con el paquetebase64 (archivo ZIP en base64). Cualquier otro valor sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 0, "message": "", "descargastatus": { "codestatus": "5000", "mensaje": "Paquete Encontrado", "paquetebase64": "ZIP en base64" } }Reject (Catch)
{ "exitcode": 5008, "message": "Maximo de descargas permitidas (solo 2 veces puede descargarse)" }
Métodos Administrativos
Métodos útiles para la gestion y mantenimiento de RFC emisores, usuarios (distribuidores) y la asignación de timbres manual o automática; posibilitando una administracion por medio del este paquete sin necesidad de hacer uso del portal administrativo. Para el uso de todos estos métodos, es requerida una APIKEY
adminEmisorAdd
Alta de un nuevo RFC emisor.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- apikey | Cadena | Sí | 1pIp-j-ZVVff2H2-Y54yTtYpW-Uhdffw8Pb3pJGRt7o usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 pwdconsulta | Cadena | Sí | SomeSecret. Usar texto en blanco para no establecer el valor razonsocial | Cadena | Sí | Some Company AC. email | Cadena | Sí | [email protected]. Texto en blanco si no se usa contacto | Cadena | Sí | IT guy. Texto en blanco si no se usa asignacion | Int | Sí | 100 suspendido | Bool | Sí | false notificacion | Bool | Sí | true reserved | Cadena | No |
Retorno Regresa una promesa. Una solicitud exitosa resolvera la promesa (resolve/then) y la respuesta contendra un campo exitcode y message. Cualquier valor de exitcode diferente a 0 sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 0, "message": "" }Reject (Catch)
{ "exitcode": -2, "message": "RFC previamente agregado" }
adminEmisorUpd
Actualizacion de la informacion general de un RFC emisor asociado a la cuenta del usuario.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- apikey | Cadena | Sí | 1pIp-j-ZVVff2H2-Y54yTtYpW-Uhdffw8Pb3pJGRt7o usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 pwdconsulta | Cadena | Sí | SomeSecret. Usar texto en blanco para no establecer o alterar el valor actual razonsocial | Cadena | Sí | Some Company AC. email | Cadena | Sí | [email protected]. Texto en blanco si no se usa contacto | Cadena | Sí | IT guy. Texto en blanco si no se usa suspendido | Bool | Sí | false notificacion | Bool | Sí | true reserved | Cadena | No |
Retorno Regresa una promesa. Una solicitud exitosa resolvera la promesa (resolve/then) y la respuesta contendra un campo exitcode y message. Cualquier valor de exitcode diferente a 0 sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 0, "message": "" }Reject (Catch)
{ "exitcode": -3, "message": "Usuario/APIKEY invalida" }
adminEmisorAsigna
Realiza una asignacion de timbres al RFC emisor.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- apikey | Cadena | Sí | 1pIp-j-ZVVff2H2-Y54yTtYpW-Uhdffw8Pb3pJGRt7o usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 asignacion | Int | Sí | 100 reserved | Cadena | No |
Retorno Regresa una promesa. Una solicitud exitosa resolvera la promesa (resolve/then) y la respuesta contendra un campo exitcode y message. Cualquier valor de exitcode diferente a 0 sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 0, "message": "" }Reject (Catch)
{ "exitcode": -2, "message": "No se permiten asignaciones en 0 o negativas" }
adminEmisorAutoasignacion
Crea o modifica la regla de autoasignación de timbres al RFC emisor. Cuando el total de timbres disponibles del emisor alcance el valor threshold, se asignaran el numero de timbres asignacion siempre que la regla se encuentre activa y el número de timbres totales asignados historicamente al emisor no supere el valor limite.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- apikey | Cadena | Sí | 1pIp-j-ZVVff2H2-Y54yTtYpW-Uhdffw8Pb3pJGRt7o usuario | Cadena | Sí | demo_nodejs rfcemisor | Cadena | Sí | EKU9003173C9 asignacion | Int | Sí | 100 threshold | Int | Sí | 20 limit | Int | Sí | 5000 active | Bool | Sí | false reserved | Cadena | No |
Retorno Regresa una promesa. Una solicitud exitosa resolvera la promesa (resolve/then) y la respuesta contendra un campo exitcode y message. Cualquier valor de exitcode diferente a 0 sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 0, "message": "" }Reject (Catch)
{ "exitcode": -2, "message": "Los timbres para asignar no debe ser mayor al total de tus timbres disponibles" }
adminUsuarioAdd
Alta de un usuario-hijo (distribuidor) relacionado al usuario actual. Este usuario podrá gestionar sus propios emisores y timbres de forma independiente pero podra recibir asignacion de timbres directamente del usuario padre.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- apikey | Cadena | Sí | 1pIp-j-ZVVff2H2-Y54yTtYpW-Uhdffw8Pb3pJGRt7o usuario | Cadena | Sí | demo_nodejs distribuidor | Cadena | Sí | childUserName pwd | Cadena | Sí | SomeSecret. Usar texto en blanco para no establecer el valor razonsocial | Cadena | Sí | Some Company AC. email | Cadena | Sí | [email protected]. Texto en blanco si no se usa contacto | Cadena | Sí | IT guy. Texto en blanco si no se usa asignacion | Int | Sí | 100 reserved | Cadena | No |
Retorno Regresa una promesa. Una solicitud exitosa resolvera la promesa (resolve/then) y la respuesta contendra un campo exitcode y message. Cualquier valor de exitcode diferente a 0 sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 0, "message": "" }Reject (Catch)
{ "exitcode": -2, "message": "Ya existe un usuario con este nombre" }
adminUsuarioUpd
Actualizacion de la informacion general de un usuario-hijo (distribuidor) RFC emisor asociado a la cuenta del usuario actual.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- apikey | Cadena | Sí | 1pIp-j-ZVVff2H2-Y54yTtYpW-Uhdffw8Pb3pJGRt7o usuario | Cadena | Sí | demo_nodejs distribuidor | Cadena | Sí | childUserName pwd | Cadena | Sí | SomeSecret. Usar texto en blanco para no establecer o alterar el valor actual razonsocial | Cadena | Sí | Some Company AC. email | Cadena | Sí | [email protected]. Texto en blanco si no se usa contacto | Cadena | Sí | IT guy. Texto en blanco si no se usa reserved | Cadena | No |
Retorno Regresa una promesa. Una solicitud exitosa resolvera la promesa (resolve/then) y la respuesta contendra un campo exitcode y message. Cualquier valor de exitcode diferente a 0 sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 0, "message": "" }Reject (Catch)
{ "exitcode": -2, "message": "Nombre de usuario en blanco" }
adminUsuarioAsigna
Realiza una asignacion de timbres al usuario-hijo (distribuidor) tomando los timbres disponibles del usuario actual.
Parametros Nombre | Tipo | Requerido | Ejemplo ------------------- | ------------------- | -------- | -------- apikey | Cadena | Sí | 1pIp-j-ZVVff2H2-Y54yTtYpW-Uhdffw8Pb3pJGRt7o usuario | Cadena | Sí | demo_nodejs distribuidor | Cadena | Sí | childUserName asignacion | Int | Sí | 100 reserved | Cadena | No |
Retorno Regresa una promesa. Una solicitud exitosa resolvera la promesa (resolve/then) y la respuesta contendra un campo exitcode y message. Cualquier valor de exitcode diferente a 0 sera un error en el proceso y debera referirse al mensaje message = ... normalmente en el rechazo (reject/catch) de la promesa
Resolve (Then)
{ "exitcode": 0, "message": "" }Reject (Catch)
{ "exitcode": -2, "message": "Nombre de usuario en blanco" }
Proceso de Timbrado
El siguiente diagrama muestra el proceso de timbrado completo:
Funciones Referenciadas para Timbrado
Estas funciones son añadidas a una pila FIFO (FirstIn-FirstOut) para ser enviadas y ejecutadas remotamente. Constan de un nombre funcName y de 1 o mas parámetros. Las funciones se agregan a la pila mediante el metodo addFunctionCall una vez que la clase VXML ha sido instanciada. El siguiente ejemplo ilustra el modo de uso:
Los parámetros de funcName deberan ser de tipo cadena independientemente del tipo de dato que representen, y deberan tener el formato que corresponda de acuerdo a los lineamientos del SAT.
Los parámetros de funcName deberan ser una cadena vacia si no contiene informacion, y debera respetarse la posicion de los mismos.
const VXML = require('vxml-cfdi');
const vxml = new VXML(); // Nueva Instancia
vxml.addFunctionCall( 'VXML_SetComprobanteInfo_cfdi40', // **funcName**
'NOM', // param01 = Serie
'1', // param02 = Folio
'2018-01-30T05:24:30', // param03 = Fecha
'01', // param04 = FormaPago
'CondiciónDePago', // param05 = CondicionesDePago
'5000.00', // param06 = SubTotal
'', // param07 = Descuento
'MXN', // param08 = Moneda
'', // param09 = TipoCambio
'5000.00', // param10 = Total
'I', // param11 = TipoDeComprobante
'PUE', // param12 = MetodoPago
'68025', // param13 = LugarExpedicion
'', // param14 = Confirmacion
'01'); // param15 = Exportacion Se pueden agregar tantas llamadas como se necesiten para el correcto llenado del CFDI, teniendo en cuenta que algunos elementos que pueden aparecer varias veces (ej. cfdi.Conceptos), a su vez podran contener un detalle y las funciones del detalle afectaran al ultimo elemento padre al que pertenece. Por ejemplo:
const VXML = require('vxml-cfdi');
const vxml = new VXML(); // Nueva Instancia
vxml.addFunctionCall('VXML_SetComprobanteInfo_cfdi40', 'A', '1', FechaCFDI, '99', 'Contado Comercial', '1000.00', '50.00', 'MXN', '', '1102.00', 'I', 'PPD', '53050', '', '01');
vxml.addFunctionCall('VXML_SetReceptorInfo_cfdi40', 'MAG041126GT8', 'NombreDelReceptorRazónSocial', '', '', 'G01', '53050', '601');
vxml.addFunctionCall('VXML_AddConcepto_cfdi40', '84111506', 'SEFXXX', '1', 'H87', 'Unidad', 'Paquete X - ObjetoImp1', '500.00', '500.00', '', '02');
vmlx.addFunctionCall('VXML_AddConceptoCuentaPredial_cfdi40','5678901');
vxml.addFunctionCall('VXML_AddConcepto_cfdi40', '84111506', 'SEFXXX', '2', 'H87', 'Unidad', 'Paquete X - ObjetoImp2', '250.00', '500.00', '50.00', '02');
vxml.addFunctionCall('VXML_AddConcepto_cfdi40', '84111506', 'SEFXXX', '2', 'H87', 'Unidad', 'Paquete X - ObjetoImp3', '250.00', '500.00', '50.00', '02');
vxml.addFunctionCall('VXML_AddConceptoTraslado_cfdi40', '450.00', '002', 'Tasa', '0.160000', '72.00');
// Para funciones que afectan informacion unica, NO importa el momento en que se llamen
vxml.addFunctionCall('VXML_SetEmisorInfo_cfdi40', 'EKU9003173C9', 'NombreDelEmisorRazónSocial', '601','');
// Esta funcion afectara al ultimo CONCEPTO agregado
vmlx.addFunctionCall('VXML_AddConceptoRetencion_cfdi40','3000.00','003','Tasa','0.300000','900.00');El resultado seria un CFDI con la siguiente estructura:
CFDI
|--Emisor
|--Receptor
|--Conceptos
|--Concepto01
|--CuentaPredial
|--Concepto02
|--Concepto03
|--Impuestos
|--Traslado
|--RetencionCFDI40.Básicas
VXML_SetComprobanteInfo_cfdi40
- [01] Serie
- [02] Folio
- [03] Fecha
- [04] FormaPago
- [05] CondicionesDePago
- [06] SubTotal
- [07] Descuento
- [08] Moneda
- [09] TipoCambio
- [10] Total
- [11] TipoDeComprobante
- [12] MetodoPago
- [13] LugarExpedicion
- [14] Confirmacion
- [15] Exportacion
VXML_SetInformacionGlobal_cfdi40
- [01] Periodicidad
- [02] Meses
- [03] Año
VXML_AddCfdiRelacionados_cfdi40
- [01] TipoRelacion
- [02] UUID1
- [03] UUID2
- [04] UUID3
- [05] UUID4
- [06] UUID5
- [07] UUID6
- [08] UUID7
- [09] UUID8
- [10] UUID9
- [11] UUID10
VXML_AddCfdiRelacionado_cfdi40 (Usar antes AddCfdiRelacionados_cfdi40)
- [01] UUID
VXML_SetEmisorInfo_cfdi40
- [01] Rfc
- [02] Nombre
- [03] RegimenFiscal
- [04] FacAtrAdquirente
VXML_SetReceptorInfo_cfdi40
- [01] Rfc
- [02] Nombre
- [03] ResidenciaFiscal
- [04] NumRegIdTrib
- [05] UsoCFDI
- [06] DomicilioFiscalReceptor
- [07] RegimenFiscalReceptor
VXML_SetImpuestosInfo_cfdi40
- [01] TotalImpuestosTrasladados
- [02] TotalImpuestosRetenidos
VXML_AddTraslado_cfdi40 (Usar antes SetImpuestosInfo_cfdi40)
- [01] Impuesto
- [02] TipoFactor
- [03] TasaOCuota
- [04] Importe
- [05] Base
VXML_AddRetencion_cfdi40 (Usar antes SetImpuestosInfo_cfdi40)
- [01] Impuesto
- [02] Importe
VXML_SetAddenda
- [01] FragmentoXML (Debe ser válido e incluir los namespaces que no sean parte de un CFDI)
VXML_SetAddendaText
- [01] TextoAddenda
CFDI40.Conceptos
VXML_AddConcepto_cfdi40
- [01] ClaveProdServ
- [02] NoIdentificacion
- [03] Cantidad
- [04] ClaveUnidad
- [05] Unidad
- [06] Descripcion
- [07] ValorUnitario
- [08] Importe
- [09] Descuento
- [10] ObjetoImp
VXML_AddConceptoTraslado_cfdi40 (Usar antes AddConcepto_cfdi40)
- [01] Base
- [02] Impuesto
- [03] TipoFactor
- [04] TasaOCuota
- [05] Importe
VXML_AddConceptoRetencion_cfdi40 (Usar antes AddConcepto_cfdi40)
- [01] Base
- [02] Impuesto
- [03] TipoFactor
- [04] TasaOCuota
- [05] Importe
VXML_AddConceptoInformacionAduanera_cfdi40 (Usar antes AddConcepto_cfdi40)
- [01] NumeroPedimento
VXML_AddConceptoCuentaPredial_cfdi40 (Usar antes AddConcepto_cfdi40)
- [01] Numero
VXML_AddConceptoParte_cfdi40 (Usar antes AddConcepto_cfdi40)
- [01] ClaveProdServ
- [02] NoIdentificacion
- [03] Cantidad
- [04] Unidad
- [05] Descripcion
- [06] ValorUnitario
- [07] Importe
- [08] NumeroPedimento1
- [09] NumeroPedimento2
- [10] NumeroPedimento3
- [11] NumeroPedimento4
- [12] NumeroPedimento5
VXML_SetConceptoACuentaTerceros_cfdi40 (Usar antes AddConcepto_cfdi40)
- [01] RfcACuentaTerceros
- [02] NombreACuentaTerceros
- [03] RegimenFiscalACuentaTerceros
- [04] DomicilioFiscalACuentaTerceros
CFDI.Conceptos.ComplementoConcepto.iedu10
- VXML_AddConceptoComplementoIedu10 (Usar antes AddConcepto)
- [01] nombreAlumno
- [02] CURP
- [03] nivelEducativo
- [04] autRVOE
- [05] rfcPago
CFDI.Conceptos.ComplementoConcepto.ventavehiculos11
- VXML_AddConceptoComplementoVentaVehiculos11_cfdi40 (Usar antes AddConcepto)
- [01] ClaveVehicular
- [02] Niv
- [03] numero
- [04] fecha
- [05] aduana);
CFDI.Complemento.CartaPorte31
La respuesta de este complemento incluye la URL usada para el QR especifico CCP30, y de solicitarse las imagenes de QR, tambien el QRCCP30
VXML_SetCartaPorte31
- [01] IdCCP
- [02] TranspInternac
- [03] EntradaSalidaMerc
- [04] PaisOrigenDestino
- [05] ViaEntradaSalida
- [06] TotalDistRec
- [07] RegistroISTMO
- [08] UbicacionPoloOrigen
- [09] UbicacionPoloDestino
VXML_CartaPorte31AddRegimenAduanero (Usar antes SetCartaPorte31)
- [01] RegimenAduanero01
- [02] RegimenAduanero02
- [03] RegimenAduanero03
- [04] RegimenAduanero04
- [05] RegimenAduanero05
- [06] RegimenAduanero06
- [07] RegimenAduanero07
- [08] RegimenAduanero08
- [09] RegimenAduanero09
- [10] RegimenAduanero10
VXML_CartaPorte31AddUbicacion (Usar antes SetCartaPorte31)
- [01] TipoUbicacion
- [02] IDUbicacion
- [03] RFCRemitenteDestinatario
- [04] NombreRemitenteDestinatario
- [05] NumRegIdTrib
- [06] ResidenciaFiscal
- [07] NumEstacion
- [08] NombreEstacion
- [09] NavegacionTrafico
- [10] FechaHoraSalidaLlegada
- [11] TipoEstacion
- [12] DistanciaRecorrida
- [13] Calle
- [14] NumeroExterior
- [15] NumeroInterior
- [16] Colonia
- [17] Localidad
- [18] Referencia
- [19] Municipio
- [20] Estado
- [21] Pais
- [22] CodigoPostal
VXML_CartaPorte31SetMercancias
- [01] PesoBrutoTotal
- [02] UnidadPeso
- [03] PesoNetoTotal
- [04] NumTotalMercancias
- [05] CargoPorTasacion
- [06] LogisticaInversaRecoleccionDevolucion
VXML_CartaPorte31AddMercancia (Usar antes CartaPorte31SetMercancias)
- [01] BienesTransp
- [02] ClaveSTCC
- [03] Descripcion
- [04] Cantidad
- [05] ClaveUnidad
- [06] Unidad
- [07] Dimensiones
- [08] MaterialPeligroso
- [09] CveMaterialPeligroso
- [10] Embalaje
- [11] DescripEmbalaje
- [12] SectorCOFEPRIS
- [13] NombreIngredienteActivo
- [14] NomQuimico
- [15] DenominacionGenericaProd
- [16] DenominacionDistintivaProd
- [17] Fabricante
- [18] FechaCaducidad
- [19] LoteMedicamento
- [20] FormaFarmaceutica
- [21] CondicionesEspTransp
- [22] RegistroSanitarioFolioAutorizacion
- [23] PermisoImportacion
- [24] FolioImpoVUCEM
- [25] NumCAS
- [26] RazonSocialEmpImp
- [27] NumRegSanPlagCOFEPRIS
- [28] DatosFabricante
- [29] DatosFormulador
- [30] DatosMaquilador
- [31] UsoAutorizado
- [32] PesoEnKg
- [33] ValorMercancia
- [34] Moneda
- [35] FraccionArancelaria
- [36] UUIDComercioExt
- [37] TipoMateria
- [38] DescripcionMateria
VXML_CartaPorte31SetDetalleMercancia (Usar antes CartaPorte31AddMercancia)
- [01] UnidadPesoMerc
- [02] PesoBruto
- [03] PesoNeto
- [04] PesoTara
- [05] NumPiezas
VXML_CartaPorte31AddMercanciaDocumentacionAduanera (Usar antes CartaPorte31AddMercancia)
- [01] TipoDocumento
- [02] NumPedimento
- [03] IdentDocAduanero
- [04] RFCImpo
VXML_CartaPorte31AddMercanciaGuiasIdentificacion (Usar antes CartaPorte31AddMercancia)
- [01] NumeroGuiaIdentificacion
- [02] DescripGuiaIdentificacion
- [03] PesoGuiaIdentificacion
VXML_CartaPorte31AddMercanciaCantidadTransporta (Usar antes CartaPorte31AddMercancia)
- [01] Cantidad
- [02] IDOrigen
- [03] IDDestino
- [04] CvesTransporte
VXML_CartaPorte31SetMercanciasAutotransporte (Usar antes CartaPorte31AddMercancia)
- [01] PermSCT
- [02] NumPermisoSCT
- [03] ConfigVehicular
- [04] PesoBrutoVehicular
- [05] PlacaVM
- [06] AnioModeloVM
- [07] AseguraRespCivil
- [08] PolizaRespCivil
- [09] AseguraMedAmbiente
- [10] PolizaMedAmbiente
- [11] AseguraCarga
- [12] PolizaCarga
- [13] PrimaSeguro
- [14] SubTipoRem1
- [15] Placa1
- [16] SubTipoRem2
- [17] Placa2
VXML_CartaPorte31SetMercanciasTransporteMaritimo (Usar antes CartaPorte31AddMercancia)
- [01] PermSCT
- [02] NumPermisoSCT
- [03] NombreAseg
- [04] NumPolizaSeguro
- [05] TipoEmbarcacion
- [06] Matricula
- [07] NumeroOMI
- [08] AnioEmbarcacion
- [09] NombreEmbarc
- [10] NacionalidadEmbarc
- [11] UnidadesDeArqBruto
- [12] TipoCarga
- [13] Eslora
- [14] Manga
- [15] Calado
- [16] Puntal
- [17] LineaNaviera
- [18] NombreAgenteNaviero
- [19] NumAutorizacionNaviero
- [20] NumViaje
- [21] NumConocEmbarc
- [22] PermisoTempNavegacion
VXML_CartaPorte31AddMercanciasTransporteMaritimoContenedor (Usar antes CartaPorte31SetMercanciasTransporteMaritimo)
- [01] TipoContenedor
- [02] MatriculaContenedor
- [03] NumPrecinto
- [04] IdCCPRelacionado
- [05] PlacaVMCCP
- [06] FechaCertificacionCCP
- [07] SubTipoRemCCP1
- [08] PlacaCCP1
- [09] SubTipoRemCCP2
- [10] PlacaCCP2
VXML_CartaPorte31SetMercanciasTransporteAereo (Usar antes CartaPorte31AddMercancia)
- [01] PermSCT
- [02] NumPermisoSCT
- [03] MatriculaAeronave
- [04] NombreAseg
- [05] NumPolizaSeguro
- [06] NumeroGuia
- [07] LugarContrato
- [08] CodigoTransportista
- [09] RFCEmbarcador
- [10] NumRegIdTribEmbarc
- [11] ResidenciaFiscalEmbarc
- [12] NombreEmbarcador
VXML_CartaPorte31SetMercanciasTransporteFerroviario (Usar antes CartaPorte31AddMercancia)
- [01] TipoDeServicio
- [02] TipoDeTrafico
- [03] NombreAseg
- [04] NumPolizaSeguro
- [05] TipoDerechoDePaso
- [06] KilometrajePagado
- [07] TipoCarro
- [08] MatriculaCarro
- [09] GuiaCarro
- [10] ToneladasNetasCarro
- [11] TipoContenedor
- [12] PesoContenedorVacio
- [13] PesoNetoMercancia
VXML_CartaPorte31AddMercanciasTransporteFerroviarioDerechosDePaso (Usar antes CartaPorte31SetMercanciasTransporteFerroviario)
- [01] TipoDerechoDePaso
- [02] KilometrajePagado
VXML_CartaPorte31AddMercanciasTransporteFerroviarioCarro (Usar antes CartaPorte31SetMercanciasTransporteFerroviario)
- [01] TipoCarro
- [02] MatriculaCarro
- [03] GuiaCarro
- [04] ToneladasNetasCarro
- [05] TipoContenedor
- [06] PesoContenedorVacio
- [07] PesoNetoMercancia
VXML_CartaPorte31AddMercanciasTransporteFerroviarioCarroContenedor (Usar antes CartaPorte31SetMercanciasTransporteFerroviario)
- [01] TipoContenedor
- [02] PesoContenedorVacio
- [03] PesoNetoMercancia
VXML_CartaPorte31AddFiguraTransporteTiposFigura
- [01] TipoFigura
- [02] RFCFigura
- [03] NumLicencia
- [04] NombreFigura
- [05] NumRegIdTribFigura
- [06] ResidenciaFiscalFigura
- [07] ParteTransporte
- [08] Calle
- [09] NumeroExterior
- [10] NumeroInterior
- [11] Colonia
- [12] Localidad
- [13] Referencia
- [14] Municipio
- [15] Estado
- [16] Pais
- [17] CodigoPostal
VXML_CartaPorte31AddFiguraTransporteTiposFiguraPartesTransporte (Usar antes CartaPorte31AddFiguraTransporteTiposFigura)
- [01] ParteTransporte
CFDI.Complemento.Nomina12
VXML_SetNomina12
- [01] TipoNomina
- [02] FechaPago
- [03] FechaInicialPago
- [04] FechaFinalPago
- [05] NumDiasPagados
- [06] TotalPercepciones
- [07] TotalDeducciones
- [08] TotalOtrosPagos
VXML_Nomina12SetEmisor (Usar antes SetNomina12)
- [01] Curp
- [02] RegistroPatronal
- [03] RfcPatronOrigen
- [04] OrigenRecurso
- [05] MontoRecursoPropio
VXML_Nomina12SetReceptor (Usar antes SetNomina12)
- [01] Curp
- [02] NumSeguridadSocial
- [03] FechaInicioRelLaboral
- [04] Antigüedad
- [05] TipoContrato
- [06] Sindicalizado
- [07] TipoJornada
- [08] TipoRegimen
- [09] NumEmpleado
- [10] Departamento
- [11] Puesto
- [12] RiesgoPuesto
- [13] PeriodicidadPago
- [14] Banco
- [15] CuentaBancaria
- [16] SalarioBaseCotApor
- [17] SalarioDiarioIntegrado
- [18] ClaveEntFed
VXML_Nomina12AddSubContratacion (Usar antes Nomina12SetReceptor)
- [01] RfcLabora
- [02] PorcentajeTiempo
VXML_Nomina12SetPercepciones (Usar antes SetNomina12)
- [01] TotalSueldos
- [02] TotalSeparacionIndemnizacion
- [03] TotalJubilacionPensionRetiro
- [04] TotalGravado
- [05] TotalExento
VXML_Nomina12AddPercepcion (Usar antes Nomina12SetPercepciones)
- [01] TipoPercepcion
- [02] Clave
- [03] Concepto
- [04] ImporteGravado
- [05] ImporteExento
- [06] Dias
- [07] TipoHoras
- [08] HorasExtra
- [09] ImportePagado
- [10] ValorMercado
- [11] PrecioAlOtorgarse
VXML_Nomina12SetJubilacionPensionRetiro (Usar antes Nomina12SetPercepciones)
- [01] TotalUnaExhibicion
- [02] TotalParcialidad
- [03] MontoDiario
- [04] IngresoAcumulable
- [05] IngresoNoAcumulable
VXML_Nomina12SetSeparacionIndemnizacion (Usar antes Nomina12SetPercepciones)
- [01] TotalPagado
- [02] NumAñosServicio
- [03] UltimoSueldoMensOrd
- [04] IngresoAcumulable
- [05] IngresoNoAcumulable
VXML_Nomina12SetDeducciones (Usar antes SetNomina12)
- [01] TotalOtrasDeducciones
- [02] TotalImpuestosRetenidos
VXML_Nomina12AddDeduccion (Usar antes Nomina12SetDeducciones)
- [01] TipoDeduccion
- [02] Clave
- [03] Concepto
- [04] Importe
VXML_Nomina12AddOtroPago (Usar antes SetNomina12)
- [01] TipoOtroPago
- [02] Clave
- [03] Concepto
- [04] Importe
- [05] SaldoAFavor
- [06] Año
- [07] RemanenteSalFav
- [08] SubsidioCausado
VXML_Nomina12AddIncapacidad (Usar antes SetNomina12)
- [01] DiasIncapacidad
- [02] TipoIncapacidad
- [03] ImporteMonetario
CFDI.Complemento.cce20
VXML_SetComercioExterior20
- [01] MotivoTraslado
- [02] ClaveDePedimento
- [03] CertificadoOrigen
- [04] NumCertificadoOrigen
- [05] NumeroExportadorConfiable
- [06] Incoterm
- [07] Observaciones
- [08] TipoCambioUSD
- [09] TotalUSD
VXML_CCE20SetEmisor (Usar antes SetComercioExterior20)
- [01] Curp
- [02] Calle
- [03] NumeroExterior
- [04] NumeroInterior
- [05] Colonia
- [06] Localidad
- [07] Referencia
- [08] Municipio
- [09] Estado
- [10] Pais
- [11] CodigoPostal
VXML_CCE20SetReceptor (Usar antes SetComercioExterior20)
- [01] NumRegIdTrib
- [02] Calle
- [03] NumeroExterior
- [04] NumeroInterior
- [05] Colonia
- [06] Localidad
- [07] Referencia
- [08] Municipio
- [09] Estado
- [10] Pais
- [11] CodigoPostal
VXML_CCE20AddDestinatario (Usar antes SetComercioExterior20)
- [01] NumRegIdTrib
- [02] Nombre
- [03] Calle
- [04] NumeroExterior
- [05] NumeroInterior
- [06] Colonia
- [07] Localidad
- [08] Referencia
- [09] Municipio
- [10] Estado
- [11] Pais
- [12] CodigoPostal
VXML_CCE20AddDestinatarioDomicilio (Usar antes CCE20AddDestinatario)
- [01] Calle
- [02] NumeroExterior
- [03] NumeroInterior
- [04] Colonia
- [05] Localidad
- [06] Referencia
- [07] Municipio
- [08] Estado
- [09] Pais
- [10] CodigoPostal
VXML_CCE20AddPropietario (Usar antes SetComercioExterior20)
- [01] NumRegIdTrib
- [02] ResidenciaFiscal
VXML_CCE20AddMercancia (Usar antes SetComercioExterior20)
- [01] NoIdentificacion
- [02] FraccionArancelaria
- [03] CantidadAduana
- [04] UnidadAduana
- [05] ValorUnitarioAduana
- [06] ValorDolares
- [07] Marca
- [08] Modelo
- [09] SubModelo
- [10] NumeroSerie
VXML_CCE20AddMercanciaDescripcionesEspecificas (Usar antes CCE20AddMercancia)
- [01] Marca
- [02] Modelo
- [03] SubModelo
- [04] NumeroSerie
CFDI.Complemento.pagos20
VXML_SetPagos20
- [01] TotalRetencionesIVA
- [02] TotalRetencionesISR
- [03] TotalRetencionesIEPS
- [04] TotalTrasladosBaseIVA16
- [05] TotalTrasladosImpuestoIVA16
- [06] TotalTrasladosBaseIVA8
- [07] TotalTrasladosImpuestoIVA8
- [08] TotalTrasladosBaseIVA0
- [09] TotalTrasladosImpuestoIVA0
- [10] TotalTrasladosBaseIVAExento
- [11] MontoTotalPagos
VXML_Pagos20AddPago (Usar antes SetPagos20)
- [01] FechaPago
- [02] FormaDePagoP
- [03] MonedaP
- [04] TipoCambioP
- [05] Monto
- [06] NumOperacion
- [07] RfcEmisorCtaOrd
- [08] NomBancoOrdExt
- [09] CtaOrdenante
- [10] RfcEmisorCtaBen
- [11] CtaBeneficiario
- [12] TipoCadPago
- [13] CertPago
- [14] CadPago
- [15] SelloPago
VXML_Pagos20AddPagoDoctoRelacionado (Usar antes Pagos20AddPago)
- [01] IdDocumento
- [02] Serie
- [03] Folio
- [04] MonedaDR
- [05] EquivalenciaDR
- [06] NumParcialidad
- [07] ImpSaldoAnt
- [08] ImpPagado
- [09] ImpSaldoInsoluto
- [10] ObjetoImpDR
VXML_Pagos20AddPagoDoctoRelacionadoRetencionDR (Usar antes Pagos20AddPagoDoctoRelacionado)
- [01] BaseDR
- [02] ImpuestoDR
- [03] TipoFactorDR
- [04] TasaOCuotaDR
- [05] ImporteDR
VXML_Pagos20AddPagoDoctoRelacionadoTrasladoDR (Usar antes Pagos20AddPagoDoctoRelacionado)
- [01] BaseDR
- [02] ImpuestoDR
- [03] TipoFactorDR
- [04] TasaOCuotaDR
- [05] ImporteDR
VXML_Pagos20AddPagoImpuestosPRetencionP (Usar antes Pagos20AddPago)
- [01] ImpuestoP
- [02] ImporteP
VXML_Pagos20AddPagoImpuestosPTrasladoP (Usar antes Pagos20AddPago)
- [01] BaseP
- [02] ImpuestoP
- [03] TipoFactorP
- [04] TasaOCuotaP
- [05] ImporteP
CFDI.Complemento.ImpuestosLocales10
VXML_SetImpuestosLocales10
- [01] TotaldeTraslados
- [02] TotaldeRetenciones
VXML_ImpLocal10AddRetencionesLocales (Usar antes SetImpuestosLocales10)
- [01] ImpLocRetenido
- [02] TasadeRetencion
- [03] Importe
VXML_ImpLocal10AddTrasladosLocales (Usar antes SetImpuestosLocales10)
- [01] ImpLocTrasladado
- [02] TasadeTraslado
- [03] Importe
CFDI.Complemento.Donatarias11
- VXML_SetDonatarias11
- [01] noAutorizacion
- [02] fechaAutorizacion
- [03] leyenda
CFDI.Complemento.INE11
VXML_SetINE11
- [01] TipoProceso
- [02] TipoComite
- [03] IdContabilidad
- [04] ClaveEntidad
- [05] Ambito
- [06] EntidadContabilidadIdContabilidad
VXML_INE11AddEntidad (Usar antes SetINE11)
- [01] ClaveEntidad
- [02] Ambito
- [03] IdContabilidad
VXML_INE11AddEntidadContabilidad (Usar antes INE11AddEntidad)
- [01] IdContabilidad
CFDI.Complemento.Divisas10
- VXML_SetDivisas10
- [01] tipoOperacion
CFDI.Complemento.Aerolineas10
VXML_SetAerolineas10
- [01] TUA
- [02] TotalCargos
- [03] CodigoCargo
- [04] Importe
VXML_Aerolineas10AddCargo (Usar antes SetAerolineas10)
- [01] CodigoCargo
- [02] Importe
CFDI.Complemento.NotariosPublicos10
VXML_SetNotariosPublicos10
- [01] TipoInmueble
- [02] Calle
- [03] NoExterior
- [04] NoInterior
- [05] Colonia
- [06] Localidad
- [07] Referencia
- [08] Municipio
- [09] Estado
- [10] Pais
- [11] CodigoPostal
- [12] NumInstrumentoNotarial
- [13] FechaInstNotarial
- [14] MontoOperacion
- [15] Subtotal
- [16] IVA
- [17] CURP
- [18] NumNotaria
- [19] EntidadFederativa
- [20] Adscripcion
- [21] CoproSocConyugalEEnajenante
- [22] CoproSocConyugalEAdquiriente
VXML_NotariosPublicos10AddDescInmueble (Usar antes SetNotariosPublicos10)
- [01] TipoInmueble
- [02] Calle
- [03] NoExterior
- [04] NoInterior
- [05] Colonia
- [06] Localidad
- [07] Referencia
- [08] Municipio
- [09] Estado
- [10] Pais
- [11] CodigoPostal
VXML_NotariosPublicos10AddDatosUnEnajenante (Usar antes SetNotariosPublicos10)
- [01] Nombre
- [02] ApellidoPaterno
- [03] ApellidoMaterno
- [04] RFC
- [05] CURP
VXML_NotariosPublicos10AddDatosEnajenanteCopSC (Usar antes SetNotariosPublicos10)
- [01] Nombre
- [02] ApellidoPaterno
- [03] ApellidoMaterno
- [04] RFC
- [05] CURP
- [06] Porcentaje
**VXML_NotariosPublicos10Ad

