Complemento Recepción de Pagos 2.0 (Payments' receipt)
This "complement" is in fact another kind of CFDI—which describes the payment of an invoice—that must be
issued to the paying party after receiving income from payment in installments, or when receiving a single
payment, only when this payment is received after the issuing of the invoice regardless of the method of payment.
Therefore the additional information must be appended to a normal CFDI connector along with certain
modifications.
In this complement one has the ability to register as many payments as one needs, as long as each payment
comes from the same entity.
- The advantages of this CFDI are:
- Avoid improper invoice cancellations
- Avoid inconsistent duplications of income when payed by installments
- You will know if an invoice has been payed or not
The following formulas must be taken into account when calculating the field "Monto":
- Monto's lower limit:
- (ImportePagado - (10-NumDecimalesImportePagado)/2) / (TipoCambioDR + (10-NumDecimalesTipoCambioDR)/2-0.0000000001)
- Monto's upper limit:
- (ImportePagado + (10-NumDecimalesImportePagado)/2-0.0000000001) / (TipoCambioDR - (10-NumDecimalesTipoCambioDR)/2)
- Such formulas will take effect in the following dates:
- Testing environment: July 24 2018
- Production environment: August 1 2018
Solución Factible® is considering all possibilities to ease your transition to the new version.
Definition
Same as the Conector-txt-v6.0 file, this complement is divided in lines each representing a group of data.
The complement contains identifiers at the beginning of each line indicating the type of business data included in every section, the sections' order is sequential downwards and is based in the order of data the SAT has specified in its XSD technical definition, nevertheless it can be adjusted according to your needs.
The fields pertaining to each section (identifier) are separated by the character "pipe" (|, ASCII 124) and are extracted in that order, nevertheless it can be adjusted according to your needs.
The "new line" (enter, line break, EOL, or carriage return ) can be anyone used by the current operative systems: CR, LF or CR+LF.
Configuration chain
ComplementoPagoGenerales|MontoTotalPagos
ComplementoPagosTotales|TipoMovimiento|TipoImpuesto|TasaImpuesto|BaseImpuesto|ImporteImpuesto
ComplementoPagos|FechaPago|FormaDePago|Moneda|TipoCambio|Monto|NumOperacion|RFCEmisorCtaOrd|NomBancoOrd|CtaOrdenante|RFCEmisorCtaBen|CtaBeneficiario
ComplementoPagosCadenaPago|TipoCadPago|CertPago|CadPago|SelloPago
ComplementoPagosDoctoRelacionado|IdDocumento|Serie|Folio|MonedaDR|TipoCambioDR|MetodoDePagoDR|NumParcialidad|ImpSaldoAnt|ImpPagado|ImpSaldoInsoluto|ObjetoImpDR
ComplementoPagosDoctoRelacionadoImpuesto|TipoMovimiento|TipoImpuesto|TasaImpuesto|BaseImpuesto|ImporteImpuesto
ComplementoPagosImpuestos|TipoMovimiento|TipoImpuesto|TasaImpuesto|BaseImpuesto|ImporteImpuesto
Comprobante|1|A|true||
Generales|01/07/2017 17:45:00||||601|||45070|
ComprobanteRelacionado|714E4B22-9620-499E-9659-01E0D19F719C|04|
Divisa||XXX||
Receptor|OSCAR KALA HAAK|KAHO641101B39|KAHO641101HNTLKS06|nombre@dominioempresa.com.mx|||P01|
DireccionFiscal|MEX|Jalisco|Zapopan|Zapopan|FRANCISCO I. MADERO|123||Centro|45900|
Concepto||Pago||1|0||0||||84111506|ACT|
Totales|0|||||
ComplementoPagoGenerales|MontoTotalPagos
ComplementoPagosTotales|TipoMovimiento|TipoImpuesto|TasaImpuesto|BaseImpuesto|ImporteImpuesto
ComplementoPagos|FechaPago|FormaDePago|Moneda|TipoCambio|Monto|NumOperacion|RFCEmisorCtaOrd|NomBancoOrd|CtaOrdenante|RFCEmisorCtaBen|CtaBeneficiario
ComplementoPagosCadenaPago|TipoCadPago|CertPago|CadPago|SelloPago
ComplementoPagosDoctoRelacionado|IdDocumento|Serie|Folio|MonedaDR|TipoCambioDR|MetodoDePagoDR|NumParcialidad|ImpSaldoAnt|ImpPagado|ImpSaldoInsoluto|ObjetoImpDR
ComplementoPagosDoctoRelacionadoImpuesto|TipoMovimiento|TipoImpuesto|TasaImpuesto|BaseImpuesto|ImporteImpuesto
ComplementoPagosImpuestos|TipoMovimiento|TipoImpuesto|TasaImpuesto|BaseImpuesto|ImporteImpuesto
Modifications of the CFDI section
There are certain lines, as shown in the example above, where some fields need to be left in blank, others must have a fixed value:
Position in line | Field | Modification |
---|---|---|
Generales id | ||
2nd | formaPago | blank |
3rd | condicionesPago | blank |
4th | metodoPago | blank |
ComprobanteRelacionado id | ||
2nd | TipoRelacion | fixed value: 04 |
Divisa id | ||
2nd | monedaSimbolo | fixed value: XXX |
3rd | tipoCambio | blank |
Receptor id | ||
7th | UsoCFDI | fixed value: P01 |
Concepto id | This line must appear only once | |
2nd | descripcion | fixed value: PAGO |
3rd | unidad | blank |
4th | cantidad | fixed value: 1 |
5th | valorUnitario | fixed value: 0 |
7th | importe | fixed value: 0 |
8th | tasaDescuento | blank |
9th | importeDescuento | blank |
10th | cuentaPredial | blank |
11th | ClaveProdServSAT | fixed value: 84111506 |
12th | ClaveUnidadSAT | fixed value: ACT |
ImpuestosConcepto id | Omit this line entirely | |
AduanaConcepto id | Omit this line entirely | |
ParteConcepto id | Omit this line entirely | |
AduanaParte id | Omit this line entirely | |
ComplementoConcepto id | Omit this line entirely | |
CamposDinamicosConcepto id | Omit this line entirely | |
ImpuestosComprobante id | Omit this line entirely | |
Totales id | ||
1st | subTotal | fixed value: 0 |
2nd | totalTraslados | blank |
3rd | totalRetenciones | blank |
4th | totalDescuentos | blank |
5th | totalComprobante | fixed value: 0 |
Examples
Payment receipt with minimum fields.
Breaking down taxes and their bases will be calculated automatically in cfdi 4.0 only if the referenced invoice exists already in the database and the fields (ComplementoPagosImpuestos, ComplementoPagosDoctoRelacionadoImpuesto, ComplementoPagosTotales and or ComplementoPagoGenerales) are left blank.
To use simplified conector the client must be added previously, for more information about create client.
Comprobante|95|PA40||
Complemento|Pagos|1.0|
ComplementoPagos|10042022 11:30:00|02|MXN||34521.6|||||||
ComplementoPagosDoctoRelacionado|C7263975-BB56-4B11-BD0D-6D12FB41AC4E||||||1|34521.6|34521.6|0
Scenario: Payment of $1,000.00 MXN
This payment covers one invoice.
a) Invoice 235 on serie E, was created in MXN.
The invoice has a traslado of IVA at 16%.
Comprobante|38|PA||
Complemento|Pagos|1.0|
ComplementoPagos|2021-04-10T12:00:00|FormaDePago|MXN|1|1000.00|NumOperacion|RFCEmisorCtaOrd|NomBancoOrd|CtaOrdenante|RFCEmisorCtaBen|CtaBeneficiario
ComplementoPagosDoctoRelacionado|IdDocumento|E|235|MXN|1|PPD|1|500|200|300|02
The following examples marked as GRANULAR define a behavior in which the file control all the fields; By using them, no calculations will be performed and thus controlling the resulting receipt.
Comprobante|38|PA||
Complemento|Pagos|1.0|
ComplementoPagoGenerales|1000.00
ComplementoPagosTotales|T|002|0.160000|172.41|27.59
ComplementoPagos|2021-04-10T12:00:00|FormaDePago|MXN|1|1000.00|NumOperacion|RFCEmisorCtaOrd|NomBancoOrd|CtaOrdenante|RFCEmisorCtaBen|CtaBeneficiario
ComplementoPagosDoctoRelacionado|IdDocumento|E|235|MXN|1|PPD|1|500|200|300|02
ComplementoPagosDoctoRelacionadoImpuesto|T|002|0.16|172.41|27.59
ComplementoPagosImpuestos|T|002|0.160000|172.41|27.59
Scenario: Payment of $1,000.00 MXN.
Payment covers 2 invoices.
a) Invoice 235 of serie E, was created in MXN.
The invoice has a traslado of IVA at 16%.
b) Invoice 236 of serie E, was created in MXN.
The invoice has a traslado of IVA at 8%.
Comprobante|38|PA||
Complemento|Pagos|1.0|
ComplementoPagosComplementoPagos|2021-04-10T12:00:00|FormaDePago|MXN|1|1000.00|NumOperacion|RFCEmisorCtaOrd|NomBancoOrd|CtaOrdenante|RFCEmisorCtaBen|CtaBeneficiario
ComplementoPagosDoctoRelacionado|IdDocumento|E|235|MXN|1|PPD|1|500|200|300|02
ComplementoPagosDoctoRelacionado|IdDocumento|E|236|MXN|1|PPD|1|300|300|0|02
Comprobante|38|PA||
Complemento|Pagos|1.0|
ComplementoPagoGenerales|1000.00
ComplementoPagosTotales|T|002|0.160000|172.41|27.59
ComplementoPagosTotales|T|002|0.080000|277.78|22.22
ComplementoPagos|2021-04-10T12:00:00|FormaDePago|MXN|1|1000.00|NumOperacion|RFCEmisorCtaOrd|NomBancoOrd|CtaOrdenante|RFCEmisorCtaBen|CtaBeneficiario
ComplementoPagosDoctoRelacionado|IdDocumento|E|235|MXN|1|PPD|1|500|200|300|02
ComplementoPagosDoctoRelacionadoImpuesto|T|002|0.16|172.41|27.59
ComplementoPagosDoctoRelacionado|IdDocumento|E|236|MXN|1|PPD|1|300|300|0|02
ComplementoPagosDoctoRelacionadoImpuesto|T|002|0.08|277.78|22.22
ComplementoPagosImpuestos|T|002|0.160000|172.41|27.59
ComplementoPagosImpuestos|T|002|0.080000|277.78|22.22
Scenario: Payment of $ 10061.65 MXN.
Payment covers 2 invoices.
a) Invoice 235 of serie E, was created in USD with an exchange rate of 0.049025.
The invoice has a traslado of IVA at 8%.
b) La Invoice 236 of serie E, was created in USD with an exchange rate of 0.048471.
The invoice has a traslado of IVA at 8%.
Comprobante|38|PA||
Complemento|Pagos|1.0|
ComplementoPagos|2021-04-10T12:00:00|FormaDePago|MXN|1|10061.65|NumOperacion|RFCEmisorCtaOrd|NomBancoOrd|CtaOrdenante|RFCEmisorCtaBen|CtaBeneficiario
ComplementoPagosDoctoRelacionado|IdDocumento|E|235|USD|0.049025|PPD|1|232|232|0|02
ComplementoPagosDoctoRelacionado|IdDocumento|E|236|USD|0.048471|PPD|1|258.32|258.32|0|02
Comprobante|38|PA||
Complemento|Pagos|1.0|
ComplementoPagoGenerales|10061.65
ComplementoPagosTotales|T|002|0.160000|8673.84|1387.81
ComplementoPagos|2021-04-10T12:00:00|FormaDePago|MXN|1|10061.65|NumOperacion|RFCEmisorCtaOrd|NomBancoOrd|CtaOrdenante|RFCEmisorCtaBen|CtaBeneficiario
ComplementoPagosDoctoRelacionado|IdDocumento|E|235|USD|0.049025|PPD|1|232|232|0|02
ComplementoPagosDoctoRelacionadoImpuesto|T|002|0.16|200|32.00
ComplementoPagosDoctoRelacionado|IdDocumento|E|236|USD|0.048471|PPD|1|258.32|258.32|0|02
ComplementoPagosDoctoRelacionadoImpuesto|T|002|0.08|222.69|35.63
ComplementoPagosImpuestos|T|002|0.160000|8673.84|1387.81
Scenario: Payment of $349.69 USD, exchange rate on payment date is 20.4598 MXN.
Payment covers 2 invoices.
a) Invoice 235 of serie E, was created in MXN, at an exchange rate of 20.64026.
The invoice has a withholding of IVA at 4%.
The invoice has a traslado of IVA at 16%.
b) Invoice 236 of serie E, was created in EUR at an exchange rate of 0.882357
The invoice has a withholding of IVA at 5%.
The invoice has a traslado of IVA at 8%.
Comprobante|38|PA||
Complemento|Pagos|1.0|
ComplementoPagoGenerales|7154.59
ComplementoPagosTotales|R|002|||6.75
ComplementoPagosTotales|R|001|||322.04
ComplementoPagosTotales|T|002|0.160000|170.84|27.42
ComplementoPagosTotales|T|002|0.080000|6441.15|515.38
ComplementoPagos|2021-04-10T12:00:00|FormaDePago|USD|20.4598|349.69|NumOperacion|RFCEmisorCtaOrd|NomBancoOrd|CtaOrdenante|RFCEmisorCtaBen|CtaBeneficiario
ComplementoPagosDoctoRelacionado|IdDocumento|E|235|MXN|20.64026|PPD|1|500|200|300|02
ComplementoPagosDoctoRelacionadoImpuesto|R|002|0.04|172.41|6.90
ComplementoPagosDoctoRelacionadoImpuesto|T|002|0.16|172.41|27.59
ComplementoPagosDoctoRelacionado|IdDocumento|E|236|EUR|0.882357|PPD|1|300|300|0|02
ComplementoPagosDoctoRelacionadoImpuesto|R|001|0.05|277.78|13.89 #EUR
ComplementoPagosDoctoRelacionadoImpuesto|T|002|0.08|277.78|22.22 #EUR
ComplementoPagosImpuestos|R|001|||15.74
ComplementoPagosImpuestos|R|002|||0.33
ComplementoPagosImpuestos|T|002|0.160000|8.35|1.34
ComplementoPagosImpuestos|T|002|0.080000|314.82|25.19
Data dictionary
Type | Fields | Description |
---|---|---|
* The rounding method for all the calculations can be adjusted in your settings. | ||
* Allowing the connector to make the calculations automatically can incur in a difference vs your journal entries caused by exchange rate and/or rounding operations. Please review the examples marked as GRANULAR as they will give you complete control over all the fields. | ||
* | ComplementoPagoGenerales | Total amount of received payments. In MXN. (monto x tipoCambio) |
ComplementoPagosTotales | Tax summary linked in MXN. | |
* | TipoMovimiento | T or R (traslado/retención (withholding)) |
* | TipoImpuesto | Tax type. According to the catalogue |
* | TasaImpuesto | Tax rate (left blank under withholding) |
* | BaseImpuesto | Taxable base (left blank under withholding) |
* | ImporteImpuesto | Tax amount |
* | TipoFactor | Factor type id that is applied to taxable base. |
ComplementoPagosDoctoRelacionadoImpuesto | Tax breakdown linked to the invoice. Original invoice currency. | |
* | TipoMovimiento | T or R (traslado/retención (withholding)) |
* | TipoImpuesto | Tax type. According to the catalogue |
* | TasaImpuesto | Tax rate |
* | BaseImpuesto | Taxable base |
* | ImporteImpuesto | Tax amount |
* | TipoFactor | Factor type id that is applied to taxable base. |
ComplementoPagosImpuestos | Tax summary. The currency of the received Payment will be used | |
* | TipoMovimiento | T or R (traslado/retención (withholding)) |
* | TipoImpuesto | Tax type. According to the catalogue |
* | TasaImpuesto | Tax rate (left blank under withholding) |
* | BaseImpuesto | Taxable base (left blank under withholding) |
* | ImporteImpuesto | Tax amount |
* | TipoFactor | Factor type id that is applied to taxable base. |
Complemento fields | Mandatory id | |
R | IdentificadorComplemento | The name of the complement, it must have the fixed value: Pagos |
R | Version | Version of this complement. |
ComplementoPagos fields | Mandatory id | |
R | FechaPago | Date the payment was received, with format: yyyy-MM-ddThh:mm:ss |
R | FormaDePago | The SAT's Method-of-payment id. Ex. 01(cash) or 02 (nominative check). |
R | Moneda | Payment's currency id in compliance with ISO 4217. Ex. MXN (Mexican Peso), USD (U.S. Dollar), JPY (Yen). The value must be different to XXX and if it's not MXN the field "TipoCambio" must be specified. |
C | TipoCambio | The exchange rate of the payment's currency when it is not MXN
and in the moment of receiving it. Ex. USD to MXN exchange rate in September 5 2017=17.8999. If the rate is different to the one published by the SAT in its' currency catalogue (c_Moneda) a confirmation token delivered by the Certification-Authorized Provider (PAC) must be specified in the field "ClaveConfirmacionPAC" of the identifier "Comprobante". |
R | Monto | Payment amount. Following formulas must be taken into account when calculating the field's amount: Lower limit: (ImpPagado - (10 -ImpPagado's no. of decimals)/2) / (TipoCambioDR + (10 -TipoCambioDR's no. of decimals)/2-0.0000000001). Upper limit: (ImpPagado + (10 -ImpPagado's no. of decimals)/2-0.0000000001) /(TipoCambioDR - (10 -TipoCambioDR's no. of decimals)/2). |
C | NumOperacion | Any kind of identification number (check number, approval number, reference number, etcetera) which identifies the payment. |
C | RfcEmisorCtaOrd |
The RFC of the paying party's bank, financial institution, or whichever entity from which
the payment was issued. If this entity is abroad Mexico then the value will be
XEXX010101000.
Consider the rules in the filling catalogue regarding this field (c_FormaPago). |
C | NomBancoOrd |
The name of the paying party's bank, financial institution, or whichever entity from which
the payment was issued (up to 300 characters). Required if this entity is abroad Mexico.
Consider the rules in the filling catalogue regarding this field (c_FormaPago). Ex. BANK OF TOKYO. |
C | CtaOrdenante |
The account number which the paying party used to perform the payment
(from 10 characters up to 50).
Consider the rules in the filling catalogue regarding this field (c_FormaPago). |
C | RfcEmisorCtaBen |
The RFC of the payment recipient's bank, financial institution, or whichever entity from which
the payment was issued.
Consider the rules in the filling catalogue regarding this field (c_FormaPago). |
C | CtaBeneficiario |
The account number were the recipient received the payment (from 10 characters up to 50).
Consider the rules in the filling catalogue regarding this field (c_FormaPago). |
ComplementoPagosCadenaPago fields | Optional id | |
C | TipoCadPago |
Id of the payment chain generated by the recipient of the payment.
Consider the rules in the filling catalogue regarding this field (c_FormaPago). The several payment chain ids can be found in the filling catalogue c_TipoCadenaPago section. If this field is specified the fields CertPago, CadPago and SelloPago must be specified. |
C | CertPago | Payment's certificate chain as a text chain formatted in base64. |
C | CadPago | The payment recipient's bank certificate chain as a text formatted in base64. |
C | SelloPago | Seal of approval associated to the payment formatted in base64. |
ComplementoPagosDoctoRelacionado fields | Otional id This line must be appear for every invoice being referenced | |
R | IdDocumento | The fiscal folio of the invoice been payed. Ex. 431044D8-6CA 5-FA CE-ER18-4558kl859874 |
O | Serie | The referenced invoice's series used for personal administration. Ex. "E" |
O | Folio | The referenced invoice's folio used for personal administration. Ex. 13425 |
R | MonedaDR | The currency in which the referenced invoice's amounts are stated.
If left in blank the value "MXN" is taken by default. The fields "ImpSaldoAnt", "ImpPagado"
and "ImpSaldoInsoluto" must appear in this currency. Ex. MXN (Mexican Peso),
USD (U.S. Dollar), JPY (Yen).
|
C | TipoCambioDR | The exchange rate of the referenced invoice's currency.
Required when the currency of the payment is different to the one in the referenced invoice.
Ex. In the field "MonedaDR" the currency "USD" is specified, and the payed amount in field "Monto" are 100 EUR (Euros), in this field the exchange rate will be 1.1911 (EUR/USD September 5 2017). And the payed amount (field: ImpPagado) will be 1.1911*100=119.11 |
R | MetodoDePagoDR | Payment type's id. Ex. PUE (single payment), or PPD (deferred payment or installments). |
R | NumParcialidad | The number of installment. |
R | ImpSaldoAnt | Previous-remaining-due amount. |
R | ImpPagado | Payment amount for this related invoice. |
R | ImpSaldoInsoluto | Remaining amount to be payed (field ImpSaldoAnt's value - field ImpPagado's value). |
* | ObjetoImpDR | Referenced invoice's payment is subject to tax or not. |
- R= Required
- C= Conditional
- O= Optional
- *= If omit this field, then their value will be calculated only if the referenced document exists in the database.
External Links
External links
- SAT's documentation Liga SAT