API reference
Schemas
The contract’s reusable schemas (components.schemas): request bodies, responses, transaction envelope, Problem and types such as MoneyCOP.
The contract’s schemas exactly as the gateway publishes them. Fields marked as required must
be sent in the request; additionalProperties means the gateway forwards any additional fields to the engine
untouched (which is why the SDKs accept extra / fields).
AdminEmployeeIn #
Create or update an employee (upsert by id_number). Bank details are only accepted on creation; changing them later is done in the panel. user_id is not accepted.
| Field | Type | Description |
|---|---|---|
area_id | string | |
bank_account_number | string | |
bank_account_type | string | |
bank_name | string | |
email_work | string | |
eps_code | string | |
first_name | string | E.g.: "Laura" |
hire_date | string (date) | E.g.: "2025-02-01" |
id_number required | string | E.g.: "1032456789" |
id_type | string | E.g.: "CC" |
last_name | string | E.g.: "Pérez" |
pension_fund_code | string | |
phone | string | |
position_id | string |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
AdminEntryIn #
Journal entry in DRAFT. external_id (the ERP id) makes it idempotent in the engine. post: true is rejected: the accountant posts it in the panel.
| Field | Type | Description |
|---|---|---|
date required | string (date) | |
description required | string | |
external_id | string | E.g.: "ERP-AS-2026-000123" |
lines required | array of object | |
reference | string | |
third_party | string | Third-party id or document. |
voucher_type | string | E.g.: "CC" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
AdminHrNoveltyIn #
Human resources novelty. It remains SOLICITADA until human resources validates it.
| Field | Type | Description |
|---|---|---|
certificate_number | string | |
days | integer | |
diagnosis_code | string | ICD-10; never returned through the API. |
employee required | string | Employee id or document. E.g.: "1032456789" |
end_date | string (date) | |
hours | number | |
issuing_entity | string | |
reason | string | |
start_date required | string (date) | |
type_code required | string | E.g.: "INCAPACIDAD_COMUN" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
AdminObject #
Administrative engine object (the same payload the panel uses).
Type: object
AdminPayrollNovelty #
| Field | Type | Description |
|---|---|---|
amount | number | string | Amount in COP (amount-based concepts). |
concept_code | string | E.g.: "HED" |
date | string (date) | |
description | string | |
employee | string | E.g.: "1032456789" |
end_date | string (date) | |
quantity | number | string | Hours or days (hour-based concepts). |
recurring | boolean |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
AdminPayrollNoveltyIn #
A single payroll adjustment (AdminPayrollNovelty fields at the root) or a batch in items (max. 500, all or nothing). period_id is optional: it validates that the period is open and that the date falls within it; without date, the period start is used.
| Field | Type | Description |
|---|---|---|
amount | number | string | |
concept_code | string | |
date | string (date) | |
employee | string | |
items | array of AdminPayrollNovelty | |
period_id | string | |
quantity | number | string |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
AdminResultList #
Administrative engine list (results; count on paginated ones).
| Field | Type | Description |
|---|---|---|
count | integer | |
results | array of object |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
AdminStatementIn #
Bank statement: lines (JSON) or content (CSV with date and amount).
| Field | Type | Description |
|---|---|---|
bank_account required | string | |
closing_balance | number | string | |
content | string | |
date_from | string (date) | |
date_to | string (date) | |
lines | array of object | |
opening_balance | number | string |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
AdminTaxComputeIn #
| Field | Type | Description |
|---|---|---|
date | string (date) | |
items required | array of object | |
third_party | string |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
AdminThirdPartyIn #
Create or update a third party (upsert by document type and number). id_type accepts the DIAN code (31, 13…) or the alias (NIT, CC, CE, PA…). Bank details: panel only.
| Field | Type | Description |
|---|---|---|
business_name | string | |
email | string | |
first_last_name | string | |
first_name | string | |
id_number required | string | E.g.: "900123456" |
id_type required | string | E.g.: "NIT" |
is_customer | boolean | |
is_supplier | boolean | |
phone | string | |
responsibilities | array of string | |
tax_regime | string |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
AdminTreasuryDocIn #
Collection / outgoing payment (third_party, bank_account id or number, date, amount, method, reference, applications) or billing statement (third_party, issue_date, description, income_account, subtotal, iva_concept). Always in DRAFT.
| Field | Type | Description |
|---|---|---|
amount | number | string | |
applications | array of object | |
bank_account | string | |
date | string (date) | |
description | string | |
income_account | string | |
issue_date | string (date) | |
method | string | E.g.: "TRANSFERENCIA" |
reference | string | |
subtotal | number | string | |
third_party required | string |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
AffiliateBatchResult #
| Field | Type | Description |
|---|---|---|
accepted required | integer | E.g.: 2 |
created required | integer | E.g.: 1 |
errors | array of object | |
errors_count | integer | E.g.: 0 |
rejected required | integer | E.g.: 0 |
updated required | integer | E.g.: 1 |
AffiliateLookup #
| Field | Type | Description |
|---|---|---|
affiliate | object | |
document_number required | string | E.g.: "1032456789" |
exists required | boolean | E.g.: true |
AffiliateRecordIn #
A single affiliate row. Keys are normalized at the edge, so both Spanish source headers (tipo_documento, documento, nombres) and canonical keys are accepted; unknown keys are ignored.
| Field | Type | Description |
|---|---|---|
category | string (nullable) | Caja Horizonte affiliation category (A/B/C). E.g.: "A" |
document_number | string | E.g.: "1032456789" |
document_type | string | Values: CC, CE, TI, PA, RC, NIT, PEP, PPT. E.g.: "CC" |
email | string (nullable) | E.g.: "maria.gomez@example.co" |
first_name | string | E.g.: "María" |
last_name | string | E.g.: "Gómez" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"category": "A",
"document_number": "1032456789",
"document_type": "CC",
"email": "maria.gomez@example.co",
"first_name": "María",
"last_name": "Gómez"
}AffiliateRef #
Minimal reference to an affiliate by national document.
| Field | Type | Description |
|---|---|---|
document_number required | string | E.g.: "1032456789" |
document_type required | string | Values: CC, CE, TI, PA, RC, NIT, PEP, PPT. E.g.: "CC" |
CreditApplicationIn #
Credit application submitted into the BRE pipeline. Proxied to the engine as-is.
| Field | Type | Description |
|---|---|---|
afiliado required | AffiliateRef | |
amount required | MoneyCOP | |
external_reference required | string | Caja-side application id; echoed back and used for idempotency correlation. E.g.: "HORIZONTE-CRED-2026-000123" |
product_code required | string | E.g.: "LIBRANZA_12M" |
purpose | string (nullable) | E.g.: "Compra de cartera" |
term_months required | integer | E.g.: 12 Range 1–120. |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"afiliado": {
"document_number": "1032456789",
"document_type": "CC"
},
"amount": "3500000",
"external_reference": "HORIZONTE-CRED-2026-000123",
"product_code": "LIBRANZA_12M",
"purpose": "Compra de cartera",
"term_months": 12
}CreditDecisionIn #
| Field | Type | Description |
|---|---|---|
approved_amount | MoneyCOP | Required when decision is APPROVE. |
decision required | string | Values: APPROVE, REJECT. E.g.: "APPROVE" |
reason | string (nullable) | E.g.: "Cumple capacidad de pago." |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"approved_amount": "3500000",
"decision": "APPROVE",
"reason": "Cumple capacidad de pago."
}FieldError #
A single field-level validation failure.
| Field | Type | Description |
|---|---|---|
field required | string | E.g.: "term_months" |
message required | string | E.g.: "Input should be greater than or equal to 1" |
FxConvertIn #
Execute a currency conversion (moves money — idempotency-key recommended).
| Field | Type | Description |
|---|---|---|
amount required | MoneyCOP | |
buy_currency required | string | E.g.: "USD" |
document | string | E.g.: "1032456789" |
quote_id | string (nullable) | A quote id returned by /fx/quote/. E.g.: "fxq_abc123" |
sell_currency required | string | E.g.: "COP" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"amount": "1000000",
"buy_currency": "USD",
"document": "1032456789",
"quote_id": "fxq_abc123",
"sell_currency": "COP"
}FxQuote #
Indicative pricing. The rate is re-resolved when the conversion executes.
| Field | Type | Description |
|---|---|---|
amount required | number | E.g.: 100 |
converted_amount required | number | E.g.: 400000 |
from_currency required | string | E.g.: "USD" |
rate required | number | E.g.: 4000 |
to_currency required | string | E.g.: "COP" |
FxQuoteIn #
Request an indicative FX quote (moves no money, not billable).
| Field | Type | Description |
|---|---|---|
amount required | MoneyCOP | |
buy_currency required | string | E.g.: "USD" |
document | string | E.g.: "1032456789" |
sell_currency required | string | E.g.: "COP" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"amount": "1000000",
"buy_currency": "USD",
"document": "1032456789",
"sell_currency": "COP"
}GatewayHealth #
| Field | Type | Description |
|---|---|---|
scopes required | array of string | E.g.: ["credits:read","credits:submit"] |
status required | string | E.g.: "ok" |
tenant required | string | E.g.: "horizonte" |
LoanCertificate #
Debt certificate as of a date; paz_y_salvo=true when the loan is paid in full.
| Field | Type | Description |
|---|---|---|
as_of | string (date) | |
loan_id | string | |
outstanding_principal | string | number | |
paz_y_salvo | boolean | |
pdf_url | string (nullable) | |
status | string | |
total_debt | string | number |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
LoanCollectionIn #
Collection reported by the entity. The reference is the receipt’s natural key (loan + channel + reference): resending it returns the same receipt; with a different amount → 409.
| Field | Type | Description |
|---|---|---|
amount | string | number | Amount in COP. Optional for payoff. E.g.: "195000" |
channel | string | Values: CASH, ACH_LIBRANZA, BANK_FILE, MANUAL. E.g.: "CASH" |
document | string | Optional: if sent, the loan must belong to that affiliate. E.g.: "1032456789" |
installment_number | integer | Payments only: installment to pay first. |
mode | string | Extra-payment only. Values: reduce_term, reduce_installment. |
reference required | string | E.g.: "REC-2026-001" Max. 100 characters. |
value_date | string (date) | Value date (not in the future). |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"amount": "195000",
"channel": "CASH",
"document": "1032456789",
"reference": "REC-2026-001"
}LoanInstallment #
Payment plan installment (the same format the affiliate sees in the app).
| Field | Type | Description |
|---|---|---|
amount_due | string | Amount in COP as a decimal string. E.g.: "195000.00" |
blocked_reason | string | |
days_overdue | integer | |
fees | string | Amount in COP as a decimal string. E.g.: "195000.00" |
insurance | string | Amount in COP as a decimal string. E.g.: "195000.00" |
interest | string | Amount in COP as a decimal string. E.g.: "195000.00" |
is_overdue | boolean | |
iva | string | Amount in COP as a decimal string. E.g.: "195000.00" |
number | integer | |
payable | boolean | |
pending_amount | string | Amount in COP as a decimal string. E.g.: "195000.00" |
principal | string | Amount in COP as a decimal string. E.g.: "195000.00" |
scheduled_date | string (date) | |
status | string | PENDING | PARTIAL | OVERDUE | PAID | CANCELLED E.g.: "PENDING" |
total_amount | string | Amount in COP as a decimal string. E.g.: "195000.00" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
LoanInstallmentList #
| Field | Type | Description |
|---|---|---|
count | integer | |
next_payable_number | integer (nullable) | |
results | array of LoanInstallment |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
LoanList #
| Field | Type | Description |
|---|---|---|
count required | integer | |
document | string | |
results required | array of LoanSummary |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
LoanNextInstallment #
| Field | Type | Description |
|---|---|---|
amount_due | string | Amount in COP as a decimal string. E.g.: "195000.00" |
days_overdue | integer | E.g.: 0 |
due_date | string (nullable) | E.g.: "2026-11-15" |
is_overdue | boolean | |
number | integer | E.g.: 4 |
pending_amount | string | Amount in COP as a decimal string. E.g.: "195000.00" |
LoanQuote #
Quote (today’s full payoff, extra payment or installment breakdown).
Type: object
LoanSummary #
Summary of a disbursed loan (engine: GwLoans._summary).
| Field | Type | Description |
|---|---|---|
approved_amount | string | Amount in COP as a decimal string. E.g.: "195000.00" |
currency | string | E.g.: "COP" |
days_overdue | integer | |
holder | object | |
installments_paid | integer | |
installments_total | integer | |
loan_id required | string | E.g.: "3f1c2e7a-4b8d-4e6f-a1c0-d2e3f4a5b6c7" |
loan_number | string (nullable) | E.g.: "CRD-00123" |
monthly_payment | string | Amount in COP as a decimal string. E.g.: "195000.00" |
next_installment | LoanNextInstallment | |
outstanding_principal required | string | Amount in COP as a decimal string. E.g.: "195000.00" |
overdue_amount | string | Amount in COP as a decimal string. E.g.: "195000.00" |
overdue_installments | integer | |
product | string (nullable) | |
status required | string | ACTIVE | DISBURSED | IN_ARREARS | DEFAULTED | RESTRUCTURED | IN_RECOVERY | PAID_OFF | WRITTEN_OFF E.g.: "ACTIVE" |
term_months | integer (nullable) |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
MonetaryAllowanceGenerateIn #
Evaluate eligibility and generate the period’s monetary allowance for the compensation fund.
| Field | Type | Description |
|---|---|---|
dry_run | boolean | Evaluate without persisting disbursements. E.g.: false |
period required | string | Settlement period YYYY-MM. E.g.: "2026-06" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"dry_run": false,
"period": "2026-06"
}MoneyCOP #
A monetary amount in Colombian pesos (COP), as a decimal string to avoid float drift.
Type: string
· pattern ^\d+(\.\d{1,2})?$ · e.g. "3500000"
Page #
DRF-style paginated list proxied from the processing engine.
| Field | Type | Description |
|---|---|---|
count required | integer | E.g.: 42 |
next | string (nullable) | |
previous | string (nullable) | |
results required | array of object |
Pqrs #
A PQRS. affiliate.name is masked; description, responses, attachments and history are present on detail and write responses.
| Field | Type | Description |
|---|---|---|
affiliate | object | E.g.: {"document_number":"1032456789","name":"A*** M***"} |
attachments | array of object | |
created_at | string (nullable) | |
deadline | string (nullable) | |
description | string | |
electronic_notification_consented | boolean | |
external_reference | string (nullable) | |
history | array of object | Status history: from/to, when, source (app|panel|gateway) and actor. |
id required | string | |
is_overdue | boolean | |
issue_type | string | Values: petition, complaint, claim, suggestion. |
origin_channel | string | |
priority | string | |
radicado required | string | E.g.: "PQRS-2026-000123" |
resolved_at | string (nullable) | |
responses | array of object | |
service_area | string | |
status required | string | Values: opened, in_progress, escalated, resolved, closed. |
subject | string |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
PqrsPage #
| Field | Type | Description |
|---|---|---|
count required | integer | |
page | integer | |
page_size | integer | |
results required | array of Pqrs |
PqrsRespondIn #
| Field | Type | Description |
|---|---|---|
agent | string | Max. 80 characters. |
is_final | boolean | A final response leaves the PQRS resolved. |
response_text required | string | E.g.: "Se reversó el cobro el 28-oct." |
PqrsStats #
| Field | Type | Description |
|---|---|---|
by_service_area required | object | |
by_status required | object | |
by_type required | object | |
overdue required | integer | |
total required | integer |
PqrsStatusIn #
Change status following the PQRS state machine: closed is terminal, resolved can only be closed; repeating the current status is an idempotent no-op.
| Field | Type | Description |
|---|---|---|
agent | string | Max. 80 characters. |
note | string | Max. 1000 characters. |
priority | string | Values: low, normal, high, urgent. |
status required | string | Values: opened, in_progress, escalated, resolved, closed. |
PqrsSubmitIn #
File a PQRS on behalf of an affiliate. The radicado (PQRS-AAAA-NNNNNN) and the legal deadline (15 business days, Ley 1755/2015) are set by the engine.
| Field | Type | Description |
|---|---|---|
agent | string | Your agent/user reference (traceability). E.g.: "ana.p" Max. 80 characters. |
description required | string | E.g.: "El afiliado reporta un cobro que no reconoce." |
document required | string | Affiliate national document. E.g.: "1032456789" |
electronic_notification_consented required | boolean | REQUIRED: whether the affiliate accepted electronic notification (Ley 1437 art. 56). |
external_reference | string | Case id in your CRM. E.g.: "CRM-88231" Max. 100 characters. |
issue_type required | string | Values: petition, complaint, claim, suggestion. |
origin_channel | string | Values: web, call_center, phone, email, in_person, chat, whatsapp, crm, api, other. |
related_credit_application_id | string (nullable) | |
related_credit_id | string | |
related_subsidy_active_id | string | |
related_subsidy_application_id | string (nullable) | |
related_type | string (nullable) | Values: credit_application, subsidy_application, credit, subsidy, . |
service_area required | string | Values: subsidies, credits, health, marketplace, benefits, wallet, payments, general. |
subject required | string | E.g.: "Cobro no reconocido" Max. 255 characters. |
Example
{
"agent": "ana.p",
"description": "The affiliate reports a 45.000 charge they don't recognize.",
"document": "1032456789",
"electronic_notification_consented": true,
"external_reference": "CRM-88231",
"issue_type": "claim",
"origin_channel": "call_center",
"service_area": "wallet",
"subject": "Cobro no reconocido"
}Problem #
RFC 9457 application/problem+json error envelope (GW-006). The same shape is returned for every error; trace_id equals the X-Request-ID response header and should be quoted to support.
| Field | Type | Description |
|---|---|---|
detail | string (nullable) | E.g.: "One or more fields are invalid." |
errors | array (nullable) | Present on 422 validation failures. |
status required | integer | E.g.: 422 |
title required | string | E.g.: "Validation error" |
trace_id required | string | E.g.: "9f1c2e7a4b8d4e6fa1c0d2e3f4a5b6c7" |
type | string (uri) | Stable, dereferenceable problem-type URI. E.g.: "https://errors.compense.co/gateway/validation" |
SubsidyApplicationIn #
Statutory subsidy application. subsidy_type is the path segment (e.g. unemployment).
| Field | Type | Description |
|---|---|---|
afiliado required | AffiliateRef | |
external_reference | string | E.g.: "HORIZONTE-SUB-2026-000045" |
period | string | Settlement period YYYY-MM. E.g.: "2026-06" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"afiliado": {
"document_number": "1032456789",
"document_type": "CC"
},
"external_reference": "HORIZONTE-SUB-2026-000045",
"period": "2026-06"
}SubsidyDecisionIn #
| Field | Type | Description |
|---|---|---|
decision required | string | Values: APPROVE, REJECT. E.g.: "APPROVE" |
reason | string (nullable) | E.g.: "Cumple requisitos de permanencia." |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"decision": "APPROVE",
"reason": "Cumple requisitos de permanencia."
}TransactionEnvelope #
Standard async-write acknowledgement. data carries the engine response verbatim; idempotent_replay is true when a prior request with the same Idempotency-Key is being replayed.
| Field | Type | Description |
|---|---|---|
data required | object | |
idempotent_replay | boolean | E.g.: false |
module required | string | E.g.: "credits" |
status required | string | Values: success. E.g.: "success" |
transaction_id required | string | E.g.: "a1b2c3d4-0000-4a1b-9c2d-000000000001" |
warnings | array of string |
TransactionStatus #
Persisted gateway transaction log record.
| Field | Type | Description |
|---|---|---|
history | array of string | E.g.: ["received","submitted"] |
module | string | E.g.: "credits" |
reference | string (nullable) | E.g.: "CRED-2026-000123" |
status | string | E.g.: "PROCESSING" |
transaction_id | string | E.g.: "a1b2c3d4-0000-4a1b-9c2d-000000000001" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
WalletAccount #
One account owned by the holder (primary wallet, pocket, or savings goal).
| Field | Type | Description |
|---|---|---|
available_balance required | number | Balance net of holds; this is the spendable figure. E.g.: 120000 |
balance required | number | E.g.: 150000 |
currency required | string | E.g.: "COP" |
id required | string | E.g.: "3f1a2b3c-0000-4a1b-9c2d-000000000001" |
is_primary required | boolean | E.g.: false |
kind required | string | E.g.: "POCKET" |
name required | string | E.g.: "Bolsillo" |
status required | string | E.g.: "ACTIVE" |
target_amount | number | E.g.: 500000 |
target_date | string (nullable) | E.g.: "2026-12-31" |
WalletAccountCreateIn #
Create a sub-account (pocket / savings / goal) for the wallet holder.
| Field | Type | Description |
|---|---|---|
document required | string | National document of the wallet holder. E.g.: "1032456789" |
kind required | string | Values: pocket, savings, goal. E.g.: "pocket" |
name | string | E.g.: "Ahorro vacaciones" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"document": "1032456789",
"kind": "pocket",
"name": "Ahorro vacaciones"
}WalletAccountList #
| Field | Type | Description |
|---|---|---|
accounts required | array of WalletAccount |
WalletBalance #
| Field | Type | Description |
|---|---|---|
available_cash | number | Available balance (net of holds). E.g.: 150000 |
currency | string | E.g.: "COP" |
pending_amount | number | E.g.: 0 |
restricted_amount | number | E.g.: 0 |
total | number | E.g.: 150000 |
WalletBillInquiryIn #
| Field | Type | Description |
|---|---|---|
barcode | string | Alternative to biller_code+reference (GS1). |
biller_code | string | E.g.: "EPM" |
document required | string | E.g.: "1032456789" |
reference | string | E.g.: "123456789" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
WalletBillPayIn #
| Field | Type | Description |
|---|---|---|
amount required | MoneyCOP | |
biller_code required | string | E.g.: "EPM" |
document required | string | E.g.: "1032456789" |
reference required | string | E.g.: "123456789" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
WalletBillPayment #
| Field | Type | Description |
|---|---|---|
amount | string | Decimal amount as a string. E.g.: "50000.00" |
approval_number | string (nullable) | |
biller | object | |
created_at | string (date-time) | |
currency | string | |
id | string | |
kind | string | Values: BILL, TOPUP. |
status | string | E.g.: "APPROVED" |
transaction_id | string (nullable) |
WalletBillPaymentPage #
| Field | Type | Description |
|---|---|---|
has_more | boolean | |
limit | integer | |
next_offset | integer (nullable) | |
offset | integer | |
results | array of WalletBillPayment |
WalletBillerList #
| Field | Type | Description |
|---|---|---|
billers | array of object |
WalletBreBLimits #
| Field | Type | Description |
|---|---|---|
available_today | number (nullable) | |
currency | string | E.g.: "COP" |
max_daily_amount | number (nullable) | |
max_monthly_amount | number (nullable) | |
max_per_transaction | number (nullable) | |
tier | string | |
used_month | number | |
used_today | number |
WalletBreBResolveIn #
| Field | Type | Description |
|---|---|---|
document required | string | E.g.: "1032456789" |
key_type required | string | Values: PHONE, DOCUMENT, EMAIL, ALIAS. |
value required | string | E.g.: "3109876543" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
WalletCard #
Non-sensitive card metadata. PAN/CVV are never returned here.
| Field | Type | Description |
|---|---|---|
card_type required | string | E.g.: "DEBIT" |
currency | string | E.g.: "COP" |
expiry_month | integer | E.g.: 12 |
expiry_year | integer | E.g.: 2030 |
form_factor required | string | E.g.: "VIRTUAL" |
id required | string | E.g.: "card-9" |
is_default | boolean | E.g.: true |
last_four | string | E.g.: "4242" |
name_on_card | string | E.g.: "JUAN PEREZ" |
network | string | E.g.: "VISA" |
status required | string | E.g.: "ACTIVE" |
WalletCardIssueIn #
Issue a card (debit; virtual or physical) for the wallet holder.
| Field | Type | Description |
|---|---|---|
document required | string | E.g.: "1032456789" |
form_factor | string | Values: virtual, physical. E.g.: "virtual" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"document": "1032456789",
"form_factor": "virtual"
}WalletCardList #
| Field | Type | Description |
|---|---|---|
cards required | array of WalletCard |
WalletCardStatusIn #
Change a card’s state (freeze / unfreeze / block).
| Field | Type | Description |
|---|---|---|
document required | string | E.g.: "1032456789" |
status required | string | Values: freeze, unfreeze, block. E.g.: "freeze" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"document": "1032456789",
"status": "freeze"
}WalletCardTransactionList #
Movements on one card, most recent first.
| Field | Type | Description |
|---|---|---|
transactions required | array of object |
WalletDocument #
Document id of the wallet holder; the engine resolves the member from it.
Type: string
· e.g. "1090123456"
WalletInvoice #
| Field | Type | Description |
|---|---|---|
allows_partial | boolean | |
amount | string | Decimal amount as a string. E.g.: "50000.00" |
biller | object | |
currency | string | E.g.: "COP" |
due_date | string (nullable) | |
holder_name | string | Bill holder, masked. |
max_amount | string | Decimal amount as a string. E.g.: "50000.00" |
min_amount | string | Decimal amount as a string. E.g.: "50000.00" |
period | string (nullable) | |
reference | string | |
status | string | E.g.: "PENDING" |
WalletResolution #
Masked recipient and send token (short-lived, 300 s).
| Field | Type | Description |
|---|---|---|
display_name | string | E.g.: "Ma*** Pé***" |
expires_in | integer | E.g.: 300 |
found | boolean | |
institution_name | string | |
is_local | boolean | |
key_display | string | |
resolution_token | string |
WalletResolveP2PIn #
| Field | Type | Description |
|---|---|---|
alias required | string | Recipient’s mobile number, email, document or @alias. E.g.: "3001234567" |
document required | string | Document of the sending holder. E.g.: "1032456789" |
key_type | string | Optional: disambiguates a string of digits. Values: PHONE, EMAIL, DOCUMENT, ALIAS. |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
WalletTopupIn #
| Field | Type | Description |
|---|---|---|
amount required | MoneyCOP | |
carrier required | string | E.g.: "CLARO" |
document required | string | E.g.: "1032456789" |
phone_number required | string | E.g.: "3001234567" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
WalletTopupOperators #
| Field | Type | Description |
|---|---|---|
operators | array of object | |
source | string | Values: catalog, default. |
WalletTransaction #
| Field | Type | Description |
|---|---|---|
amount | number | E.g.: 20000 |
category | string | E.g.: "TRANSFER" |
currency | string | E.g.: "COP" |
date | string (date-time) | |
description | string | |
id | string | E.g.: "6b1f8c1e-0000-4a1b-9c2d-000000000001" |
status | string | E.g.: "COMPLETED" |
transaction_type | string | E.g.: "TRANSFER_OUT" |
type | string | E.g.: "DEBIT" |
WalletTransactionPage #
| Field | Type | Description |
|---|---|---|
has_more | boolean | |
limit | integer | E.g.: 50 |
next_offset | integer (nullable) | |
offset | integer | E.g.: 0 |
results | array of WalletTransaction |
WalletTransferIn #
Transfer funds between two of the holder’s own accounts.
| Field | Type | Description |
|---|---|---|
amount required | MoneyCOP | |
document required | string | E.g.: "1032456789" |
from_account required | string | E.g.: "acc_main" |
to_account required | string | E.g.: "acc_pocket_1" |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
Example
{
"amount": "150000",
"document": "1032456789",
"from_account": "acc_main",
"to_account": "acc_pocket_1"
}WalletTransferIn2 #
P2P or Bre-B send: only with the resolution_token from resolve (never a bare id).
| Field | Type | Description |
|---|---|---|
amount required | MoneyCOP | |
description | string | Max. 140 characters. |
document required | string | E.g.: "1032456789" |
resolution_token required | string |
Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.
WebhookDeliveryDetail #
A delivery with every attempt of the same event (original + replays). Request headers other than the signature headers are redacted; the secret is never returned.
| Field | Type | Description |
|---|---|---|
attempts required | array of object | |
event_type required | string | |
id required | string | |
request | object | |
response | object | |
status required | string |
WebhookDeliveryList #
| Field | Type | Description |
|---|---|---|
count required | integer | |
page | integer | |
page_size | integer | |
results required | array of WebhookDeliverySummary |
WebhookDeliverySummary #
| Field | Type | Description |
|---|---|---|
attempt_number | integer | |
completed_at | string (nullable) | |
duration_ms | integer (nullable) | |
endpoint_id | string | |
event_id | string | |
event_type required | string | |
id required | string | E.g.: "7c9e6679-7425-40de-944b-e07fc1f90ae7" |
parent_delivery_id | string (nullable) | |
queued_at | string (nullable) | |
replayable | boolean | |
response_status_code | integer (nullable) | |
status required | string | Values: pending, in_flight, success, failed, abandoned. |
WebhookEndpoint #
An outbound endpoint of the organization. Never carries the secret on reads.
| Field | Type | Description |
|---|---|---|
active | boolean | |
created_at | string (nullable) | |
description | string | |
events required | array of string | E.g.: ["credits.decision"] |
id required | string | E.g.: "3f1a2b3c-0000-4a1b-9c2d-000000000001" |
label | string | E.g.: "ERP" |
max_retries | integer | E.g.: 5 |
secret | string | Signing secret. Present ONLY in the create and rotate-secret responses. |
stats | object | |
status required | string | Values: active, paused, failing, disabled. |
status_label | string | |
timeout_seconds | integer | E.g.: 10 |
updated_at | string (nullable) | |
url required | string (uri) | E.g.: "https://erp.nova.example/compense/webhooks" |
WebhookEndpointCreateIn #
| Field | Type | Description |
|---|---|---|
active | boolean | |
description | string | |
events required | array of string | Keys from the event catalog. E.g.: ["credits.decision","wallets.cashin.confirmed"] |
label | string | Max. 128 characters. |
url required | string (uri) | Public HTTPS URL. E.g.: "https://erp.nova.example/compense/webhooks" |
WebhookEndpointList #
| Field | Type | Description |
|---|---|---|
count required | integer | |
results required | array of WebhookEndpoint |
WebhookEndpointUpdateIn #
Partial update. Only these fields are accepted.
| Field | Type | Description |
|---|---|---|
active | boolean | |
description | string | |
events | array of string | |
label | string | Max. 128 characters. |
url | string (uri) |
WebhookEventCatalog #
Every subscribable event plus the signature contract of outbound deliveries.
| Field | Type | Description |
|---|---|---|
aliases | object | |
categories | object | E.g.: {"credits":["credits.decision"],"wallets":["wallets.cashin.confirmed"]} |
count required | integer | E.g.: 37 |
events required | array of WebhookEventInfo | |
signature | object | Headers and algorithm used to sign deliveries. |
WebhookEventInfo #
| Field | Type | Description |
|---|---|---|
category | string | E.g.: "credits" |
description required | string | |
event required | string | E.g.: "credits.decision" |
label | string | |
payload_example required | object | |
since | string (nullable) | E.g.: "2026-06-01" |
version | string | E.g.: "1" |
WebhookTestIn #
| Field | Type | Description |
|---|---|---|
event_type | string | Catalog key whose payload_example is sent (default test.ping). E.g.: "credits.decision" |