Generar retención
POST /api/retentions
Autenticación: Bearer del usuario del tenant (Authorization: Bearer <api_token>).
Cuerpo
Content-Type: application/json
{
"serie_documento": "R001",
"numero_documento": "#",
"fecha_de_emision": "2018-10-09",
"hora_de_emision": "10:11:11",
"codigo_tipo_documento": "20",
"datos_del_emisor": {
"codigo_pais": "PE",
"ubigeo": "150101",
"direccion": "Av. 2 de Mayo",
"correo_electronico": "demo@gmail.com",
"telefono": "427-1148",
"codigo_del_domicilio_fiscal": "0000"
},
"datos_del_proveedor": {
"codigo_tipo_documento_identidad": "6",
"numero_documento": "10414711225",
"apellidos_y_nombres_o_razon_social": "EMPRESA XYZ S.A.",
"nombre_comercial": "EMPRESA XYZ",
"codigo_pais": "PE",
"ubigeo": "150101",
"direccion": "Av. 2 de Mayo",
"correo_electronico": "demo@gmail.com",
"telefono": "427-1148"
},
"codigo_tipo_retencion": "01",
"observaciones": "-",
"totales": {
"total_retenido": 30.0,
"total_pagado": 1000.0
},
"documentos": [
{
"codigo_tipo_documento": "01",
"serie_documento": "F001",
"numero_documento": "3",
"fecha_de_emision": "2018-10-09",
"codigo_tipo_moneda": "PEN",
"pagos": [
{
"fecha_de_pago": "2018-10-09",
"total_pago": 200.0,
"codigo_tipo_moneda": "PEN"
}
],
"tipo_de_cambio": {
"codigo_tipo_moneda_referencia": "PEN",
"codigo_tipo_moneda_objetivo": "PEN",
"factor": 1,
"fecha_tipo_de_cambio": "2018-10-09"
},
"fecha_de_retencion": "2018-10-09",
"total_documento": 400.0,
"total_retenido": 12.0,
"total_a_pagar": 412.0,
"total_pagado": 412.0
},
{
"codigo_tipo_documento": "01",
"serie_documento": "F001",
"numero_documento": "4",
"fecha_de_emision": "2018-10-09",
"codigo_tipo_moneda": "USD",
"total_documento": 200.0,
"pagos": [
{
"fecha_de_pago": "2018-10-09",
"total_pago": 200.0,
"codigo_tipo_moneda": "USD"
}
],
"tipo_de_cambio": {
"codigo_tipo_moneda_referencia": "USD",
"codigo_tipo_moneda_objetivo": "PEN",
"factor": 3.0,
"fecha_tipo_de_cambio": "2018-10-09"
},
"fecha_de_retencion": "2018-10-09",
"total_retenido": 18.0,
"total_a_pagar": 618.0,
"total_pagado": 618.0
}
]
}
Respuestas
200 — Retención generada
{
"success": true,
"data": {
"number": "R001-3",
"filename": "11111111111-20-R001-3",
"external_id": "9d997b38-92a6-42f2-b827-4b73ec5ca1a3"
},
"links": {
"xml": "https://{subdominio}/downloads/retention/xml/{external_id}",
"pdf": "https://{subdominio}/downloads/retention/pdf/{external_id}",
"cdr": "https://{subdominio}/downloads/retention/cdr/{external_id}"
},
"response": {
"code": "0",
"description": "El Comprobante numero R001-3 ha sido aceptado",
"notes": []
}
}
Nombre en el SDK
El cuerpo de la consulta es el JSON de la sección Cuerpo. Si instalas el paquete generado en sdks/, esa misma petición es el método emitirRetencion.
| Lenguaje | Llamada |
|---|---|
| PHP | TenantDominioDelClienteComprobantesApi::emitirRetencion |
| JavaScript | TenantDominioDelClienteComprobantesApi.emitirRetencion |
| TypeScript | TenantDominioDelClienteComprobantesApi.emitirRetencion |
| Java | TenantDominioDelClienteComprobantesApi.emitirRetencion |
| Python | TenantDominioDelClienteComprobantesApi.emitir_retencion |
| C# | TenantDominioDelClienteComprobantesApi.EmitirRetencionAsync |
| Go | TenantDominioDelClienteComprobantesAPIService.EmitirRetencion |
| Ruby | TenantDominioDelClienteComprobantesApi.emitir_retencion |
| Kotlin | TenantDominioDelClienteComprobantesApi.emitirRetencion |
| Dart | TenantDominioDelClienteComprobantesApi.emitirRetencion |
| Swift | TenantDominioDelClienteComprobantesAPI.emitirRetencion |