멕시코

모듈

The following modules are automatically installed with the Mexican localization:

이름

기술적 명칭

설명

멕시코 - 회계

l10n_mx

The default fiscal localization package adds accounting characteristics for the Mexican localization, such as: the most common taxes and the chart of accounts – based on the SAT account grouping code.

멕시코용 EDI

l10n_mx_edi

Includes all the technical and functional requirements to generate and validate electronics documents — based on the technical documentation published by the SAT. This allows you to send invoices (with or without addedums) and payment complements to the government.

Odoo 멕시코 현지화 보고서

l10n_mx_reports

Adapts reports for Mexico’s electronic accounting: chart of accounts, trial balance, and DIOT.

Mexico - Month 13 Trial Balance

l10n_mx_reports_closing

Necessary to create the closing entry (also known as the month 13 move).

Odoo 멕시코 XML Polizas 내보내기

l10n_mx_xml_polizas

Allows the export of XML files of journal entries for a compulsory audit.

The following modules are optional. It’s recommended to install them only if meeting a specific requirement for the business.

이름

기술적 명칭

설명

멕시코용 EDI (고급 기능)

l10n_mx_edi_extended

Adds the external trade complement to invoices (a legal requirement for selling products to foreign countries).

멕시코 - 전자 배송 가이드

l10n_mx_edi_stock

*선하증권*을 생성할 수 있습니다. 선하증권이란 서명된 전자 문서를 통하여 A와 B 사이에 물품을 발송한다는 사실을 정부에 증명하는 것입니다.

