You are on page 1of 12

FINKOK SAPI DE C. V.

Manual de CFDI 3.3 con Complemento de Comercio Exterior 1.1


Este es un ejemplo de cómo crear el XML con Complemento de Comercio Exterior usando
la librería, en VB.NET.
Para comenzar la creación del XML con complemento Comercio Exterior primero de debe
declarar una variable “X” para crear una nueva instancia a partir de la clase Complemento
Comercio Exterior la cual dará acceso a los métodos de dicha clase.
Ejemplo:

Dim CFDx2 As New CFDI3_VB.ComplementoCCE

Una vez creado el objeto proceda a la creación de los siguientes nodos.

Nombre del nodo Descripción


Formato estándar del Comprobante Fiscal Digital por Internet
Cfdi:Comprobante (CFDI). Debe contener los atributos establecidos en la guía de
llenado.
Opcional. Expresa la información de los comprobantes fiscales
Cfdi:Relacionados relacionados, indicando la clave de la relación que existe entre
éste comprobante que se está generando y los CFDI previos.
Requerido en caso de existir el nodo CfdiRelacionados. Expresa
la información de los comprobantes fiscales relacionados con el
Cfdi:Relacionado que se está generando, se deben expresar tantos números de
nodos de CfdiRelacionado, como comprobantes se requieran
relacionar.
Requerido. Expresa la información del contribuyente que emite el
Cfdi:Emisor comprobante fiscal.
Requerido. Expresa la información del contribuyente receptor del
Cfdi:Receptor comprobante fiscal.

Ejemplo:

With CFDx2
.Comprobante(Folio:="167ABC",
Fecha:=FormatDateTime(Now, DateFormat.GeneralDate),
SubTotal:="3242.13",
Moneda:="USD",
Total:="3599.99",
TipoDeComprobante:="I",
LugarDeExpedicion:="45079",
Serie:="A",
FormaPago:="01",
CondicionesDePago:="3 MESES",
Descuento:="3242.13",
TipoCambio:="20,44",
MetodoPago:="PUE",
Confirmacion:=Nothing)

COMPLEMENTO COMERCIO EXTERIOR 1


FINKOK SAPI DE C. V.

.AgregarCFDIRelacionados(TipoRelacion:="01")
.AgregarCFDIRelacionado(UUID:="A39DA66B-52CA-49E3-879B-5C05185B0EF7")
.AgregarEmisor(Rfc:="ACO560518KW7",
RegimenFiscal:="601",
Nombre:="VICTOR DÍAZ")

.AgregarReceptor(Rfc:="XEXX010101000",
UsoCFDI:="G01",
Nombre:="RAUL SALDIVAR",
ResidenciaFiscal:="USA",
NumRegIdTrib:="273156698")

NOTA: Para hacer el llenado para Comercio Exterior de forma correcta puede consultar la
guía de llenado, el estándar y otros documentos publicados por el SAT dentro de la URL:
http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Paginas/complemento_come
rcio_exterior.aspx
Se describirán y darán ejemplos de cómo crear los nodos Concepto, ComplementoCCE,
EmisorCCE, ReceptorCCE, PropietarioCCE, DestinatarioCCE, MercanciasCCE y
ImpuestosCCE, así como crear el XML.

Nombre del nodo o


Descripción
atributo
En este nodo se debe expresar la información detallada de un
Concepto
bien descrito en el comprobante.
Requerido. Clave que permita clasificar los conceptos del
comprobante como productos o servicio, publicados en el portal
ClaveProdServ del SAT en c_ClaveProdServ. En caso de que la clave de un
producto o servicio no se encuentre en el catálogo deberá registrar
“01010101”.
Requerido. Cantidad de bienes que correspondan a cada
Cantidad concepto, puede contener de cero hasta seis decimales.

Requerido. Registra la clave de unidad de medida estandarizada


de conformidad con el catálogo c_ClaveUnidad publicado en el
ClaveUnidad
Portal del SAT.

Requerido. Descripción del bien o servicio propio de la empresa


Descripcion por cada concepto.

Requerido. En este campo se debe registrar el valor o precio


unitario del bien o servicio por cada concepto, el cual puede
ValorUnitario
contener de cero hasta seis decimales.

Requerido. Importe total de los bienes de cada concepto. Debe


ser equivalente al resultado de multiplicar la cantidad por el valor
Importe
unitario expresado en el concepto.

Opcional. El importe de los descuentos aplicables a cada


Descuento
concepto, debe tener hasta la cantidad de decimales que tenga

COMPLEMENTO COMERCIO EXTERIOR 2


FINKOK SAPI DE C. V.

