<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Compense Developers on Compense Docs</title><link>https://docs.compense.co/</link><description>Recent content in Compense Developers on Compense Docs</description><generator>Hugo</generator><language>es-CO</language><atom:link href="https://docs.compense.co/index.xml" rel="self" type="application/rss+xml"/><item><title>Afiliados</title><link>https://docs.compense.co/modulos/afiliados/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/modulos/afiliados/</guid><description>&lt;p&gt;El módulo de afiliados es la puerta de entrada de cualquier integración: créditos, subsidios, cuota
monetaria y cartera resuelven al afiliado &lt;strong&gt;por su documento&lt;/strong&gt;, y el motor rechaza la operación si
ese documento no está en el registro de tu entidad. Aquí aprendes a mantener ese registro al día
desde tu sistema (&lt;em&gt;core&lt;/em&gt;, ERP, SOFIA o una hoja de cálculo) y a consultarlo.&lt;/p&gt;</description></item><item><title>Afiliados</title><link>https://docs.compense.co/api-reference/affiliates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/affiliates/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/modulos/afiliados/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Autenticación</title><link>https://docs.compense.co/conceptos/autenticacion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/conceptos/autenticacion/</guid><description>&lt;p&gt;Cada petición al gateway lleva &lt;strong&gt;una&lt;/strong&gt; cabecera de autenticación:&lt;/p&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;HTTP&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;X-API-Key: cmp_...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;No hay OAuth, ni tokens de sesión, ni id de tenant en la URL: la llave es &lt;strong&gt;autoidentificable&lt;/strong&gt;.
El gateway la busca, comprueba que esté activa y vigente, y obtiene de ella el &lt;strong&gt;tenant&lt;/strong&gt; (tu
entidad), los &lt;strong&gt;scopes&lt;/strong&gt;, el &lt;strong&gt;entorno&lt;/strong&gt; (&lt;code&gt;sandbox&lt;/code&gt;/&lt;code&gt;prod&lt;/code&gt;), el límite por minuto y la cuota
mensual. Los SDK ponen la cabecera por ti en cada llamada.&lt;/p&gt;</description></item><item><title>Desembolsar un crédito y conciliar</title><link>https://docs.compense.co/recetas/desembolsar-credito-y-conciliar/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/recetas/desembolsar-credito-y-conciliar/</guid><description>&lt;p&gt;&lt;strong&gt;Caja Horizonte&lt;/strong&gt; origina libranzas desde su ERP. El analista aprueba en el ERP, tesorería ordena
el desembolso y contabilidad necesita saber, sin consultar a nadie, &lt;strong&gt;cuándo&lt;/strong&gt; salió la plata,
&lt;strong&gt;cuánto&lt;/strong&gt; y &lt;strong&gt;contra qué solicitud&lt;/strong&gt;. Esta receta arma ese circuito de punta a punta con el gateway:
radicar → decidir → desembolsar → recibir &lt;code&gt;credits.disbursed&lt;/code&gt; → conciliar.&lt;/p&gt;</description></item><item><title>Obtén tu llave de API</title><link>https://docs.compense.co/getting-started/llave-de-api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/getting-started/llave-de-api/</guid><description>&lt;p&gt;Todo el API Gateway se autentica con &lt;strong&gt;una llave de API&lt;/strong&gt; que tu sistema envía en la cabecera
&lt;code&gt;X-API-Key&lt;/code&gt;. La llave &lt;strong&gt;identifica a tu entidad&lt;/strong&gt; (el &lt;em&gt;tenant&lt;/em&gt;): nunca envías un id de caja o de
organización, y una llave jamás ve datos de otro tenant.&lt;/p&gt;</description></item><item><title>Preguntas frecuentes</title><link>https://docs.compense.co/ayuda/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/ayuda/faq/</guid><description>&lt;h2 id="llaves-y-entornos"&gt;Llaves y entornos &lt;a class="heading-anchor" href="#llaves-y-entornos" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="dónde-pongo-el-id-de-mi-caja-o-de-mi-entidad"&gt;¿Dónde pongo el id de mi caja o de mi entidad? &lt;a class="heading-anchor" href="#d%c3%b3nde-pongo-el-id-de-mi-caja-o-de-mi-entidad" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;En ninguna parte. La llave &lt;code&gt;cmp_...&lt;/code&gt; identifica al tenant; el gateway lo resuelve solo. Los
afiliados, pacientes o titulares se identifican con su &lt;code&gt;document&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Python</title><link>https://docs.compense.co/sdks/python/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/sdks/python/</guid><description>&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Paquete&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;compense-sdk-python&lt;/code&gt; (se importa como &lt;code&gt;compense_gateway&lt;/code&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Versión&lt;/td&gt;
 &lt;td&gt;1.1.0 · API v1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Requisitos&lt;/td&gt;
 &lt;td&gt;Python 3.9+&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Dependencias&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;httpx&lt;/code&gt; (los módulos &lt;code&gt;models&lt;/code&gt; y &lt;code&gt;webhooks&lt;/code&gt; solo usan la biblioteca estándar)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Repositorio&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://github.com/Appiasoft/compense-saas-sdk-python"&gt;Appiasoft/compense-saas-sdk-python&lt;/a&gt; · guías en &lt;code&gt;Docs/features/&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Es el SDK de referencia: los demás comparan sus peticiones contra lo que envía este.&lt;/p&gt;</description></item><item><title>Relojes de prueba</title><link>https://docs.compense.co/sandbox/relojes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/sandbox/relojes/</guid><description>&lt;p&gt;Hay comportamientos que solo aparecen con el paso del tiempo: una cuota que pasa a mora, una