:guilabel:`Odoo 멕시코 현지화 재고/수입 관련 작업

l10n_mx_edi_landing

전자 문서로 수입 부대 비용에 대한 통관 번호를 관리할 수 있습니다.

CFDI 4.0 fields for sale orders

l10n_mx_edi_sale

Adds extra fields to the Sales module to comply with the Mexican Electronic Invoicing

Mexican Localization for the Point of Sale

l10n_mx_edi_pos

Adds extra fields to the Point of Sale module to comply with the Mexican Electronic Invoicing

Mexican Localization for eCommerce

l10n_mx_edi_website_sale

Adds extra fields to the eCommerce module to comply with the Mexican electronic invoicing requirements

Employees - Mexico

l10n_mx_hr

Adds extra fields to the Employees module to comply with local information for employees.

Mexico - Payroll with Accounting

l10n_mx_hr_payroll_account

Adds the required rules and parameters to manage local payroll calculation with the Payroll app.

Video tutorials

Videos on the Mexican localization are also available. Basic workflows and most topics covered on this page are also available in video format, please check out the following:

현지화의 전반적인 흐름

The Odoo Mexican localization modules allow for the signing of electronic invoices, according to the specifications of the SAT for version 4.0 of the CFDI, a legal requirement, as of January 1, 2022. These modules also add relevant accounting reports including the DIOT, enable foreign trade, and enable the creation of delivery guides.

참고

In order to electronically sign any documents in Odoo, the Sign application must be installed.

요구 사항

Odoo에서 멕시코 현지화 모듈에 대한 환경 설정을 하기 전에 다음과 같은 요건을 충족해야 합니다.

  1. Be registered in the SAT with a valid RFC.

  2. Have a Certificado de Sello Digital / Digital Seal Certificate (CSD).

  3. Choose a PAC. Currently, Odoo works with the following PACs: Solución Factible, Quadrum, and SW Sapien - Smarter Web.

회사

After installing the correct modules, the next step is to verify that the company is configured with the correct data. To do so, go to Settings ‣ Users & Companies ‣ Companies, and select the company to configure.

Enter the full Address in the resulting form, including: ZIP code, State, Country, and RFC (Tax ID number).

According to the requirements of the CFDI 4.0, the name of the main company contact must match the business name registered in the SAT, without the legal entity abbreviation. This is the same for the ZIP code.

중요

From a legal point of view, Mexican companies must use the local currency (MXN). To use another currency, let MXN be the default currency and use a pricelist instead.

Next, go to Accounting ‣ Settings, and scroll to the MX Electronic invoicing section. Under Service Tax Administration (SAT), select the Fiscal Regime that applies to the company from the drop-down list, and click Save.

In order to test the Mexican localization, configure the company with a real address within Mexico (including all fields). Add EKU9003173C9 as the Tax ID and ESCUELA KEMPER URGATE as the Company Name. For the Fiscal Regime, use General de Ley Personas Morales.

연락처

참고

Install the Contacts application to access contact records.

To create a contact that can be invoiced, go to Contacts ‣ Create. Then, enter the contact name, full Address including the ZIP code, State, Country, and RFC (Tax ID).

중요

As with your own company, all contacts must have their correct business name registered in the SAT. This also applies to the Fiscal Regime, which needs to be added in the Sales & Purchase tab.

경고

Having a RFC (Tax ID) set but no Country configured may result in incorrect invoices.

세금

In order to properly sign invoices, set the Factor Type and Tax Object fields on sales taxes.

요인 유형

Both the SAT Tax Type and Factor Type fields are pre-loaded in the default taxes. If new taxes are created, these fields must be set. To do so, go to Accounting ‣ Configuration ‣ Taxes, then fill both fields in the Advanced Options tab for all tax records, with the Tax Type set as Sales.

Odoo supports four groups of SAT Tax Types: IVA, ISR, IEPS, and Local Taxes.

멕시코는 두 가지 경우에 대비하여 영세 부가가치세를 두 가지로 관리하고 있습니다.

  • For 0% VAT, set the Factor Type as Tasa

  • For VAT Exempt, set the Factor Type as Exento

과세 대상

One requirement of the CFDI 4.0 is that the resulting XML file handles the breakdown of taxes of the operation in accordance with the regulation. There are three different possible values that are added in the XML file:

  • 01: Not subject to tax: This value is added automatically if the invoice line doesn’t contain any taxes.

  • 02: Subject to tax: This is the default configuration of any invoice line that contains taxes.

  • 03: Subject to tax and not forced to break down: This value can be triggered on demand for certain customers to replace the value 02.

To use the 03 value for a contact, navigate to the contact’s Sales & Purchase tab, and activate the No Tax Breakdown checkbox under the Fiscal Information section.

중요

세금 분류 없음 값은 특정한 재정 체제 및/또는 세금에 한해서만 적용됩니다. 수정하기 전에 먼저 회계 전문가와 상의하여 비즈니스에 필요한 내용인지 확인합니다.

기타 세금 설정

The Mexican Localization uses cash basis taxes. When registering a payment, Odoo carries out the movement of taxes from the Cash Basis Transition Account to the account set in the Definition tab of the tax record set on the invoice or bill line. For such movement, a tax base account is used: (899.01.99 Base Imponible de Impuestos en Base a Flujo de Efectivo) in the journal entry when reclassifying taxes. Do not delete this account.

품목

To configure products, go to Accounting ‣ Customers ‣ Products, then select a product to configure, or Create a new one. In the Accounting tab, in the UNSPSC Product Category field, select the category that represents the product. The process can be done manually, or through a bulk import.

참고

All products need to have a SAT code associated with them in order to prevent validation errors.

전자 청구서

PAC 자격 증명

After processing your Private Key (CSD) with the SAT, you must register directly with the PAC of your choice before you start creating invoices from Odoo.

Once you’ve created your account with any of these providers, go to Accounting ‣ Configuration ‣ Settings and navigate to the MX Electronic invoicing section. Under the Authorized Certification Provider (PAC) section, enter the name of your PAC with your credentials (PAC username and PAC password).

계정 설정에서 PAC 자격 증명에 대한 환경설정을 합니다.

To test the electronic invoicing without credentials, activate the MX PAC test environment checkbox, and select Solucion Factible as the PAC. It is not required to add a username or password for a test environment.

.cer 및 .key 인증서

The digital certificates of the company must be uploaded within the Certificates section. To do so, navigate to Settings ‣ General Settings ‣ Certificates and Keys.

Under Manage your certificates, click the Keys link to access the Keys list view. Click Create, upload the digital Key file (.key file), add a Name to the key, and enter the Private key password.

From Settings ‣ General Settings ‣ Certificates and Keys, select Certificates to access the Certificate list view. Click Create, upload the digital Certificate (.cer file), add a Name to the certificate, and select the Private Key created on the previous step from the drop-down menu.

참고

The Certificate Password and Public Key fields on Certificate records are optional.

In order to test the electronic invoicing, the following SAT test certificates are provided:

회계

전자 청구서

Odoo의 청구서 발행 프로세스는 SAT 전자 청구서 발행 Annex 20 4.0 버전을 기준으로 합니다.

고객 청구서

Odoo에서 청구서 발행을 시작하려면 반드시 표준 청구서 발행 흐름 를 사용하여 고객 청구서를 생성해야 합니다.

문서가 초안 모드에 있는 동안에는 문서를 변경할 수 있습니다 (예를 들어 고객이 적합한 결제 수단 또는 사용량 을 요구하면 추가할 수 있습니다.)

After clicking on Confirm in the customer invoice, click on the Send button to process the invoice with the government. Make sure that the CFDI checkbox is marked.

CFDI Checkbox

After receiving the signed document back from the government, the Fiscal Folio field appears on the document, and the XML file appears both in the CFDI tab and attached in the chatter.

If an email address is configured on the customer contact record, marking the by Email and CFDI checkboxes sends both the XML and PDF files together.

To download the PDF file locally, click the Print button.

When clicking Update SAT, the SAT status field on the invoice will confirm if the XML file is Validated in the SAT.

On a testing environment, the message Not Found will always come up.

대변전표

청구서는 문서 유형 “I” (Ingreso)인 반면 대변 전표는 문서 유형 “E” (Egreso)입니다.

대변전표 표준 흐름 에 추가된 유일한 항목은 SAT 의 요구 사항에 따라 대변전표와 청구서 사이에 재정 폴리오를 통한 관계가 있어야 한다는 것입니다.

이 요구 사항으로 인해 CFDI 원본 필드에서 이 관계를 01| 로 추가하고 그 뒤에 원본 청구서의 회계 명세서를 추가합니다.

CFDI 원본 필드를 자동으로 추가하려면 직접 생성하는 방법 대신 청구서에서 대변전표 추가 버튼을 사용합니다.

결제

결제 정책

One addition of the Mexican localization is the Payment Policy field. According to the SAT documentation, there are two types of payments:

  • PUE (Pago en una Sola Exhibición/Payment in a Single Exhibition)

  • PPD (Pago en Parcialidades o Diferido/Payment in Installements or Deferred)

The difference lies in the Due Date or 지급 조건 및 분할 납부 of the invoice.

To configure PUE invoices, navigate to Accounting ‣ Customers ‣ Invoices, and either select an invoice Due Date within the same month, or choose Payment terms that do not imply changing the due month (i.e., Immediate Payment, or 15 Days or 21 Days, as long as they fall within the current month).

PUE 요구 사항이 포함된 청구서 예시

PPD 청구서에 대한 환경 설정을 하려면 회계 ‣ 고객 ‣ 청구서 로 이동하여 마감일 이 다음 달 1일 이후 인 청구서를 선택합니다. 이는 귀하의 결제 조건 기간이 다음 달에 마감인 경우에도 적용됩니다.

PPD 요구 사항이 포함된 청구서 예시
결제 흐름

In both cases, the payment process in Odoo is the same, the main difference being payments related to PPD invoices, by law, need to be sent to the government as a document type “P” (Pago).

If a payment is related to a PUE invoice, it can be registered through the payment popup, and be associated with the corresponding invoice. To do so, navigate to Accounting ‣ Customers ‣ Invoices, and select an invoice. Then, click the Pay button to open the payment popup, set the Payment Way and any other fields, and click Create Payment.

더 보기

While this process is the same for PPD invoices, the addition of creating an electronic document means some additional requirements are needed to correctly send the document to the SAT.

From a legal perspective, PPD invoices must include the specific Payment Way that the payment was received. Because of this, the Payment Way field cannot be set as To Define, thus the field will become invisible when selecting it.

참고

  • If a bank account number is required, add it in the Accounting tab of a customer’s contact record.

  • 정확한 환경 설정은 ‘SAT의 Anexo 20 <http://omawww.sat.gob.mx/tramitesyservicios/Paginas/anexo_20.htm>’_ 에 있습니다. 일반적인 은행 계좌 는 이체의 경우 10자리 또는 18자리, 신용 카드 또는 직불 카드의 경우 16자리여야 합니다.

If a fully-reconciled payment is related to an invoice with a Fiscal Folio, the Update Payments appears. Click the Update Payments button to send the payment complement XML file to the government automatically and display it in the CFDI tab in both the invoice and the payment.

While it is a bad fiscal practice, the PUE payments can also be sent to the government, however it is required to click Force CFDI in the CFDI tab for this.

Similar to an invoice or credit note, the PDF and XML can be sent to the final customer. To do so, click the (gear) icon to open the actions drop-down menu and select Send receipt by email.

청구서 취소

|SAT|으로 전송된 EDI 문서를 취소할 수 있습니다. 재정 개혁안 2022 에 따르면 2022년 1월 1일부터 이와 관련된 두 가지 요건이 있습니다.

  • All cancellation requests require a cancellation reason.

  • After 24 hours from the invoice creation, the client must be asked to approve the cancellation. If there is no response within 72 hours, the cancellation is processed automatically.

다음 사유 중 하나에 해당되는 경우 청구서를 취소할 수 있습니다:

  • 01 - 오류가 있는 청구서 발행(관련 문서 포함)

  • 02 - 오류가 있는 청구서 발행(교체 불가)

  • 03 - 작업이 수행되지 않음

  • 04 - 전체 청구서 관련 분류 작업

To initiate a cancellation, go to Accounting ‣ Customers ‣ Invoices, select the posted invoice to cancel, and click Request Cancel. Then, refer to the Cancellation reason 01 or 취소 사유 02, 03, 04 sections, depending on the cancellation reason.

Alternatively, request a cancellation from the CFDI tab by clicking Cancel on the line item.

참고

  • If a cancellation is requested on a locked period, the CFDI will be cancelled but not the accounting entry.

  • If the client rejects the cancellation, the invoice cancellation line item is removed from the CFDI tab.

Cancellation reason 01
  1. CFDI 취소 요청 팝업창의 사유 필드에서 01 - 오류가 있는 청구서 발행(관련 문서 포함) 을 선택하고 대체 청구서 만들기 를 클릭하여 새 청구서 초안을 생성합니다. 해당 신규 청구서 초안이 이전 청구서를 관련 CFDI 와 함께 대체합니다.

  2. 청구서에 대해 초안을 확정 한 후 보내기 및 인쇄 를 진행합니다.

  3. Return to the initial invoice (i.e., the invoice from which you first requested the cancellation). Notice the Substituted By field appears with a reference to the new replacement invoice.

  4. Click Request Cancel. In the Request CFDI Cancellation pop-up window, the 01 - Invoice issued with errors (with related document) option is automatically selected in the Reason field.

  5. 확인 을 클릭합니다.

The invoice cancellation is then generated with a reason line item in the CFDI tab.

취소된 청구서 내역 항목이 CFDI 탭에 나타나 있는 모습입니다.

참고

When using the 01 - Invoice issued with errors (with related document) cancellation reason, the 04| prefix appears in the Fiscal Folio field. This is an internal prefix used by Odoo to complete the cancellation and does not mean that the cancellation reason was 04 - Nominative operation related to the global invoice.

취소 사유 02, 03, 04

In the Request CFDI Cancellation pop-up window, select the desired cancellation Reason and Confirm the cancellation.

Upon doing so, the invoice cancellation is generated with a reason line item in the CFDI tab.

참고

If the SAT Status goes back to Validated it could be due to one of these three reasons:

  • The invoice is labeled as No Cancelable in the SAT Website. due to the fact that it has a valid related document: Either another invoice linked with the CFDI Origin field or a Payment Complemement. If so, you need to cancel any other related document first.

  • The cancellation request is still being processed by the SAT. If so, wait a few minutes and try again.

  • The final customer needs to reject or accept the cancellation request in their Buzón Tributario. This can take up to 72 hours and, in case that the cancellation requests gets rejected, you will need to repeat the process again.

For the cancellation reasons 02, 03 and 04, the Create Replacement Invoice button is replaced by a Confirm button that requests the cancellation immediately.

Both the current State and Cancellation Reason can be found in the CFDI tab.

Old invoice with CFDI Origin.
결제 취소

To cancel payment complements, go to the CFDI tab of the related invoice and click Cancel on the line of the payment complement.

Like with invoices, go to the payment and click Update SAT in order to change the SAT Status and Status to Cancelled.

참고

Just like invoices, when creating a new payment complement, you can add the relation of the original document, by adding a 04| plus the fiscal folio in the CFDI Origin field. This action cancels the invoice and marks the Reason as 01 - Invoice issued with errors (with related document).

청구서 발행 관련 특수 사례

다중 통화

The Main Currency in Mexico is MXN. While this is mandatory for all Mexican companies, it is possible to send and receive invoices (and payments) in different currencies. To enable the use of multicurrency, navigate to the Accounting ‣ Configuration ‣ Currencies, and set [MX] Bank of Mexico as the Service in the Automatic Currency Rates section. Then, set the Interval field to the frequency you wish to update the exchange rates.

이렇게 할 경우, 문서에 있는 XML 파일에 정확한 환율과 함께 총 금액이 외화와 MXN 두 가지 방법으로 모두 표시될 수 있습니다.

It is highly recommended to use separate bank accounts for each currency.

참고

The only currencies that automatically update their exchange rate daily are: USD, EUR, GBP, JPY and CNY.

할인

By law, electronic documents sent to the government cannot have negative lines, as this can trigger errors. Therefore, when using Gift Cards or Loyalty Programs, the subsequent negative lines will be translated in the XML as if they were regular Discounts.

In order to set this up, navigate to Sales ‣ Products ‣ Products and create a product Discounts, make sure that it has a valid Tax (usually IVA at 16%).

After this, create and sign the invoice via CFDI, and add the Discounts product at the bottom. In the XML the discount should be subtracted from the first invoice line available, Odoo will try to subtract from each line the total amount in order until all the discount has been applied.

A Discount and UNSPSC Product Category for each product variant related to Gift Cards or Loyalty Programs have to be created.

선결제 금액

A common practice in Mexico is the usage of down payments. It’s usage primarily consists of cases where you receive a payment for a good or service where either the product or the price (or both) hasn’t been determinated at the moment.

The SAT allows two diferent ways to handle this process: both of them involve linking all invoices to each other with the CFDI Origin field.

참고

For this process, the Sales app must be installed.

환경설정

First, navigate to Sales ‣ Products ‣ Products to create a product Anticipo and configure it. The Product Type must be Service, and use the UNSPSC Category 84111506 Servicios de facturación.

그런 다음 판매 ‣ 설정 ‣ 청구서 발행 ‣ 선결제 로 이동하여 Anticipo 품목을 기본값으로 추가합니다.

Method A

This method consists of creating a down payment invoice, creating a invoice for the total amount, and finally, creating a credit note for the total of the down payment.

First, create a sales order with the total amount, and create a down payment from it (either using a percentage or fixed amount). Then, sign the document via CFDI, and register the payment.

When the time comes for the customer to get the final invoice, create it again from the same sales order. In the Create Invoice popup, select Regular Invoice. Make sure to delete the line that contains the product Anticipo.

When using down payments with the Mexican localization, make sure that the Invoicing Policy of the products are Ordered quantities. Otherwise a customer credit note will be created.

Then, copy the Fiscal Folio from the down payment invoice, and paste it into the CDFI Origin of the final invoice, adding the prefix 07| before the value and sign the document via CFDI.

Finally, create a credit note for the first invoice. Copy the Fiscal Folio from the final invoice, and paste it in the CFDI Origin of the credit note, adding the prefix 07|. Then, sign the document via CFDI.

With this, all electronic documents are linked to each other. The final step is to fully pay the new invoice. At the bottom of the new invoice, you can find the credit note in the Outstanding credits - add it as payment. Finally, register the remaining amount with the Pay popup.

In the sales order, all three documents should appear as “In Payment”.

Method B

Another, simpler way to fulfill SAT requirements involves creating only the down payment invoice, and a second invoice for the remnant. This method involves the fact that negative lines are treated as discounts.

For this, follow the same process as Method A, up until the creation of the final invoice. Do not delete the line that contains the Anticipo and instead rename the other products Description to include the text CFDI por remanente de un anticipo. Don’t forget to add the Fiscal Folio of the down payment invoice in the CDFI Origin of the final invoice, adding the prefix 07|.

Finally, sign the final invoice via CFDI.

XML reader

In certain occasions, such as when you are creating invoices in another software or in the SAT directly, you would want to upload the invoices in Odoo. The XML Reader allows you to retrieve the data from an XML file. To do this, navigate to Accounting ‣ Customers ‣ Invoices and, in the list view, click the Upload button to select any number of XML files, and draft invoices will be automatically created. This can work also by dragging the files from your computer and dropping them in the view.

The draft invoices will retrieve the Customer information (if it doesn’t exist, new ones will be created), the Product Lines (only if products with the same name already exist) and will calculate all taxes and additional fields exclusive to the Mexican Localization. The import information will appear in the chatter.

경고

Depending on where the invoice was created, XML files could have different values from the total calculated in Odoo. Always double-check any document uploaded this way.

Customer Invoices created this way will be able to create payment complements and to be canceled at any time. If you use the Print button, the PDF document will have all the corresponding information.

This can be done for Vendor Bills too.

To retrieve the Fiscal Folio, drag and drop XML files for already created draft invoices.

공개용 CFDI

The Mexican government requires that any goods or services that are sold must be backed up by an invoice. If the customer does not require an invoice or has no RFC, a CFDI to Public has to be created also known as a “nominative” invoice.

A contact must be created and it must have a particular name. If the CFDI to Public checkbox in either a sales order or an invoice is checked, the final XML will override the data in the invoice contact and will add the following characteristics:

  • RFC: XAXX010101000 if it is a national customer or XEXX010101000 if it is a foreign customer

  • ZIP code: The same code of the company

  • Usage: S01 - Without Fiscal Effects

CFDI to Public Checkbox

중요

If your contact Country is empty, the final invoice is considered as a CFDI to Public for national customers. A non-blocking warning will be displayed before signing the document.

If the final customer doesn’t share any details, create a generic Customer. The name cannot be PUBLICO EN GENERAL or an error will be triggered (it can be, for example, CLIENTE FINAL).

Global invoice

If by the end of a certain period of time (that can vary from daily to bimonthly, depending of your company’s legal needs and preferences) and the customer still has sales that weren’t marked as regular invoices or individual CFDI to Public invoices, the SAT allows for the creation of a single invoice that can contain all operations, known as a global invoice.

참고

For this process, the Sales app must be installed.

Sales flow

First, it is necessary to create a special Journal created in Accounting ‣ Configuration ‣ Journals with the purpose of keeping a separate sequence.

Then, make sure that all the sales orders that need to be signed have the following configurations:

  • CFDI to Public checkbox enabled

  • Invoice Status marked as To Invoice

After this, go to Sales ‣ To Invoice ‣ Orders to Invoice, select all relevant sales orders and press Create Invoices. Make sure to disable the Consolidated Billing checkbox and click Create Draft Invoice.

Odoo will redirect to a list of invoices. Select all of them and in the Actions drop-down menu select Post entries. Select all posted invoices again and go back to the Actions drop-down menu to select Create Global Invoice.

In the wizard, select the Periodicity indicated by a professional accountant and press Create. All invoices should be signed under the same XML file, with the same Fiscal Folio.

  • Click Show in the CFDI tab to display a list with all related invoices.

  • Click Cancel in the CFDI tab to cancel the global invoice in both the SAT and Odoo.

참고

Global invoices created this way won’t have a PDF in them as their information is already within Odoo and is not to be seen by a customer.

Electronic accounting (reporting)

멕시코의 경우 전자 회계 를 통해 전자적 수단을 통해 회계 기록 및 항목을 보관하고 SAT 웹사이트를 통해 매월 회계 정보를 제공할 의무가 있습니다.

이 항목은 세 가지 주요 XML 파일로 설정되어 있습니다.

  1. The updated list of the chart of accounts that is currently in use

  2. A monthly trial balance, plus a closing entry report, also known as: Trial Balance Month 13

  3. An export of the journal entries in the general ledger (optional except in the case of a compulsory audit)

그 결과 XML 파일은 전자 회계 관련 기술 부속서 1.3 의 요구 사항에 부합할 수 있습니다.

In addition to this, it is possible to generate the DIOT: a report of vendors’ journal entries that involve IVA taxes that can be exported in a TXT file.

참고

In order to use these reports, the following modules must be installed:

  • Odoo Mexican Localization Reports l10n_mx_reports

  • Mexico - Month 13 Trial Balance l10n_mx_reports_closing

  • Odoo Mexican XML Polizas Export l10n_mx_xml_polizas

The chart of accounts and the Trial Balance Month 13 reports can be found in Accounting ‣ Reporting ‣ Trial Balance. The DIOT report can be found in Accounting ‣ Reporting ‣ Tax Report.

중요

전송할 보고서의 구체적인 특성 및 의무 사항은 회계 제도에 따라 변경될 수 있습니다. 정부에 문서를 전송하기 전에는 항상 회계 담당자에게 문의하세요.

계정과목표

The chart of accounts in Mexico follows a specific pattern based on SAT’s’ Código agrupador de cuentas.

It is possible to create any account, as long as it respects SAT’s encoding group: the pattern is NNN.YY.ZZ or NNN.YY.ZZZ.

Example

예를 들어 ‘102.01.99’ 또는 ‘401.01.001’ 등이 있습니다.

When a new account is created in Accounting ‣ Configuration ‣ Chart of Accounts, with the SAT encoding group pattern, the correct grouping code appears in Tags, and the account appears in the COA report.

Once all accounts are created, make sure the correct Tags are added as these mark the nature of the account.

참고

It is not advised use any pattern that ends a section with a 0 (such as 100.01.01, 301.00.003 or 604.77.00). This triggers errors in the report. By default Odoo will mark the accounts as yellow if the numbering will cause issue later on, this is to prevent reports from providing inaccurate data.

Once everything is set up, go to Accounting ‣ Reporting ‣ Trial Balance, and click the COA SAT (XML) button to generate an XML file containing all of the accounts. This XML file is ready to upload to the SAT website.

시산표

시산표에서 계정의 초기 잔액, 차액 및 총 잔액을 확인할 수 있습니다. 이를 위해서는 인코딩 그룹 을 정확히 추가해야 합니다.

To generate an XML file of the trial balance, go to Accounting ‣ Reporting ‣ Trial Balance, select the date, and click the (action menu), then select SAT (XML).

시산표 보고서

참고

Odoo는 추가 평가판에 대해 잔액 이 생성되지 않습니다.

Month 13

An additional report is the Month 13: a closing balance sheet that shows any adjustments or movements made in the accounting to close the year.

To generate this XML document, navigate to Accounting ‣ Accounting ‣ Journal Entries, and create a new document. Here, add all amounts to modify, and balance the debit and/or credit of each one.

After this is done, go to the Other Info tab and check the Month 13 Closing field. If needed, go to Accounting ‣ Reporting ‣ Trial Balance and select the date Month 13, where it is possible to see the the total amount of the year, plus all the additions of the journal entry. To generate the XML file, click the (action menu), then select SAT (XML).

총계정원장

By law, all transactions in Mexico must be recorded digitally. Since Odoo automatically creates all the underlying journal entries of all invoices and payments, simply exporting the general ledger complies with SAT’s audits and/or tax refunds.

The report can be filtered by period or by journal, depending on the need.

To create the XML, go to Accounting ‣ Reporting ‣ General Ledger, click (action menu), then click XML (Polizas). Then, select among four Export types:

  • 세무 감사

  • 감사 인증

  • 품목 반품

  • 보상

For Tax audit or Audit certification, add the Order Number provided by the SAT. For Return of goods or Compensation, add the Process Number, also provided by the SAT.

참고

To see this report without sending it, use ABC6987654/99 for the Order Number or AB123451234512 for the Process Number.

DIOT 보고서

The DIOT (Declaración Informativa de Operaciones con Terceros / Informative Declaration of Operations with Third Parties) is an additional obligation with the SAT, where the current status of creditable and non-creditable payments, withholdings, import taxes, and refunds of VAT from your vendor bills are provided to the SAT.

참고

Since July 2025 the new 2025 version of the report is available.

Unlike other reports, the DIOT is uploaded to a software provided by the SAT that contains the A-29 form. In Odoo, you can download the records of your transactions as a TXT file that can be uploaded to the form, avoiding direct capture of this data.

거래 파일에는 공급업체 청구서에 등록된 총 결제 금액이 해당 유형의 IVA로 분류되어있습니다. 모든 공급업체에서 부가가치세국가 는 필수 항목입니다.

To download the DIOT report as a TXT file, go to Accounting ‣ Reports ‣ Tax Return. Select the desired month, click (action menu), and select DIOT (TXT).

DIOT (TXT) download button.

중요

It is required to fill in the Type of Operation field in the Accounting tab of each vendor to prevent validation errors. Make sure that foreign customers have their Country set.

공급업체 연락처에 대한 DIOT 정보

Selecting 87 - Global Operations will cause the final TXT file to merge all vendors that are part of the global operations under one generic VAT: XAXX010101000.

해외 무역

외부 거래는 일반 청구서에 대한 일종의 보완책으로 ‘SAT 규정 <http://omawww.sat.gob.mx/tramitesyservicios/Paginas/complemento_comercio_exterior.htm>`_ 에 따라 해외 고객 대상의 청구서에 XML과 PDF 양쪽에 대한 특정 값을 추가합니다.

  • 수신자와 발신자의 구체적인 주소

  • 품목 유형을 식별할 수 있도록 관세율 추가

  • The correct 인코텀즈 (International Commercial Terms)

  • And more, such as the certificate of origin and special units of measure