registrado en el atributo importe del concepto y debe ser menor o


igual al campo Importe.
Opcional. Registra la unidad de medida del bien propia de la
Unidad operación del emisor. La unidad debe corresponder con la
descripción del concepto.

Requerido. Expresar el número de parte, la clave de identificación


NoIdentificacion que asigna la empresa o el número de serie de la mercancía
exportada.
InformacionAduanera Este nodo no debe registrarse.
CuentaPredial Este nodo o debe registrarse.

Ejemplo:

'Concepto................................................... .
.AgregarConcepto(ClaveProdServ:="50403100",
Cantidad:=462.0,
ClaveUnidad:="20",
Descripcion:="ACERO",
ValorUnitario:="7.02",
Importe:="3242.13",
Descuento:="3242.13",
Unidad:="Caja",
NoIdentificacion:="003100140575",
InformacionAduanera:=Nothing,
CuentaPredial:=Nothing,
TrasladoImpuesto:=ComprobanteConceptoImpuestosTrasladoImpuesto.Item002,
TrasladoBase:="22500.00",
TrasladoTipoFactor:="Tasa",
TrasladoTasaOCuota:="0.160000",
TrasladoImporte:="3599.99)

Nombre del nodo o


Descripción
atributo
En este nodo se debe expresar el complemento para incorporar la
información en el caso de Exportación de Mercancías en definitiva
PrincipalCCE
con clave de pedimento “A1”, cuando éstas sean objeto de
enajenación.
Requerido. Indica la clave del tipo de operación de Comercio
TipoOperacion Exterior que se realiza, conforme con el catálogo
c_TipoOperacion publicado en el portal del SAT en internet.

Derivado de la excepción de certificados de Origen de los


Tratados de Libre Comercio que ha celebrado México con
CertificadoOrigen diversos países. 0 = No Funge como certificado de origen 1 =
Funge como certificado de origen.

COMPLEMENTO COMERCIO EXTERIOR 3


FINKOK SAPI DE C. V.

Indica la clave de pedimento que se haya declarado conforme con


ClaveDePedimiento el catálogo c_ClavePedimento publicado en el portal del SAT en
internet.
Atributo condicional que indica la clave del INCOTERM
(Términos Internacionales de Comercio) aplicable a la factura,
Incoterm conforme con el catálogo c_INCOTERM publicado en el portal
del SAT en internet.
Indica si la factura tiene o no subdivisión. Valores posibles:
Subdivision 0 - no tiene subdivisión,1 - si tiene subdivisión.
Indica el número de pesos mexicanos que equivalen a un
TipoCambioUSD dólar de Estados Unidos, de acuerdo al artículo 20 del
Código Fiscal de la Federación.
Indica el importe total del comprobante en dólares de
TotalUSD Estados Unidos.

Ejemplo:

.PrincipalCCE(TipoOperacion:="2",
CertificadoOrigen:="0",
ClaveDePedimento:="A1",
Incoterm:="EXW",
Subdivision:="0",
TipoCambioUSD:="20.44",
TotalUSD:="3242.13")

Nombre del nodo o


Descripción
atributo
Nodo opcional para capturar los datos complementarios del
EmisorCCE
emisor del comprobante.
Sirve para precisar la calle en que está ubicado el domicilio del
Calle
emisor del comprobante.

Sirve para asentar la clave del código postal en donde se


CodigoPostal encuentra ubicado el domicilio del emisor del comprobante.

Sirve para expresar la clave de la colonia en donde se ubica el


Colonia domicilio del emisor del comprobante.

Señala la clave del estado en donde se encuentra ubicado el


Estado domicilio del emisor del comprobante.

Sirve para precisar la clave de la ciudad, población, distrito u otro


análogo en donde se ubica el domicilio del emisor del
Localidad
comprobante.

COMPLEMENTO COMERCIO EXTERIOR 4


FINKOK SAPI DE C. V.

Sirve para precisar la clave del municipio o delegación en donde


Municipio se encuentra ubicado el domicilio del emisor del comprobante.

Sirve para precisar la clave del país donde se encuentra ubicado


Pais el domicilio del emisor del comprobante. Debe tener el valor MEX.

Ejemplo:

.emisorCCE(Calle:="Conocida",
CodigoPostal:="21397",
Colonia:="0215",
Estado:="BCN",
Localidad:="02",
Municipio:="002",
Pais:="MEX")

Nombre del nodo o


Descripción
atributo
Nodo opcional para capturar los datos complementarios del
ReceptorCCE receptor del comprobante.

Calle Sirve para precisar la calle en que está ubicado el domicilio del
receptor del comprobante.
Sirve para asentar la clave del código postal en donde se
CodigoPostal encuentra ubicado el domicilio del emisor del comprobante.

Señala la clave del estado en donde se encuentra ubicado el


Estado domicilio del receptor del comprobante.

Sirve para precisar la clave de la ciudad, población, distrito u otro


análogo en donde se ubica el domicilio del receptor del
Localidad
comprobante.

Sirve para precisar la clave del municipio o delegación en donde


Municipio se encuentra ubicado el domicilio del recptor del comprobante.

Sirve para precisar el número exterior donde se encuentra ubicado


NumeroExterior el domicilio del emisor del comprobante.

Sirve para precisar la clave del país donde se encuentra ubicado


Pais el domicilio del emisor del comprobante. Debe tener el valor MEX.

COMPLEMENTO COMERCIO EXTERIOR 5


FINKOK SAPI DE C. V.

Ejemplo:

.receptorCCE(Calle:="Calle Receptor",
CodigoPostal:="92231-0000",
Estado:="CA",
Localidad:="CALEXICO",
Municipio:="IMPERIAL",
NumeroExterior:="943",
Pais:="USA")

Nombre del nodo o


Descripción
atributo
Captura los datos del propietario de la mercancía que se traslada
PropietarioCCE y ésta no sea objeto de enajenación.
Incorpora el número de identificación o registro fiscal del país de
NumRegIdTrib residencia para efectos fiscales del propietario de la mercancía
trasladada.
Registra la clave del país de residencia para efectos fiscales del
ResidenciaFiscal propietario de la mercancía, conforme con el catálogo c_Pais
publicado en el portal del SAT.

Ejemplo:
.propietarioCCE(NumRegIdTrib:="12345678",
ResidenciaFiscal:="MEX")

Nombre del nodo o


Descripción
atributo
Nodo opcional para capturar los datos del destinatario de la
destinatarioCCE mercancía cuando éste sea distinto del receptor.
Expresa el nombre completo, denominación o razón social del
Nombre destinatario de la mercancía exportada.
Señala el Estado, entidad, región, comunidad u otra figura análoga
Estado en donde se encuentre ubicado el destinatario de la mercancía.
Incorpora el número de identificación o registro fiscal del país de
NumRegIdTrib residencia para efectos fiscales del destinatario de la mercancía
exportada.
Precisa la calle en que está ubicado el domicilio del destinatario
Calle de la mercancía.

Sirve para asentar el código postal (PO, BOX) en donde se


CodigoPostal encuentra ubicado el domicilio del destinatario de la mercancía.

Precisa la ciudad, población, distrito u otro análogo en donde se


Localidad
ubica el domicilio del destinatario de la mercancía.

COMPLEMENTO COMERCIO EXTERIOR 6


FINKOK SAPI DE C. V.

Expresa el número exterior en donde se ubica el domicilio del


NumeroExterior destinatario de la mercancía.
Precisa la clave del país donde se encuentra ubicado el
Pais destinatario de la mercancía, conforme con el catálogo c_Pais
publicado en el portal del SAT.

Ejemplo:
.destinatarioCCE(Nombre:="Erika Duran",
Estado:="AZ",
NumRegIdTrib:="273156698",
Calle:="Calle Destinatario",
CodigoPostal:="86365-0000",
Localidad:="YUMA",
NumeroExterior:="3661 E",
Pais:="USA")

Nombre del nodo o


Descripción
atributo
Nodo condicional para capturar la información de las mercancías
mercanciasCCE exportadas.
Precisa la cantidad de bienes en la aduana conforme a la
CantidadAduana UnidadAduana cuando en el nodo Comprobante: Concepto se
hubiera registrado información comercial.

Expresa la clave de la fracción arancelaria correspondiente a la


descripción de la mercancía exportada, este se vuelve requerido
FraccionArancelaria
cuando se cuente con él.

Expresa el número de parte, la clave de identificación que asigna


NoIdentificacion la empresa o el número de serie de la mercancía exportada.

Indica el valor total en dólares de Estados Unidos (USD)


ValorDolares
Precisa el valor o precio unitario del bien en la aduana. Se expresa
en dólares de Estados Unidos (USD), el cual puede estar
ValorUnitarioAduana
registrado hasta centésimas.

Precisa la clave de la unidad de medida aplicable para la cantidad


UnidadAduana expresada en la aduana.

Indica la marca de la mercancía.


Marca
Indica el modelo de la mercancía.
Modelo

COMPLEMENTO COMERCIO EXTERIOR 7


FINKOK SAPI DE C. V.

Ejemplo:

.mercanciasCCE(CantidadAduana:="1884,960",
FraccionArancelaria:="07031001",
NoIdentificacion:="003100140575",
ValorDolares:="3242,13",
ValorUnitarioAduana:="1,72",
UnidadAduana:="01",
Marca:="no se", Modelo:=Nothing)

Nombre del nodo o atributo Descripción

impuestoNivelComprobanteCCE En este nodo se debe expresar los impuestos aplicables.


Es el total de los impuestos trasladados que se desprenden
de los conceptos contenidos en el comprobante fiscal, el
TotalImpuestosTraslados cual debe ser igual a la suma de los importes registrados en
la sección Traslados.
Registra la clave del tipo de impuesto trasladado, mismas
TrasImpuesto que se encuentran incluidas en el catálogo c_Impuesto
publicado en el Portal del SAT.

Se debe registrar el tipo factor que se aplica a la base del


TrasTipoFactor impuesto, mismos que se encuentran incluidos en el
catálogo c_TipoFactor publicado en el Portal del SAT.

Registra el valor de la tasa o cuota del impuesto que se


traslada por cada concepto registrado en el comprobante,
TrasTasaOCuota mismo que se encuentra incluido en el catálogo
c_TasaOCuota publicado en el Portal del SAT.

Registra el monto del impuesto trasladado, agrupado por


Impuesto, TipoFactor y TasaOCuota, el cual debe tener
hasta la cantidad de decimales que soporte la moneda, no
se permiten valores negativos y debe ser igual al redondeo
TrasImporte de la suma de los importes de los impuestos trasladados
registrados en los conceptos, donde el impuesto del
concepto sea igual al campo Impuesto de este apartado y la
TasaOCuota del concepto sea igual al campo TasaOCuota
de este apartado.

COMPLEMENTO COMERCIO EXTERIOR 8


FINKOK SAPI DE C. V.

Ejemplo:

.impuestosNivelComprobante(TotalImpuestosTrasladados:=3599.99,
TrasImpuesto:=ComprobanteConceptoImpuestosTrasladoImpuesto.Item002,
TrasTipoFactor:="Tasa",
TrasTasaOCuota:="0.160000",
TrasImporte:="3599,99")

A continuación, se crearán variables tipo String para agregar los parámetros de cuenta de usuario
registrada, así como las rutas donde se encuentran los archivos .cer y .key. Así como la creación
de la clase para crear el archivo XML.

Descripción

Cuenta de correo registrada en Finkok, ya sea en:


username Ambiente Demo: https://demo-facturacion.finkok.com/
Ambiente Productivo: https://facturacion.finkok.com/

Password Contraseña de la cuenta registrada.


Ruta de la carpeta donde se encuentra los archivos .cer y
Path
.key.
Especificar el nombre del archivo con extensión .cer ubicado
CerFile
en la carpeta de la ruta anterior.

Especificar el nombre del archivo con extensión .key


KeyFile
ubicado en la carpeta de la ruta anterior.
Asignar la contraseña de la llave privada, para pruebas es
KeyPass
la siguiente 12345678.

NOTA: Para ambiente Demo podrá obtener los datos de pruebas (RFC’s y certificados) dentro del
siguiente enlace https://wiki.finkok.com/doku.php?id=pruebas. Las credenciales de acceso son:

 Usuario: integracion
 Contraseña: 1nT36R4c!0N
Ejemplo:

Dim username As String = "ejemplo@hotmail.com”


Dim password As String = "F.1994JC"
Dim Path As String = ("C:\Users\Francia\Documents\certificadodepruebas2")
Dim CerFile As String = IO.Path.Combine(Path, "ACO560518KW7.cer")
Dim KeyFile As String = IO.Path.Combine(Path, "ACO560518KW7.key")
Dim KeyPass As String = "12345678a"

COMPLEMENTO COMERCIO EXTERIOR 9


FINKOK SAPI DE C. V.

Finalmente se ingresan las líneas de código, las cuales realizan la función de crear el XML de la
factura asignándole todos los parámetros creados en el paso anterior, además añadiendo la Ruta
(especificar la dirección en donde queremos guardar el archivo XML) y nameXML(asignándole como
valor el nombre que recibirá el archivo XML).
Ejemplo:

If CFDx2.CrearFacturaXML(username, password, KeyFile, KeyPass, CerFile,


Errores:="", Ruta:="C:\Users\Francia\Documents", nameXML:="XMLCCE") Then
MsgBox("Generación correcta")
Else
MsgBox("Error al generar CFDI")
End If

NOTA: Si presenta problemas al momento de ingresar alguna cantidad, por ejemplo,


ValorUnitario=”1.72” y no le detecta el punto al generar el XML cambie el punto (.) por una coma (,).

COMPLEMENTO COMERCIO EXTERIOR 10


FINKOK SAPI DE C. V.

Ejemplo completo
Dim CFDx2 As New CFDI3_VB.ComplementoCCE

With CFDx2
.Comprobante(Folio:="167ABC",
Fecha:=FormatDateTime(Now, DateFormat.GeneralDate),
SubTotal:="3242.13",
Moneda:="USD",
Total:="3599.99",
TipoDeComprobante:="I",
LugarDeExpedicion:="45079",
Serie:="A",
FormaPago:="01",
CondicionesDePago:="3 MESES",
Descuento:="3242.13",
TipoCambio:="20,44",
MetodoPago:="PUE",
Confirmacion:=Nothing)

.AgregarCFDIRelacionados(TipoRelacion:="01")
.AgregarCFDIRelacionado(UUID:="A39DA66B-52CA-49E3-879B-5C05185B0EF7")
.AgregarEmisor(Rfc:="ACO560518KW7",
RegimenFiscal:="601",
Nombre:="VICTOR DÍAZ")

.AgregarReceptor(Rfc:="XEXX010101000",
UsoCFDI:="G01",
Nombre:="RAUL SALDIVAR",
ResidenciaFiscal:="USA",
NumRegIdTrib:="273156698")

'Concepto...................................................
.AgregarConcepto(ClaveProdServ:="50403100",
Cantidad:=462.0,
ClaveUnidad:="20",
Descripcion:="ACERO",
ValorUnitario:="7.02",
Importe:="3242.13",
Descuento:="3242.13",
Unidad:="Caja",
NoIdentificacion:="003100140575",
InformacionAduanera:=Nothing,
CuentaPredial:=Nothing,

TrasladoImpuesto:=ComprobanteConceptoImpuestosTrasladoImpuesto.Item002,
TrasladoBase:="22500.00",
TrasladoTipoFactor:="Tasa",
TrasladoTasaOCuota:="0.160000",
TrasladoImporte:="3599.99")

.PrincipalCCE(TipoOperacion:="2",
CertificadoOrigen:="0",
ClaveDePedimento:="A1",
Incoterm:="EXW",
Subdivision:="0",
TipoCambioUSD:="20.44",
TotalUSD:="3242.13")

COMPLEMENTO COMERCIO EXTERIOR 11


FINKOK SAPI DE C. V.

.emisorCCE(Calle:="Conocida",
CodigoPostal:="21397",
Colonia:="0215",
Estado:="BCN",
Localidad:="02",
Municipio:="002",
Pais:="MEX")

.receptorCCE(Calle:="Calle Receptor",
CodigoPostal:="92231-0000",
Estado:="CA",
Localidad:="CALEXICO",
Municipio:="IMPERIAL",
NumeroExterior:="943",
Pais:="USA")

.propietarioCCE(NumRegIdTrib:="12345678",
ResidenciaFiscal:="MEX")

.destinatarioCCE(Nombre:="Erika Duran",
Estado:="AZ",
NumRegIdTrib:="273156698",
Calle:="Calle Destinatario",
CodigoPostal:="86365-0000",
Localidad:="YUMA",
NumeroExterior:="3661 E",
Pais:="USA")

.mercanciasCCE(CantidadAduana:="1884,960",
FraccionArancelaria:="07031001",
NoIdentificacion:="003100140575",
ValorDolares:="3242,13",
ValorUnitarioAduana:="1,72",
UnidadAduana:="01",
Marca:="no se", Modelo:=Nothing)

.impuestosNivelComprobante(TotalImpuestosTrasladados:=3599.99,
TrasImpuesto:=ComprobanteConceptoImpuestosTrasladoImpuesto.Item002,
TrasTipoFactor:="Tasa",
TrasTasaOCuota:="0.160000",
TrasImporte:="3599,99")
End With

Dim username As String = "ejemplo@hotmail.com"


Dim password As String = "F.1994JC"
Dim Path As String = ("C:\Users\Francia\Documents\certificadodepruebas2")
Dim CerFile As String = IO.Path.Combine(Path, "ACO560518KW7.cer")
Dim KeyFile As String = IO.Path.Combine(Path, "ACO560518KW7.key")
Dim KeyPass As String = "12345678a"

If CFDx2.CrearFacturaXML(username, password, KeyFile, KeyPass, CerFile,


Errores:="", Ruta:="C:\Users\Francia\Documents", nameXML:="XMLCCE") Then
MsgBox("Generación correcta")
Else
MsgBox("Error al generar CFDI")
End If
End Sub

COMPLEMENTO COMERCIO EXTERIOR 12