Referencia del API · tag credits
Créditos
Originación de crédito: radicar solicitudes en el motor de decisión (BRE), consultarlas, decidirlas y desembolsarlas.
Esta página se genera desde el contrato (data/gateway-v1.json): cada operación muestra su verbo,
ruta, parámetros, cuerpo, respuestas, si lleva Idempotency-Key y el método equivalente en los cinco SDK.
Para el flujo de punta a punta con ejemplos completos, ve a la guía de implementación.
Operaciones del tag credits #
Descripción en el contrato: Credit application intake, decisioning and disbursement (→ BRE pipeline).
| Método | Ruta | Operación | Scope | Idem. |
|---|---|---|---|---|
| POST | /v1/gateway/credits/application/ | Submit a credit (→ BRE pipeline) | credits:submit | recomendada |
| GET | /v1/gateway/credits/applications/ | Credit application inbox | credits:read | — |
| GET | /v1/gateway/credits/applications/{app_id}/ | Credit application detail | credits:read | — |
| POST | /v1/gateway/credits/applications/{app_id}/decision/ | Approve / reject a credit | credits:decide | recomendada |
| POST | /v1/gateway/credits/applications/{app_id}/disburse/ | Disburse a credit | credits:disburse | recomendada |
Submit a credit (→ BRE pipeline) #
POST/v1/gateway/credits/application/
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
Idempotency-Key | cabecera | string | Client-generated key that makes a write safely retryable. Replaying the same key returns the original result with idempotent_replay: true; a replay while the original is still in flight returns 409. Ej.: horizonte-2026-06-26-credit-000123 |
Cuerpo de la petición
Tipo de contenido: application/json · obligatorio
Esquema CreditApplicationIn — Credit application radicada into the BRE pipeline. Proxied to the engine as-is.
| Campo | Tipo | Descripción |
|---|---|---|
afiliado obligatorio | AffiliateRef | |
amount obligatorio | MoneyCOP | |
external_reference obligatorio | string | Caja-side application id; echoed back and used for idempotency correlation. Ej.: "HORIZONTE-CRED-2026-000123" |
product_code obligatorio | string | Ej.: "LIBRANZA_12M" |
purpose | string (nullable) | Ej.: "Compra de cartera" |
term_months obligatorio | integer | Ej.: 12 Rango 1–120. |
Acepta campos adicionales (additionalProperties): se reenvían al motor sin cambios.
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
| 200 | Accepted; transaction enqueued / processed. | TransactionEnvelope
application/json |
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
| 400 | Malformed request. | about:blank |
| 401 | Missing or invalid API key. | about:blank |
| 403 | The key is valid but lacks the required scope, or the source IP is not allow-listed. | about:blank |
| 404 | The requested resource does not exist. | about:blank |
| 409 | Idempotency conflict — same key, original still processing. | https://errors.compense.co/gateway/idempotency-conflict |
| 422 | Request body failed validation. | https://errors.compense.co/gateway/validation |
| 429 | Per-key rate limit or monthly quota exceeded; see Retry-After. | https://errors.compense.co/gateway/rate-limited |
| 500 | Unexpected gateway error; quote the trace_id to support. | about:blank |
| 502 | The processing engine returned an error. | https://errors.compense.co/gateway/upstream-error |
| 504 | The processing engine did not respond in time. | https://errors.compense.co/gateway/upstream-error |
Ver Errores problem+json para la excepción equivalente en cada SDK.
Ejemplo
client.credits.submit_application()client.credits.submitApplication()$client->credits->submitApplication()await client.Credits.SubmitApplicationAsync()client.Credits.SubmitApplication(ctx, …)curl -X POST "https://sandbox.dev.compense.co/gw/v1/gateway/credits/application/" \
-H "X-API-Key: $COMPENSE_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"afiliado": {
"document_type": "CC",
"document_number": "1032456789"
},
"product_code": "LIBRANZA_12M",
"amount": "3500000",
"term_months": 12,
"purpose": "Compra de cartera",
"external_reference": "HORIZONTE-CRED-2026-000123"
}'Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.
Credit application inbox #
GET/v1/gateway/credits/applications/
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
page | query | integer | |
page_size | query | integer | |
search | query | string | |
status | query | string |
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
| 200 | Paginated credit applications. | Page
application/json |
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502) — application/problem+json
| 400 | Malformed request. | about:blank |
| 401 | Missing or invalid API key. | about:blank |
| 403 | The key is valid but lacks the required scope, or the source IP is not allow-listed. | about:blank |
| 404 | The requested resource does not exist. | about:blank |
| 409 | Idempotency conflict — same key, original still processing. | https://errors.compense.co/gateway/idempotency-conflict |
| 422 | Request body failed validation. | https://errors.compense.co/gateway/validation |
| 429 | Per-key rate limit or monthly quota exceeded; see Retry-After. | https://errors.compense.co/gateway/rate-limited |
| 500 | Unexpected gateway error; quote the trace_id to support. | about:blank |
| 502 | The processing engine returned an error. | https://errors.compense.co/gateway/upstream-error |
Ver Errores problem+json para la excepción equivalente en cada SDK.
Ejemplo
client.credits.list_applications()client.credits.listApplications()$client->credits->listApplications()await client.Credits.ListApplicationsAsync()client.Credits.ListApplications(ctx, …)curl "https://sandbox.dev.compense.co/gw/v1/gateway/credits/applications/" \
-H "X-API-Key: $COMPENSE_API_KEY"Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.
Credit application detail #
GET/v1/gateway/credits/applications/{app_id}/
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
app_id obligatorio | ruta | string | Credit application id. Ej.: CRED-2026-000123 |
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
| 200 | Credit application detail. | object application/json |
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
| 400 | Malformed request. | about:blank |
| 401 | Missing or invalid API key. | about:blank |
| 403 | The key is valid but lacks the required scope, or the source IP is not allow-listed. | about:blank |
| 404 | The requested resource does not exist. | about:blank |
| 409 | Idempotency conflict — same key, original still processing. | https://errors.compense.co/gateway/idempotency-conflict |
| 422 | Request body failed validation. | https://errors.compense.co/gateway/validation |
| 429 | Per-key rate limit or monthly quota exceeded; see Retry-After. | https://errors.compense.co/gateway/rate-limited |
| 500 | Unexpected gateway error; quote the trace_id to support. | about:blank |
| 502 | The processing engine returned an error. | https://errors.compense.co/gateway/upstream-error |
| 504 | The processing engine did not respond in time. | https://errors.compense.co/gateway/upstream-error |
Ver Errores problem+json para la excepción equivalente en cada SDK.
Ejemplo
client.credits.get_application()client.credits.getApplication()$client->credits->getApplication()await client.Credits.GetApplicationAsync()client.Credits.GetApplication(ctx, …)curl "https://sandbox.dev.compense.co/gw/v1/gateway/credits/applications/CRED-2026-000123/" \
-H "X-API-Key: $COMPENSE_API_KEY"Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.
Approve / reject a credit #
POST/v1/gateway/credits/applications/{app_id}/decision/
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
app_id obligatorio | ruta | string | Credit application id. Ej.: CRED-2026-000123 |
Idempotency-Key | cabecera | string | Client-generated key that makes a write safely retryable. Replaying the same key returns the original result with idempotent_replay: true; a replay while the original is still in flight returns 409. Ej.: horizonte-2026-06-26-credit-000123 |
Cuerpo de la petición
Tipo de contenido: application/json · obligatorio
Esquema CreditDecisionIn
| Campo | Tipo | Descripción |
|---|---|---|
approved_amount | MoneyCOP | Required when decision is APPROVE. |
decision obligatorio | string | Valores: APPROVE, REJECT. Ej.: "APPROVE" |
reason | string (nullable) | Ej.: "Cumple capacidad de pago." |
Acepta campos adicionales (additionalProperties): se reenvían al motor sin cambios.
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
| 200 | Accepted; transaction enqueued / processed. | TransactionEnvelope
application/json |
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
| 400 | Malformed request. | about:blank |
| 401 | Missing or invalid API key. | about:blank |
| 403 | The key is valid but lacks the required scope, or the source IP is not allow-listed. | about:blank |
| 404 | The requested resource does not exist. | about:blank |
| 409 | Idempotency conflict — same key, original still processing. | https://errors.compense.co/gateway/idempotency-conflict |
| 422 | Request body failed validation. | https://errors.compense.co/gateway/validation |
| 429 | Per-key rate limit or monthly quota exceeded; see Retry-After. | https://errors.compense.co/gateway/rate-limited |
| 500 | Unexpected gateway error; quote the trace_id to support. | about:blank |
| 502 | The processing engine returned an error. | https://errors.compense.co/gateway/upstream-error |
| 504 | The processing engine did not respond in time. | https://errors.compense.co/gateway/upstream-error |
Ver Errores problem+json para la excepción equivalente en cada SDK.
Ejemplo
client.credits.decide_application()client.credits.decideApplication()$client->credits->decideApplication()await client.Credits.DecideApplicationAsync()client.Credits.DecideApplication(ctx, …)curl -X POST "https://sandbox.dev.compense.co/gw/v1/gateway/credits/applications/CRED-2026-000123/decision/" \
-H "X-API-Key: $COMPENSE_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"decision": "APPROVE",
"approved_amount": "3500000",
"reason": "Cumple capacidad de pago."
}'Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.
Disburse a credit #
POST/v1/gateway/credits/applications/{app_id}/disburse/
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
app_id obligatorio | ruta | string | Credit application id. Ej.: CRED-2026-000123 |
Idempotency-Key | cabecera | string | Client-generated key that makes a write safely retryable. Replaying the same key returns the original result with idempotent_replay: true; a replay while the original is still in flight returns 409. Ej.: horizonte-2026-06-26-credit-000123 |
Respuestas
| Código | Descripción | Cuerpo |
|---|---|---|
| 200 | Accepted; transaction enqueued / processed. | TransactionEnvelope
application/json |
Errores posibles (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
| 400 | Malformed request. | about:blank |
| 401 | Missing or invalid API key. | about:blank |
| 403 | The key is valid but lacks the required scope, or the source IP is not allow-listed. | about:blank |
| 404 | The requested resource does not exist. | about:blank |
| 409 | Idempotency conflict — same key, original still processing. | https://errors.compense.co/gateway/idempotency-conflict |
| 422 | Request body failed validation. | https://errors.compense.co/gateway/validation |
| 429 | Per-key rate limit or monthly quota exceeded; see Retry-After. | https://errors.compense.co/gateway/rate-limited |
| 500 | Unexpected gateway error; quote the trace_id to support. | about:blank |
| 502 | The processing engine returned an error. | https://errors.compense.co/gateway/upstream-error |
| 504 | The processing engine did not respond in time. | https://errors.compense.co/gateway/upstream-error |
Ver Errores problem+json para la excepción equivalente en cada SDK.
Ejemplo
client.credits.disburse_application()client.credits.disburseApplication()$client->credits->disburseApplication()await client.Credits.DisburseApplicationAsync()client.Credits.DisburseApplication(ctx, …)curl -X POST "https://sandbox.dev.compense.co/gw/v1/gateway/credits/applications/CRED-2026-000123/disburse/" \
-H "X-API-Key: $COMPENSE_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"Los métodos de cada SDK salen de su suite de paridad con el contrato. El cURL va contra el sandbox; los valores <campo> son marcadores.