> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gobl.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Mexican SAT CFDI v4.X

Key: `mx-cfdi-v4`

## Scenarios

### bill/invoice

<Accordion title="standard">
  **Filters:**

  * **Types:** `standard`

  **Output:**

  * **Extensions:** `mx-cfdi-doc-type:I`
</Accordion>

<Accordion title="credit-note">
  **Filters:**

  * **Types:** `credit-note`

  **Output:**

  * **Extensions:** `mx-cfdi-doc-type:E`, `mx-cfdi-rel-type:01`
</Accordion>

<Accordion title="standard, credit-note">
  **Filters:**

  * **Types:** `standard`, `credit-note`
  * **Filter:** *(custom)*

  **Output:**

  * **Extensions:** `mx-cfdi-payment-method:PUE`
</Accordion>

<Accordion title="standard, credit-note">
  **Filters:**

  * **Types:** `standard`, `credit-note`
  * **Filter:** *(custom)*

  **Output:**

  * **Extensions:** `mx-cfdi-payment-method:PPD`
</Accordion>

## Extensions

### Document Type

<Accordion title="mx-cfdi-doc-type">
  | Code | Name        |
  | ---- | ----------- |
  | `I`  | Invoice     |
  | `E`  | Credit Note |
</Accordion>

### Relation Type

<Accordion title="mx-cfdi-rel-type">
  | Code | Name                                       |
  | ---- | ------------------------------------------ |
  | `01` | Credit note for related documents          |
  | `02` | Debit note for related documents           |
  | `03` | Return of goods for related documents      |
  | `04` | Substitution of the previous CFDI document |
  | `05` | Transfer of goods for related documents    |
  | `06` | Invoice generated by previous transfers    |
  | `07` | CFDI for advance payment                   |
</Accordion>

### Place of Issue

Post code of where the invoice was issued. In CFDI, this translates to the 'LugarExpedicion'.

<Accordion title="mx-cfdi-issue-place">
  Pattern: `^[0-9]{5}$`
</Accordion>

### Tax Type

Code defined in the CFDI catalogue "c\_Impuesto" for the type of tax. Used in the 'Impuesto' field.

<Accordion title="mx-cfdi-tax-type">
  | Code  | Name                                   |
  | ----- | -------------------------------------- |
  | `001` | Income Tax                             |
  | `002` | Value Added Tax                        |
  | `003` | Special Tax on Production and Services |
</Accordion>

### Product or Service Code

Code defined in the CFDI catalogue used to identify a product or service.
Mapped to the 'ClaveProdServ' CFDI field.

<Accordion title="mx-cfdi-prod-serv" />

### Fiscal Regime Code

Fiscal regime associated with suppliers and customers.

<Accordion title="mx-cfdi-fiscal-regime">
  | Code  | Name                                                                                       |
  | ----- | ------------------------------------------------------------------------------------------ |
  | `601` | General de Ley Personas Morales                                                            |
  | `603` | Personas Morales con Fines no Lucrativos                                                   |
  | `605` | Sueldos y Salarios e Ingresos Asimilados a Salarios                                        |
  | `606` | Arrendamiento                                                                              |
  | `607` | Régimen de Enajenación o Adquisición de Bienes                                             |
  | `608` | Demás ingresos                                                                             |
  | `610` | Residentes en el Extranjero sin Establecimiento Permanente en México                       |
  | `611` | Ingresos por Dividendos (socios y accionistas)                                             |
  | `612` | Personas Físicas con Actividades Empresariales y Profesionales                             |
  | `614` | Ingresos por intereses                                                                     |
  | `615` | Régimen de los ingresos por obtención de premios                                           |
  | `616` | Sin obligaciones fiscales                                                                  |
  | `620` | Sociedades Cooperativas de Producción que optan por diferir sus ingresos                   |
  | `621` | Incorporación Fiscal                                                                       |
  | `622` | Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras                                   |
  | `623` | Opcional para Grupos de Sociedades                                                         |
  | `624` | Coordinados                                                                                |
  | `625` | Régimen de las Actividades Empresariales con ingresos a través de Plataformas Tecnológicas |
  | `626` | Régimen Simplificado de Confianza                                                          |