obligación que vence, un subsidio que exige permanencia. Probarlos esperando días reales no es
opción. Un &lt;strong&gt;reloj de prueba&lt;/strong&gt; (&lt;em&gt;test clock&lt;/em&gt;) es una fuente de tiempo virtual: lo fijas en una fecha
(&lt;code&gt;frozen_time&lt;/code&gt;) y lo &lt;strong&gt;adelantas&lt;/strong&gt; las veces que quieras; su &lt;code&gt;current_time&lt;/code&gt; es el &amp;ldquo;ahora&amp;rdquo; de tu
escenario.&lt;/p&gt;</description></item><item><title>Suscribir un endpoint</title><link>https://docs.compense.co/webhooks/suscripcion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/webhooks/suscripcion/</guid><description>&lt;p&gt;Un &lt;strong&gt;endpoint&lt;/strong&gt; es una URL tuya que recibe eventos. Lo registras con tu llave de API, eliges a qué
eventos se suscribe y Compense te devuelve &lt;strong&gt;una sola vez&lt;/strong&gt; el secreto con el que firmará cada entrega.
Todo lo que haces aquí queda ligado a la organización dueña de la llave: un id de otra organización
responde &lt;code&gt;404&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Catálogo de eventos</title><link>https://docs.compense.co/webhooks/eventos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/webhooks/eventos/</guid><description>&lt;p&gt;Cada evento tiene una &lt;strong&gt;clave&lt;/strong&gt; (&lt;code&gt;credits.decision&lt;/code&gt;, &lt;code&gt;wallets.topup.completed&lt;/code&gt;, &lt;code&gt;pqrs.responded&lt;/code&gt;…)
que usas al suscribir un endpoint y que llega en la cabecera &lt;code&gt;X-Webhook-Event&lt;/code&gt; y en el campo &lt;code&gt;event&lt;/code&gt;
del cuerpo. Esta página es una &lt;strong&gt;foto del catálogo al 1 de noviembre de 2026&lt;/strong&gt; (52 eventos). La fuente
de verdad es el catálogo en vivo, 
&lt;a class="op-link" href="https://docs.compense.co/api-reference/webhooks/#getWebhookEventCatalog"&gt;&lt;span class="verb verb--get"&gt;GET&lt;/span&gt;&lt;code&gt;/v1/gateway/webhooks/event-catalog/&lt;/code&gt;&lt;/a&gt;
: si aparece un evento nuevo, lo
verás primero ahí, con su &lt;code&gt;payload_example&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Créditos</title><link>https://docs.compense.co/modulos/creditos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/modulos/creditos/</guid><description>&lt;p&gt;El módulo de créditos expone el &lt;strong&gt;motor de originación&lt;/strong&gt; de Compense (reglas, scoring y
desembolso) a tu sistema: radicas la solicitud de un afiliado, tu analista o el motor la decide y
la desembolsas. Cada paso devuelve un &lt;code&gt;transaction_id&lt;/code&gt; rastreable y emite un webhook. Lo que pasa
después del desembolso (plan de pagos, recaudo, paz y salvo) vive en &lt;a href="https://docs.compense.co/modulos/cartera/"&gt;Cartera&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Créditos</title><link>https://docs.compense.co/api-reference/credits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/credits/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/modulos/creditos/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Cuota monetaria del período</title><link>https://docs.compense.co/recetas/cuota-monetaria-del-periodo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/recetas/cuota-monetaria-del-periodo/</guid><description>&lt;p&gt;Cada mes, &lt;strong&gt;Caja Horizonte&lt;/strong&gt; liquida la cuota monetaria de sus afiliados y la paga. Un error aquí
cuesta caro: pagar dos veces a miles de afiliados, o dejar a la mitad sin pago porque el proceso se
cayó a mitad del lote. Esta receta cierra el período &lt;strong&gt;octubre de 2026&lt;/strong&gt; de forma que se pueda
interrumpir y relanzar en cualquier punto sin pagar dos veces.&lt;/p&gt;</description></item><item><title>Instala el SDK</title><link>https://docs.compense.co/getting-started/instalacion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/getting-started/instalacion/</guid><description>&lt;p&gt;Hay un SDK oficial por lenguaje. Los cinco cubren &lt;strong&gt;las 115 operaciones&lt;/strong&gt; del gateway con los
mismos nombres (adaptados a la convención de cada lenguaje) y resuelven lo que toda integración
termina haciendo a mano: autenticación, &lt;code&gt;Idempotency-Key&lt;/code&gt; en las escrituras, reintentos con backoff,
errores tipados &lt;code&gt;problem+json&lt;/code&gt;, paginación, avisos de deprecación y verificación de webhooks.
Todos están en la versión &lt;strong&gt;1.1.0&lt;/strong&gt; y apuntan al API &lt;strong&gt;v1&lt;/strong&gt; (SemVer alineado: mayor del SDK = mayor
del API).&lt;/p&gt;</description></item><item><title>JavaScript / TypeScript</title><link>https://docs.compense.co/sdks/javascript/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/sdks/javascript/</guid><description>&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Paquete&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;@compense/sdk&lt;/code&gt; (ESM y CommonJS, con declaraciones TypeScript)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Versión&lt;/td&gt;
 &lt;td&gt;1.1.0 · API v1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Requisitos&lt;/td&gt;
 &lt;td&gt;Node.js 18+ (usa &lt;code&gt;fetch&lt;/code&gt; nativo); también Deno, Bun, Cloudflare Workers y Vercel/Next.js edge&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Dependencias&lt;/td&gt;
 &lt;td&gt;Ninguna en tiempo de ejecución&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Repositorio&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://github.com/Appiasoft/compense-saas-sdk-js"&gt;Appiasoft/compense-saas-sdk-js&lt;/a&gt; · guías en &lt;code&gt;docs/&lt;/code&gt; · ejemplos en &lt;code&gt;examples/&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="instalar"&gt;Instalar &lt;a class="heading-anchor" href="#instalar" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;Shell&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install @compense/sdk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;TypeScript&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;CompenseClient&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;@compense/sdk&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// ESM / TypeScript
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// const { CompenseClient } = require(&amp;#34;@compense/sdk&amp;#34;); // CommonJS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="cliente"&gt;Cliente &lt;a class="heading-anchor" href="#cliente" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;TypeScript&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;CompenseClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt;: &lt;span class="kt"&gt;process.env.COMPENSE_API_KEY&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// obligatorio; viaja como X-API-Key
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;sandbox&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// &amp;#34;production&amp;#34; (defecto) | &amp;#34;sandbox&amp;#34; | &amp;#34;dev&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="nx"&gt;baseUrl&lt;/span&gt;: &lt;span class="kt"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// otra URL; gana sobre environment
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="nx"&gt;timeout&lt;/span&gt;: &lt;span class="kt"&gt;30_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// ms por intento
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="nx"&gt;retry&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;maxAttempts&lt;/span&gt;: &lt;span class="kt"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;backoffBaseMs&lt;/span&gt;: &lt;span class="kt"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;backoffMaxMs&lt;/span&gt;: &lt;span class="kt"&gt;30_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;jitter&lt;/span&gt;: &lt;span class="kt"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;retryWrites&lt;/span&gt;: &lt;span class="kt"&gt;false&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;: &lt;span class="kt"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// fetch propio (proxy, instrumentación, pruebas)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="nx"&gt;logger&lt;/span&gt;: &lt;span class="kt"&gt;console&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// avisos de deprecación
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Hay un solo cliente y todo devuelve &lt;code&gt;Promise&lt;/code&gt;. La llave es un secreto de servidor: aunque el cliente
funciona en navegadores, &lt;strong&gt;nunca&lt;/strong&gt; pongas una llave en código de frontend.&lt;/p&gt;</description></item><item><title>Simuladores de ciclo de vida</title><link>https://docs.compense.co/sandbox/simuladores/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/sandbox/simuladores/</guid><description>&lt;p&gt;Tu integración tiene que reaccionar a cada estado por el que pasa un movimiento de dinero: mostrar
&amp;ldquo;en proceso&amp;rdquo;, confirmar al liquidarse, revertir si falla, conciliar si lo devuelven. Los
&lt;strong&gt;simuladores&lt;/strong&gt; te permiten recorrer esos estados en el sandbox &lt;strong&gt;un paso a la vez&lt;/strong&gt; y llegar a cada
estado terminal (incluidos los fallos) sin esperar a ningún proveedor.&lt;/p&gt;</description></item><item><title>Sobre de respuesta</title><link>https://docs.compense.co/conceptos/sobre-de-respuesta/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/conceptos/sobre-de-respuesta/</guid><description>&lt;p&gt;El gateway responde de dos formas, según el tipo de operación.&lt;/p&gt;
&lt;h2 id="escrituras-el-sobre-de-transacción"&gt;Escrituras: el sobre de transacción &lt;a class="heading-anchor" href="#escrituras-el-sobre-de-transacci%c3%b3n" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Toda operación que &lt;strong&gt;cambia algo&lt;/strong&gt; (las que llevan &lt;code&gt;Idempotency-Key&lt;/code&gt;) responde con el mismo sobre,
sea del módulo que sea:&lt;/p&gt;</description></item><item><title>Soporte</title><link>https://docs.compense.co/ayuda/soporte/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/ayuda/soporte/</guid><description>&lt;h2 id="canales"&gt;Canales &lt;a class="heading-anchor" href="#canales" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Canal&lt;/th&gt;
 &lt;th&gt;Para qué&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="mailto:developers@compense.co"&gt;developers@compense.co&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Dudas de integración, errores del API o de los SDK, llaves y onboarding técnico.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Tu ejecutivo de Compense&lt;/td&gt;
 &lt;td&gt;Contratos, módulos activos, llaves de producción y límites de tasa.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://docs.compense.co/guias/"&gt;Guías de uso&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Cómo operar la plataforma desde el panel y las apps (para asesores y operadores).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="qué-incluir-en-tu-mensaje"&gt;Qué incluir en tu mensaje &lt;a class="heading-anchor" href="#qu%c3%a9-incluir-en-tu-mensaje" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;El &lt;code&gt;trace_id&lt;/code&gt;&lt;/strong&gt; del error (o la cabecera &lt;code&gt;X-Request-ID&lt;/code&gt; de la respuesta).&lt;/li&gt;
