Ruby
PHP
Javascript
.Net >= 4.5
Java
Phyton

Retenciones

Complemento CFDI 4.0 de Retenciones.

La creación de este Complemento está basado en los CFDI básicos:

Datos generales

  • FolioInt Atributo opcional para control interno del contribuyente que expresa el folio del documento que ampara la retención e información de pagos.Permite números y/o letras.
    Ejemplo: "FolioInt": "10" ver el catálogo
  • FechaExp Atributo requerido para la expresión de la fecha y hora de expedición del documento de retención e información de pagos. Se expresa en la forma yyyy-mmddThh:mm:ssTZD-6, de acuerdo con la especificación ISO 8601.
    Ejemplo: "FechaExp": "2019-06-01T14:51:25+06:00"
  • CveRetenc Atributo requerido para expresar la clave de la retención e información de pagos de acuerdo al catálogo publicado en internet por el SAT.
    Ejemplo: "CveRetenc": "25"
  • DescRetenc Atributo opcional que expresa la descripción de la retención e información de pagos en caso de que en el atributo CveRetenc se haya elegido el valor para 'otro tipo de retenciones'.
    Ejemplo: "DescRetenc": ""

Generales

"FolioInt": "10",
"FechaExp": "2019-06-01T14:51:25+06:00",
"CveRetenc": "25",
		

Generales

"FolioInt": "10",
"FechaExp": "2019-06-01T14:51:25+06:00",
"CveRetenc": "25",
		

Generales

"FolioInt": "10",
"FechaExp": "2019-06-01T14:51:25+06:00",
"CveRetenc": "25",
		

Generales

"FolioInt": "10",
"FechaExp": "2019-06-01T14:51:25+06:00",
"CveRetenc": "25",
		

Generales

"FolioInt": "10",
"FechaExp": "2019-06-01T14:51:25+06:00",
"CveRetenc": "25",
		

Generales

"FolioInt": "10",
"FechaExp": "2019-06-01T14:51:25+06:00",
"CveRetenc": "25",
		

Nodo de Emisor

Nodo requerido para expresar la información del contribuyente emisor del documento electrónico de retenciones e información de pagos.

  • RfcEmisor Atributo requerido para incorporar la clave en el Registro Federal de Contribuyentes correspondiente al contribuyente emisor del documento de retención e información de pagos, sin guiones o espacios.
    Ejemplo: "RfcEmisor ": "EKU9003173C9"
  • NomDenRazSocE Atributo opcional para el nombre, denominación o razón social del contribuyente emisor del documento de retención e información de pagos.
    Ejemplo: "NomDenRazSocE ": "Empresa"
  • CurpE Atributo opcional para la Clave Única del Registro Poblacional del contribuyente emisor del documento de retención e información de pagos.
    Ejemplo: "CurpE ": "BADD110313HCMLNS09"

Nodo de Emisor

"Emisor": {
	"RFCEmisor": "EKU9003173C9",
	"NomDenRazSocE": "string",
	"CURPE": "BADD110313HCMLNS09"
},

Nodo de Emisor

"Emisor": {
	"RFCEmisor": "EKU9003173C9",
	"NomDenRazSocE": "string",
	"CURPE": "BADD110313HCMLNS09"
},

Nodo de Emisor

"Emisor": {
	"RFCEmisor": "EKU9003173C9",
	"NomDenRazSocE": "string",
	"CURPE": "BADD110313HCMLNS09"
},

Nodo de Emisor

"Emisor": {
	"RFCEmisor": "EKU9003173C9",
	"NomDenRazSocE": "string",
	"CURPE": "BADD110313HCMLNS09"
},

Nodo de Emisor

"Emisor": {
	"RFCEmisor": "EKU9003173C9",
	"NomDenRazSocE": "string",
	"CURPE": "BADD110313HCMLNS09"
},

Nodo de Emisor

"Emisor": {
	"RFCEmisor": "EKU9003173C9",
	"NomDenRazSocE": "string",
	"CURPE": "BADD110313HCMLNS09"
},

Nodo de Receptor

