This page is generated from the contract (data/gateway-v1.json): each operation shows its verb, path, parameters, body, responses, whether it carries an Idempotency-Key, and the equivalent method in all five SDKs. For the end-to-end flow with complete examples, see the implementation guide.

Operations in tag admin #

Contract description: The entity’s Administrative / ERP module: human resources (employees, contracts, HR adjustments), payroll (payroll adjustments, periods, payslips, electronic payroll), accounting (draft journal entries, third parties, taxes) and treasury (draft collections, outgoing payments, receivables and statements). The API doesn’t approve, calculate or post anything: that’s done in the panel.

MethodPathOperationScopeIdem.
GET/v1/gateway/admin/accounting/entries/Journal entriesaccounting:read—
POST/v1/gateway/admin/accounting/entries/Create a DRAFT journal entryaccounting:writerecommended
GET/v1/gateway/admin/accounting/entries/{entry_id}/Journal entry with its linesaccounting:read—
POST/v1/gateway/admin/accounting/taxes/compute/Simulate taxes and withholdingsaccounting:read—
GET/v1/gateway/admin/accounting/third-parties/Search third partiesaccounting:read—
POST/v1/gateway/admin/accounting/third-parties/Create or update a third partyaccounting:writerecommended
GET/v1/gateway/admin/accounting/third-parties/{third_party}/Third party (by id or document)accounting:read—
GET/v1/gateway/admin/hr/employees/Search employeeshr:read—
POST/v1/gateway/admin/hr/employees/Create or update an employee (upsert by document)hr:writerecommended
GET/v1/gateway/admin/hr/employees/{employee}/Employee profilehr:read—
GET/v1/gateway/admin/hr/employees/{employee}/contracts/Employee contractshr:read—
GET/v1/gateway/admin/hr/novelties/HR adjustmentshr:read—
POST/v1/gateway/admin/hr/novelties/Record sick leave, leave of absence, time off or vacationhr:writerecommended
GET/v1/gateway/admin/payroll/electronic/Electronic payroll (DIAN) status for a monthpayroll:read—
GET/v1/gateway/admin/payroll/novelties/Payroll adjustmentspayroll:read—
POST/v1/gateway/admin/payroll/novelties/Upload payroll adjustments (one or a batch)payroll:writerecommended
GET/v1/gateway/admin/payroll/payslips/{payslip_id}/Payslip with its conceptspayroll:read—
GET/v1/gateway/admin/payroll/periods/Payroll periodspayroll:read—
GET/v1/gateway/admin/payroll/periods/{period_id}/Period detailpayroll:read—
GET/v1/gateway/admin/payroll/periods/{period_id}/payslips/Payslips for a periodpayroll:read—
POST/v1/gateway/admin/treasury/payments/Register a DRAFT outgoing paymenttreasury:writerecommended
POST/v1/gateway/admin/treasury/receipts/Register a DRAFT collectiontreasury:writerecommended
POST/v1/gateway/admin/treasury/receivables/Register a DRAFT billing statement (cuenta de cobro)treasury:writerecommended
POST/v1/gateway/admin/treasury/statements/Upload a bank statement for reconciliationtreasury:writerecommended
POST/v1/gateway/admin/treasury/statements/{statement_id}/auto-match/Automatic statement matchingtreasury:writerecommended

Journal entries #

GET/v1/gateway/admin/accounting/entries/

  • operationId adminListEntries
  • Authentication X-API-Key · scope accounting:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
statusquerystringDRAFT | POSTED | VOID
voucher_typequerystringType (CC…).
date_fromquerystringFrom.
date_toquerystringTo.
external_idquerystringERP id.
sourcequerystringgateway = only those created through the API.
qquerystringText or number.
offsetquerystringOffset (pages of 100).

Responses

CodeDescriptionBody
200List.AdminResultList application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.accounting.list_entries()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Create a DRAFT journal entry #

