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

# Income invoices

> How Lambda stamps income invoices from CargoWise.

An income invoice is the original bill. In the normal path, CargoWise sends an unstamped accounting invoice, Lambda stamps it through Facturapi, and the SAT UUID is stored and returned to CargoWise.

## Expected path

<Steps>
  <Step title="CargoWise sends the invoice">
    CargoWise outbound pushes an unstamped income document to Lambda ingress. A Government Number is
    usually absent on this first push — that is expected.
  </Step>

  <Step title="Lambda validates">
    Lambda checks fiscal fields, customer data, amounts, and route configuration. Eligible documents
    move toward stamp submission.
  </Step>

  <Step title="Facturapi issues the CFDI">
    When the document is ready, Facturapi submits it to SAT. Lambda stores the SAT UUID and fiscal
    artifacts.
  </Step>

  <Step title="Artifacts return to CargoWise">
    Lambda outbound delivers the stamped XML and PDF to CargoWise inbound. Fiscal success and file
    delivery are tracked separately.
  </Step>
</Steps>

Success in the workspace is **Stamped**.

## What to watch

| Workspace state               | What it usually means                                                                         |
| ----------------------------- | --------------------------------------------------------------------------------------------- |
| **Received** / **Processing** | Saved and working — validation, preparation, or submission                                    |
| **Waiting on SAT**            | Facturapi accepted; SAT has not returned a final result yet. Do not create a duplicate stamp. |
| **Failed**                    | Document data, provider rejection, or a system issue stopped work. Read the note.             |
| **Stamped**                   | CFDI issued through Facturapi                                                                 |
| **Stamped externally**        | CargoWise already reported a Government Number from outside Lambda                            |

Open the invoice timeline for the sequence of events. Use [Statuses](/stamping/statuses) when a label is unfamiliar.

## Corrections before stamp

If Lambda stops before a CFDI exists, the note explains what disagreed — missing fiscal fields, rejected customer data, unsupported values, or a route that is not configured to stamp.

Some failures are reviewable in the workspace. Others need a corrected CargoWise source document. Lambda does not invent fiscal values to push the document through.

After stamp, a later CargoWise push that disagrees with the issued CFDI is handled as source drift, not as a silent re-stamp. See [Troubleshooting](/troubleshooting#source-data-changed).

## External stamps

If CargoWise reports a Government Number for a CFDI stamped outside Lambda, the workspace shows **Stamped externally**. Lambda records that evidence and does not create another stamp — see [External stamps](/stamping/special/external-stamps).

## Related

* [How stamping works](/stamping/how-it-works)
* [Payment complements](/stamping/payment-complements) for PPD income that will receive REPs later
* [External stamps](/stamping/special/external-stamps)
* [Rules](/stamping/rules)
* [Statuses](/stamping/statuses)