Nodo requerido para expresar la información del contribuyente receptor.

  • Nacionalidad Atributo requerido para incorporar la clave en el Registro Federal de Contribuyentes correspondiente al contribuyente emisor del documento de retención e información de pagos, sin guiones o espacios.
    Ejemplo: "Nacionalidad ": "Nacional"
  • Nacional Nodo requerido para expresar la información del contribuyente receptor en caso de que sea de nacionalidad mexicana.
    Los datos de conforman el Nodo, representan lo mismo que en el caso del nodo "Emisor"
  • Extranjero Nodo requerido para expresar la información del contribuyente receptor del documento cuando sea residente en el extranjero.
    Los datos de conforman el Nodo, representan lo mismo que en el caso del nodo "Emisor"

Nodo de Receptor

"Receptor": {
	"Nacionalidad": "Nacional",
	"Nacional": {
		"RFCRecep": "ESO1202108R2",
		"NomDenRazSocR": "string",
		"CURPR": "BADD110313HCMLNS09"
	}
},

Nodo de Receptor

"Receptor": {
	"Nacionalidad": "Nacional",
	"Nacional": {
		"RFCRecep": "ESO1202108R2",
		"NomDenRazSocR": "string",
		"CURPR": "BADD110313HCMLNS09"
	}
},

Nodo de Receptor

"Receptor": {
	"Nacionalidad": "Nacional",
	"Nacional": {
		"RFCRecep": "ESO1202108R2",
		"NomDenRazSocR": "string",
		"CURPR": "BADD110313HCMLNS09"
	}
},

Nodo de Receptor

"Receptor": {
	"Nacionalidad": "Nacional",
	"Nacional": {
		"RFCRecep": "ESO1202108R2",
		"NomDenRazSocR": "string",
		"CURPR": "BADD110313HCMLNS09"
	}
},

Nodo de Receptor

"Receptor": {
	"Nacionalidad": "Nacional",
	"Nacional": {
		"RFCRecep": "ESO1202108R2",
		"NomDenRazSocR": "string",
		"CURPR": "BADD110313HCMLNS09"
	}
},

Nodo de Receptor

"Receptor": {
	"Nacionalidad": "Nacional",
	"Nacional": {
		"RFCRecep": "ESO1202108R2",
		"NomDenRazSocR": "string",
		"CURPR": "BADD110313HCMLNS09"
	}
},

Nodo de Periodo

Nodo requerido para expresar el periodo que ampara el documento de retenciones e información de pagos.

  • MesIni Atributo requerido para la expresión del mes inicial del periodo de la retención e información de pagos.
    Ejemplo: "MesIni": "5"
  • MesFin Atributo requerido para la expresión del mes final del periodo de la retención e información de pagos.
    Ejemplo: "MesFin": "5"
  • Ejerc Atributo requerido para la expresión del ejercicio fiscal (año).
    Ejemplo: "Ejerc": "2019"

Nodo de Periodo

"Periodo": {
	"MesIni": "5",
	"MesFin": "5",
	"Ejerc": "2019"
},

Nodo de Periodo

"Periodo": {
	"MesIni": "5",
	"MesFin": "5",
	"Ejerc": "2019"
},

Nodo de Periodo

"Periodo": {
	"MesIni": "5",
	"MesFin": "5",
	"Ejerc": "2019"
},

Nodo de Periodo

"Periodo": {
	"MesIni": "5",
	"MesFin": "5",
	"Ejerc": "2019"
},

Nodo de Periodo

"Periodo": {
	"MesIni": "5",
	"MesFin": "5",
	"Ejerc": "2019"
},

Nodo de Periodo

"Periodo": {
	"MesIni": "5",
	"MesFin": "5",
	"Ejerc": "2019"
},

Nodo de Totales

Nodo requerido para expresar el total de las retenciones e información de pagos efectuados en el período que ampara el documento.

  • montoTotOperacion Atributo requerido para expresar el total del monto de la operación que se relaciona en el comprobante.
    Ejemplo: "montoTotOperacion": 100
  • montoTotGrav Atributo requerido para expresar el total del monto gravado de la operación que se relaciona en el comprobante.
    Ejemplo: "montoTotGrav": 100
  • montoTotExent Atributo requerido para expresar el monto total de las retenciones.Sumatoria de los montos de retención del nodo ImpRetenidos.
    Ejemplo: "montoTotExent": 0.00
  • ImpRetenidos Nodo opcional para expresar el total de los impuestos retenidos que se desprenden de los conceptos expresados en el documento de retenciones e información de pagos.