이를 통해 판매된 품목에 대해 자세하게 설명할 수 있을 뿐 아니라 수출업체 및 수입업체를 정확하게 확인할 수 있습니다.

Since January 1, 2018, external trade is a requirement for taxpayers who carry export operations of type A1. While the current CFDI is 4.0, the external trade is currently on version 2.0.

참고

In order to use this feature, the EDI for Mexico (Advanced Features) l10n_mx_edi_extended module must be installed.

중요

설치하기 전에 비즈니스에 이 기능이 필요한지 확인합니다. 필요한 경우 모듈을 설치하기 전에 먼저 회계 담당자에게 문의하세요.

환경설정

연락처

To configure your company contact for external trade, navigate to Accounting ‣ Customers ‣ Customers, remove the default Customer Invoices filter, and select your Company name. While the CFDI 4.0 requirements require adding a valid ZIP code in the company contact record, the external trade complement adds the requirement that the City and the State must also be valid. All three fields must coincide with the Official SAT Catalog for Carta Porte, or it will produce an error.

경고

Add the City and State in the company’s contact record, not in the company record itself.

On the contact record, the optional fields Locality and Colony Code can also be filled. These two fields also have to coincide with the data in the SAT.

해외에서 수취하는 클라이언트에 대한 연락처 데이터를 설정하려면 회계 ‣ 고객 ‣ 고객 으로 이동하여 해외 클라이언트의 연락처를 선택합니다. 오류를 방지하려면 연락처에 반드시 다음 내용을 입력해야 합니다.

  1. 유효한 ZIP 코드 및 외국 국가 를 포함한 전체 회사 주소

  2. The foreign RFC (tax identification number), in the correct format (for example: Colombia 123456789-1)

  3. In the Sales & Purchase tab, to activate the Needs external trade? checkbox.