&lt;li&gt;La &lt;strong&gt;operación&lt;/strong&gt; (&lt;code&gt;operationId&lt;/code&gt; o método y ruta) y la &lt;strong&gt;hora&lt;/strong&gt; aproximada con zona horaria.&lt;/li&gt;
&lt;li&gt;El &lt;strong&gt;entorno&lt;/strong&gt; (sandbox, dev o producción) y el &lt;strong&gt;SDK y versión&lt;/strong&gt; (&lt;code&gt;compense-sdk-python 1.1.0&lt;/code&gt;…).&lt;/li&gt;
&lt;li&gt;Tu &lt;code&gt;Idempotency-Key&lt;/code&gt; si fue una escritura.&lt;/li&gt;
&lt;li&gt;El cuerpo de la respuesta de error (&lt;code&gt;problem+json&lt;/code&gt;) y, si aplica, la petición &lt;strong&gt;sin datos
sensibles&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="callout callout--danger" role="note"&gt;
 &lt;p class="callout__title"&gt;Nunca envíes&lt;/p&gt;</description></item><item><title>Idempotencia</title><link>https://docs.compense.co/conceptos/idempotencia/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/conceptos/idempotencia/</guid><description>&lt;p&gt;En una red real las peticiones se cortan: un timeout, un balanceador que reinicia, tu proceso que