POST/v1/gateway/admin/accounting/entries/

  • operationId adminCreateEntry
  • Authentication X-API-Key · scope accounting:write
  • Idempotency-Key recommended (the SDK generates it)
Idempotent by external_id: the same id returns the existing entry (created: false).

Parameters

NameInTypeDescription
Idempotency-KeyheaderstringClient-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. E.g.: horizonte-2026-06-26-credit-000123

Request body

Content type: application/json · required

Schema 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.

FieldTypeDescription
date requiredstring (date)
description requiredstring
external_idstringE.g.: "ERP-AS-2026-000123"
lines requiredarray of object
referencestring
third_partystringThird-party id or document.
voucher_typestringE.g.: "CC"

Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.

Responses

CodeDescriptionBody
200Registered (standard envelope; data carries the engine object).TransactionEnvelope application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.accounting.create_entry()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Journal entry with its lines #

GET/v1/gateway/admin/accounting/entries/{entry_id}/

  • operationId adminGetEntry
  • Authentication X-API-Key · scope accounting:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
entry_id requiredpathstringJournal entry id. E.g.: 5c9d…

Responses

CodeDescriptionBody
200Object.AdminObject application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.accounting.get_entry()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Simulate taxes and withholdings #

POST/v1/gateway/admin/accounting/taxes/compute/

  • operationId adminComputeTaxes
  • Authentication X-API-Key · scope accounting:read
  • Idempotency-Key not applicable
Read-only: it doesn’t write, doesn’t consume quota and doesn’t take an Idempotency-Key.

Request body

Content type: application/json · required

Schema AdminTaxComputeIn

FieldTypeDescription
datestring (date)
items requiredarray of object
third_partystring

Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.

Responses

CodeDescriptionBody
200List.AdminResultList application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.accounting.compute_taxes()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Search third parties #

GET/v1/gateway/admin/accounting/third-parties/

  • operationId adminListThirdParties
  • Authentication X-API-Key · scope accounting:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
qquerystringName or document.
rolequerystringcustomer | supplier | employee | associate
limitquerystringMaximum 500.
briefquerystring1 = identification only.

Responses

CodeDescriptionBody
200List.AdminResultList application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.accounting.list_third_parties()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Create or update a third party #

POST/v1/gateway/admin/accounting/third-parties/

  • operationId adminUpsertThirdParty
  • Authentication X-API-Key · scope accounting:write
  • Idempotency-Key recommended (the SDK generates it)

Parameters

NameInTypeDescription
Idempotency-KeyheaderstringClient-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. E.g.: horizonte-2026-06-26-credit-000123

Request body

Content type: application/json · required

Schema 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.

FieldTypeDescription
business_namestring
emailstring
first_last_namestring
first_namestring
id_number requiredstringE.g.: "900123456"
id_type requiredstringE.g.: "NIT"
is_customerboolean
is_supplierboolean
phonestring
responsibilitiesarray of string
tax_regimestring

Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.

Responses

CodeDescriptionBody
200Registered (standard envelope; data carries the engine object).TransactionEnvelope application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.accounting.upsert_third_party()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Third party (by id or document) #

GET/v1/gateway/admin/accounting/third-parties/{third_party}/

  • operationId adminGetThirdParty
  • Authentication X-API-Key · scope accounting:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
third_party requiredpathstringThird-party id or document. E.g.: 900123456

Responses

CodeDescriptionBody
200Object.AdminObject application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.accounting.get_third_party()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Search employees #

GET/v1/gateway/admin/hr/employees/

  • operationId adminListEmployees
  • Authentication X-API-Key · scope hr:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
qquerystringText: name, document, code or email.
statusquerystringACTIVO | RETIRADO
documentquerystringExact document.
areaquerystringArea id.
positionquerystringPosition id.

Responses

CodeDescriptionBody
200List.AdminResultList application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.hr.list_employees()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Create or update an employee (upsert by document) #

POST/v1/gateway/admin/hr/employees/

  • operationId adminUpsertEmployee
  • Authentication X-API-Key · scope hr:write
  • Idempotency-Key recommended (the SDK generates it)

