CFDI 4.0

Recibo de nómina

El pago a un trabajador con percepciones, deducciones y otros pagos.
Nómina 1.2

Cuándo se usa

  • Pagas sueldos, aguinaldo, finiquitos o asimilados.

Lo que hay que cuidar

  • Las llaves pueden ir en camelCase (fechaPago) o como el SAT (FechaPago): no distinguen mayúsculas.
  • TipoDeComprobante «N», UsoCFDI CN01 y régimen del receptor 605.
  • El subsidio para el empleo va en otrosPagos aunque sea cero.
  • El ejemplo trae una trabajadora inventada: en pruebas cámbiala por la persona física de prueba del SAT (viene con sus certificados de prueba), con el nombre «Pruebas» (así, con minúsculas) y CP 94310.

La petición

El cuerpo completo, como se mandó. Guárdalo como nomina.json y mándalo con el lenguaje que uses.

{
  "comprobante": {
    "exportacion": "01",
    "tipoDeComprobante": "N",
    "metodoPago": "PUE",
    "moneda": "MXN",
    "lugarExpedicion": "94734",
    "fecha": "2026-10-29T21:19:11",
    "serie": "NOM",
    "folio": "3",
    "subtotal": "5000.00",
    "total": "4500.00",
    "descuento": "500.00",
    "emisor": {
      "rfc": "EKU9003173C9",
      "nombre": "ESCUELA KEMPER URGATE",
      "regimenFiscal": "601"
    },
    "receptor": {
      "rfc": "PEEA900101ABA",
      "nombre": "Pruebas",
      "usoCFDI": "CN01",
      "regimenFiscalReceptor": "605",
      "domicilioFiscalReceptor": "94310"
    },
    "conceptos": [
      {
        "claveProdServ": "84111505",
        "claveUnidad": "ACT",
        "cantidad": 1,
        "descripcion": "Pago de nómina",
        "valorUnitario": "5000.00",
        "importe": "5000.00",
        "objetoImp": "01",
        "descuento": "500.00"
      }
    ],
    "nomina": {
      "tipoNomina": "O",
      "fechaPago": "2026-10-15",
      "fechaInicialPago": "2026-10-01",
      "fechaFinalPago": "2026-10-15",
      "numDiasPagados": "15",
      "totalPercepciones": "5000.00",
      "emisor": {
        "rfc": "EKU9003173C9",
        "registroPatronal": "B5510768108",
        "razonSocial": "ESCUELA KEMPER URGATE",
        "regimenFiscal": "601",
        "entidadSNCF": "IP"
      },
      "receptor": {
        "rfc": "PEEA900101ABA",
        "nombreEmpleado": "Pruebas",
        "curp": "PEEA900101MGTRJN01",
        "tipoContrato": "01",
        "tipoRegimen": "02",
        "numEmpleado": "120",
        "periodicidadPago": "04",
        "numSeguridadSocial": "12345678901",
        "fechaInicioRelLaboral": "2020-01-01",
        "antigüedad": "P301W",
        "riesgoPuesto": "1",
        "salarioBaseCotApor": "350.00",
        "salarioDiarioIntegrado": "360.00",
        "claveEntFed": "GUA",
        "tipoJornada": "01",
        "sindicalizado": "Sí",
        "departamento": "Docencia",
        "puesto": "Profesora"
      },
      "percepciones": {
        "totalGravado": "5000.00",
        "totalExento": "0.00",
        "totalSueldos": "5000.00",
        "percepcion": [
          {
            "tipoPercepcion": "001",
            "clave": "001",
            "concepto": "Sueldo",
            "importeGravado": "5000.00",
            "importeExento": "0.00"
          }
        ]
      },
      "totalDeducciones": "500.00",
      "deducciones": {
        "totalImpuestosRetenidos": "500.00",
        "deduccion": [
          {
            "tipoDeduccion": "002",
            "clave": "002",
            "concepto": "ISR",
            "importe": "500.00"
          }
        ]
      },
      "totalOtrosPagos": "0.00",
      "otrosPagos": [
        {
          "tipoOtroPago": "002",
          "clave": "002",
          "concepto": "Subsidio para el empleo",
          "importe": "0.00",
          "subsidioAlEmpleo": {
            "subsidioCausado": "0.00"
          }
        }
      ]
    }
  }
}

Antes de mandarlo

Cambia la Fecha por la de ahora: el SAT acepta hasta 72 horas atrás. Si mandas dos veces el mismo comprobante, la segunda responde 506 con el mismo UUID: es la protección contra timbres dobles.

La respuesta