muere justo después de enviar. En ese momento &lt;strong&gt;no sabes&lt;/strong&gt; si Compense ejecutó la operación. Si
reintentas a ciegas puedes desembolsar dos veces; si no reintentas, puedes dejar un pago sin hacer.
La &lt;code&gt;Idempotency-Key&lt;/code&gt; resuelve ese dilema: reintentar con la &lt;strong&gt;misma&lt;/strong&gt; llave es siempre seguro.&lt;/p&gt;</description></item><item><title>La CLI compense</title><link>https://docs.compense.co/sandbox/cli/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/sandbox/cli/</guid><description>&lt;p&gt;&lt;code&gt;compense&lt;/code&gt; es una herramienta de línea de comandos para las tareas que haces a mano mientras
integras: validar una llave, ver el catálogo de eventos, registrar un endpoint, disparar un evento de
prueba, revisar y reintentar entregas, mover un reloj de prueba, avanzar un simulador y reenviar
webhooks a tu máquina. Cada orden es una envoltura delgada sobre el SDK e &lt;strong&gt;imprime la respuesta del
gateway como JSON&lt;/strong&gt;, así que puedes encadenarla con &lt;code&gt;jq&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>PHP</title><link>https://docs.compense.co/sdks/php/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/sdks/php/</guid><description>&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Paquete&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;compense/sdk&lt;/code&gt; (namespace &lt;code&gt;Compense\Sdk&lt;/code&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Versión&lt;/td&gt;
 &lt;td&gt;1.1.0 · API v1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Requisitos&lt;/td&gt;
 &lt;td&gt;PHP 8.1+ (&lt;code&gt;declare(strict_types=1)&lt;/code&gt;, DTO &lt;code&gt;readonly&lt;/code&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;HTTP&lt;/td&gt;
 &lt;td&gt;Cualquier cliente &lt;a href="https://www.php-fig.org/psr/psr-18/"&gt;PSR-18&lt;/a&gt; + fábricas PSR-17, descubiertos con &lt;code&gt;php-http/discovery&lt;/code&gt; (Guzzle sugerido)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Repositorio&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://github.com/Appiasoft/compense-saas-sdk-php"&gt;Appiasoft/compense-saas-sdk-php&lt;/a&gt; · guías en &lt;code&gt;docs/&lt;/code&gt; · ejemplos en &lt;code&gt;examples/&lt;/code&gt; (PHP plano y Laravel)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="instalar"&gt;Instalar &lt;a class="heading-anchor" href="#instalar" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;Shell&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;composer require compense/sdk guzzlehttp/guzzle
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# o con Symfony HttpClient:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;composer require compense/sdk symfony/http-client nyholm/psr7&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="cliente"&gt;Cliente &lt;a class="heading-anchor" href="#cliente" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;PHP&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="nx"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;declare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;strict_types&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Compense\Sdk\CompenseClient&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Compense\Sdk\RetryConfig&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;CompenseClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;COMPENSE_API_KEY&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="c1"&gt;// cmp_...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sandbox&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// &amp;#39;production&amp;#39; (defecto) | &amp;#39;sandbox&amp;#39; | &amp;#39;dev&amp;#39;; o baseUrl: &amp;#39;...&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="nx"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;30.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// se aplica cuando el SDK construye Guzzle
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="nx"&gt;retry&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;RetryConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;maxAttempts&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;retryWrites&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;httpClient&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// cualquier PSR-18 (contenedor, mocks…)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt; &lt;span class="nx"&gt;logger&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$psrLogger&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// PSR-3: avisos de deprecación
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Si pasas tu propio &lt;code&gt;httpClient&lt;/code&gt;, configura en él el timeout. Las fábricas PSR-17
(&lt;code&gt;requestFactory:&lt;/code&gt;, &lt;code&gt;streamFactory:&lt;/code&gt;) se descubren solas si no las das.&lt;/p&gt;</description></item><item><title>Tu primera llamada</title><link>https://docs.compense.co/getting-started/quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/getting-started/quickstart/</guid><description>&lt;p&gt;Vas a hablar con el &lt;strong&gt;sandbox&lt;/strong&gt;: el gateway responde con el motor simulado, de forma determinista y
sin dinero real. Necesitas una &lt;a href="https://docs.compense.co/getting-started/llave-de-api/"&gt;llave de sandbox&lt;/a&gt; y el
&lt;a href="https://docs.compense.co/getting-started/instalacion/"&gt;SDK instalado&lt;/a&gt;. Elige tu lenguaje en cualquier pestaña: la elección se
recuerda en todo el sitio.&lt;/p&gt;</description></item><item><title>Recaudo de cartera</title><link>https://docs.compense.co/recetas/recaudo-de-cartera/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/recetas/recaudo-de-cartera/</guid><description>&lt;p&gt;En las oficinas de &lt;strong&gt;Caja Horizonte&lt;/strong&gt; los afiliados pagan sus cuotas de crédito en efectivo, y cada
mes llega además el archivo de descuentos de nómina (libranza). Todo ese dinero entra por fuera de
la plataforma, así que la caja tiene que &lt;strong&gt;reportarlo&lt;/strong&gt; a Compense para que el saldo, la mora, la
app del afiliado y el paz y salvo estén al día. Esta receta integra el sistema de taquilla y el
proceso del archivo de nómina con el módulo &lt;a href="https://docs.compense.co/modulos/cartera/"&gt;Cartera&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Subsidios</title><link>https://docs.compense.co/api-reference/subsidies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/subsidies/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/modulos/subsidios/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Subsidios y cuota monetaria</title><link>https://docs.compense.co/modulos/subsidios/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/modulos/subsidios/</guid><description>&lt;p&gt;Este módulo cubre los dos frentes de subsidio de una caja de compensación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Subsidios por solicitud&lt;/strong&gt; (p. ej. el subsidio al desempleo): el afiliado los pide, tú los
radicas, un analista o el motor de reglas los decide.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuota monetaria&lt;/strong&gt;: el subsidio en dinero por persona a cargo que se liquida &lt;strong&gt;cada período&lt;/strong&gt;. Aquí
no hay solicitud: generas la liquidación del mes, la revisas y desembolsas cada cuota.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El afiliado debe existir en el registro de tu entidad (ver &lt;a href="https://docs.compense.co/modulos/afiliados/"&gt;Afiliados&lt;/a&gt;).&lt;/p&gt;</description></item><item><title>Verificar la firma</title><link>https://docs.compense.co/webhooks/verificacion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/webhooks/verificacion/</guid><description>&lt;p&gt;Tu endpoint es una URL pública: cualquiera puede hacerle &lt;code&gt;POST&lt;/code&gt;. La &lt;strong&gt;firma&lt;/strong&gt; es lo que te garantiza
que el cuerpo lo envió Compense y que nadie lo alteró en el camino. &lt;strong&gt;Nunca proceses una entrega sin
verificarla primero.&lt;/strong&gt; Esta página trae receptores completos en los cinco lenguajes de los SDK y la
verificación manual, por si no usas un SDK.&lt;/p&gt;</description></item><item><title>Subsidios</title><link>https://docs.compense.co/guias/subsidios/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/guias/subsidios/</guid><description>&lt;p&gt;El módulo de &lt;strong&gt;Subsidios&lt;/strong&gt; te permite gestionar de principio a fin las ayudas económicas que tu caja
entrega a sus afiliados: desde que el afiliado &lt;strong&gt;radica&lt;/strong&gt; una solicitud en la app o el portal, pasando
por la &lt;strong&gt;revisión y decisión&lt;/strong&gt; del operador, hasta el &lt;strong&gt;desembolso&lt;/strong&gt; del dinero.&lt;/p&gt;</description></item><item><title>Créditos</title><link>https://docs.compense.co/guias/creditos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/guias/creditos/</guid><description>&lt;p&gt;El módulo de &lt;strong&gt;Créditos&lt;/strong&gt; cubre el ciclo completo de un préstamo a un afiliado: &lt;strong&gt;solicitud →
evaluación → decisión → desembolso → amortización&lt;/strong&gt;. El afiliado simula y solicita desde la app o el
portal; la plataforma evalúa el riesgo de forma automática; el operador decide el monto y el plazo; y,
una vez desembolsado, el afiliado consulta y paga sus cuotas.&lt;/p&gt;</description></item><item><title>Pagos y Wallet</title><link>https://docs.compense.co/guias/pagos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/guias/pagos/</guid><description>&lt;p&gt;Cuando tu caja aprueba un subsidio o desembolsa un crédito, el dinero llega al afiliado a través de
su &lt;strong&gt;billetera digital (wallet)&lt;/strong&gt;. Esta guía explica, para &lt;strong&gt;afiliados&lt;/strong&gt; y &lt;strong&gt;operadores&lt;/strong&gt;, qué es la
billetera, cómo se dispersan los pagos, cómo se consultan saldo y movimientos, y cómo verificar el
estado de una dispersión.&lt;/p&gt;</description></item><item><title>Afiliados</title><link>https://docs.compense.co/guias/afiliados/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/guias/afiliados/</guid><description>&lt;p&gt;El &lt;strong&gt;padrón de afiliados&lt;/strong&gt; es el registro maestro de las personas afiliadas a tu caja. De su exactitud
depende todo lo demás: a quién se le paga un subsidio, quién puede recibir una cuota monetaria o
quién cumple los requisitos de un crédito. Esta guía explica, para &lt;strong&gt;operadores&lt;/strong&gt;, cómo consultar,
registrar y actualizar afiliados y su grupo familiar, y cómo mantener la base al día.&lt;/p&gt;</description></item><item><title>PQRS</title><link>https://docs.compense.co/guias/pqrs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/guias/pqrs/</guid><description>&lt;p&gt;El módulo de &lt;strong&gt;PQRS&lt;/strong&gt; es el canal formal para que un afiliado de tu caja presente una &lt;strong&gt;P&lt;/strong&gt;etición,
&lt;strong&gt;Q&lt;/strong&gt;ueja, &lt;strong&gt;R&lt;/strong&gt;eclamo o &lt;strong&gt;S&lt;/strong&gt;ugerencia, y para que tus operadores la atiendan dentro de los &lt;strong&gt;plazos
de ley&lt;/strong&gt;. Cada caso recibe un &lt;strong&gt;número de radicado&lt;/strong&gt;, avanza por un conjunto de &lt;strong&gt;estados&lt;/strong&gt; y queda
con una &lt;strong&gt;trazabilidad completa&lt;/strong&gt; (quién hizo qué y cuándo).&lt;/p&gt;</description></item><item><title>Notificaciones</title><link>https://docs.compense.co/guias/notificaciones/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/guias/notificaciones/</guid><description>&lt;p&gt;Compense &lt;strong&gt;mantiene informado al afiliado&lt;/strong&gt; de forma automática: cada vez que su solicitud avanza —se
radica, se decide, se desembolsa— o que su PQRS recibe respuesta, recibe un &lt;strong&gt;aviso&lt;/strong&gt;. Tus operadores
no tienen que enviar nada manualmente: las notificaciones se disparan solas con cada &lt;strong&gt;hecho de
negocio&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>.NET</title><link>https://docs.compense.co/sdks/dotnet/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/sdks/dotnet/</guid><description>&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Paquete NuGet&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Compense.Sdk&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Versión&lt;/td&gt;
 &lt;td&gt;1.1.0 · API v1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Destinos&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;net8.0&lt;/code&gt; y &lt;code&gt;netstandard2.0&lt;/code&gt; (.NET Framework 4.6.2+, .NET 6/7/8+, Mono)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Dependencias&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;System.Text.Json&lt;/code&gt;, &lt;code&gt;Microsoft.Extensions.Http&lt;/code&gt;, &lt;code&gt;Microsoft.Extensions.Logging.Abstractions&lt;/code&gt;, &lt;code&gt;Microsoft.Extensions.Options.ConfigurationExtensions&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Repositorio&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://github.com/Appiasoft/compense-saas-sdk-dotnet"&gt;Appiasoft/compense-saas-sdk-dotnet&lt;/a&gt; · guías en &lt;code&gt;docs/modulos/&lt;/code&gt; · ejemplos en &lt;code&gt;examples/&lt;/code&gt; (consola y receptor de webhooks)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="instalar"&gt;Instalar &lt;a class="heading-anchor" href="#instalar" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;Shell&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet add package Compense.Sdk --version 1.1.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="cliente"&gt;Cliente &lt;a class="heading-anchor" href="#cliente" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;C#&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Compense.Sdk&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Compense.Sdk.Models&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;CompenseClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetEnvironmentVariable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;COMPENSE_API_KEY&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)!,&lt;/span&gt; &lt;span class="n"&gt;CompenseEnvironment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Sandbox&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Con todas las opciones:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;configured&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;CompenseClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;CompenseClientOptions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ApiKey&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;cmp_...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Environment&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;CompenseEnvironment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Sandbox&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Production (defecto) | Sandbox | Dev&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;BaseUrl&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// otra URL; gana sobre Environment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Timeout&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;TimeSpan&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FromSeconds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Retry&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;RetryOptions&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;MaxAttempts&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;RetryWrites&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UserAgent&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;horizonte-erp/2.0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;También &lt;code&gt;new CompenseClient(httpClient, options)&lt;/code&gt; con tu propio &lt;code&gt;HttpClient&lt;/code&gt; (el SDK no lo
desecha e ignora su &lt;code&gt;BaseAddress&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Billetera</title><link>https://docs.compense.co/modulos/billetera/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/modulos/billetera/</guid><description>&lt;p&gt;Esta guía es para el equipo técnico de una fintech (como &lt;strong&gt;Nova&lt;/strong&gt;) o de una caja (como &lt;strong&gt;Caja
Horizonte&lt;/strong&gt;) que opera &lt;strong&gt;por API&lt;/strong&gt; la billetera de sus afiliados, con las mismas reglas que la app:
saldo y movimientos, transferencias P2P a otro afiliado, Bre-B a otros bancos, pago de facturas de
servicios, recargas de celular, sub-cuentas (bolsillos, ahorros, metas), tarjetas y cambio de divisas.
Todo vive bajo la etiqueta &lt;code&gt;wallet&lt;/code&gt; del contrato y, en los SDK, bajo &lt;code&gt;client.wallet&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Cobrar una factura desde la billetera</title><link>https://docs.compense.co/recetas/cobrar-factura-desde-billetera/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/recetas/cobrar-factura-desde-billetera/</guid><description>&lt;p&gt;En esta receta, la app de &lt;strong&gt;Nova&lt;/strong&gt; deja que sus usuarios paguen la factura de la luz desde su
billetera. Vas a recorrer el flujo completo del lado del backend de Nova: elegir el facturador,
consultar la factura, confirmar con el usuario, pagar sin riesgo de cobrar dos veces aunque la red
falle, enterarte del resultado por webhook y entregar un comprobante. Los detalles de cada operación
están en la guía de &lt;a href="https://docs.compense.co/modulos/billetera/#facturas-de-servicios"&gt;Billetera&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Cuota monetaria</title><link>https://docs.compense.co/api-reference/monetary-allowance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/monetary-allowance/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/modulos/subsidios/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Datos de prueba</title><link>https://docs.compense.co/sandbox/datos-de-prueba/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/sandbox/datos-de-prueba/</guid><description>&lt;p&gt;Todo en el sandbox es &lt;strong&gt;determinista&lt;/strong&gt;: el resultado lo decide el documento que envías, algunos
montos y los ids que te devuelve el propio sandbox. Esta página reúne esos valores para que escribas
pruebas automáticas que cubran el camino feliz y cada error documentado. Recuerda que el sandbox no
guarda estado: el estado viaja en los ids y una escritura no cambia lo que devuelven las lecturas
siguientes (&lt;a href="https://docs.compense.co/sandbox/"&gt;Sandbox&lt;/a&gt;).&lt;/p&gt;</description></item><item><title>Entornos y llaves</title><link>https://docs.compense.co/getting-started/entornos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/getting-started/entornos/</guid><description>&lt;p&gt;El gateway tiene &lt;strong&gt;un solo contrato&lt;/strong&gt; (las mismas rutas, cuerpos y errores) en todos sus
despliegues. Lo que cambia entre &amp;ldquo;probar&amp;rdquo; y &amp;ldquo;operar&amp;rdquo; es &lt;strong&gt;la llave&lt;/strong&gt; con la que llamas.&lt;/p&gt;</description></item><item><title>Reintentos y backoff</title><link>https://docs.compense.co/conceptos/reintentos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/conceptos/reintentos/</guid><description>&lt;p&gt;Los cinco SDK traen la misma política de reintentos, pensada para que reintentar &lt;strong&gt;nunca&lt;/strong&gt;
duplique una operación.&lt;/p&gt;
&lt;h2 id="la-política-por-defecto"&gt;La política por defecto &lt;a class="heading-anchor" href="#la-pol%c3%adtica-por-defecto" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parámetro&lt;/th&gt;
 &lt;th&gt;Valor por defecto&lt;/th&gt;
 &lt;th&gt;Qué hace&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Intentos máximos&lt;/td&gt;
 &lt;td&gt;3 (el primero + 2 reintentos)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1&lt;/code&gt; desactiva los reintentos.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Base del backoff&lt;/td&gt;
 &lt;td&gt;0,5 s&lt;/td&gt;
 &lt;td&gt;Espera del primer reintento, duplicándose en cada uno.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Tope del backoff&lt;/td&gt;
 &lt;td&gt;30 s&lt;/td&gt;
 &lt;td&gt;Ninguna espera supera este valor.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Jitter&lt;/td&gt;
 &lt;td&gt;completo&lt;/td&gt;
 &lt;td&gt;Cada espera es aleatoria entre 0 y el valor calculado, para no sincronizar a todos los clientes.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Retry-After&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;se respeta&lt;/td&gt;
 &lt;td&gt;Si el gateway lo envía, el SDK espera exactamente eso.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Estados que se reintentan&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;429&lt;/code&gt;, &lt;code&gt;502&lt;/code&gt;, &lt;code&gt;503&lt;/code&gt;, &lt;code&gt;504&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Fallos transitorios. Nunca &lt;code&gt;4xx&lt;/code&gt; de negocio ni &lt;code&gt;500&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Métodos&lt;/td&gt;
 &lt;td&gt;solo &lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Las escrituras se reintentan solo con &lt;code&gt;retry_writes&lt;/code&gt; activado.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Errores de red sin respuesta&lt;/td&gt;
 &lt;td&gt;no se reintentan&lt;/td&gt;
 &lt;td&gt;Los reenvías tú con la misma &lt;code&gt;Idempotency-Key&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;figure class="diagram"&gt;
 &lt;pre class="mermaid"&gt;flowchart TD
 A[Petición] --&amp;gt; B{¿Respuesta?}
 B -- no: timeout / red --&amp;gt; X[Excepción de transporte&amp;lt;br/&amp;gt;reenvía tú con la misma llave]
 B -- sí --&amp;gt; C{¿429/502/503/504?}
 C -- no --&amp;gt; D[Éxito o error tipado]
 C -- sí --&amp;gt; E{¿GET o retry_writes?}
 E -- no --&amp;gt; D
 E -- sí --&amp;gt; F{¿Quedan intentos?}
 F -- no --&amp;gt; D
 F -- sí --&amp;gt; G[Espera Retry-After&amp;lt;br/&amp;gt;o backoff con jitter] --&amp;gt; A&lt;/pre&gt;
