Tax certificate

What a withholding agent withheld from a third party in a tax year, or the VAT invoiced, by concept, by month and document by document.

certificado-retencion, with the estandar design: the certificate a withholding agent hands each beneficiary at year end, to be used in their tax return.

One type for all four taxes. tipo says which one —retefuente (income tax withholding), reteiva (VAT withholding), reteica (local business tax withholding) or iva (VAT invoiced)— and with it the title and the column names change; the layout is the same, because it is the same document.

"tipo": "retefuente",                                  // retefuente | reteiva | reteica | iva
"titulo": "Certificado de retención en la fuente",     // optional: without it, the one for the type
"anioGravable": 2025,
"agenteRetenedor": { "nombre": "Inversiones Altamar S.A.S.", "nit": "901223445-7",
                     "direccion": "Carrera 43A # 1-50, Of. 1204", "ciudad": "Medellín" },
"beneficiario":    { "nombre": "Servicios Integrales del Valle S.A.S.", "nit": "900345678-1",
                     "direccion": "Calle 10 # 40-21", "ciudad": "Itagüí" },
"conceptos": [                                         // required, at least one
  { "concepto": "Honorarios", "base": 24000000, "retenido": 2640000 }
],
"meses": [                                             // optional: the monthly summary
  { "mes": "junio", "base": 24000000, "retenido": 1410000 }
],
"detalle": [                                           // optional: the document-by-document annex
  { "fecha": "2025-06-09", "factura": "FV-10488", "concepto": "Honorarios",
    "base": 12000000, "tarifa": "11 %", "retenido": 1320000 }
],
"totalBase": 90000000,
"totalRetenido": 5190000,                              // required: the figure the paper exists for
"pagos": 14,                                           // how many payments, not how much was paid
"expedidoEl": "2026-02-27", "lugarExpedicion": "Medellín",
"textoLegal": "Este certificado se expide de conformidad con el artículo 381 …",
"firma": { "nombre": "Claudia Patricia Henao", "documento": "CC 43.118.772",
           "tarjetaProfesional": "T.P. 48.221-T", "cargo": "Revisora fiscal",
           "trazo": "https://…/firma.png" }            // optional, as a whole
  • Nothing is added up here, and in this document less than in any other. totalBase and totalRetenido arrive final and are printed exactly as they arrive, even if they do not match the concepts: the figure printed here is declared by the beneficiary to the tax authority, and whoever computed it answers for it. The rate is not derived from the base and the amount withheld either, and the concept is not translated.
  • tipo changes what the document states. In the three withholding types the column is «Retenido» and the base is the one subject to withholding. In iva there was no withholding at all: the column reads «IVA facturado» and the base, «Valor facturado sin IVA». A tipo outside those four returns 400 listing the ones that exist.
  • The signature is optional; the legal wording is not. With firma, the block is drawn with its stroke —PNG or JPEG, by URL or data:—, the ID, the role and the professional licence, and with no timestamp: a certificate does not prove when it was received. Without firma no empty signature line is left, because textoLegal usually states that no handwritten signature is required. The wording is printed either way.
  • The annex and the monthly summary are optional. With detalle, each document with its date, invoice, base, rate and amount withheld, to reconcile against the beneficiary’s books; without it there is neither a heading nor an extra page. The same goes for meses.
  • If the annex does not fit on one page, the table continues on the next repeating its header, and the signature and the legal wording are never split across pages.
  • Required: tipo, anioGravable, agenteRetenedor.nombre and .nit, beneficiario.nombre and .nit, conceptos, totalRetenido, expedidoEl and textoLegal. If any is missing, the response is 400 with the list of what is missing and no PDF is composed. A totalRetenido of zero is valid: zero is a figure.
  • The document also comes in four palettes —corporativa (blue), profesional (green), minimalista (violet) and basica (orange)—, with the same layout. It also accepts notes, fields, sideNotes, selectedCurrency and yourCompany for the withholding agent’s logo and contact details.

Examples: certificado-retencion.json (income tax withholding, with annex and signature), certificado-retencion-reteiva.json, certificado-retencion-reteica.json and certificado-retencion-iva.json.