Parameters

NameInTypeDescription
Idempotency-KeyheaderstringClient-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. E.g.: horizonte-2026-06-26-credit-000123

Request body

Content type: application/json · required

Schema 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.

FieldTypeDescription
area_idstring
bank_account_numberstring
bank_account_typestring
bank_namestring
email_workstring
eps_codestring
first_namestringE.g.: "Laura"
hire_datestring (date)E.g.: "2025-02-01"
id_number requiredstringE.g.: "1032456789"
id_typestringE.g.: "CC"
last_namestringE.g.: "Pérez"
pension_fund_codestring
phonestring
position_idstring

Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.

Responses

CodeDescriptionBody
200Registered (standard envelope; data carries the engine object).TransactionEnvelope application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.hr.upsert_employee()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Employee profile #

GET/v1/gateway/admin/hr/employees/{employee}/

  • operationId adminGetEmployee
  • Authentication X-API-Key · scope hr:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
employee requiredpathstringEmployee id or document number. E.g.: 1032456789

Responses

CodeDescriptionBody
200Object.AdminObject application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.hr.get_employee()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Employee contracts #

GET/v1/gateway/admin/hr/employees/{employee}/contracts/

  • operationId adminListEmployeeContracts
  • Authentication X-API-Key · scope hr:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
employee requiredpathstringEmployee id or document number. E.g.: 1032456789

Responses

CodeDescriptionBody
200List.AdminResultList application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.hr.list_employee_contracts()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

HR adjustments #

GET/v1/gateway/admin/hr/novelties/

  • operationId adminListHrNovelties
  • Authentication X-API-Key · scope hr:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
employeequerystringId or document.
statusquerystringSOLICITADA, APROBADA… (comma-separated)
categoryquerystringCategory (comma-separated).
fromquerystringFrom (YYYY-MM-DD).
toquerystringTo (YYYY-MM-DD).

Responses

CodeDescriptionBody
200List.AdminResultList application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.hr.list_novelties()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Record sick leave, leave of absence, time off or vacation #

POST/v1/gateway/admin/hr/novelties/

  • operationId adminCreateHrNovelty
  • Authentication X-API-Key · scope hr:write
  • Idempotency-Key recommended (the SDK generates it)
It remains SOLICITADA; human resources validates it in the panel. Diagnoses are never returned.

Parameters

NameInTypeDescription
Idempotency-KeyheaderstringClient-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. E.g.: horizonte-2026-06-26-credit-000123

Request body

Content type: application/json · required

Schema AdminHrNoveltyIn — Human resources novelty. It remains SOLICITADA until human resources validates it.

FieldTypeDescription
certificate_numberstring
daysinteger
diagnosis_codestringICD-10; never returned through the API.
employee requiredstringEmployee id or document. E.g.: "1032456789"
end_datestring (date)
hoursnumber
issuing_entitystring
reasonstring
start_date requiredstring (date)
type_code requiredstringE.g.: "INCAPACIDAD_COMUN"

Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.

Responses

CodeDescriptionBody
200Registered (standard envelope; data carries the engine object).TransactionEnvelope application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.hr.create_novelty()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Electronic payroll (DIAN) status for a month #

GET/v1/gateway/admin/payroll/electronic/

  • operationId adminGetElectronicPayroll
  • Authentication X-API-Key · scope payroll:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
yearquerystringYear.
monthquerystringMonth (1-12).
statusquerystringStatus.

Responses

CodeDescriptionBody
200List.AdminResultList application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.payroll.electronic()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Payroll adjustments #

GET/v1/gateway/admin/payroll/novelties/

  • operationId adminListPayrollNovelties
  • Authentication X-API-Key · scope payroll:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
employeequerystringId or document.
periodquerystringPeriod id.
statusquerystringPENDIENTE | LIQUIDADA | ANULADA
conceptquerystringConcept code.
fromquerystringFrom.
toquerystringTo.