Nodo de Totales

"Totales": {
	"MontoTotOperacion ": 100,
	"MontoTotGrav": 100,
	"MontoTotExent": 0.00,
	"MontoTotRet": 3.00,
	"ImpRetenidos": [{
		"BaseRet": 100,
		"Impuesto": "01",
		"montoRet": 3.00,
		"TipoPagoRet": "Pago definitivo"
	}]
}

Nodo de Totales

"Totales": {
	"montoTotOperacion": 100,
	"montoTotGrav": 100,
	"montoTotExent": 0.00,
	"montoTotRet": 3.00,
	"ImpRetenidos": [{
		"BaseRet": 100,
		"Impuesto": "01",
		"montoRet": 3.00,
		"TipoPagoRet": "Pago definitivo"
	}]
}

Nodo de Totales

"Totales": {
	"montoTotOperacion": 100,
	"montoTotGrav": 100,
	"montoTotExent": 0.00,
	"montoTotRet": 3.00,
	"ImpRetenidos": [{
		"BaseRet": 100,
		"Impuesto": "01",
		"montoRet": 3.00,
		"TipoPagoRet": "Pago definitivo"
	}]
}

Nodo de Totales

"Totales": {
	"montoTotOperacion": 100,
	"montoTotGrav": 100,
	"montoTotExent": 0.00,
	"montoTotRet": 3.00,
	"ImpRetenidos": [{
		"BaseRet": 100,
		"Impuesto": "01",
		"montoRet": 3.00,
		"TipoPagoRet": "Pago definitivo"
	}]
}

Nodo de Totales

"Totales": {
	"montoTotOperacion": 100,
	"montoTotGrav": 100,
	"montoTotExent": 0.00,
	"montoTotRet": 3.00,
	"ImpRetenidos": [{
		"BaseRet": 100,
		"Impuesto": "01",
		"montoRet": 3.00,
		"TipoPagoRet": "Pago definitivo"
	}]
}

Nodo de Totales

"Totales": {
	"montoTotOperacion": 100,
	"montoTotGrav": 100,
	"montoTotExent": 0.00,
	"montoTotRet": 3.00,
	"ImpRetenidos": [{
		"BaseRet": 100,
		"Impuesto": "01",
		"montoRet": 3.00,
		"TipoPagoRet": "Pago definitivo"
	}]
}

La forma completa del ejemplo en JSON es

JSON Completo

    
{
	"FolioInt": "10",
    "FechaExp": "2019-06-01T14:51:25+06:00",
    "CveRetenc": "25",
    "Emisor": {
      "RFCEmisor": "ESO1202108R2",
      "NomDenRazSocE": "string",
      "CURPE": "BADD110313HCMLNS09"
    },
    "Receptor": {
      "Nacionalidad": "Nacional",
      "Nacional": {
        "RFCRecep": "ESO1202108R2",
        "NomDenRazSocR": "string",
        "CURPR": "BADD110313HCMLNS09"
      }
    },
    "Periodo": {
      "MesIni": "5",
      "MesFin": "5",
      "Ejerc": "2019"
    },
    "Totales": {
      "montoTotOperacion": 100,
      "montoTotGrav": 100,
      "montoTotExent": 0.00,
      "montoTotRet": 3.00,
      "ImpRetenidos": [
        {
          "BaseRet": 100,
          "Impuesto": "01",
          "montoRet": 3.00,
          "TipoPagoRet": "Pago definitivo"
        }
      ]
    }
}

        

JSON Completo

