Understanding CFDI invoices
CFDI invoices in Contafy represent income (facturas emitidas) where:- You are the emisor (issuer) of the invoice
- Your RFC appears as the emisor in the XML
- The invoice represents income for your business
Supported CFDI types
Contafy supports multiple CFDI invoice types:- PUE (Pago en Una Sola Exhibición): Single payment invoices
- PPD (Pago en Parcialidades o Diferido): Invoices with deferred or partial payments
- COMPLEMENTO_PAGO: Payment complement documents (REP)
CFDI 3.3 and CFDI 4.0 versions are both supported. The platform automatically detects the version.
Uploading invoice files
There are two ways to upload invoices: through the upload page or bulk upload.Using the upload page
Navigate to invoice upload
Go to Ingresos → Subir Facturas in the sidebar or click the “Subir Facturas” button from the invoices list page.
Drag and drop XML files
The upload zone accepts XML files. You can:
- Drag and drop one or multiple XML files into the upload zone
- Click “Seleccionar archivos” to browse your computer for files
.xml files are accepted. Other file types will be rejected.Review the file queue
After selecting files, they appear in the queue below the upload zone. Each file shows:
- File name
- File size
- Validation status (Valid/Error)
- Error message (if invalid)
Select the profile
When you click “Procesar archivos”, a dialog appears asking you to select the RFC profile for these invoices.Choose the correct profile that matches the emisor RFC in the invoices.
Confirm and process
Review the summary:
- Number of valid files to be processed
- Selected profile name and RFC
File validation
Before upload, files are validated locally:- Extension check: Must be
.xml - File size: Reasonable size for XML documents
- XML structure: Valid CFDI format
- SAT validation: UUID, digital seal, and certificate verification
- RFC matching: Emisor RFC matches selected profile (if enabled)
- Régimen fiscal: Matches profile’s configured regimes (if enabled)
- Duplicate UUID: Checks if invoice already exists
Invoice validation results
Each uploaded invoice is validated against SAT rules and your profile settings.Validation status indicators
In the invoices list, each invoice shows a status badge:| Status | Meaning | Description |
|---|---|---|
| ✓ VÁLIDO | Valid | Invoice passed all validations |
| ERROR | Invalid | Validation failed (see details) |
| ✓ Pagado | Paid | Invoice is paid (PUE or PPD with full payment) |
| No Pagado | Unpaid | PPD invoice with no payment registered |
| Pago Parcial (X%) | Partially paid | PPD invoice with partial payment |
Common validation errors
RFC no coincide
Cause: The emisor RFC in the XML doesn’t match your selected profile’s RFC. Solution:- Verify you selected the correct profile
- Check if the XML file corresponds to the right business
- If the RFC is genuinely incorrect, the invoice may not belong to this profile
UUID duplicado
Cause: An invoice with this UUID already exists in your account. Solution:- Check the existing invoices list to see if this invoice was previously uploaded
- If it’s a different invoice with the same UUID, contact SAT as this indicates a serious issue
- Remove the duplicate file from your queue
Régimen fiscal no válido
Cause: The invoice’s régimen fiscal doesn’t match your profile’s configured tax regimes. Solution:- Go to profile settings and verify the configured regímenes fiscales
- Add the missing régimen if it’s legitimate for your business
- If the régimen is incorrect in the XML, contact your accountant
Sello digital inválido
Cause: The digital seal (sello) couldn’t be verified with SAT. Solution:- Verify the XML file isn’t corrupted
- Request a new CFDI from the PAC (Proveedor Autorizado de Certificación)
- Contact SAT if the issue persists
Managing payment status (PPD invoices)
For PPD (Pago en Parcialidades o Diferido) invoices, you need to track payments separately.Understanding PPD payment flow
- Initial invoice: Upload the PPD invoice (shows as “No Pagado”)
- Payment complement: Upload REP (Recepción de Pagos) XML files
- Status update: System automatically links REP to the original invoice
- Payment tracking: View payment percentage and history
Uploading payment complements
Generate REP from your PAC
When you receive a payment, generate a payment complement (REP) through your PAC provider.
Upload the REP XML
Use the same upload process to upload the REP XML file. The system automatically:
- Detects it’s a payment complement (tipo: COMPLEMENTO_PAGO)
- Links it to the corresponding PPD invoice using the UUID
- Updates the payment status and percentage
The system automatically calculates payment percentages based on linked REP documents. No manual input is required.
Manual income entries
For income without a CFDI invoice, you can create manual entries.When to use manual income
- Income from foreign clients (no CFDI required)
- Services that don’t require invoicing
- Income received before issuing the invoice
- Adjustments and corrections
Creating a manual income entry
Fill out the form
Provide the following information:
- Concepto: Description of the income (e.g., “Honorarios diciembre”)
- Subtotal (MXN): Amount before tax
- IVA (MXN): Value-added tax amount (if applicable)
- Fecha: Date of the income
- Notas: Optional notes or client reference
Editing manual income
You can edit manual income entries (but not CFDI invoices):- Find the manual income in the “Ingresos manuales” section
- Click the edit icon (pencil)
- Update the fields as needed
- Mark as “Cobrado” (paid) if payment has been received
- Add a payment date if marking as paid
- Click “Actualizar” to save changes
Deleting manual income
Invoice list and filtering
Viewing invoices
The main invoices page (/dashboard/invoices) shows all your uploaded invoices in a paginated table.
Table columns
- UUID / FOLIO: Unique identifier for the invoice
- FECHA: Invoice date and time
- EMISOR: Your business name and RFC
- RECEPTOR: Client name and RFC
- MONTO: Subtotal amount
- IVA TRASL.: IVA trasladado (charged to client)
- RET. IVA: IVA retention (if applicable)
- RET. ISR: ISR retention (if applicable)
- ESTADO: Payment and validation status
- ACCIONES: Delete button
Filtering invoices
Use the filters at the top of the page to narrow down results:Profile filter
Select a specific RFC profile or “Todos” to view all profiles.Period filters
- Mes: Select the month (Enero - Diciembre)
- Año: Select the year (current year ± 2 years)
Régimen fiscal filter
If you’ve configured multiple regímenes fiscales for a profile, you can filter invoices by régimen.Search
Search by:- UUID
- Client name (receptor)
- Client RFC
- Invoice concept
Clearing filters
Click “Limpiar filtros” to reset all filters to default values (current month/year, all regimes).Deleting invoices
Usage limits
Your subscription plan includes invoice upload limits:| Plan | Monthly Invoice Limit |
|---|---|
| FREE | 30 invoices/month |
| STARTER | 100 invoices/month |
| PROFESSIONAL | 500 invoices/month |
| ENTERPRISE | Unlimited |
What counts as usage?
- Each successfully uploaded invoice (valid or invalid)
- Manual income entries do not count toward the limit
- Failed uploads (rejected before processing) do not count
Usage indicator
The invoice upload page shows your current usage:- Green (0-74%): Normal usage
- Blue (75-89%): Approaching limit
- Orange (90-99%): Near limit
- Red (100%): Limit reached
Usage resets on the 1st of each month. If you exceed your limit, upgrade your plan or wait for the next billing cycle.