중요

Do not enable the No Tax Breakdown option for External Trade customers. Selecting this option hides mandatory fields that are required for external trade contact configuration.

참고

XML 결과 및 PDF 파일의 부가가치세 는 해외 거래에 있어서 일반 부가가치세인 XEXX010101000 으로 자동 대체됩니다.

품목

All products involved with external trade have four additional fields that are required, two of which are exclusive to external trade.

  1. The Reference of the product must be set in the General Information tab.

  2. The Weight of the product in the Inventory tab must be more than 0.

  3. The correct Tariff Fraction of the product must be set in the Accounting tab for external trade.

  4. The UMT Aduana in the Accounting tab must be set and correspond to the Tariff Fraction for external trade.

해외 거래 품목에 대한 필수 항목입니다.

  • 관세율 에 표시된 UoM 코드가 01`인 경우 알맞은 :guilabel:`UMT 기준`kg`입니다.

  • 관세율 에 표시된 UoM 코드가 06`인 경우 알맞은 :guilabel:`UMT 기준`단위`입니다.

청구서 발행 흐름

Before creating an invoice, it is important to take into account that external trade invoices require converting product prices into a foreign currency such as USD. Therefore, multicurrency must be enabled with the foreign currency activated in the Currencies section. The correct Service to run is [MX] Bank of Mexico. To convert product prices, create a pricelist in the foreign currency.