{
	"FolioInt": "10",
    "FechaExp": "2019-06-01T14:51:25+06:00",
    "CveRetenc": "25",
    "Emisor": {
      "RFCEmisor": "ESO1202108R2",
      "NomDenRazSocE": "string",
      "CURPE": "BADD110313HCMLNS09"
    },
    "Receptor": {
      "Nacionalidad": "Nacional",
      "Nacional": {
        "RFCRecep": "ESO1202108R2",
        "NomDenRazSocR": "string",
        "CURPR": "BADD110313HCMLNS09"
      }
    },
    "Periodo": {
      "MesIni": "5",
      "MesFin": "5",
      "Ejerc": "2019"
    },
    "Totales": {
      "montoTotOperacion": 100,
      "montoTotGrav": 100,
      "montoTotExent": 0.00,
      "montoTotRet": 3.00,
      "ImpRetenidos": [
        {
          "BaseRet": 100,
          "Impuesto": "01",
          "montoRet": 3.00,
          "TipoPagoRet": "Pago definitivo"
        }
      ]
    }
}

        

JSON Completo

    
{
	"FolioInt": "10",
    "FechaExp": "2019-06-01T14:51:25+06:00",
    "CveRetenc": "25",
    "Emisor": {
      "RFCEmisor": "ESO1202108R2",
      "NomDenRazSocE": "string",
      "CURPE": "BADD110313HCMLNS09"
    },
    "Receptor": {
      "Nacionalidad": "Nacional",
      "Nacional": {
        "RFCRecep": "ESO1202108R2",
        "NomDenRazSocR": "string",
        "CURPR": "BADD110313HCMLNS09"
      }
    },
    "Periodo": {
      "MesIni": "5",
      "MesFin": "5",
      "Ejerc": "2019"
    },
    "Totales": {
      "montoTotOperacion": 100,
      "montoTotGrav": 100,
      "montoTotExent": 0.00,
      "montoTotRet": 3.00,
      "ImpRetenidos": [
        {
          "BaseRet": 100,
          "Impuesto": "01",
          "montoRet": 3.00,
          "TipoPagoRet": "Pago definitivo"
        }
      ]
    }
}

        

JSON Completo

{
	"FolioInt": "10",
    "FechaExp": "2019-06-01T14:51:25+06:00",
    "CveRetenc": "25",
    "Emisor": {
      "RFCEmisor": "ESO1202108R2",
      "NomDenRazSocE": "string",
      "CURPE": "BADD110313HCMLNS09"
    },
    "Receptor": {
      "Nacionalidad": "Nacional",
      "Nacional": {
        "RFCRecep": "ESO1202108R2",
        "NomDenRazSocR": "string",
        "CURPR": "BADD110313HCMLNS09"
      }
    },
    "Periodo": {
      "MesIni": "5",
      "MesFin": "5",
      "Ejerc": "2019"
    },
    "Totales": {
      "montoTotOperacion": 100,
      "montoTotGrav": 100,
      "montoTotExent": 0.00,
      "montoTotRet": 3.00,
      "ImpRetenidos": [
        {
          "BaseRet": 100,
          "Impuesto": "01",
          "montoRet": 3.00,
          "TipoPagoRet": "Pago definitivo"
        }
      ]
    }
}

JSON Completo

        
{
	"FolioInt": "10",
    "FechaExp": "2019-06-01T14:51:25+06:00",
    "CveRetenc": "25",
    "Emisor": {
      "RFCEmisor": "ESO1202108R2",
      "NomDenRazSocE": "string",
      "CURPE": "BADD110313HCMLNS09"
    },
    "Receptor": {
      "Nacionalidad": "Nacional",
      "Nacional": {
        "RFCRecep": "ESO1202108R2",
        "NomDenRazSocR": "string",
        "CURPR": "BADD110313HCMLNS09"
      }
    },
    "Periodo": {
      "MesIni": "5",
      "MesFin": "5",
      "Ejerc": "2019"
    },
    "Totales": {
      "montoTotOperacion": 100,
      "montoTotGrav": 100,
      "montoTotExent": 0.00,
      "montoTotRet": 3.00,
      "ImpRetenidos": [
        {
          "BaseRet": 100,
          "Impuesto": "01",
          "montoRet": 3.00,
          "TipoPagoRet": "Pago definitivo"
        }
      ]
    }
}