Responses

CodeDescriptionBody
200List.AdminResultList application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.payroll.list_novelties()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Upload payroll adjustments (one or a batch) #

POST/v1/gateway/admin/payroll/novelties/

  • operationId adminCreatePayrollNovelties
  • Authentication X-API-Key · scope payroll:write
  • Idempotency-Key recommended (the SDK generates it)
Overtime, surcharges, bonuses and deductions. A batch is all or nothing. Concepts calculated by the engine are rejected (422), and an approved period responds 409.

Parameters

NameInTypeDescription
Idempotency-KeyheaderstringClient-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. E.g.: horizonte-2026-06-26-credit-000123

Request body

Content type: application/json · required

Schema 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.

FieldTypeDescription
amountnumber | string
concept_codestring
datestring (date)
employeestring
itemsarray of AdminPayrollNovelty
period_idstring
quantitynumber | string

Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.

Responses

CodeDescriptionBody
200Registered (standard envelope; data carries the engine object).TransactionEnvelope application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.payroll.create_novelties()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Payslip with its concepts #

GET/v1/gateway/admin/payroll/payslips/{payslip_id}/

  • operationId adminGetPayslip
  • Authentication X-API-Key · scope payroll:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
payslip_id requiredpathstringPayslip id. E.g.: 7a2e…

Responses

CodeDescriptionBody
200Object.AdminObject application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.payroll.get_payslip()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Payroll periods #

GET/v1/gateway/admin/payroll/periods/

  • operationId adminListPayrollPeriods
  • Authentication X-API-Key · scope payroll:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
statusquerystringABIERTO | CALCULADO | APROBADO | REVERTIDO
kindquerystringORDINARIA, PRIMA…
yearquerystringYear.

Responses

CodeDescriptionBody
200List.AdminResultList application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.payroll.list_periods()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Period detail #

GET/v1/gateway/admin/payroll/periods/{period_id}/

  • operationId adminGetPayrollPeriod
  • Authentication X-API-Key · scope payroll:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
period_id requiredpathstringPayroll period id. E.g.: 3f1c…

Responses

CodeDescriptionBody
200Object.AdminObject application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.payroll.get_period()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Payslips for a period #

GET/v1/gateway/admin/payroll/periods/{period_id}/payslips/

  • operationId adminListPeriodPayslips
  • Authentication X-API-Key · scope payroll:read
  • Idempotency-Key not applicable

Parameters

NameInTypeDescription
period_id requiredpathstringPayroll period id. E.g.: 3f1c…
employeequerystringId or document.

Responses

CodeDescriptionBody
200List.AdminResultList application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.payroll.list_period_payslips()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Register a DRAFT outgoing payment #

POST/v1/gateway/admin/treasury/payments/

  • operationId adminCreatePayment
  • Authentication X-API-Key · scope treasury:write
  • Idempotency-Key recommended (the SDK generates it)

Parameters

NameInTypeDescription
Idempotency-KeyheaderstringClient-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. E.g.: horizonte-2026-06-26-credit-000123

Request body

Content type: application/json · required

Schema 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.

FieldTypeDescription
amountnumber | string
applicationsarray of object
bank_accountstring
datestring (date)
descriptionstring
income_accountstring
issue_datestring (date)
methodstringE.g.: "TRANSFERENCIA"
referencestring
subtotalnumber | string
third_party requiredstring

Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.

Responses

CodeDescriptionBody
200Registered (standard envelope; data carries the engine object).TransactionEnvelope application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.treasury.create_payment()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Register a DRAFT collection #

POST/v1/gateway/admin/treasury/receipts/

  • operationId adminCreateReceipt
  • Authentication X-API-Key · scope treasury:write
  • Idempotency-Key recommended (the SDK generates it)

Parameters

NameInTypeDescription
Idempotency-KeyheaderstringClient-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. E.g.: horizonte-2026-06-26-credit-000123

Request body