&lt;/figure&gt;
&lt;h2 id="por-qué-las-escrituras-no-se-reintentan-solas"&gt;¿Por qué las escrituras no se reintentan solas? &lt;a class="heading-anchor" href="#por-qu%c3%a9-las-escrituras-no-se-reintentan-solas" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;El gateway &lt;strong&gt;sí&lt;/strong&gt; deduplica: cada escritura con &lt;code&gt;Idempotency-Key&lt;/code&gt; repetida devuelve la respuesta
guardada (&lt;code&gt;idempotent_replay: true&lt;/code&gt;) en lugar de ejecutarse otra vez, en todas las rutas con llave.
La razón es otra: el SDK no puede saber &lt;strong&gt;qué versión del gateway&lt;/strong&gt; tiene enfrente, y reintentar una
escritura contra un despliegue antiguo sin esa garantía la ejecutaría dos veces. Por eso el valor
seguro por defecto es reintentar solo &lt;code&gt;GET&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Rotar el secreto</title><link>https://docs.compense.co/webhooks/rotacion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/webhooks/rotacion/</guid><description>&lt;p&gt;Rota el secreto de un endpoint cuando se filtró (o sospechas que se filtró), cuando una persona con
acceso deja el equipo, cuando lo perdiste, o de forma periódica según tu política de seguridad. La
rotación genera un secreto nuevo y lo muestra &lt;strong&gt;una sola vez&lt;/strong&gt;, igual que al crear el endpoint.&lt;/p&gt;</description></item><item><title>Billetera</title><link>https://docs.compense.co/api-reference/wallet/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/wallet/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/modulos/billetera/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Cartera</title><link>https://docs.compense.co/modulos/cartera/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/modulos/cartera/</guid><description>&lt;p&gt;El módulo &lt;code&gt;loans&lt;/code&gt; empieza donde termina &lt;a href="https://docs.compense.co/modulos/creditos/"&gt;Créditos&lt;/a&gt;: una vez desembolsado, el
préstamo tiene un plan de cuotas, intereses, mora y saldo. Desde tu sistema puedes &lt;strong&gt;consultar&lt;/strong&gt;
todo eso (para tu oficina virtual, tu &lt;em&gt;call center&lt;/em&gt; o tu ERP) y &lt;strong&gt;reportar los recaudos&lt;/strong&gt; que tu
entidad recibe por fuera de la plataforma: la taquilla, el descuento de nómina o libranza, el
archivo del banco, un abono extraordinario o el pago total.&lt;/p&gt;</description></item><item><title>Enviar dinero: P2P y Bre-B</title><link>https://docs.compense.co/recetas/transferencia-p2p-y-breb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/recetas/transferencia-p2p-y-breb/</guid><description>&lt;p&gt;En esta receta, la app de &lt;strong&gt;Nova&lt;/strong&gt; permite enviar dinero a cualquier persona con su celular, correo,
documento o alias. Si el destinatario también es usuario de Nova, el envío es una transferencia
&lt;strong&gt;P2P&lt;/strong&gt; interna e inmediata; si su llave está en otro banco, va por &lt;strong&gt;Bre-B&lt;/strong&gt;. El backend de Nova
decide el riel, muestra a quién se le va a pagar, envía dentro de la vida del token y concilia el
resultado final por webhook. Las operaciones están descritas en
&lt;a href="https://docs.compense.co/modulos/billetera/#transferencia-p2p-a-otro-afiliado"&gt;Billetera&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Errores problem+json</title><link>https://docs.compense.co/conceptos/errores/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/conceptos/errores/</guid><description>&lt;p&gt;Toda respuesta que no es &lt;code&gt;2xx&lt;/code&gt; llega como &lt;code&gt;application/problem+json&lt;/code&gt;
(&lt;a href="https://www.rfc-editor.org/rfc/rfc9457"&gt;RFC 9457&lt;/a&gt;), con la misma forma en los 13 módulos:&lt;/p&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;JSON&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://errors.compense.co/gateway/validation&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Validation error&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;422&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;detail&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;One or more fields are invalid.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;trace_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;9f1c2e7a4b8d4e6fa1c0d2e3f4a5b6c7&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;errors&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;field&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;term_months&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Input should be greater than or equal to 1&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Campo&lt;/th&gt;
 &lt;th&gt;Qué es&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;type&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;URI del tipo de error (o &lt;code&gt;about:blank&lt;/code&gt;). Sirve para distinguir casos que comparten código.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resumen corto en inglés.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;status&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;El código HTTP.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;detail&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicación. En los rechazos del motor trae el &lt;strong&gt;mensaje del motor en español&lt;/strong&gt; (por ejemplo «Saldo insuficiente»); cuando el motor no envía mensaje, el gateway cita su código (&lt;code&gt;(code: INSUFFICIENT_FUNDS)&lt;/code&gt;).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;trace_id&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Igual a la cabecera &lt;code&gt;X-Request-ID&lt;/code&gt;. &lt;strong&gt;Cítalo siempre a soporte.&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;errors&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Solo en &lt;code&gt;422&lt;/code&gt;: lista de &lt;code&gt;{field, message}&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;El gateway &lt;strong&gt;nunca&lt;/strong&gt; reenvía el cuerpo crudo ni la traza del motor: en &lt;code&gt;502/504&lt;/code&gt; el detalle es