Then, with the correct exchange rate set up in Accounting ‣ Settings ‣ Currency, set the Incoterm and the optional Certificate Source fields in the invoice’s Other Info tab.

Finally, confirm the invoice with the same process as a regular invoice, and click the Send button to sign it via CFDI.

Point of sale

The Point of sale adaptation of the Mexican Localization enables the creation of invoices that comply with the SAT requirements directly in the POS session, with the added benefit of creating receipt tickets that allow self-invoicing in a special portal and creating global invoices.

Point of sale flow

Other than the standard Point of Sale configuration, the only requirement for the Mexican localization is the additional fact that each payment method needs to be configured with a correct Payment Way.

By default Odoo creates preconfigured payment methods for cash, credit card, and debit card.

While selling on the Point of Sale, click the Customer button to either create or select a customer. Here it is possible to review customer invoicing information (such as the RFC or Fiscal Regime) and even modify it directly inside the session.

After selecting a customer, tick the Invoice checkbox. This opens a menu to select the Usage and to define if it is an invoice to the public. Click confirm, select the payment method, and then click validate to complete the order. The PDF is then downloaded and it is possible to send the invoice via mail to the final customer alongside the receipt.

To create invoices from orders, go to the Orders menu, select the order, click Load Order, and tick the Invoice checkbox. This opens the same menu for the Usage and CFDI to Public.