</Accordion>

### CFDI Use Code

Chosen by the customer to indicate the purpose of an invoice.

<Accordion title="mx-cfdi-use">
  | Code   | Name                                                 |
  | ------ | ---------------------------------------------------- |
  | `G01`  | Acquisition of goods                                 |
  | `G02`  | Returns, discounts or rebates                        |
  | `G03`  | General expenses                                     |
  | `I01`  | Construction                                         |
  | `I02`  | Office furniture and equipment as investmen          |
  | `I03`  | Transport equipment                                  |
  | `I04`  | Computer equipment and accessories                   |
  | `I05`  | Dies, punches, molds, matrices and other toolin      |
  | `I06`  | Telephone communications                             |
  | `I07`  | Satellite communications                             |
  | `I08`  | Other machinery and equipment                        |
  | `D01`  | Medical and dental fees and hospital expenses        |
  | `D02`  | Medical expenses for disability or incapacity        |
  | `D03`  | Funeral expenses                                     |
  | `D04`  | Donations                                            |
  | `D05`  | Interest actually paid on mortgage loans (housing)   |
  | `D06`  | Voluntary contributions to the SAR                   |
  | `D07`  | Medical insurance premiums                           |
  | `D08`  | Mandatory school transportation expenses             |
  | `D09`  | Deposits in savings accounts, pension plans premiums |
  | `D10`  | Payments for educational services (school fees)      |
  | `S01`  | Without tax effects                                  |
  | `CP01` | Payments                                             |
  | `CN01` | Payroll                                              |
</Accordion>

### Payment Method

Code defined in the CFDI catalogue "c\_MetodoPago" for the payment method. Used in the 'MetodoPago' field.

<Accordion title="mx-cfdi-payment-method">
  | Code  | Name                             |
  | ----- | -------------------------------- |
  | `PUE` | Payment in a single exhibition   |
  | `PPD` | Payment in deferred installments |
</Accordion>

### Payment Means

Code defined in the CFDI catalogue "c\_FormaPago" for the payment method. Used in the 'FormaPago' field.

<Accordion title="mx-cfdi-payment-means">
  | Code | Name                             |
  | ---- | -------------------------------- |
  | `01` | Cash                             |
  | `02` | Check                            |
  | `03` | Electronic Funds Transfer        |
  | `04` | Credit Card                      |
  | `05` | Electronic Wallet                |
  | `06` | Online or Electronic Payment     |
  | `08` | Grocery Voucher                  |
  | `12` | Payment in Kind                  |
  | `13` | Payment by subrogation           |
  | `14` | Payment by consignment           |
  | `15` | Debt relief                      |
  | `17` | Netting                          |
  | `23` | Novation                         |
  | `24` | Merger                           |
  | `25` | Debt remission                   |
  | `26` | Expiration of payment obligation |
  | `27` | To the creditor's satisfaction   |
  | `28` | Debit card                       |
  | `29` | Services card                    |
  | `30` | Advance payment                  |
  | `31` | Payment via intermediary         |
  | `99` | Undefined                        |
</Accordion>

### CFDI Global Period

Period for when the sales where generated.

<Accordion title="mx-cfdi-global-period">
  | Code | Name      |
  | ---- | --------- |
  | `01` | Daily     |
  | `02` | Weekly    |
  | `03` | Biweekly  |
  | `04` | Monthly   |
  | `05` | Bimonthly |
</Accordion>

### CFDI Global Month

Specific month or month range for the global invoice.

<Accordion title="mx-cfdi-global-month">
  | Code | Name              |
  | ---- | ----------------- |
  | `01` | January           |
  | `02` | February          |
  | `03` | March             |
  | `04` | April             |
  | `05` | May               |
  | `06` | June              |
  | `07` | July              |
  | `08` | August            |
  | `09` | September         |
  | `10` | October           |
  | `11` | November          |
  | `12` | December          |
  | `13` | January-February  |
  | `14` | March-April       |
  | `15` | May-June          |
  | `16` | July-August       |
  | `17` | September-October |
  | `18` | November-December |
</Accordion>

### CFDI Global Year

<Accordion title="mx-cfdi-global-year">
  Pattern: `\d{4}`