genérico y el error real queda registrado bajo el &lt;code&gt;trace_id&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Go</title><link>https://docs.compense.co/sdks/go/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/sdks/go/</guid><description>&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Módulo&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;github.com/Appiasoft/compense-saas-sdk-go&lt;/code&gt; (paquete &lt;code&gt;compense&lt;/code&gt;, subpaquete &lt;code&gt;webhook&lt;/code&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Versión&lt;/td&gt;
 &lt;td&gt;1.1.0 (&lt;code&gt;compense.Version&lt;/code&gt;) · API v1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Requisitos&lt;/td&gt;
 &lt;td&gt;Go 1.21+ (iteradores &lt;code&gt;range-over-func&lt;/code&gt; con Go 1.23+)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Dependencias&lt;/td&gt;
 &lt;td&gt;Solo la biblioteca estándar&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Repositorio&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://github.com/Appiasoft/compense-saas-sdk-go"&gt;Appiasoft/compense-saas-sdk-go&lt;/a&gt; · guías en &lt;code&gt;docs/&lt;/code&gt; · ejemplos en &lt;code&gt;examples/&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="instalar"&gt;Instalar &lt;a class="heading-anchor" href="#instalar" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;Shell&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go get github.com/Appiasoft/compense-saas-sdk-go@v1.1.0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Repositorio privado: GOPRIVATE=github.com/Appiasoft/* y credenciales de git&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="cliente"&gt;Cliente &lt;a class="heading-anchor" href="#cliente" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;Go&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;github.com/Appiasoft/compense-saas-sdk-go&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;NewClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;COMPENSE_API_KEY&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithEnvironment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Sandbox&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// Production (defecto) | Sandbox | Dev&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithBaseURL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://gw.example.co&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// otra URL; gana sobre el entorno&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithHTTPClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myHTTPClient&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// proxies, mTLS, tracing, pruebas (no se modifica)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Second&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// por intento (solo cliente creado por el SDK)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithRetry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;RetryConfig&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;MaxAttempts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;}),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithRetryWrites&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithUserAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;horizonte-erp/2.0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;compense&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithLogger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;slog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Default&lt;/span&gt;&lt;span class="p"&gt;()),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// avisos de deprecación&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;nil&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Fatal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// *compense.ConfigError&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;El &lt;code&gt;*Client&lt;/code&gt; es seguro para uso concurrente: crea uno por llave y reutilízalo. Cada método recibe