Content type: application/json · required

Schema 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.

FieldTypeDescription
amountnumber | string
applicationsarray of object
bank_accountstring
datestring (date)
descriptionstring
income_accountstring
issue_datestring (date)
methodstringE.g.: "TRANSFERENCIA"
referencestring
subtotalnumber | string
third_party requiredstring

Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.

Responses

CodeDescriptionBody
200Registered (standard envelope; data carries the engine object).TransactionEnvelope application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.treasury.create_receipt()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Register a DRAFT billing statement (cuenta de cobro) #

POST/v1/gateway/admin/treasury/receivables/

  • operationId adminCreateReceivable
  • Authentication X-API-Key · scope treasury:write
  • Idempotency-Key recommended (the SDK generates it)

Parameters

NameInTypeDescription
Idempotency-KeyheaderstringClient-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. E.g.: horizonte-2026-06-26-credit-000123

Request body

Content type: application/json · required

Schema 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.

FieldTypeDescription
amountnumber | string
applicationsarray of object
bank_accountstring
datestring (date)
descriptionstring
income_accountstring
issue_datestring (date)
methodstringE.g.: "TRANSFERENCIA"
referencestring
subtotalnumber | string
third_party requiredstring

Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.

Responses

CodeDescriptionBody
200Registered (standard envelope; data carries the engine object).TransactionEnvelope application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.treasury.create_receivable()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Upload a bank statement for reconciliation #

POST/v1/gateway/admin/treasury/statements/

  • operationId adminImportStatement
  • Authentication X-API-Key · scope treasury:write
  • Idempotency-Key recommended (the SDK generates it)

Parameters

NameInTypeDescription
Idempotency-KeyheaderstringClient-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. E.g.: horizonte-2026-06-26-credit-000123

Request body

Content type: application/json · required

Schema AdminStatementIn — Bank statement: lines (JSON) or content (CSV with date and amount).

FieldTypeDescription
bank_account requiredstring
closing_balancenumber | string
contentstring
date_fromstring (date)
date_tostring (date)
linesarray of object
opening_balancenumber | string

Accepts additional fields (additionalProperties): they're forwarded to the engine unchanged.

Responses

CodeDescriptionBody
200Registered (standard envelope; data carries the engine object).TransactionEnvelope application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.treasury.import_statement()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.

Automatic statement matching #

POST/v1/gateway/admin/treasury/statements/{statement_id}/auto-match/

  • operationId adminAutoMatchStatement
  • Authentication X-API-Key · scope treasury:write
  • Idempotency-Key recommended (the SDK generates it)

Parameters

NameInTypeDescription
statement_id requiredpathstringStatement id. E.g.: 8b1f…
Idempotency-KeyheaderstringClient-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. E.g.: horizonte-2026-06-26-credit-000123

Responses

CodeDescriptionBody
200Registered (standard envelope; data carries the engine object).TransactionEnvelope application/json
Possible errors (400, 401, 403, 404, 409, 422, 429, 500, 502, 504) — application/problem+json
400Malformed request.about:blank
401Missing or invalid API key.about:blank
403The key is valid but lacks the required scope, or the source IP is not allow-listed.about:blank
404The requested resource does not exist.about:blank
409Idempotency conflict — same key, original still processing.https://errors.compense.co/gateway/idempotency-conflict
422Request body failed validation.https://errors.compense.co/gateway/validation
429Per-key rate limit or monthly quota exceeded; see Retry-After.https://errors.compense.co/gateway/rate-limited
500Unexpected gateway error; quote the trace_id to support.about:blank
502The processing engine returned an error.https://errors.compense.co/gateway/upstream-error
504The processing engine did not respond in time.https://errors.compense.co/gateway/upstream-error

See problem+json errors for the equivalent exception in each SDK.

Example

SDK method and HTTP request
client.admin.treasury.auto_match_statement()

Each SDK's methods come from its contract parity suite. The cURL runs against the sandbox; <field> values are placeholders.