Invoice Configuration for Point of Sale.

To sign a credit note automatically, tick the Invoice checkbox when processing a refund.

참고

Credit notes for returned products will contain the relation type 03 - Devolución de mercancía sobre facturas o traslados previos.

중요

  • In the Mexican localization, positive and negative lines in a POS session cannot be mixed.

  • If a SAT validation error occurs customer will get a Pro-Forma invoice instead.

Self-invoicing portal

If the final customer is not sure if they want to have their invoice generated at the exact moment of the sale, it is possible to give them the option of creating a receipt with either a QR code or a URL. To do so, follow these steps:

  1. Go to Point of Sale ‣ Configuration.

  2. Select the Point of Sale.

  3. Scroll to the Bills & Receipts section.

  4. Enable Self-service invoicing.

  5. Set the Print field to QR code, URL, or QR code + URL.

Customers who scan this QR code or follow the URL will access to a menu where they can add their fiscal information, including the Usage and Fiscal Regime once they enter the five digit code that is also provided on the receipt.

Global invoice

As with regular sales orders, global invoices can also be created from a POS session.

For this, make sure not to select a customer or the invoice option in the payment menu and go to Point of Sale ‣ Orders ‣ Orders. There, select all the orders to invoice, click Actions and select Create Global Invoice.

Like with sales orders, choose the correct Periodicity and press Create.