</Accordion>

## Validation Rules

<AccordionGroup>
  <Accordion title="bill.Invoice">
    | Field                        | Test                                                                                                                                                     | Validation Code / Message                                                                                                                                   |
    | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | <small>Invoice</small>       | <ul class="gobl-test"><li>Can convert to \[MXN]</li></ul>                                                                                                | `GOBL-MX-CFDI-BILL-INVOICE-27`<br />Invoice must be in MXN or provide exchange rate for conversion                                                          |
    | `tax.ext`                    | <ul class="gobl-test"><li>Ext require \[mx-cfdi-doc-type, mx-cfdi-issue-place, mx-cfdi-payment-method]</li></ul>                                         | `GOBL-MX-CFDI-BILL-INVOICE-01`<br />Tax requires 'mx-cfdi-doc-type', 'mx-cfdi-issue-place', and 'mx-cfdi-payment-method' extensions                         |
    | `tax.ext`                    | <ul class="gobl-test"><li>Has global tag</li><li>Ext require \[mx-cfdi-global-period, mx-cfdi-global-month, mx-cfdi-global-year]</li></ul>               | `GOBL-MX-CFDI-BILL-INVOICE-02`<br />Global invoices require 'mx-cfdi-global-period', 'mx-cfdi-global-month', and 'mx-cfdi-global-year' extensions           |
    | `customer`                   | <ul class="gobl-test"><li>Has global tag</li><li>Empty</li></ul>                                                                                         | `GOBL-MX-CFDI-BILL-INVOICE-03`<br />Cannot be set with global tag                                                                                           |
    | `payment`                    | <ul class="gobl-test"><li>Has global tag</li><li class="gobl-test-present">Present</li></ul>                                                             | `GOBL-MX-CFDI-BILL-INVOICE-04`<br />Payment is required for global invoices                                                                                 |
    | `payment.advances`           | <ul class="gobl-test"><li>Has global tag</li><li class="gobl-test-present">Present</li></ul>                                                             | `GOBL-MX-CFDI-BILL-INVOICE-05`<br />Advances must be set with global tag                                                                                    |
    | `lines[*].item.ref`          | <ul class="gobl-test"><li>Has global tag</li><li class="gobl-test-present">Present</li></ul>                                                             | `GOBL-MX-CFDI-BILL-INVOICE-06`<br />Must be set with global tag                                                                                             |
    | `tax.ext`                    | <ul class="gobl-test"><li>No global tag</li><li>Ext require all or none of \[mx-cfdi-global-period, mx-cfdi-global-month, mx-cfdi-global-year]</li></ul> | `GOBL-MX-CFDI-BILL-INVOICE-07`<br />'mx-cfdi-global-period', 'mx-cfdi-global-month', and 'mx-cfdi-global-year' extensions must all be present or all absent |
    | `customer.tax_id`            | <ul class="gobl-test"><li>No global tag</li><li class="gobl-test-present">Present</li></ul>                                                              | `GOBL-MX-CFDI-BILL-INVOICE-08`<br />Customer tax ID is required                                                                                             |
    | `customer.tax_id.code`       | <ul class="gobl-test"><li>No global tag</li><li class="gobl-test-present">Present</li></ul>                                                              | `GOBL-MX-CFDI-BILL-INVOICE-09`<br />Customer tax ID code is required                                                                                        |
    | `customer.ext`               | <ul class="gobl-test"><li>Customer is Mexican</li><li>Ext require \[mx-cfdi-fiscal-regime, mx-cfdi-use]</li></ul>                                        | `GOBL-MX-CFDI-BILL-INVOICE-10`<br />Mexican customer requires 'mx-cfdi-fiscal-regime' and 'mx-cfdi-use' extensions                                          |
    | `customer.addresses`         | <ul class="gobl-test"><li>Customer is Mexican</li><li class="gobl-test-present">Present</li></ul>                                                        | `GOBL-MX-CFDI-BILL-INVOICE-11`<br />Mexican customer must have at least one address                                                                         |
    | `customer.addresses[*].code` | <ul class="gobl-test"><li>Customer is Mexican</li><li class="gobl-test-present">Present</li></ul>                                                        | `GOBL-MX-CFDI-BILL-INVOICE-12`<br />Customer address postal code is required                                                                                |
    | `customer.addresses[*].code` | <ul class="gobl-test"><li>Customer is Mexican</li><li>Matches ^\[0-9]{5}\$</li></ul>                                                                     | `GOBL-MX-CFDI-BILL-INVOICE-13`<br />Customer address postal code format is invalid                                                                          |
    | `lines[*].item.ext`          | <ul class="gobl-test"><li>No global tag</li><li>Ext require \[mx-cfdi-prod-serv]</li></ul>                                                               | `GOBL-MX-CFDI-BILL-INVOICE-14`<br />Item requires 'mx-cfdi-prod-serv' extension                                                                             |
    | `lines[*].item.ext`          | <ul class="gobl-test"><li>No global tag</li><li>Valid prod-serv</li></ul>                                                                                | `GOBL-MX-CFDI-BILL-INVOICE-15`<br />Product/service code must have 8 digits                                                                                 |
    | `tax.ext`                    | <ul class="gobl-test"><li>Has preceding</li><li>Ext require \[mx-cfdi-rel-type]</li></ul>                                                                | `GOBL-MX-CFDI-BILL-INVOICE-16`<br />Tax requires 'mx-cfdi-rel-type' extension when preceding documents are present                                          |
    | `preceding[*].stamps`        | <ul class="gobl-test"><li>Stamps have sat-uuid</li></ul>                                                                                                 | `GOBL-MX-CFDI-BILL-INVOICE-17`<br />Preceding row is missing 'sat-uuid' stamp                                                                               |
    | `supplier.tax_id`            | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                    | `GOBL-MX-CFDI-BILL-INVOICE-18`<br />Supplier tax ID is required                                                                                             |
    | `supplier.tax_id.code`       | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                    | `GOBL-MX-CFDI-BILL-INVOICE-19`<br />Supplier tax ID code is required                                                                                        |
    | `supplier.ext`               | <ul class="gobl-test"><li>Ext require \[mx-cfdi-fiscal-regime]</li></ul>                                                                                 | `GOBL-MX-CFDI-BILL-INVOICE-20`<br />Supplier requires 'mx-cfdi-fiscal-regime' extension                                                                     |
    | `lines[*].quantity`          | <ul class="gobl-test"><li>Min 0</li></ul>                                                                                                                | `GOBL-MX-CFDI-BILL-INVOICE-21`<br />Line quantity must be greater than 0                                                                                    |
    | `lines[*].item.price`        | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                    | `GOBL-MX-CFDI-BILL-INVOICE-22`<br />Line item price is required                                                                                             |
    | `lines[*].item.price`        | <ul class="gobl-test"><li>Min 0</li></ul>                                                                                                                | `GOBL-MX-CFDI-BILL-INVOICE-23`<br />Line item price must be greater than 0                                                                                  |
    | `lines[*].total`             | <ul class="gobl-test"><li>Min 0</li></ul>                                                                                                                | `GOBL-MX-CFDI-BILL-INVOICE-24`<br />Line total must not be negative                                                                                         |
    | `discounts`                  | <ul class="gobl-test"><li>Empty</li></ul>                                                                                                                | `GOBL-MX-CFDI-BILL-INVOICE-25`<br />Document level discounts are not supported, use line discounts instead                                                  |
    | `charges`                    | <ul class="gobl-test"><li>Empty</li></ul>                                                                                                                | `GOBL-MX-CFDI-BILL-INVOICE-26`<br />Document level charges are not supported                                                                                |
  </Accordion>

  <Accordion title="pay.Instructions">
    | Field | Test                                                                     | Validation Code / Message                                                                              |
    | ----- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
    | `ext` | <ul class="gobl-test"><li>Ext require \[mx-cfdi-payment-means]</li></ul> | `GOBL-MX-CFDI-PAY-INSTRUCTIONS-01`<br />Payment instructions require 'mx-cfdi-payment-means' extension |
  </Accordion>

  <Accordion title="pay.Record">
    | Field | Test                                                                     | Validation Code / Message                                                                    |
    | ----- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- |
    | `ext` | <ul class="gobl-test"><li>Ext require \[mx-cfdi-payment-means]</li></ul> | `GOBL-MX-CFDI-PAY-RECORD-01`<br />Payment advance requires 'mx-cfdi-payment-means' extension |
  </Accordion>

  <Accordion title="pay.Terms">
    | Field   | Test                                                          | Validation Code / Message                                               |
    | ------- | ------------------------------------------------------------- | ----------------------------------------------------------------------- |
    | `notes` | <ul class="gobl-test"><li>Length between 0 and 1000</li></ul> | `GOBL-MX-CFDI-PAY-TERMS-01`<br />Notes length must be no more than 1000 |
  </Accordion>

  <Accordion title="cfdi.FoodVouchers">
    | Field                               | Test                                                                                                                                                                                          | Validation Code / Message                                                                    |
    | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
    | `employer_registration`             | <ul class="gobl-test"><li>Length between 0 and 20</li></ul>                                                                                                                                   | `GOBL-MX-CFDI-FOODVOUCHERS-01`<br />Employer registration must be no more than 20 characters |
    | `account_number`                    | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                                                         | `GOBL-MX-CFDI-FOODVOUCHERS-02`<br />Account number is required                               |
    | `account_number`                    | <ul class="gobl-test"><li>Length between 0 and 20</li></ul>                                                                                                                                   | `GOBL-MX-CFDI-FOODVOUCHERS-03`<br />Account number must be no more than 20 characters        |
    | `total`                             | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                                                         | `GOBL-MX-CFDI-FOODVOUCHERS-04`<br />Total is required                                        |
    | `lines`                             | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                                                         | `GOBL-MX-CFDI-FOODVOUCHERS-05`<br />Lines are required                                       |
    | `lines[*].e_wallet_id`              | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                                                         | `GOBL-MX-CFDI-FOODVOUCHERS-06`<br />Line e-wallet ID is required                             |
    | `lines[*].e_wallet_id`              | <ul class="gobl-test"><li>Length between 0 and 20</li></ul>                                                                                                                                   | `GOBL-MX-CFDI-FOODVOUCHERS-07`<br />Line e-wallet ID must be no more than 20 characters      |
    | `lines[*].issue_date_time`          | <ul class="gobl-test"><li>Not zero</li></ul>                                                                                                                                                  | `GOBL-MX-CFDI-FOODVOUCHERS-08`<br />Line issue date and time is required                     |
    | `lines[*].employee`                 | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                                                         | `GOBL-MX-CFDI-FOODVOUCHERS-09`<br />Line employee is required                                |
    | `lines[*].employee.tax_code`        | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                                                         | `GOBL-MX-CFDI-FOODVOUCHERS-10`<br />Employee tax code (RFC) is required                      |
    | `lines[*].employee.tax_code`        | <ul class="gobl-test"><li>Valid RFC</li></ul>                                                                                                                                                 | `GOBL-MX-CFDI-FOODVOUCHERS-11`<br />Employee tax code (RFC) must be valid                    |
    | `lines[*].employee.curp`            | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                                                         | `GOBL-MX-CFDI-FOODVOUCHERS-12`<br />Employee CURP is required                                |
    | `lines[*].employee.curp`            | <ul class="gobl-test"><li>Matches ^\[A-Z]\[A,E,I,O,U,X]\[A-Z]{2}\[0-9]{2}\[0-1]\[0-9]\[0-3]\[0-9]\[M,H]\[A-Z]{2}\[B,C,D,F,G,H,J,K,L,M,N,Ñ,P,Q,R,S,T,V,W,X,Y,Z]{3}\[0-9,A-Z]\[0-9]\$</li></ul> | `GOBL-MX-CFDI-FOODVOUCHERS-13`<br />Employee CURP format must be valid                       |
    | `lines[*].employee.name`            | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                                                         | `GOBL-MX-CFDI-FOODVOUCHERS-14`<br />Employee name is required                                |
    | `lines[*].employee.name`            | <ul class="gobl-test"><li>Length between 0 and 100</li></ul>                                                                                                                                  | `GOBL-MX-CFDI-FOODVOUCHERS-15`<br />Employee name must be no more than 100 characters        |
    | `lines[*].employee.social_security` | <ul class="gobl-test"><li>Matches ^\[0-9]{11}\$</li></ul>                                                                                                                                     | `GOBL-MX-CFDI-FOODVOUCHERS-16`<br />Employee social security number format is invalid        |
    | `lines[*].amount`                   | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                                                                                                                         | `GOBL-MX-CFDI-FOODVOUCHERS-17`<br />Line amount is required                                  |
  </Accordion>

  <Accordion title="cfdi.FuelAccountBalance">
    | Field                           | Test                                                                                     | Validation Code / Message                                                                               |
    | ------------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
    | `account_number`                | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-01`<br />Account number is required                                    |
    | `account_number`                | <ul class="gobl-test"><li>Length between 1 and 50</li></ul>                              | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-02`<br />Account number must be between 1 and 50 characters            |
    | `subtotal`                      | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-03`<br />Subtotal is required                                          |
    | `total`                         | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-04`<br />Total is required                                             |
    | `lines`                         | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-05`<br />Lines are required                                            |
    | `lines[*]`                      | <ul class="gobl-test"><li>Valid line total</li></ul>                                     | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-20`<br />Line total must be quantity x unit\_price                     |
    | `lines[*].e_wallet_id`          | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-06`<br />Line e-wallet ID is required                                  |
    | `lines[*].purchase_date_time`   | <ul class="gobl-test"><li>Not zero</li></ul>                                             | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-07`<br />Line purchase date and time is required                       |
    | `lines[*].vendor_tax_code`      | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-08`<br />Line vendor tax code is required                              |
    | `lines[*].vendor_tax_code`      | <ul class="gobl-test"><li>Valid RFC</li></ul>                                            | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-09`<br />Line vendor tax identity code is invalid                      |
    | `lines[*].service_station_code` | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-10`<br />Line service station code is required                         |
    | `lines[*].service_station_code` | <ul class="gobl-test"><li>Length between 1 and 20</li></ul>                              | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-11`<br />Line service station code must be between 1 and 20 characters |
    | `lines[*].quantity`             | <ul class="gobl-test"><li>Min 0</li></ul>                                                | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-12`<br />Line quantity must be greater than 0                          |
    | `lines[*].item`                 | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-13`<br />Line item is required                                         |
    | `lines[*].item.type`            | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-14`<br />Line item type is required                                    |
    | `lines[*].item.name`            | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-15`<br />Line item name is required                                    |
    | `lines[*].item.name`            | <ul class="gobl-test"><li>Length between 1 and 300</li></ul>                             | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-16`<br />Line item name must be between 1 and 300 characters           |
    | `lines[*].item.price`           | <ul class="gobl-test"><li>Min 0</li></ul>                                                | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-17`<br />Line item price must be greater than 0                        |
    | `lines[*].purchase_code`        | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-18`<br />Line purchase code is required                                |
    | `lines[*].purchase_code`        | <ul class="gobl-test"><li>Length between 1 and 50</li></ul>                              | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-19`<br />Line purchase code must be between 1 and 50 characters        |
    | `lines[*].taxes`                | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-21`<br />Line taxes are required                                       |
    | `lines[*].taxes[*].cat`         | <ul class="gobl-test"><li class="gobl-test-present">Present</li></ul>                    | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-22`<br />Line tax category is required                                 |
    | `lines[*].taxes[*].cat`         | <ul class="gobl-test"><li>One of \[VAT, IEPS]</li></ul>                                  | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-23`<br />Line tax category must be a valid value                       |
    | `lines[*].taxes[*].rate`        | <ul class="gobl-test"><li>No percent</li><li class="gobl-test-present">Present</li></ul> | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-24`<br />Line tax rate is required when percent is not set             |
    | `lines[*].taxes[*].rate`        | <ul class="gobl-test"><li>Min 0</li></ul>                                                | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-25`<br />Line tax rate must be greater than 0                          |
    | `lines[*].taxes[*].amount`      | <ul class="gobl-test"><li>Min 0</li></ul>                                                | `GOBL-MX-CFDI-FUELACCOUNTBALANCE-26`<br />Line tax amount must be greater than 0                        |
  </Accordion>
</AccordionGroup>