un &lt;code&gt;context.Context&lt;/code&gt; primero (plazos y cancelación, también durante las esperas entre reintentos).&lt;/p&gt;</description></item><item><title>Reintentos y entregas</title><link>https://docs.compense.co/webhooks/reintentos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/webhooks/reintentos/</guid><description>&lt;p&gt;Cada vez que Compense intenta llevar un evento a uno de tus endpoints crea una &lt;strong&gt;entrega&lt;/strong&gt;
(&lt;em&gt;delivery&lt;/em&gt;). Si tu receptor no responde &lt;code&gt;2xx&lt;/code&gt;, la entrega se reintenta sola; y todo queda en un
&lt;strong&gt;historial&lt;/strong&gt; que puedes consultar, filtrar y, para las entregas que fallaron, &lt;strong&gt;reintentar a mano&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Cartera</title><link>https://docs.compense.co/api-reference/loans/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/loans/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/modulos/cartera/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Cita médica y recaudo EPS</title><link>https://docs.compense.co/recetas/cita-medica-y-recaudo-eps/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/recetas/cita-medica-y-recaudo-eps/</guid><description>&lt;p&gt;&lt;strong&gt;IPS Horizonte Salud&lt;/strong&gt; agenda citas desde su call center y su portal, y concilia los giros de las
EPS desde su sistema de cartera. En esta receta conectas ese recorrido con Compense: buscas un cupo,
agendas a nombre del paciente, recuerdas la cita, manejas cancelaciones y reprogramaciones, registras
la asistencia, ubicas la factura de la atención y registras el pago de la EPS sin duplicarlo. Los
detalles de cada operación están en la guía de &lt;a href="https://docs.compense.co/modulos/salud/"&gt;Salud&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Paginación</title><link>https://docs.compense.co/conceptos/paginacion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/conceptos/paginacion/</guid><description>&lt;p&gt;Las listas del gateway vienen en una de dos formas:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Forma&lt;/th&gt;
 &lt;th&gt;Campos&lt;/th&gt;
 &lt;th&gt;Parámetros&lt;/th&gt;
 &lt;th&gt;Dónde&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Page&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;count&lt;/code&gt;, &lt;code&gt;results&lt;/code&gt;, &lt;code&gt;next&lt;/code&gt;, &lt;code&gt;previous&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;page&lt;/code&gt;, &lt;code&gt;page_size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Bandejas de créditos y subsidios, cuota monetaria, PQRS, salud (citas, facturas, glosas, agenda), administrativo, entregas de webhooks, cartera&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;OffsetPage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;results&lt;/code&gt;, &lt;code&gt;limit&lt;/code&gt;, &lt;code&gt;offset&lt;/code&gt;, &lt;code&gt;has_more&lt;/code&gt;, &lt;code&gt;next_offset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;limit&lt;/code&gt;, &lt;code&gt;offset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Movimientos de la billetera y pagos de facturas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;En todos los SDK una página es &lt;strong&gt;iterable&lt;/strong&gt; sobre sus &lt;code&gt;results&lt;/code&gt; y conserva el cuerpo original en
&lt;code&gt;raw&lt;/code&gt;. Lo que cambia es cómo se piden las siguientes.&lt;/p&gt;</description></item><item><title>PQRS</title><link>https://docs.compense.co/modulos/pqrs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/modulos/pqrs/</guid><description>&lt;p&gt;Con este módulo tu CRM o tu call center gestiona las &lt;strong&gt;PQRS&lt;/strong&gt; (peticiones, quejas, reclamos y
sugerencias) de tus afiliados &lt;strong&gt;server-to-server&lt;/strong&gt;, sin entrar al panel de Compense: radicas a nombre
del afiliado, listas y filtras (incluidas las vencidas), consultas el detalle con su historial,
respondes como la entidad y cambias estado o prioridad. Las reglas son exactamente las mismas de la
app y del panel: radicado &lt;code&gt;PQRS-AAAA-NNNNNN&lt;/code&gt;, plazo legal, máquina de estados y notificación al
afiliado cuando se le responde.&lt;/p&gt;</description></item><item><title>Probar tus webhooks</title><link>https://docs.compense.co/webhooks/pruebas/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/webhooks/pruebas/</guid><description>&lt;p&gt;Antes de salir a producción quieres ver tu receptor aceptando una entrega &lt;strong&gt;firmada de verdad&lt;/strong&gt;,
rechazando una alterada y respondiendo a tiempo. Esta página cubre las cuatro herramientas para
lograrlo: el evento de prueba del API, la CLI &lt;code&gt;compense&lt;/code&gt; (&lt;code&gt;trigger&lt;/code&gt; y &lt;code&gt;listen&lt;/code&gt;), las pruebas unitarias
sin red y el sandbox de webhooks.&lt;/p&gt;</description></item><item><title>De la nómina a la contabilidad</title><link>https://docs.compense.co/recetas/nomina-a-contabilidad/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/recetas/nomina-a-contabilidad/</guid><description>&lt;p&gt;&lt;strong&gt;Caja Horizonte&lt;/strong&gt; registra las horas extra y los recargos de su personal en un sistema de turnos y
lleva su contabilidad en un ERP. En esta receta conectas ambos con el módulo
&lt;a href="https://docs.compense.co/modulos/administrativo/"&gt;Administrativo&lt;/a&gt; de Compense: cargas las novedades del mes al periodo de
nómina, esperas a que nómina lo apruebe en el panel, lees los desprendibles y el estado de la nómina
electrónica, y causas el asiento contable &lt;strong&gt;en borrador&lt;/strong&gt; para que el contador lo contabilice.&lt;/p&gt;</description></item><item><title>Montos como texto decimal</title><link>https://docs.compense.co/conceptos/montos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/conceptos/montos/</guid><description>&lt;p&gt;En el contrato, todo monto es un &lt;strong&gt;texto decimal&lt;/strong&gt;: el esquema
&lt;a href="https://docs.compense.co/api-reference/esquemas/#MoneyCOP"&gt;&lt;code&gt;MoneyCOP&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;&amp;quot;3500000&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;467009.88&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;53500.00&amp;quot;&lt;/code&gt;). Nunca
un número de punto flotante.&lt;/p&gt;