This attaches an XML file to each of the selected orders. The XML files can be downloaded by going to the CFDI tab. If needed, it is possible to cancel the invoice from the same tab.

If eventually any of the orders that are part of the global invoice need to be addressed to a customer, it is still possible to send an invoice by entering a new POS session, clicking the (drop-down menu), then click Orders. Change the All active orders filter to Paid, select the order, and click the Invoice button.

참고

Global invoices, just as regular invoices, can only be grouped by physical address. That is determined by the address set on the POS invoice journal, so when attempting to invoice two addresses a warning will come up to warn the user of the error.

이커머스

The eCommerce adaptation of the Mexican Localization provides and extra step to create invoices that comply with the SAT requirements on eCommerce by retrieving the customer data after the Checkout and even allowing for the signature of automatic invoices after the payment is processed, as well as sending customers the files via email and granting them access to retrieve their PDF & XML files from their own customer portal.

eCommerce flow

During the regular checkout process, a new Invoicing Info step appears, where it is possible to request an invoice or not. If No is selected, a CFDI to Public is created,. If Yes is selected, the RFC, Fiscal Regime, and Usage are required in order to get all information in the sales order, where its status will change to To Invoice.

중요

Make sure to add a UNSPSC code to the shipping product.

If you enable the Automatic Invoicing in Settings ‣ Website ‣ Invoicing, the electronic document will be signed automatically.

Subscriptions

While handling subscriptions, all the sales fields are used to create the recurrent invoices. These are automatically signed and sent via email with the PDF and XML attached with no additional manual actions required.

Inventory

통관 번호

A customs declaration (Pedimento Aduanero) is a fiscal document that certifies that all contributions to the fiscal entity (the SAT) have been paid for, including the import/export of goods.

According to the Annex 20 of CFDI 4.0, in documents where the invoiced goods come from a first-hand import operation, the Customs Number field, needs to be added to all lines of products involved with the operation.

참고

To do so, the Odoo Mexico Localization for Stock/Landing l10n_mx_edi_landing module must be installed, in addition to the Inventory, Purchase, and Sales apps.

중요

이 기능을 외부 거래와 혼동하지 마세요. 세관 번호는 품목 수입과 직접적으로 관련되어 있는 반면, 대외 무역 보완은 수출과 관련되어 있습니다. 이 기능이 필요한 경우 수정하기 전에 먼저 회계 담당자에게 문의하세요.

환경설정

In order to track the correct customs number for a specific invoice, Odoo uses landed costs. Go to Inventory ‣ Configuration ‣ Settings, and in the Valuation section, make sure that Landed Costs is activated.

Begin by creating a service-type product called, Pedimento. In the Purchase tab, activate Is a Landed Cost, and select a Default Split Method.

Then, configure the goods-type products that hold the customs numbers. To do so, create the products, and make sure the Product Category has the following configuration:

  • 원가 계산법: FIFO 또는 AVCO

  • 재고 가치 평가: 자동화

  • Stock Valuation Account: 115.01.01 Inventory

  • 재고 계정: 재고 가치 평가

  • Stock Input Account: 115.05.01 Goods in transit

  • Stock Output Account: 115.05.01 Goods in transit

참고

Setting the Inventory Valuation to Automated requires first enabling the feature. Go to Accounting ‣ Configuration ‣ Settings, and in the Stock Valuation section, enable Automatic Accounting.

저장 가능한 품목의 일반 설정 저장 가능한 품목의 카테고리 설정

매입 및 판매 흐름

After configuring the product, follow the standard purchase flow.

Create a purchase order from Purchase ‣ Orders ‣ Purchase Order. Then, confirm the order to display a Receipt smart button. Click on the Receipt smart button and Validate the receipt.

Go to Inventory ‣ Operations ‣ Landed Costs, and create a new record. In the Transfer, add the receipt that was just validated, add the Customs number and in the Additional Costs tab, add the Pedimento product.

Optionally, it is possible to add a cost amount. After this, Validate the landed cost. Once Posted, all products related to that receipt have the customs number assigned.

경고

The Pedimento Number field is not editable once it is set, so be careful when associating the correct number with the transfer(s).

양륙 비용 재고 기록에 대한 세관 번호입니다.

Next, create a sales order and confirm it. Click on the Delivery smart button that appears, and Validate the delivery order.

