Run SAT validation on an already-created document. Executes three steps in order and records the outcome (audit log + validation-history row):
Schema — CFDI 4.0 structure + required attributes.
SAT status — queries SAT’s ConsultaCFDIService for the invoice status (Vigente = valid).
RFC — the receiver RFC matches the configured company RFC.
The document must have finished importing (creation status = SUCCESS) before it can be validated.
POST /v2/einvoice/mexico/validate
steps.\* FieldsOnly the steps that actually ran are present. Validation stops at the first failing step, so e.g. a schema failure returns steps.schema only; a SAT failure returns schema + satStatus.
documentId is the main identifier for this endpoint.
Validation can only run once the document’s creation status = SUCCESS (document is RECEIVED/COMPLETED).
Common satStatus.detail values: Cancelled E-Invoice, E-Invoice Not Found, Unknown SAT Status: , SAT service unavailable: no response after 3 attempts.
Every call is recorded as a validation-history row and an audit-trail entry (validated_document).
Want the example request/response pairs formatted for Postman (so you can drop them into saved Examples — e.g. one VALID, one INVALID – Cancelled, one 400 – not processed), or shall I paste the status endpoint next?