&lt;div class="codeblock"&gt;
 &lt;div class="codeblock__bar"&gt;
 &lt;span class="codeblock__lang"&gt;JSON&lt;/span&gt;
 &lt;button class="copy-btn" type="button" data-copy aria-label="Copiar el código"&gt;Copiar&lt;/button&gt;
 &lt;/div&gt;
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;amount&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;467009.88&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;currency&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;COP&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;La razón es simple: &lt;code&gt;0.1 + 0.2&lt;/code&gt; no es &lt;code&gt;0.3&lt;/code&gt; en binario. Un &lt;code&gt;float&lt;/code&gt; puede convertir &lt;code&gt;467009.88&lt;/code&gt; en
&lt;code&gt;467009.87999999995&lt;/code&gt; en algún punto del camino (tu ORM, tu serializador JSON, una hoja de
cálculo), y en dinero un centavo de diferencia rompe una conciliación. El texto viaja exacto de
punta a punta.&lt;/p&gt;</description></item><item><title>PQRS</title><link>https://docs.compense.co/api-reference/pqrs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/pqrs/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/modulos/pqrs/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Salud (IPS)</title><link>https://docs.compense.co/modulos/salud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/modulos/salud/</guid><description>&lt;p&gt;Esta guía es para el equipo técnico de una &lt;strong&gt;IPS&lt;/strong&gt; (o de una entidad con el módulo de salud
contratado) que integra su sistema con Compense &lt;strong&gt;server-to-server&lt;/strong&gt;: agenda de citas, facturación de
salud y carné de vacunación. Es el mismo gateway y el mismo modelo de seguridad que créditos o
billetera. Los ejemplos usan a &lt;strong&gt;IPS Horizonte Salud&lt;/strong&gt;, que agenda desde su call center y concilia los
giros de las EPS desde su sistema de cartera.&lt;/p&gt;</description></item><item><title>Administrativo (ERP)</title><link>https://docs.compense.co/modulos/administrativo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/modulos/administrativo/</guid><description>&lt;p&gt;Esta guía es para el equipo técnico de una entidad (caja, fintech o IPS) que integra &lt;strong&gt;su ERP&lt;/strong&gt; con
el módulo &lt;strong&gt;Gestión Administrativa&lt;/strong&gt; de Compense: talento humano, nómina, contabilidad y tesorería.
Todo es server-to-server con la llave de la entidad; no hay usuario final involucrado. Los ejemplos
usan el ERP de &lt;strong&gt;Caja Horizonte&lt;/strong&gt;, que identifica sus documentos con referencias &lt;code&gt;HORIZONTE-ERP-…&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Servicios de salud</title><link>https://docs.compense.co/api-reference/health/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/health/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/modulos/salud/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Versionado y deprecaciones</title><link>https://docs.compense.co/conceptos/deprecaciones/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/conceptos/deprecaciones/</guid><description>&lt;h2 id="versiones"&gt;Versiones &lt;a class="heading-anchor" href="#versiones" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El API&lt;/strong&gt; está en la versión mayor &lt;strong&gt;v1&lt;/strong&gt;, que va en la ruta (&lt;code&gt;/v1/gateway/...&lt;/code&gt;). Dentro de
&lt;code&gt;v1&lt;/code&gt; solo se hacen cambios &lt;strong&gt;compatibles&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Los SDK&lt;/strong&gt; siguen SemVer &lt;strong&gt;alineado con el API&lt;/strong&gt;: la versión mayor del SDK es la mayor del API
(&lt;code&gt;1.x&lt;/code&gt; habla con &lt;code&gt;v1&lt;/code&gt;). Todos están hoy en &lt;strong&gt;1.1.0&lt;/strong&gt; (&lt;a href="https://docs.compense.co/changelog/"&gt;changelog&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="cambios-compatibles-pueden-llegar-sin-aviso"&gt;Cambios compatibles (pueden llegar sin aviso) &lt;a class="heading-anchor" href="#cambios-compatibles-pueden-llegar-sin-aviso" aria-label="Enlace a esta sección"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Operaciones, módulos y eventos de webhook &lt;strong&gt;nuevos&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Campos &lt;strong&gt;nuevos&lt;/strong&gt; en las respuestas y en el &lt;code&gt;resource&lt;/code&gt; de los webhooks (la &lt;code&gt;version&lt;/code&gt; del
evento no cambia).&lt;/li&gt;
&lt;li&gt;Parámetros &lt;strong&gt;opcionales&lt;/strong&gt; nuevos.&lt;/li&gt;
&lt;li&gt;Valores nuevos en enumeraciones de &lt;strong&gt;respuesta&lt;/strong&gt; (estados, categorías).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Escribe tu integración para tolerarlos: ignora campos que no conoces, no valides el catálogo de
eventos contra una lista cerrada y trata los estados desconocidos como &amp;ldquo;pendiente de revisar&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Administrativo</title><link>https://docs.compense.co/api-reference/admin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/admin/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/modulos/administrativo/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Límites de tasa y cuotas</title><link>https://docs.compense.co/conceptos/limites-de-tasa/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/conceptos/limites-de-tasa/</guid><description>&lt;p&gt;Cada llave tiene dos límites, configurados al emitirla:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Límite&lt;/th&gt;
 &lt;th&gt;Valor por defecto&lt;/th&gt;
 &lt;th&gt;Al superarlo&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Por minuto&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;120 peticiones por minuto&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;429&lt;/code&gt; con &lt;code&gt;Retry-After&lt;/code&gt; hasta que se libere la ventana&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Cuota mensual&lt;/strong&gt; (opcional)&lt;/td&gt;
 &lt;td&gt;Sin cuota, salvo que tu contrato la fije&lt;/td&gt;
 &lt;td&gt;Avisos al cruzar umbrales y, según el contrato, &lt;code&gt;429&lt;/code&gt; hasta el siguiente período&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Si tu volumen necesita más, pídelo en el onboarding o a soporte: el límite se ajusta por llave.&lt;/p&gt;</description></item><item><title>Transacciones y sistema</title><link>https://docs.compense.co/modulos/transacciones-y-sistema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/modulos/transacciones-y-sistema/</guid><description>&lt;p&gt;Dos operaciones transversales que no pertenecen a ningún módulo de negocio, pero que toda
integración usa:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Operación&lt;/th&gt;
 &lt;th&gt;Método SDK (Python)&lt;/th&gt;
 &lt;th&gt;Scope&lt;/th&gt;
 &lt;th&gt;Para qué&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;
&lt;a class="op-link" href="https://docs.compense.co/api-reference/transactions/#getTransaction"&gt;&lt;span class="verb verb--get"&gt;GET&lt;/span&gt;&lt;code&gt;/v1/gateway/transactions/{tx_id}/&lt;/code&gt;&lt;/a&gt;
&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;client.transactions.get(tx_id)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ninguno (cualquier llave válida)&lt;/td&gt;
 &lt;td&gt;Estado y traza de una escritura que hiciste por el gateway.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;
&lt;a class="op-link" href="https://docs.compense.co/api-reference/system/#gatewayHealth"&gt;&lt;span class="verb verb--get"&gt;GET&lt;/span&gt;&lt;code&gt;/v1/gateway/health/&lt;/code&gt;&lt;/a&gt;
&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;client.system.health()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ninguno&lt;/td&gt;
 &lt;td&gt;Validar la llave: tenant y scopes. &lt;em&gt;Health check&lt;/em&gt; de tu monitoreo.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;En los demás SDK: &lt;code&gt;client.transactions.get&lt;/code&gt; / &lt;code&gt;client.system.health()&lt;/code&gt; (TypeScript),
&lt;code&gt;$client-&amp;gt;transactions-&amp;gt;get&lt;/code&gt; / &lt;code&gt;$client-&amp;gt;system-&amp;gt;health()&lt;/code&gt; (PHP), &lt;code&gt;client.Transactions.GetAsync&lt;/code&gt; /
&lt;code&gt;client.System.HealthAsync()&lt;/code&gt; (.NET) y &lt;code&gt;client.Transactions.Get&lt;/code&gt; / &lt;code&gt;client.System.Health&lt;/code&gt; (Go).&lt;/p&gt;</description></item><item><title>Webhooks</title><link>https://docs.compense.co/api-reference/webhooks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/webhooks/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/webhooks/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Sandbox</title><link>https://docs.compense.co/api-reference/sandbox/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/sandbox/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/sandbox/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Transacciones</title><link>https://docs.compense.co/api-reference/transactions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/transactions/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/modulos/transacciones-y-sistema/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Sistema</title><link>https://docs.compense.co/api-reference/system/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/system/</guid><description>&lt;p&gt;Esta página se &lt;strong&gt;genera desde el contrato&lt;/strong&gt; (&lt;code&gt;data/gateway-v1.json&lt;/code&gt;): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva &lt;code&gt;Idempotency-Key&lt;/code&gt; y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la &lt;a href="https://docs.compense.co/modulos/transacciones-y-sistema/"&gt;guía de implementación&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Esquemas</title><link>https://docs.compense.co/api-reference/esquemas/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.compense.co/api-reference/esquemas/</guid><description>&lt;p&gt;Esquemas del contrato tal como los publica el gateway. Los campos marcados como &lt;em&gt;obligatorio&lt;/em&gt; deben
viajar en la petición; &lt;code&gt;additionalProperties&lt;/code&gt; significa que el gateway reenvía al motor los campos
adicionales sin tocarlos (por eso los SDK aceptan &lt;code&gt;extra&lt;/code&gt; / &lt;code&gt;fields&lt;/code&gt;).&lt;/p&gt;</description></item></channel></rss>