Finally, create an invoice from the sales order, and confirm it. The invoice line related to the product has a customs number on it. This number matches the customs number added in the landed cost record created earlier.

확인된 판매주문서 품목의 세관 번호입니다.

배송 가이드

운송 증서 란 운송되는 품목의 종류, 수량 및 목적지가 기재된 문서인 선하증권입니다.

On July 17th, 2024, version 3.1 of this CFDI was implemented for all transportation providers, intermediaries, and owners of goods. Odoo is able to generate a document type “T” (Traslado), which, unlike other documents, is created in a delivery order instead of an invoice or payment.

Odoo는 지상 운송 시 (또는 제외 시) XML 및 PDF 파일을 생성할 수 있으며 위험물 취급되는 물품을 처리할 수 있습니다.

참고

In order to use this feature, the Mexico - Electronic Delivery Guide l10n_mx_edi_stock module must be installed.

Additionally, it is necessary to have the Inventory and Sales apps installed.

중요

Odoo는 운송 증서류의 문서 유형 “I” (Ingreso), 항공 또는 해상 운송을 지원하지 않습니다. 이 기능이 필요한 경우 수정 전에 먼저 회계 담당자에게 문의하세요.

환경설정

Odoo manages two different types of CFDI type “T”. Both can be created from either incoming shipments or delivery orders.

  • No Federal Highways is used when the Distance to Destination is less than 30 km.

  • Federal Transport is used when the Distance to Destination exceeds 30 km.

Other than the standard requirements of regular invoicing (the RFC of the customer, the UNSPSC code, etc.), if you are using No Federal Highways, no external configuration is needed.

For Federal Transport, several configurations have to be added to contacts, vehicle setups, and products. Those configurations are then included in the XML and PDF files.

연락처 및 차량

Like the external trade feature, the Address in both the company and the final customer must be complete. The ZIP code, City, and State must coincide with the Official SAT Catalog for Carta Porte.

두 주소 모두 지역 은 선택 사항입니다.

중요

The origin address used for the delivery guide is set in Inventory ‣ Configuration ‣ Warehouses. While this is set as the company address by default, you can change it to your correct warehouse address.

Another addition to this feature is the Vehicle Setups menu found in Inventory ‣ Settings ‣ Vehicle Setups. This menu lets you add all the information related to the vehicle used for the delivery order.

필수 항목을 모두 입력해야 배송 가이드를 정확하게 생성할 수 있습니다.

The fields, Vehicle Plate Number and Number Plate, must contain between 5 and 7 characters.

In the Intermediaries section, add the operator of the vehicle. The only mandatory fields for this contact are the VAT and Operator Licence.

배송 가이드 차량 환경설정입니다.
품목

일반 청구서를 발행하는 경우와 마찬가지로 모든 품목에는 UNSPSC 카테고리 가 있어야 합니다. 이 외에도 배송 가이드와 관련된 품목에는 다음과 같은 두 가지 추가 설정을 해야 합니다.

  • 재고 이동을 하려면 품목 유형저장 가능한 품목 으로 설정해야 합니다.

  • In the Inventory tab, the field Weight must be more than 0.

경고

Creating a delivery guide of a product with the value 0 will trigger an error. As the Weight has been already stored in the delivery order, it is needed to return the products and create the delivery order (and delivery guide) again with the correct amounts.

판매 및 재고 흐름

To create a delivery guide, first, first create and confirm a sales order from Sales ‣ Sales Order. Click the Delivery smart button that is generated, and Validate the transfer.

After the status is set to Done, you can edit the transfer, and select the Transport Type in the Additional Info tab.

If using the No Federal Highways Transport Type, save the transfer, and then click Generate Delivery Guide. The resulting XML can be found in the chatter.

참고

Other than the UNSPSC on all products, delivery guides that use No Federal Highways do not require any special configuration to be sent to the government.

If using the Federal Transport Transport Type, the tab MX EDI appears. There, enter a value in Distance to Destination (KM) greater than 0, and select the Vehicle Setup used for this delivery.

Finally, add a Gross Vehicle Weight and click Generate Delivery Guide.

Delivery Guides can also be created from Receipts, either from the Inventory app or by the standard flow of the Purchase app.

위험물

UNSPSC 카테고리 의 특정 값은 공식 SAT 카탈로그 에서 위험물 로 간주됩니다. 연방 운송 를 사용하여 배송 가이드를 만들 경우에는 이러한 카테고리에 대해 추가로 고려해야 합니다.

First, select the product from Inventory ‣ Products ‣ Products. Then, in the Accounting tab, fill the Hazardous Material Designation Code and Hazardous Packaging fields with the correct code from the SAT catalog.

배송 가이드의 위험물 품목에 대한 필수 항목입니다.

중요

There exists the possibility that a UNSPSC Category may or may not be a dangerous hazard (for example 01010101). If it is not dangerous, enter 0 in the Hazardous Material Designation Code field.

In Inventory ‣ Settings ‣ Vehicle Setup, complete the Environment Insurer and Environment Insurance Policy well. After this, continue with the regular process to create a delivery guide.

Imports and Exports

If your Carta Porte is for international operations (for exports), some additional fields need to be taken into account.

First, make sure that all relevant Products have the following configuration:

  • UNSPSC Category cannot be 01010101 Does not exist in the catalog.

  • Tariff Fraction and UMT Aduana must be set, similar to the external trade flow.

  • Material Type must be set.

Then, when creating a Delivery Guide from a delivery or receipt, fill the following fields:

  • Customs Regimes

  • Customs Document Type

  • Customs Document Identification

Then, when creating a Delivery Guide for a receipt where the Customs Document Type is Pedimento, two new fields appear: Pedimento Number and Importer.

The field Pedimento Number should follow the pattern xx xx xxxx xxxxxxx. For example, 15 48 3009 0001235.