Sociedades que reparten utilidades
Personas morales que pagan dividendos a sus socios o accionistas.
El complemento de Dividendos se agrega al CFDI de Retenciones e Información de Pagos cuando una persona moral reparte dividendos o utilidades a sus socios o accionistas. Se timbra con la clave de retención 14 (Dividendos o utilidades distribuidas) e informa el origen de la utilidad distribuida y los datos del impuesto asociado al pago.
Quién lo emite
Sociedades que reparten utilidades
Personas morales que pagan dividendos a sus socios o accionistas.
Reembolsos y reducciones de capital
Sociedades que devuelven capital a sus socios.
Liquidación de la sociedad
Sociedades que reparten el remanente al disolverse.
Qué datos lleva
Origen de la utilidad
CveTipDivOUtilDe dónde provienen las utilidades que se reparten, por ejemplo de la CUFIN.
Impuesto ya pagado
MontISRAcredRetMexicoEl ISR acreditable o retenido en México por ese dividendo.
Tipo de sociedad
TipoSocDistrDivSi la sociedad que reparte es nacional o extranjera.
Monto acumulable
MontDivAcumNalLa parte del dividendo que se acumula para el socio.
¿Eres socio y solo recibiste tu constancia? No tienes que emitir nada: la emite la sociedad que te pagó. Para entender cómo tributa, consulta la guía del régimen de ingresos por dividendos.
Ejemplo
Una sociedad aprueba repartir utilidades entre tres socios. Para cada socio la empresa emite un CFDI de Retenciones: elige la clave 14, indica el origen de la utilidad en el complemento y registra la retención que determinó. Cada socio recibe el suyo con el monto que le corresponde.
Si el socio es persona física, la sociedad le retiene un 10 % de ISR sobre los dividendos de utilidades generadas a partir de 2014 (artículo 140 de la LISR). A una persona moral residente en México no se le aplica esa retención.
Ejemplo de CFDI
emitido para el socio
Para developers
Si ya tienes tu propio sistema o ERP, puedes timbrar el CFDI de retenciones por dividendos directamente desde tu software con la API de CFDI de retenciones de Facturama.
$usuario = 'TU_USUARIO_API';
$password = 'TU_PASSWORD_API';
$payload = [
'CveRetenc' => '14',
'FechaExp' => '2026-10-01T12:41:43',
'DescRetenc' => 'No aplica',
'LugarExpRetenc' => '42501',
'Folio' => null,
'Emisor' => [
'RfcEmisor' => 'EKU9003173C9',
'NomDenRazSocE' => 'ESCUELA KEMPER URGATE',
'RegimenFiscalE' => '601',
],
'Receptor' => [
'Nacionalidad' => 'Nacional',
'Nacional' => [
'RfcRecep' => 'CACX7605101P8',
'NomDenRazSocR' => 'XOCHILT CASAS CHAVEZ',
'CurpR' => null,
'DomicilioFiscalR' => '36257',
],
],
'Periodo' => [
'MesIni' => 1,
'MesFin' => 1,
'Ejerc' => 2026,
],
'Totales' => [
'MontoTotOperacion' => 200,
'MontoTotGrav' => 200,
'MontoTotExent' => 0,
'MontoTotRet' => 20,
'ImpRetenidos' => [
[
'BaseRet' => 200,
'Impuesto' => '01',
'MontoRet' => 20,
'TipoPagoRet' => '03',
],
],
],
'Complemento' => [
'Dividendos' => [
'Version' => '1.0',
'DividOUtil' => [
'CveTipDivOUtil' => 'Item01',
'TipoSocDistrDiv' => 'SociedadNacional',
'MontISRAcredRetMexico' => 100,
'MontISRAcredRetExtranjero' => 100,
'MontRetExtDivExt' => 300,
'MontRetExtDivExtSpecified' => true,
'MontISRAcredNal' => 300,
'MontISRAcredNalSpecified' => true,
'MontDivAcumNal' => 200,
'MontDivAcumNalSpecified' => true,
'MontDivAcumExt' => 200,
'MontDivAcumExtSpecified' => true,
],
],
],
];
$ch = curl_init('https://apisandbox.facturama.mx/2/retenciones');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_USERPWD, "$usuario:$password");
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$respuesta = curl_exec($ch);
curl_close($ch);
echo $respuesta;
const usuario = 'TU_USUARIO_API';
const password = 'TU_PASSWORD_API';
const payload = {
CveRetenc: '14',
FechaExp: '2026-10-01T12:41:43',
DescRetenc: 'No aplica',
LugarExpRetenc: '42501',
Folio: null,
Emisor: {
RfcEmisor: 'EKU9003173C9',
NomDenRazSocE: 'ESCUELA KEMPER URGATE',
RegimenFiscalE: '601',
},
Receptor: {
Nacionalidad: 'Nacional',
Nacional: {
RfcRecep: 'CACX7605101P8',
NomDenRazSocR: 'XOCHILT CASAS CHAVEZ',
CurpR: null,
DomicilioFiscalR: '36257',
},
},
Periodo: {
MesIni: 1,
MesFin: 1,
Ejerc: 2026,
},
Totales: {
MontoTotOperacion: 200,
MontoTotGrav: 200,
MontoTotExent: 0,
MontoTotRet: 20,
ImpRetenidos: [
{
BaseRet: 200,
Impuesto: '01',
MontoRet: 20,
TipoPagoRet: '03',
},
],
},
Complemento: {
Dividendos: {
Version: '1.0',
DividOUtil: {
CveTipDivOUtil: 'Item01',
TipoSocDistrDiv: 'SociedadNacional',
MontISRAcredRetMexico: 100,
MontISRAcredRetExtranjero: 100,
MontRetExtDivExt: 300,
MontRetExtDivExtSpecified: true,
MontISRAcredNal: 300,
MontISRAcredNalSpecified: true,
MontDivAcumNal: 200,
MontDivAcumNalSpecified: true,
MontDivAcumExt: 200,
MontDivAcumExtSpecified: true,
},
},
},
};
fetch('https://apisandbox.facturama.mx/2/retenciones', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: 'Basic ' + btoa(`${usuario}:${password}`),
},
body: JSON.stringify(payload),
})
.then((res) => res.json())
.then((data) => console.log(data.Complemento.TimbreFiscalDigital.UUID));
import requests
from requests.auth import HTTPBasicAuth
usuario = 'TU_USUARIO_API'
password = 'TU_PASSWORD_API'
payload = {
'CveRetenc': '14',
'FechaExp': '2026-10-01T12:41:43',
'DescRetenc': 'No aplica',
'LugarExpRetenc': '42501',
'Folio': None,
'Emisor': {
'RfcEmisor': 'EKU9003173C9',
'NomDenRazSocE': 'ESCUELA KEMPER URGATE',
'RegimenFiscalE': '601',
},
'Receptor': {
'Nacionalidad': 'Nacional',
'Nacional': {
'RfcRecep': 'CACX7605101P8',
'NomDenRazSocR': 'XOCHILT CASAS CHAVEZ',
'CurpR': None,
'DomicilioFiscalR': '36257',
},
},
'Periodo': {
'MesIni': 1,
'MesFin': 1,
'Ejerc': 2026,
},
'Totales': {
'MontoTotOperacion': 200,
'MontoTotGrav': 200,
'MontoTotExent': 0,
'MontoTotRet': 20,
'ImpRetenidos': [
{
'BaseRet': 200,
'Impuesto': '01',
'MontoRet': 20,
'TipoPagoRet': '03',
},
],
},
'Complemento': {
'Dividendos': {
'Version': '1.0',
'DividOUtil': {
'CveTipDivOUtil': 'Item01',
'TipoSocDistrDiv': 'SociedadNacional',
'MontISRAcredRetMexico': 100,
'MontISRAcredRetExtranjero': 100,
'MontRetExtDivExt': 300,
'MontRetExtDivExtSpecified': True,
'MontISRAcredNal': 300,
'MontISRAcredNalSpecified': True,
'MontDivAcumNal': 200,
'MontDivAcumNalSpecified': True,
'MontDivAcumExt': 200,
'MontDivAcumExtSpecified': True,
},
},
},
}
respuesta = requests.post(
'https://apisandbox.facturama.mx/2/retenciones',
json=payload,
auth=HTTPBasicAuth(usuario, password),
)
print(respuesta.json())
String usuario = "TU_USUARIO_API";
String password = "TU_PASSWORD_API";
String credenciales = Base64.getEncoder()
.encodeToString((usuario + ":" + password).getBytes());
String payload = """
{
"CveRetenc": "14",
"FechaExp": "2026-10-01T12:41:43",
"DescRetenc": "No aplica",
"LugarExpRetenc": "42501",
"Folio": null,
"Emisor": {
"RfcEmisor": "EKU9003173C9",
"NomDenRazSocE": "ESCUELA KEMPER URGATE",
"RegimenFiscalE": "601"
},
"Receptor": {
"Nacionalidad": "Nacional",
"Nacional": {
"RfcRecep": "CACX7605101P8",
"NomDenRazSocR": "XOCHILT CASAS CHAVEZ",
"CurpR": null,
"DomicilioFiscalR": "36257"
}
},
"Periodo": {
"MesIni": 1,
"MesFin": 1,
"Ejerc": 2026
},
"Totales": {
"MontoTotOperacion": 200,
"MontoTotGrav": 200,
"MontoTotExent": 0,
"MontoTotRet": 20,
"ImpRetenidos": [
{
"BaseRet": 200,
"Impuesto": "01",
"MontoRet": 20,
"TipoPagoRet": "03"
}
]
},
"Complemento": {
"Dividendos": {
"Version": "1.0",
"DividOUtil": {
"CveTipDivOUtil": "Item01",
"TipoSocDistrDiv": "SociedadNacional",
"MontISRAcredRetMexico": 100,
"MontISRAcredRetExtranjero": 100,
"MontRetExtDivExt": 300,
"MontRetExtDivExtSpecified": true,
"MontISRAcredNal": 300,
"MontISRAcredNalSpecified": true,
"MontDivAcumNal": 200,
"MontDivAcumNalSpecified": true,
"MontDivAcumExt": 200,
"MontDivAcumExtSpecified": true
}
}
}
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://apisandbox.facturama.mx/2/retenciones"))
.header("Content-Type", "application/json")
.header("Authorization", "Basic " + credenciales)
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
var usuario = "TU_USUARIO_API";
var password = "TU_PASSWORD_API";
var payload = new
{
CveRetenc = "14",
FechaExp = "2026-10-01T12:41:43",
DescRetenc = "No aplica",
LugarExpRetenc = "42501",
Folio = (string?)null,
Emisor = new
{
RfcEmisor = "EKU9003173C9",
NomDenRazSocE = "ESCUELA KEMPER URGATE",
RegimenFiscalE = "601",
},
Receptor = new
{
Nacionalidad = "Nacional",
Nacional = new
{
RfcRecep = "CACX7605101P8",
NomDenRazSocR = "XOCHILT CASAS CHAVEZ",
CurpR = (string?)null,
DomicilioFiscalR = "36257",
},
},
Periodo = new
{
MesIni = 1,
MesFin = 1,
Ejerc = 2026,
},
Totales = new
{
MontoTotOperacion = 200,
MontoTotGrav = 200,
MontoTotExent = 0,
MontoTotRet = 20,
ImpRetenidos = new[]
{
new
{
BaseRet = 200,
Impuesto = "01",
MontoRet = 20,
TipoPagoRet = "03",
},
},
},
Complemento = new
{
Dividendos = new
{
Version = "1.0",
DividOUtil = new
{
CveTipDivOUtil = "Item01",
TipoSocDistrDiv = "SociedadNacional",
MontISRAcredRetMexico = 100,
MontISRAcredRetExtranjero = 100,
MontRetExtDivExt = 300,
MontRetExtDivExtSpecified = true,
MontISRAcredNal = 300,
MontISRAcredNalSpecified = true,
MontDivAcumNal = 200,
MontDivAcumNalSpecified = true,
MontDivAcumExt = 200,
MontDivAcumExtSpecified = true,
},
},
},
};
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(Encoding.UTF8.GetBytes($"{usuario}:{password}")));
var response = await client.PostAsJsonAsync("https://apisandbox.facturama.mx/2/retenciones", payload);
Console.WriteLine(await response.Content.ReadAsStringAsync());
require 'net/http'
require 'json'
require 'uri'
usuario = 'TU_USUARIO_API'
password = 'TU_PASSWORD_API'
payload = {
CveRetenc: '14',
FechaExp: '2026-10-01T12:41:43',
DescRetenc: 'No aplica',
LugarExpRetenc: '42501',
Folio: nil,
Emisor: {
RfcEmisor: 'EKU9003173C9',
NomDenRazSocE: 'ESCUELA KEMPER URGATE',
RegimenFiscalE: '601',
},
Receptor: {
Nacionalidad: 'Nacional',
Nacional: {
RfcRecep: 'CACX7605101P8',
NomDenRazSocR: 'XOCHILT CASAS CHAVEZ',
CurpR: nil,
DomicilioFiscalR: '36257',
},
},
Periodo: {
MesIni: 1,
MesFin: 1,
Ejerc: 2026,
},
Totales: {
MontoTotOperacion: 200,
MontoTotGrav: 200,
MontoTotExent: 0,
MontoTotRet: 20,
ImpRetenidos: [
{
BaseRet: 200,
Impuesto: '01',
MontoRet: 20,
TipoPagoRet: '03',
},
],
},
Complemento: {
Dividendos: {
Version: '1.0',
DividOUtil: {
CveTipDivOUtil: 'Item01',
TipoSocDistrDiv: 'SociedadNacional',
MontISRAcredRetMexico: 100,
MontISRAcredRetExtranjero: 100,
MontRetExtDivExt: 300,
MontRetExtDivExtSpecified: true,
MontISRAcredNal: 300,
MontISRAcredNalSpecified: true,
MontDivAcumNal: 200,
MontDivAcumNalSpecified: true,
MontDivAcumExt: 200,
MontDivAcumExtSpecified: true,
},
},
},
}
uri = URI.parse('https://apisandbox.facturama.mx/2/retenciones')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri, { 'Content-Type' => 'application/json' })
request.basic_auth(usuario, password)
request.body = payload.to_json
puts http.request(request).body
Antes de timbrar
ERROR 01
Un solo CFDI para todos los socios
Causa
El comprobante tiene un solo receptor.
Solución
Emite un CFDI por cada socio, con su monto.
ERROR 02
Elegir mal el origen de la utilidad
Causa
No es lo mismo «Proviene de CUFIN» que «No proviene de CUFIN»: los dividendos que no salen de la CUFIN pagan ISR corporativo al distribuirse (artículo 10 de la LISR).
Solución
Confirma el origen en la CUFIN antes de elegir el tipo de dividendo.
ERROR 03
Olvidar la retención del 10 %
Causa
A las personas físicas se les retiene el 10 % sobre dividendos de utilidades generadas desde 2014.
Solución
Regístrala en impuestos retenidos. Si no se retiene, la sociedad es responsable solidaria por ese impuesto (artículo 26 del CFF).
Precio
El módulo se contrata una vez y desbloquea los complementos disponibles. Funciona distinto a los complementos individuales: esto es lo que cambia.
Módulo de Retenciones
$1,650 MXN / año
IVA incluido · vigencia de 12 meses a partir de la compra
Cuando uses los 25 folios incluidos, los que timbres se descuentan de tu suscripción principal.
Dudas
La 14, Dividendos o utilidades distribuidas, del catálogo c_CveRetenc del SAT. Sobre esa clave se agrega el complemento de Dividendos.
El 10 % sobre el monto del dividendo, cuando proviene de utilidades generadas a partir de 2014. Lo establecen el artículo 140 de la Ley del ISR y sus disposiciones transitorias de 2014, y tiene el carácter de pago definitivo. A los residentes en el extranjero también se les retiene un 10 % (artículo 164), salvo lo que disponga un tratado. El complemento no calcula la tasa: documenta la retención que determinaste.
La CUFIN, o cuenta de utilidad fiscal neta, acumula las utilidades por las que la empresa ya pagó ISR. Los dividendos que salen de ella no vuelven a pagar ISR corporativo; los que no provienen de la CUFIN sí, conforme al artículo 10 de la Ley del ISR.
Sí. El CFDI de Retenciones tiene un solo receptor, así que cada accionista recibe el suyo con el monto que le corresponde.
Va incluido en el Módulo de Retenciones: $1,650 MXN al año (IVA incluido), sin cobro adicional por complemento, e incluye 25 folios para timbrar. Cuando los uses, los folios se descuentan de tu plan de Facturación, que debe estar activo. Puedes probarlo antes en el sandbox de Facturama, que no tiene costo ni validez fiscal.
Sí. Cuando una persona moral paga honorarios o arrendamiento a una persona física, el CFDI de ingresos de esta, con la retención desglosada, puede servir como constancia de retención; esa facilidad no aplica a los dividendos: la sociedad que reparte y retiene sigue emitiendo el CFDI de Retenciones.
Incluidos en el mismo módulo
Residentes en el extranjero
Retenciones por pagos a residentes en el extranjero sin establecimiento permanente en México. Corresponde a la clave 18 de retención.
Casas de bolsa e intermediarios bursátiles
Retenciones derivadas de la compraventa o enajenación de títulos accionarios. Corresponde a las claves 06 y 19 de retención.
Rifas, sorteos y concursos
Captura entidad federativa, monto gravado y exento. Corresponde a la clave 20 de retención.
Bancos, fintechs y casas de bolsa
Interés nominal, real y pérdida. Corresponde a la clave 16 de retención.
Solo para API
Marketplaces y apps que integran por API
Retenciones de ISR e IVA a quienes prestan servicios o venden a través de tu plataforma. Corresponde a la clave 26 de retención.