Respuesta · HTTP 200
{
  "Codigo": "100",
  "Mensaje": "Comprobante timbrado exitosamente",
  "UUID": "C655782A-C8B8-43CC-8608-DD87C2271D4D",
  "XMLBase64": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxj…",
  "PDFBase64": null,
  "IdSeguimiento": "a72ed336131e3f5589cfbab93405ceb3fea2cd114a97f3305f0294594eea7330"
}

El XML timbrado

Lo que trae XMLBase64, ya decodificado. El sello y el certificado se ven recortados; al copiar va completo.

C655782A-C8B8-43CC-8608-DD87C2271D4D.xml
<?xml version='1.0' encoding='UTF-8'?>
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:nomina12="http://www.sat.gob.mx/nomina12" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="4.0" Serie="NOM" Folio="3" Fecha="2026-10-29T21:19:11" Sello="SFxOHFR3inOCKyaYi0MHehBj2gPR…aV5w==" NoCertificado="30001000000500003416" Certificado="MIIFsDCCA5igAwIBAgIUMzAwMDEw…TW6BE=" SubTotal="5000.00" Descuento="500.00" Moneda="MXN" Total="4500.00" TipoDeComprobante="N" Exportacion="01" MetodoPago="PUE" LugarExpedicion="94734" xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd http://www.sat.gob.mx/nomina12 http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina12.xsd">
  <cfdi:Emisor Rfc="EKU9003173C9" Nombre="ESCUELA KEMPER URGATE" RegimenFiscal="601"/>
  <cfdi:Receptor Rfc="PEEA900101ABA" Nombre="Pruebas" DomicilioFiscalReceptor="94310" RegimenFiscalReceptor="605" UsoCFDI="CN01"/>
  <cfdi:Conceptos>
    <cfdi:Concepto ClaveProdServ="84111505" Cantidad="1" ClaveUnidad="ACT" Descripcion="Pago de nómina" ValorUnitario="5000.00" Importe="5000.00" Descuento="500.00" ObjetoImp="01"/>
  </cfdi:Conceptos>
  <cfdi:Complemento>
    <tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd" Version="1.1" UUID="C655782A-C8B8-43CC-8608-DD87C2271D4D" FechaTimbrado="2026-10-29T21:24:12" RfcProvCertif="SPR190613I52" SelloCFD="SFxOHFR3inOCKyaYi0MHehBj2gPR…aV5w==" NoCertificadoSAT="30001000000500003456" SelloSAT="ITtad1Nuoeix35QUNj1DWSBcNH7K…IfCQ=="/>
    <nomina12:Nomina Version="1.2" TipoNomina="O" FechaPago="2026-10-15" FechaInicialPago="2026-10-01" FechaFinalPago="2026-10-15" NumDiasPagados="15" TotalPercepciones="5000.00" TotalDeducciones="500.00" TotalOtrosPagos="0.00">
      <nomina12:Emisor RegistroPatronal="B5510768108">
        <nomina12:EntidadSNCF OrigenRecurso="IP"/>
      </nomina12:Emisor>
      <nomina12:Receptor Curp="PEEA900101MGTRJN01" NumSeguridadSocial="12345678901" FechaInicioRelLaboral="2020-01-01" Antigüedad="P301W" TipoContrato="01" Sindicalizado="Sí" TipoJornada="01" TipoRegimen="02" NumEmpleado="120" Departamento="Docencia" Puesto="Profesora" RiesgoPuesto="1" PeriodicidadPago="04" SalarioBaseCotApor="350.00" SalarioDiarioIntegrado="360.00" ClaveEntFed="GUA"/>
      <nomina12:Percepciones TotalSueldos="5000.00" TotalGravado="5000.00" TotalExento="0.00">
        <nomina12:Percepcion TipoPercepcion="001" Clave="001" Concepto="Sueldo" ImporteGravado="5000.00" ImporteExento="0.00"/>
      </nomina12:Percepciones>
      <nomina12:Deducciones TotalImpuestosRetenidos="500.00">
        <nomina12:Deduccion TipoDeduccion="002" Clave="002" Concepto="ISR" Importe="500.00"/>
      </nomina12:Deducciones>
      <nomina12:OtrosPagos>
        <nomina12:OtroPago TipoOtroPago="002" Clave="002" Concepto="Subsidio para el empleo" Importe="0.00">
          <nomina12:SubsidioAlEmpleo SubsidioCausado="0.00"/>
        </nomina12:OtroPago>
      </nomina12:OtrosPagos>
    </nomina12:Nomina>
  </cfdi:Complemento>
</cfdi:Comprobante>

Timbrado en el ambiente de pruebas el 29 de octubre de 2026.