Índice de documentación
CONTRATO VERIFICABLE
Integrá sobre cosas
que existen.
Esta documentación se construye desde el mismo OpenAPI que publica Cimbra y describe únicamente el sandbox desplegado: autenticación, recursos, SDK, errores, eventos y límites operativos reales.
Customers, KYC/KYB, cuentas, wallets, book transfers, estados de cuenta, tarjetas, beneficiarios, lotes de payouts, servicios, obligaciones, recargas, mandatos, movimientos, ledger, riesgo, conciliación, disputas, operaciones, aprobaciones, soporte, organización, topología de servicios y webhooks se persisten sobre el núcleo real. El host activo es sandbox, como sandbox.bind.com.ar, sandbox.pismolabs.io y sandbox.api.pomelo.la. Live exige hostname de producción, producto en Go Live, rieles oficiales BCRA/Coelsa/sponsor en live y un adaptador Cimbra registrado.
ENTORNOS
Un contrato. Un entorno activo. Live fail-closed.
https://cimbra-rose.vercel.appMisma API, ledger y eventos que producción. Las claves usan cim_sk_test_. No mueve fondos de riel.
Pismo entrega el hostname de producción en el onboarding comercial. BIND APIBANK no publica la URL productiva. Pomelo usa api.pomelo.la después de homologar. Hasta entonces no hay cim_sk_live_.
GET /api/v1/live-readinessQUICKSTART
Primer request, sin pasos inventados.
Una API key sólo puede ser creada por Owner o Admin desde la sección Developers de la consola. El secreto se muestra una vez y Cimbra conserva únicamente su hash.
Iniciá sesión, abrí Developers y generá una clave con customers:write.
Ingresar ↗Usá una variable de entorno. Nunca expongas la clave en navegador, app móvil, repositorio o logs.
CIMBRA_API_KEY=cim_sk_test_••••Mandá una clave de idempotencia estable por operación lógica. El identificador y el tenant se resuelven en servidor.
curl --request POST \
--url https://cimbra-rose.vercel.app/api/v1/customers \
--header "Authorization: Bearer $CIMBRA_API_KEY" \
--header "Content-Type: application/json" \
--header "Idempotency-Key: customer-quickstart-001" \
--header "X-Request-Id: req_quickstart_001" \
--data '{
"type": "business",
"name": "Comercio del Sur",
"country": "AR",
"taxId": "30712345678"
}'Respuesta real: HTTP 201 en la primera creación y HTTP 200 con Idempotent-Replayed: true al repetir exactamente el request.
{
"ok": true,
"customer": {
"id": "<uuid>",
"type": "business",
"name": "Comercio del Sur",
"country": "AR",
"taxIdLast4": "5678",
"status": "active",
"createdAt": "<ISO-8601>"
},
"replayed": false
}AUTENTICACIÓN Y AUTORIZACIÓN
Dos identidades, controles distintos.
Sesión first-party
Cookie opaca, hasheada en servidor. RBAC decide qué puede ver y ejecutar cada rol; las mutaciones validan origen y las decisiones maker/checker requieren sesión humana.
__Host-cimbra_sessionAPI key con scopes
Bearer propio del tenant, revocable, con vencimiento y rate limit. No puede aprobar, rechazar ni cancelar solicitudes maker/checker.
Authorization: Bearer cim_sk_test_…Gobierna el tenant, la seguridad, las políticas, los accesos y toda la operación.
Puede administrar API keysConfigura la organización y gestiona operadores y viewers sin desplazar al owner.
Puede administrar API keysEjecuta y resuelve flujos operativos sin administrar credenciales ni privilegios.
No administra credencialesConsulta operación, evidencia y auditoría sin acciones mutantes.
No administra credencialescustomers:readcustomers:writeaccounts:readaccounts:writecards:readcards:writetransfers:readtransfers:writepayments:readpayments:writepayouts:readpayouts:writebillers:readbillers:writewallets:readwallets:writerisk:readrisk:writedisputes:readdisputes:writereconciliation:readreconciliation:writesettlements:readsettlements:writeapprovals:readoperations:readoperations:writesupport:readsupport:writeorganization:readorganization:writeplatform:readledger:readevents:readcompliance:readcompliance:writewebhooks:manage401 significa que la identidad no fue autenticada. 403 significa que existe una sesión o API key válida, pero su rol o scope no permite esa operación.
CONTRATO HTTP
Idempotencia, trazabilidad y retry seguro.
Idempotency-Key
Obligatoria cuando el endpoint la declara: altas y movimientos reintentables. Admite 8–100 caracteres de A-Z a-z 0-9 . _ : -.
X-Request-Id
Podés enviarlo; si falta, Cimbra lo genera. Se devuelve en toda respuesta y el SDK lo conserva durante reintentos.
Replays
Misma clave y mismo payload: respuesta original y header Idempotent-Replayed: true. Payload distinto: HTTP 409.
Cimbra-Should-Retry
La API marca explícitamente si un error puede reintentarse. El SDK aplica backoff sólo en requests seguros.
Configuración de webhooks, carga de evidencia y desactivación de reglas todavía no ofrecen replay idempotente; el SDK no las reintenta. La referencia de cada operación indica si acepta Idempotency-Key.
MODELO DE DATOS
Cursores estables y montos exactos.
Paginación
Customers, accounts, account statements, cards, transfers, book transfers y events aceptan limit entre 1 y 100. Reutilizá nextCursor mientras hasMore sea true.
{
"data": [/* recursos */],
"hasMore": true,
"nextCursor": "<base64url_opaco>"
}Dinero
En requests, enviá montos como string decimal en unidad mayor. En respuestas financieras, amountMinor conserva la representación contable exacta como string.
{
"amount": "1250.50",
"amountMinor": "125050",
"currency": "ARS"
}Monedas modeladas: ARS, USD, MXN, COP, BRL, CLP y PEN. Esto no implica disponibilidad de rieles reales en esos países.
ERRORES Y LÍMITES
Fallos estructurados y accionables.
{
"error": {
"type": "cimbra_api_error",
"code": "insufficient_scope",
"message": "La API key no incluye el scope customers:write.",
"requestId": "req_<id>"
}
}invalid_requestPayload, parámetros o Idempotency-Key inválidos.authentication_required / invalid_api_keyFalta la identidad, o la API key es inválida, fue revocada o venció.insufficient_scope / insufficient_roleLa identidad existe, pero no tiene el scope o rol requerido.not_foundEl recurso no existe dentro del tenant autenticado.conflict / idempotency_mismatchConflicto de estado o clave reutilizada con otro payload.unprocessable_entityLa solicitud es válida, pero saldo, riesgo o estado impiden ejecutarla.rate_limit_exceededSe agotó la ventana de la API key; respetar Retry-After.internal_errorError transitorio; reintentar sólo cuando Cimbra-Should-Retry sea true.Las API keys nuevas tienen hoy un límite de 300 requests/minuto. Después de autorizar la API key, las respuestas incluyen X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset. Un 429 agrega Retry-After: 60.
SDK TYPESCRIPT
Un paquete real, descargable y con checksum.
@cimbra/sdk · v0.1.0
Node.js 20+. ESM, declaraciones TypeScript, source maps, timeouts, errores tipados, cursores, reintentos seguros y verificación de webhooks.
El SDK todavía no está en npm. El comando instala el artefacto servido por Cimbra; el checksum publicado permite verificar exactamente qué paquete se recibió.
npm install https://cimbra-rose.vercel.app/sdk/cimbra-sdk-0.1.0.tgza94b89beca3ce8a03823a212cf1cbf53f371c779c51ca1f134a4be7f12b5d78dimport { Cimbra } from '@cimbra/sdk';
const cimbra = new Cimbra({
apiKey: process.env.CIMBRA_API_KEY!,
baseUrl: 'https://cimbra-rose.vercel.app',
});
const result = await cimbra.customers.create({
type: 'business',
name: 'Comercio del Sur',
country: 'AR',
taxId: '30712345678',
});
console.log(result.data.customer.id, result.requestId);BILLER INFRASTRUCTURE
Servicios propios, no un adaptador a competidores.
El originador directo registra su catálogo y emite obligaciones dentro del tenant. Cimbra protege la referencia del suscriptor, ejecuta el pago o la recarga contra el mismo ledger y riesgo del core, y conserva todo el lifecycle para conciliación, reversa y eventos.
billers:read/write gobierna catálogo y deuda; payments:read/write gobierna órdenes y mandatos.
Una orden comparte ledger de doble partida, límites, evaluación de riesgo y holds. La reversa crea postings compensatorios.
Mandatos semanales o mensuales conservan consentimiento, límite por ejecución, agenda, reintentos y pausa/cancelación.
El sandbox no consulta una deuda externa ni afirma cobertura. Producción exige contrato directo, consentimiento exigible, riel oficial y certificación por país.
const biller = await cimbra.billers.create({
code: 'ENERGIA_AR',
name: 'Energía Regional',
country: 'AR',
category: 'utilities',
serviceType: 'bill_payment',
currency: 'ARS',
amountMode: 'exact',
contractReference: 'DIRECT-2026-001',
});
const debt = await cimbra.billers.createObligation(biller.data.biller.id, {
externalReference: 'INV-2026-0001',
subscriberReference: 'CLIENTE-00123456',
amount: '18250.00',
dueAt: '2026-09-10T21:00:00.000Z',
description: 'Servicio agosto 2026',
});
const payment = await cimbra.billPayments.create({
accountId: '<account_uuid>',
billerId: biller.data.biller.id,
obligationId: debt.data.obligation.id,
});
console.log(payment.data.order.status);CORE BANKING
Un movimiento, dos postings, historial completo.
Un book transfer mueve saldo entre dos cuentas activas del mismo tenant y moneda. Cimbra bloquea ambos recursos, descuenta reservas del saldo disponible y crea el débito y crédito dentro de la misma transacción SQL.
La operación nunca deja un solo leg: el journal exige débitos iguales a créditos y el trigger protege tenant y moneda.
Una decisión review reserva sólo el origen. La política transfer.create puede exigir un checker distinto con MFA antes de crear el movimiento.
accounts:read devuelve postings paginados, saldo de apertura y cierre para un período máximo de 366 días.
Una reversa crea postings opuestos y queda enlazada; jamás edita ni borra el asiento original.
El contrato está operativo dentro del sandbox persistente. Pix, SPEI, CBU/CVU u otros rieles externos requieren una conexión directa homologada, licencia o sponsor y conciliación oficial por país.
const movement = await cimbra.bookTransfers.create({
externalReference: 'BT-2026-0001',
sourceAccountId: '<source_account_uuid>',
destinationAccountId: '<destination_account_uuid>',
description: 'Distribución de saldo marketplace',
amount: '1250.00',
currency: 'ARS',
});
if (!movement.data.requiresApproval) {
const statement = await cimbra.accounts.statement(movement.data.transfer.sourceAccountId, {
from: '2026-08-01T00:00:00.000Z',
to: '2026-09-01T00:00:00.000Z',
limit: 50,
});
console.log(statement.data.period.closingBalance, statement.data.data);
}EMBEDDED FINANCE
Una wallet, bolsillos reales, sin ledger paralelo.
Un programa tenant configura marca y kinds de bolsillo. Abrir una wallet crea cuentas de producto; mover saldo entre pockets ejecuta un book transfer con riesgo, holds y maker/checker.
Owner/Admin define nombre visible, moneda, bolsillos available, pending o rewards y URLs de soporte. No se publica una app de consumidor.
Cada bolsillo es una cuenta de producto. El saldo se deriva de postings; freeze y close inactivan esas cuentas.
wallets:write resuelve pocket IDs y reutiliza el rail interno. Una wallet inactiva rechaza el movimiento con 409.
El sandbox no custodia fondos. Una wallet productiva exige marco PSP o entidad habilitada, safeguarding y riel de fondeo por país.
const program = await cimbra.walletPrograms.create({
name: 'Wallet marketplace ARS',
displayName: 'Billetera Comercio Sur',
defaultCurrency: 'ARS',
pocketKinds: ['available', 'pending'],
});
const wallet = await cimbra.wallets.create({
programId: program.data.program.id,
customerId: '<customer_uuid>',
externalReference: 'WALLET-001',
});
const movement = await cimbra.wallets.transfer(wallet.data.wallet.id, {
externalReference: 'WP-001',
sourcePocketId: wallet.data.pockets[0].id,
destinationPocketId: wallet.data.pockets[1].id,
description: 'Reserva operativa',
amount: '25.00',
currency: 'ARS',
});ARGENTINA · SANDBOX
CVU propio, alias de tenant, sin fingir Coelsa.
Cimbra emite CVU con prefijo 000 y código PSP 9999, asigna o cambia el alias del tenant sobre un CVU existente, confirma titular y liquida el crédito interno sobre el ledger. Un CBU externo sale a settlement. El débito y el QR sólo operan entre cuentas del tenant.
Un CVU por cuenta ARS argentina. El alias se asigna o cambia sobre ese CVU; es único en el tenant y un cambio real queda bloqueado 24 horas. Eliminar el CVU no borra la cuenta ni el saldo. No se emite CBU porque Cimbra no es banco.
El crédito exige confirmHolder, nombre y últimos cuatro del CUIT. Un mismatch interno responde 422 holder_mismatch.
El débito externo responde external_debit_not_supported. El dinámico cimbra:qr:v1 vence y se consume; el estático cimbra:qr:static:v1 es reutilizable. Una orden de venta fija el monto cerrado sobre ese QR. El QR de deuda cimbra:qr:debt:v1 es un recurso primario de un solo pago.
Transferencias 3.0, DEBIN y directorio nacional entran con membresía o sponsor directo. BIND y el resto siguen como benchmarks, no conectores.
const issued = await cimbra.railInstruments.issue({
accountId: '<account_uuid>',
});
await cimbra.railInstruments.assignAlias(issued.data.instruments[0].id, {
alias: 'COMERCIO.SUR',
});
const preview = await cimbra.railDirectory.lookup(issued.data.instruments[0].value);
const credit = await cimbra.instantTransfers.create({
externalReference: 'IP-001',
accountId: '<source_account_uuid>',
destination: issued.data.instruments[0].value,
description: 'Cobro inmediato',
amount: '1500.00',
currency: 'ARS',
confirmHolder: true,
holderName: preview.data.holderName!,
taxIdLast4: preview.data.taxIdLast4!,
});
const staticQr = await cimbra.paymentQrs.create({
accountId: '<account_uuid>',
description: 'Mostrador',
kind: 'static',
});
await cimbra.qrSaleOrders.create({
paymentQrId: staticQr.data.qr.id,
externalReference: 'OV-001',
description: 'Ticket mostrador',
amount: '1500.00',
});
const debt = await cimbra.qrDebts.create({
accountId: '<account_uuid>',
externalReference: 'DEUDA-001',
description: 'Cuota única',
amount: '2500.00',
});ARGENTINA · COBRANZAS
Un link de cobro y un punto de recaudación, sin fingir adquirencia de red.
El comercio emite un link contra una cuenta ARS argentina, opcionalmente asociado a una deuda QR abierta o a un punto de recaudación. El pagador liquida desde otra cuenta Cimbra, con inbound sandbox, pagando el QR de la deuda o acreditando el CVU del till. La devolución usa postings compensatorios: total o parcial. Un link CVU puede reabrirse si el neto queda por debajo del monto; no se reabre la deuda QR.
Monto, vencimiento y payload cimbra:link:v1. Puede llevar qrDebtId, collectionTillId e items de detalle. GET embebe credits, refunds, partiallyCollected y partiallyRefunded. Owner/Admin/Operator crean y devuelven; Viewer sólo consulta.
collection_tills emite un CVU 000+9999 del till. Transferencias internas e inbound quedan con collectionTillId. No es caja BIND.
payments:read/write protege S2S. El cobro entra al motor de riesgo y puede quedar en hold.
No hay checkout PCI, marcas, sucursales ni liquidación a un adquirente. El cobro por CVU admite parciales, overpay y devolución parcial; QR e internal siguen monto cerrado. Un inbound suelto al till no imputa el link. El CVU del till no viaja por Coelsa. BIND y el resto siguen como benchmarks, no conectores.
const till = await cimbra.collectionTills.create({
accountId: '<merchant_account_uuid>',
externalReference: 'TILL-001',
name: 'Mostrador Sur',
issueStaticQr: true,
closedAmountOnly: true,
});
await cimbra.qrSaleOrders.create({
paymentQrId: till.data.till.paymentQrId!,
externalReference: 'OV-TILL-001',
description: 'Ticket mostrador',
amount: '1500.00',
});
await cimbra.collectionTills.inbound(till.data.till.id, {
externalReference: 'INB-001',
description: 'Transferencia recibida',
amount: '1500.00',
});
const link = await cimbra.paymentLinks.create({
accountId: '<merchant_account_uuid>',
externalReference: 'FAC-001',
description: 'Honorarios agosto',
amount: '18500.00',
currency: 'ARS',
methods: ['cimbra_qr', 'cimbra_cvu'],
qrDebtId: '<qr_debt_uuid>',
collectionTillId: till.data.till.id,
items: [{ description: 'Honorarios agosto', amount: '18500.00', quantity: 1 }],
});
await cimbra.paymentLinks.pay(link.data.link.id, {
method: 'cimbra_qr',
payerAccountId: '<payer_account_uuid>',
});
await cimbra.paymentLinks.refund(link.data.link.id, { amount: '3.00' });PAYOUT INFRASTRUCTURE
De un beneficiario protegido a un resultado conciliable.
Cimbra acepta un lote como borrador inmutable, lo somete a doble control si el tenant lo exige y procesa cada ítem por separado. Un fallo funcional no duplica ni bloquea los payouts ya resueltos; el estado y el archivo se derivan de datos persistidos.
Los lotes inmediatos se despachan al responder. En el deployment gratuito actual, el recovery sweep de lotes programados corre diariamente y no promete precisión horaria; la infraestructura AWS preparada usa EventBridge cada minuto, pero no se activa hasta autorizar presupuesto.
payouts:read/write protege S2S. Owner/Admin administra destinos, Operator puede crear/enviar lotes y Viewer sólo consulta.
El destino completo es write-only: se normaliza, se convierte en digest tenant-scoped y sólo vuelven tipo y últimos cuatro.
De 1 a 100 ítems, programación y deadline, lease recuperable, tres intentos transitorios, riesgo, saldo, holds y ledger por ítem.
El sandbox contabiliza contra settlement interno. Producción requiere riel bancario/cámara directo, reason codes, returns, conciliación y homologación.
const beneficiary = await cimbra.payoutBeneficiaries.create({
externalReference: 'PROVIDER-001',
name: 'Proveedor Regional',
entityType: 'business',
country: 'AR',
currency: 'ARS',
destinationType: 'alias',
destination: 'proveedor.cimbra',
});
const batch = await cimbra.payoutBatches.create({
sourceAccountId: '<account_uuid>',
externalReference: 'PAYOUT-2026-09-001',
description: 'Liquidación de proveedores',
currency: 'ARS',
processBefore: '2026-09-01T21:00:00.000Z',
items: [{
externalReference: 'ITEM-001',
beneficiaryId: beneficiary.data.beneficiary.id,
amount: '125000.00',
description: 'Liquidación agosto',
}],
});
const submitted = await cimbra.payoutBatches.submit(batch.data.batch.id);
const csv = await cimbra.payoutBatches.resultCsv(batch.data.batch.id);
console.log(submitted.data.batch.status, csv.data);CUSTOMER DUE DILIGENCE
KYC/KYB orquestado, con decisión humana independiente.
El tipo del customer determina KYC o KYB. Cada caso congela jurisdicción, versión de política y checks requeridos; partes, evidencia y observaciones se conservan append-only y el vencimiento es terminal.
compliance:read/write permite crear, completar, consultar, enviar o cancelar un expediente desde backend.
Exige representante legal y al menos un beneficiario final; la participación declarada total no puede superar 100%.
Aprobar o rechazar es session-only: otro Owner/Admin con MFA decide y una API key recibe 403 session_required.
El sandbox no afirma biometría, prueba de vida, listas o registros oficiales sin una fuente directa certificada.
const opened = await cimbra.dueDiligence.create({
customerId: '<business_customer_uuid>',
expiresInDays: 90,
});
await cimbra.dueDiligence.addParty(opened.data.case.id, {
role: 'beneficial_owner',
name: 'Ana Sur',
taxId: '20123456789',
ownershipPercentage: 25,
});
await cimbra.dueDiligence.recordCheck(opened.data.case.id, {
checkType: 'sanctions',
source: 'official_registry',
status: 'passed',
resultCode: 'no_match',
note: 'Consulta directa documentada.',
});
// Completá todos los checks/partes exigidos antes de enviar.
await cimbra.dueDiligence.submit(opened.data.case.id);RISK STEP-UP
Autenticación reforzada, sin confundirla con una red.
Una evaluación review puede abrir un challenge OTP. Cimbra genera la credencial, conserva hash y ciphertext, limita intentos, expira el challenge y registra cada intento sin guardar el código en claro. El integrador recibe la credencial sólo en el create/replay pendiente y la entrega desde backend por su canal aprobado.
pending → verified | failed | expired. Un challenge terminal no se reabre.
La verificación queda vinculada a la evaluación y al caso; no resuelve fondos ni evita maker/checker.
El estado de riesgo publica muestras, p50, p95, p99 y porcentaje ≤ 250 ms de decisiones nuevas.
No implementa EMV 3DS, ACS, liability shift, SMS, push ni biometría. Esas capas requieren canal, riel y certificación directos.
const evaluationId = '<evaluation_in_review_uuid>';
const created = await cimbra.risk.createStepUpChallenge(evaluationId, {
expiresInSeconds: 300,
maxAttempts: 5,
});
// Entregá esta credencial desde tu backend por un canal aprobado.
const credential = created.data.credential!;
const result = await cimbra.risk.verifyStepUpChallenge(
evaluationId,
created.data.challenge.id,
{ credential },
);
console.log(result.data.verified, result.data.challenge.status);WEBHOOKS
Outbox durable, firma y replay operativo.
POST HTTPS público, puerto 443, timeout de 4 segundos y éxito ante cualquier respuesta 2xx. Redirecciones no se siguen.
HMAC-SHA256 sobre timestamp.raw_body. Ventana predeterminada del SDK: 5 minutos y comparación en tiempo constante.
Hasta 7 intentos totales. Backoff después de cada fallo: 1m, 5m, 30m, 2h, 6h y 24h.
Estados, status HTTP, error e historial de intentos quedan persistidos. Owner/Admin puede reencolar una entrega.
{
"id": "<event_uuid>",
"type": "transfer.created",
"created_at": "<ISO-8601>",
"data": {
"resource_type": "transaction",
"resource_id": "<transaction_uuid>"
}
}import { constructWebhookEvent } from '@cimbra/sdk';
const rawBody = await request.text();
const event = await constructWebhookEvent({
payload: rawBody,
signature: request.headers.get('cimbra-signature')!,
timestamp: request.headers.get('cimbra-timestamp'),
secret: process.env.CIMBRA_WEBHOOK_SECRET!,
});
console.log(event.id, event.type, event.created_at);
return new Response(null, { status: 204 });152 tipos de evento implementados Ver catálogo
customer.createdaccount.createdcard.createdcard.program_createdcard.activatedcard.frozencard.unfrozencard.terminatedcard.controls_updatedtransfer.createdtransfer.reversedbook_transfer.createdbook_transfer.settledbook_transfer.cancelledbook_transfer.reversedwallet.program_createdwallet.createdwallet.frozenwallet.unfrozenwallet.closedwallet.pocket_transfer_createdrail.instrument_issuedrail.alias_assignedrail.instrument_revokedinstant.transfer_createdinstant.transfer_returnedinstant.transfer_settledinstant.transfer_cancelledinstant.debit_requestedinstant.debit_acceptedinstant.debit_rejectedinstant.qr_createdinstant.qr_paidinstant.qr_cancelledinstant.sale_order_createdinstant.sale_order_paidinstant.sale_order_cancelledinstant.sale_order_supersededinstant.debt_createdinstant.debt_paidinstant.debt_cancelledcollection.link_createdcollection.link_cancelledcollection.link_paidcollection.link_creditedcollection.link_refundedcollection.till_createdcollection.till_alias_assignedcollection.till_qr_issuedcollection.till_creditedcollection.till_disabledecheq.issuedecheq.acceptedecheq.endorsedecheq.depositedecheq.cancelledecheq.returnedecheq.rejectedhold.capturedhold.releasedpayment.createdpayment.reversedpayout.beneficiary_createdpayout.beneficiary_activatedpayout.beneficiary_suspendedpayout.batch_createdpayout.batch_submittedpayout.batch_approval_pendingpayout.batch_approvedpayout.batch_scheduledpayout.batch_processingpayout.batch_requires_attentionpayout.batch_completedpayout.batch_partially_failedpayout.batch_failedpayout.batch_cancelledpayout.item_settledpayout.item_reviewpayout.item_failedbiller.createdbiller.activatedbiller.suspendedbiller.obligation_createdbiller.obligation_reopenedbill_payment.createdbill_payment.declinedbill_payment.reviewbill_payment.settledbill_payment.cancelledbill_payment.reversedbill_payment.order_reversedrecurring_mandate.createdrecurring_mandate.pausedrecurring_mandate.resumedrecurring_mandate.cancelledrecurring_mandate.execution_completedrecurring_mandate.execution_skippedrecurring_mandate.execution_failedrisk.rule_createdrisk.rule_version_createdrisk.rule_promotedrisk.rule_disabledrisk.simulation_completedrisk.list_entry_createdrisk.list_entry_disabledrisk.outcome_reportedrisk.case_createdrisk.case_resolvedrisk.step_up_challenge_createdrisk.step_up_challenge_verifiedrisk.step_up_challenge_failedrisk.step_up_challenge_expiredrisk.step_up_attempt_faileddispute.createddispute.start_reviewdispute.mark_network_readydispute.resolve_wondispute.resolve_lostdispute.rejectdispute.cancelreconciliation.run_createdreconciliation.exception_resolvedoperations.work_item_updatedoperations.note_addedoperations.evidence_linkedsettlement.cycle_createdsettlement.cycle_settledapproval.policy_updatedapproval.request_createdapproval.request_executedapproval.request_rejectedapproval.request_cancelledapproval.request_expiredapproval.request_failedorganization.updatedorganization.invitation_createdorganization.invitation_acceptedorganization.invitation_revokedorganization.member_role_updatedorganization.member_removedcompliance.document_uploadeddue_diligence.createddue_diligence.party_addeddue_diligence.check_recordeddue_diligence.submitteddue_diligence.approveddue_diligence.rejecteddue_diligence.cancelleddue_diligence.expiredsupport.case_openedsupport.message_addedsupport.status_updatedAPI REFERENCE
Todo el contrato publicado.
La lista siguiente se genera desde public/openapi.yaml; no existe un inventario paralelo escrito a mano. Cada operación muestra autenticación, scope, Content-Type, parámetros y respuestas declaradas.
Identidad y estado
7 operacionesPOST/api/auth/loginStart a session with email/username and password+
- Autenticación
- Pública
- Scope S2S
No aplica- Content-Type
Sin body
Respuestas documentadas
POST/api/auth/logoutRevoke the current session+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
Sin body
Respuestas documentadas
GET/api/auth/meRead the authenticated user+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
Sin body
Respuestas documentadas
POST/api/auth/registerCreate a first-party account and session+
- Autenticación
- Pública
- Scope S2S
No aplica- Content-Type
Sin body
Respuestas documentadas
GET/api/healthPlatform health+
- Autenticación
- Pública
- Scope S2S
No aplica- Content-Type
Sin body
Respuestas documentadas
GET/api/v1/capabilitiesList Cimbra-native financial infrastructure services and their real availability+
Competitors are benchmark inputs only. Every returned service is owned by Cimbra; networkBoundary identifies the direct regulated-rail boundary required for live money movement.
- Autenticación
- Sesión o API key
- Scope S2S
platform:read- Content-Type
Sin body
Respuestas documentadas
GET/api/v1/live-readinessRead sandbox vs production hosts, Pomelo go-live stages, catalog products, official rail connections, the AR PSPCP fintech path and the USD 500 Gate 1 capital plan+
liveReady is true only when a production hostname is provisioned, at least one product is in go_live, every required official rail of that product is live, and a Cimbra adapter is registered. CIMBRA_OPERATING_MODE=live does not move funds without that. Products homologate independently. Rails are BCRA, Coelsa, sponsor banks or schemes — never BIND, Dock, tapi, Pismo, Pomelo or Wibond. capitalPlan is the authorized USD 500 Gate 1 envelope; spending it does not set liveReady.
- Autenticación
- Sesión o API key
- Scope S2S
platform:read- Content-Type
Sin body
Respuestas documentadas
Customers
3 operacionesGET/api/v1/customersList customers with cursor pagination+
- Autenticación
- Sesión o API key
- Scope S2S
customers:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/customersCreate a customer+
- Autenticación
- Sesión o API key
- Scope S2S
customers:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
typebodyindividual | businessopcionalnamebodystringrequeridocountrybodyAR | MX | CO | BR | CL | PErequeridotaxIdbodystringrequeridoRespuestas documentadas
GET/api/v1/customers/{id}Retrieve a customer by ID+
- Autenticación
- Sesión o API key
- Scope S2S
customers:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
Accounts
4 operacionesGET/api/v1/accountsList accounts with cursor pagination+
- Autenticación
- Sesión o API key
- Scope S2S
accounts:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/accountsOpen an account+
- Autenticación
- Sesión o API key
- Scope S2S
accounts:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
customerIdbodystring (uuid)requeridocurrencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridocountrybodyAR | MX | CO | BR | CL | PErequeridoRespuestas documentadas
GET/api/v1/accounts/{id}Retrieve an account by ID+
- Autenticación
- Sesión o API key
- Scope S2S
accounts:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
GET/api/v1/accounts/{id}/statementRetrieve a ledger-backed account statement+
Returns immutable postings for one tenant account plus opening and closing balances for an ISO-8601 period of at most 366 days. Reversals appear as separate compensating entries.
- Autenticación
- Sesión o API key
- Scope S2S
accounts:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridofromquerystring (date-time)opcionalInclusive period start; defaults to 30 days before now.
toquerystring (date-time)opcionalExclusive period end; defaults to now.
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
Book transfers
4 operacionesGET/api/v1/book-transfersList native book transfers with cursor pagination+
Tenant-scoped account-to-account movements backed by paired ledger postings. This sandbox operation does not use an external rail or move real funds.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/book-transfersAtomically move balance between two Cimbra accounts+
Locks both tenant accounts, validates status, currency and available balance, evaluates risk, and either creates a source hold or posts an atomic debit/credit pair. The existing transfer.create maker/checker policy protects this operation when enabled.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
externalReferencebodystringrequeridosourceAccountIdbodystring (uuid)requeridodestinationAccountIdbodystring (uuid)requeridodescriptionbodystringrequeridoamountbodystring | numberrequeridoPositive decimal major-unit amount. Prefer a string to avoid floating-point serialization.
currencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridosignalsbodyobjectopcionalRespuestas documentadas
GET/api/v1/book-transfers/{id}Retrieve a native book transfer+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/book-transfers/{id}/reverseReverse a settled book transfer with compensating postings+
Never mutates the original postings. It creates an opposite journal, links the reversal transaction and preserves the full account statement history.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
Instant payments
25 operacionesGET/api/v1/debit-requestsList internal debit-pull requests+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/debit-requestsRequest an internal debit from another Cimbra account in the tenant+
External CBU/CVU debit is rejected with external_debit_not_supported. This is not DEBIN over Coelsa.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
externalReferencebodystringrequeridocollectorAccountIdbodystring (uuid)requeridopayerDestinationbodystringrequeridodescriptionbodystringrequeridoamountbodystring | numberrequeridocurrencybodyARSrequeridoexpiresInMinutesbodyintegeropcionalRespuestas documentadas
POST/api/v1/debit-requests/{id}/respondAccept or reject a pending internal debit request+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
decisionbodyaccept | rejectrequeridosignalsbodyobjectopcionalRespuestas documentadas
GET/api/v1/instant-transfersList sandbox instant transfers+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
schemequerycredit_push | debit_pull | qr_collectopcionalRespuestas documentadas
POST/api/v1/instant-transfersCreate a sandbox credit push with holder confirmation+
Internal CVU/alias settles between product accounts. External CBU/CVU posts cash-out to settlement. Inbound credits a Cimbra CVU from an external originator. Rail is cimbra_sandbox, not Coelsa.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
externalReferencebodystringrequeridoaccountIdbodystring (uuid)requeridodestinationbodystringrequeridodescriptionbodystringrequeridoamountbodystring | numberrequeridocurrencybodyARSrequeridodirectionbodyoutbound | inboundopcionalconfirmHolderbodybooleanrequeridoholderNamebodystringrequeridotaxIdLast4bodystringrequeridosignalsbodyobjectopcionalRespuestas documentadas
GET/api/v1/instant-transfers/{id}Retrieve an instant transfer+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/instant-transfers/{id}/returnReturn a settled instant transfer with compensating postings+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
GET/api/v1/payment-qrsList Cimbra QR collection payloads+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/payment-qrsCreate a Cimbra-owned QR payload for an account+
Dynamic payloads use cimbra:qr:v1 and expire after one payment. Static payloads use cimbra:qr:static:v1, require an active sandbox CVU, stay open-amount and reusable until cancelled, and allow one active static QR per account. Neither payload is the Argentine interoperable QR.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
accountIdbodystring (uuid)requeridokindbodydynamic | staticopcionalamountbodystring | numberopcionalcurrencybodyARSopcionaldescriptionbodystringrequeridoexpiresInMinutesbodyintegeropcionalRespuestas documentadas
POST/api/v1/payment-qrs/{id}/cancelCancel an active Cimbra QR so it can no longer be paid+
Stops a reusable static QR or an unused dynamic QR. Does not reverse settled payments. Not a Coelsa or competitor caja command.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
POST/api/v1/payment-qrs/{id}/payPay a Cimbra QR from another account in the tenant+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
sourceAccountIdbodystring (uuid)requeridoamountbodystring | numberopcionalexternalReferencebodystringrequeridosignalsbodyobjectopcionalRespuestas documentadas
GET/api/v1/qr-debtsList Cimbra QR debts with a closed amount and a single payment+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/qr-debtsCreate a Cimbra QR debt with a closed amount and one payment+
Resource is the debt, not an overlay on a static QR. Payload cimbra:qr:debt:v1. Requires an active sandbox CVU on the collecting account. Sandbox settles synchronously in the same transaction. Not BIND deuda, EMVCo or Coelsa PCT.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
accountIdbodystring (uuid)requeridoexternalReferencebodystringrequeridodescriptionbodystringrequeridoamountbodystring | numberrequeridocurrencybodyARSopcionalexpiresInMinutesbodyintegeropcionalRespuestas documentadas
GET/api/v1/qr-debts/{id}Retrieve a Cimbra QR debt by id+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
DELETE/api/v1/qr-debts/{id}Delete an open Cimbra QR debt so the QR can no longer be paid+
Does not reverse a settled payment. A paid debt is not reopened. Not a Coelsa or competitor deuda command.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
GET/api/v1/qr-sale-ordersList Cimbra sale orders overlaid on static QRs+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/qr-sale-ordersOverlay a closed amount on an active Cimbra static QR+
One pending sale order per static QR. Creating another supersedes the pending one. Not a BIND caja, EMVCo or Transferencias 3.0 order.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
paymentQrIdbodystring (uuid)requeridoexternalReferencebodystringrequeridodescriptionbodystringrequeridoamountbodystring | numberrequeridocurrencybodyARSopcionalexpiresInMinutesbodyintegeropcionalRespuestas documentadas
GET/api/v1/qr-sale-orders/{id}Retrieve a Cimbra sale order by id+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
DELETE/api/v1/qr-sale-orders/{id}Delete a pending Cimbra sale order and return the static QR to open amount+
Does not reverse settled payments. Not a Coelsa or competitor caja command.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
GET/api/v1/rail-directoryPreview holder data for a CBU, CVU or alias+
Tenant-scoped lookup. Internal hits return holder name and tax last4. External CBU/CVU return last4 only. There is no national alias directory.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
qquerystringrequeridoRespuestas documentadas
GET/api/v1/rail-instrumentsList sandbox CVU and tenant aliases+
Instruments issued by Cimbra as a sandbox PSP. Prefix 0009999 is not a Coelsa assignment. Aliases resolve only inside the tenant.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/rail-instrumentsIssue a sandbox CVU and optional alias for an ARS Argentine account+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
accountIdbodystring (uuid)requeridoaliasbodyobjectopcionalRespuestas documentadas
GET/api/v1/rail-instruments/{id}Retrieve a rail instrument owned by the tenant+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
DELETE/api/v1/rail-instruments/{id}Delete a sandbox CVU without touching the account or ledger+
Own Cimbra contract. Marks the CVU and its tenant alias as revoked so they cannot receive or send. The ARS account and its balance remain. A later issue call reactivates the same sandbox CVU for that account.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
PATCH/api/v1/rail-instruments/{id}/aliasAssign or change the tenant alias of an existing sandbox CVU+
Own Cimbra contract. Assigns or replaces the alias of a CVU already issued in the tenant. Uniqueness is tenant-scoped, not a national directory. A real change is limited to once per 24 hours; issuing the CVU or the first assignment does not start that window. Repeating the same alias returns 200 without moving the clock.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
aliasbodystringrequeridoRespuestas documentadas
Cobranzas
13 operacionesGET/api/v1/collection-tillsList sandbox collection tills+
- Autenticación
- Sesión o API key
- Scope S2S
payments:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/collection-tillsCreate a collection till with its own sandbox CVU+
Own Cimbra contract. Issues a sandbox CVU (000+9999) attributed to this till, not a second CVU of the collector account. Optional static QR of the same account, or issueStaticQr to mint a till-owned cimbra:qr:static:v1 that does not consume the account's one static QR. closedAmountOnly requires a pending sale order to pay that QR. presence is present or not_present attribution, not POS. Optional alias. Not a BIND caja, Coelsa CVU, EMVCo QR or POS.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
accountIdbodystring (uuid)requeridoexternalReferencebodystringrequeridonamebodystringrequeridopaymentQrIdbodyobject (uuid)opcionalaliasbodyobjectopcionalissueStaticQrbodybooleanopcionalclosedAmountOnlybodybooleanopcionalpresencebodypresent | not_presentopcionalRespuestas documentadas
GET/api/v1/collection-tills/{id}Retrieve a collection till+
- Autenticación
- Sesión o API key
- Scope S2S
payments:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
DELETE/api/v1/collection-tills/{id}Disable a collection till and its sandbox CVU+
Irreversible. The CVU and alias stop resolving in the tenant directory. A new POST creates another till. Returns 200 JSON, including idempotent replay. Not a Coelsa disable.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
PATCH/api/v1/collection-tills/{id}/aliasAssign or change the tenant alias of a collection till+
Uniqueness is tenant-scoped against rail instruments and other tills. A real change is limited to once per 24 hours; the first assignment does not start that window.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
aliasbodystringrequeridoRespuestas documentadas
POST/api/v1/collection-tills/{id}/inboundCredit a collection till with a sandbox inbound cash-in+
Ledger cash-in to the collector account attributed to this till. Creates an inbound instant transfer with collectionTillId. Not a Coelsa credit.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
externalReferencebodystringrequeridodescriptionbodystringrequeridoamountbodystring | numberrequeridocurrencybodyARSopcionalRespuestas documentadas
POST/api/v1/collection-tills/{id}/static-qrIssue the till-owned static QR of a collection till+
Own Cimbra contract. Mints one cimbra:qr:static:v1 owned by this till. The payload never changes. Paying it attributes the transfer to collectionTillId. If closedAmountOnly is true, a pending sale order is required. Not interoperable, EMVCo, PCT or a BIND caja QR.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
GET/api/v1/payment-linksList sandbox collection payment links+
- Autenticación
- Sesión o API key
- Scope S2S
payments:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/payment-linksCreate a sandbox collection link against an Argentine ARS account+
Payload format cimbra:link:v1 is not a card network checkout. Allowed methods are internal Cimbra accounts, sandbox inbound cash-in, Cimbra QR of an associated open debt (cimbra_qr) or the sandbox CVU of an associated collection till (cimbra_cvu). Optional items are checkout display only and do not change the amount to collect. Card, POS, hosted PCI checkout, successUrl/errorUrl and interoperable QR return 422 or 400. Only cimbra_cvu accepts partial credits, multiple credits or an amount above the remaining balance. QR and internal collection stay closed-amount.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
accountIdbodystring (uuid)requeridoexternalReferencebodystringrequeridodescriptionbodystringrequeridoamountbodystring | numberrequeridocurrencybodyARSopcionalexpiresInMinutesbodyintegeropcionalmethodsbodyinternal | sandbox_inbound | cimbra_qr | cimbra_cvu[]opcionalqrDebtIdbodyobject (uuid)opcionalcollectionTillIdbodyobject (uuid)opcionalitemsbodyobject[]opcionalRespuestas documentadas
GET/api/v1/payment-links/{id}Retrieve a collection payment link+
The response embeds informational checkout items, CVU credits and partiallyCollected. Items do not change the amount to collect.
- Autenticación
- Sesión o API key
- Scope S2S
payments:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/payment-links/{id}/cancelCancel an open collection link+
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
POST/api/v1/payment-links/{id}/payCollect a sandbox payment link+
internal debits another Cimbra account in the tenant. sandbox_inbound posts a cash-in against settlement. cimbra_qr pays the associated closed QR debt. cimbra_cvu credits the associated till CVU. amount is accepted only for cimbra_cvu; omit it to credit the remaining balance. Partial credits, several credits and overpayment are allowed until collectedMinor >= amountMinor. Card acquiring is not supported.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
methodbodyinternal | sandbox_inbound | cimbra_qr | cimbra_cvu | card | pos | tap_to_phone | qr_interoperablerequeridopayerAccountIdbodystring (uuid)opcionalamountbodystring | numberopcionalsignalsbodyobjectopcionalRespuestas documentadas
POST/api/v1/payment-links/{id}/refundRefund a settled collection in full or in part with compensating ledger entries+
Omitting amount returns the remaining collected balance. amount refunds that ARS value from CVU credits in chronological order, or from the single closed-amount collection. creditId limits the refund to one CVU credit. A CVU link can reopen while collected remains below the original amount. Internal, QR and inbound stay closed after a partial refund. Not a card chargeback or BIND contracargo.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
amountbodystring | numberopcionalcreditIdbodyobject (uuid)opcionalRespuestas documentadas
ECHEQ
8 operacionesGET/api/v1/echeqsList sandbox electronic checks+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/echeqsIssue a sandbox ECHEQ against an Argentine ARS account+
Payload format cimbra:echeq:v1 is not a CMC7 or Coelsa identifier. Discount, custody, USD and chamber clearing return 422. Only current-account holders can issue real ECHEQ.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
drawerAccountIdbodystring (uuid)requeridoexternalReferencebodystringrequeridodescriptionbodystringrequeridoamountbodystring | numberrequeridocurrencybodyARS | USDopcionalbeneficiaryNamebodystringrequeridobeneficiaryTaxIdbodystringrequeridopaymentDatebodystring (date)opcionaltoOrderbodybooleanopcionaldiscountbodybooleanopcionalcustodybodybooleanopcionalclearingbodycoelsa | camaraopcionalRespuestas documentadas
GET/api/v1/echeqs/{id}Retrieve a sandbox ECHEQ+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/echeqs/{id}/acceptAccept a sandbox ECHEQ as the current beneficiary+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
accountIdbodystring (uuid)requeridotaxIdbodystringrequeridoRespuestas documentadas
POST/api/v1/echeqs/{id}/cancelCancel an issued sandbox ECHEQ before acceptance+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
POST/api/v1/echeqs/{id}/depositDeposit a sandbox ECHEQ into a Cimbra account+
Settles immediately on the Cimbra ledger. Deposit to CBU/CVU/Coelsa returns 422. Insufficient drawer funds mark the ECHEQ rejected.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
accountIdbodystring (uuid)requeridotaxIdbodystringrequeridodestinationKindbodycimbra_account | cbu | cvu | coelsaopcionalsignalsbodyobjectopcionalRespuestas documentadas
POST/api/v1/echeqs/{id}/endorseEndorse an accepted to-order sandbox ECHEQ+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
beneficiaryNamebodystringrequeridobeneficiaryTaxIdbodystringrequeridodiscountbodybooleanopcionalRespuestas documentadas
POST/api/v1/echeqs/{id}/returnReturn an accepted or endorsed sandbox ECHEQ before deposit+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
Wallets
10 operacionesGET/api/v1/wallet-programsList native wallet programs+
Tenant-scoped white-label wallet programs. Branding is stored configuration, not a consumer app or custodial license.
- Autenticación
- Sesión o API key
- Scope S2S
wallets:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/wallet-programsCreate a tenant wallet program+
Owner/Admin configure display name, currencies and pocket kinds. Pockets always include available and map to product ledger accounts.
- Autenticación
- Sesión o API key
- Scope S2S
wallets:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
namebodystringrequeridodisplayNamebodystringrequeridosupportUrlbodyobject (uri)opcionaltermsUrlbodyobject (uri)opcionalaccentColorbodyobjectopcionaldefaultCurrencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridoallowedCurrenciesbodyARS | USD | MXN | COP | BRL | CLP | PEN[]opcionalpocketKindsbodyavailable | pending | rewards[]opcionalRespuestas documentadas
GET/api/v1/wallet-programs/{id}Retrieve a wallet program+
- Autenticación
- Sesión o API key
- Scope S2S
wallets:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
GET/api/v1/walletsList customer wallets with cursor pagination+
- Autenticación
- Sesión o API key
- Scope S2S
wallets:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/walletsOpen a customer wallet with ledger-backed pockets+
Creates one product account per program pocket kind. Does not custody real funds or issue an end-user app.
- Autenticación
- Sesión o API key
- Scope S2S
wallets:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
programIdbodystring (uuid)requeridocustomerIdbodystring (uuid)requeridoexternalReferencebodystringrequeridoRespuestas documentadas
GET/api/v1/wallets/{id}Retrieve a wallet and its pockets+
- Autenticación
- Sesión o API key
- Scope S2S
wallets:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
GET/api/v1/wallets/{id}/lifecycleList append-only wallet lifecycle events+
- Autenticación
- Sesión o API key
- Scope S2S
wallets:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/wallets/{id}/lifecycleFreeze, unfreeze or close a wallet+
Frozen and closed wallets mark pocket accounts inactive. Closing requires zero available balance and no active holds.
- Autenticación
- Sesión o API key
- Scope S2S
wallets:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
statusbodyactive | frozen | closedrequeridoreasonbodyuser_request | internal_control | suspected_fraud | review_cleared | customer_request | compliancerequeridoRespuestas documentadas
GET/api/v1/wallets/{id}/pocketsList wallet pockets with ledger balances+
- Autenticación
- Sesión o API key
- Scope S2S
wallets:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/wallets/{id}/transfersMove balance between pockets of the same wallet+
Resolves pocket IDs to product accounts and executes a native book transfer with the same risk, holds and transfer.create maker/checker policy.
- Autenticación
- Sesión o API key
- Scope S2S
wallets:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
externalReferencebodystringrequeridosourcePocketIdbodystring (uuid)requeridodestinationPocketIdbodystring (uuid)requeridodescriptionbodystringrequeridoamountbodystring | numberrequeridoPositive decimal major-unit amount. Prefer a string to avoid floating-point serialization.
currencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridosignalsbodyobjectopcionalRespuestas documentadas
Cards
10 operacionesGET/api/v1/card-programsList tenant card programs+
Returns native Cimbra program definitions. No network, sponsor or competitor integration is implied.
- Autenticación
- Sesión o API key
- Scope S2S
cards:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/card-programsCreate an immutable card issuing program definition+
Session users must be owner or admin. API keys require cards:write. Name uniqueness is enforced per tenant under a transaction lock.
- Autenticación
- Sesión o API key
- Scope S2S
cards:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
namebodystringrequeridoproductbodydebit | credit | prepaidrequeridoformatsbodyvirtual | physical[]requeridodefaultCurrencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridoRespuestas documentadas
GET/api/v1/card-programs/{id}Retrieve a tenant card program+
- Autenticación
- Sesión o API key
- Scope S2S
cards:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
GET/api/v1/cardsList cards with cursor pagination+
- Autenticación
- Sesión o API key
- Scope S2S
cards:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/cardsIssue a native sandbox card from a program+
Physical instruments start in created and require activation; virtual instruments start active. Only last4 is generated and returned. Cimbra never creates or exposes PAN or CVV in this sandbox.
- Autenticación
- Sesión o API key
- Scope S2S
cards:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
accountIdbodystring (uuid)requeridoprogramIdbodystring (uuid)opcionalproductbodydebit | credit | prepaidopcionalformatbodyvirtual | physicalopcionalRespuestas documentadas
GET/api/v1/cards/{id}Retrieve a card by ID+
- Autenticación
- Sesión o API key
- Scope S2S
cards:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
GET/api/v1/cards/{id}/controlsRetrieve the current version of card controls+
- Autenticación
- Sesión o API key
- Scope S2S
cards:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
PATCH/api/v1/cards/{id}/controlsAppend a complete new version of card controls+
Limits use decimal major-unit strings at the boundary and BIGINT minor units in storage. Control versions are append-only; this sandbox records policy but does not claim network authorization enforcement.
- Autenticación
- Sesión o API key
- Scope S2S
cards:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
currencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridoperTransactionLimitbodyobjectrequeridodailyLimitbodyobjectrequeridomonthlyLimitbodyobjectrequeridoallowedChannelsbodyecommerce | contactless | chip | magstripe | atm[]requeridoallowedMccsbodystring[]requeridoblockedMccsbodystring[]requeridostatusbodyactive | inactiverequeridoRespuestas documentadas
GET/api/v1/cards/{id}/lifecycleList the append-only lifecycle of a card+
- Autenticación
- Sesión o API key
- Scope S2S
cards:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/cards/{id}/lifecycleApply a validated card lifecycle transition+
Valid transitions depend on the current state. Terminated is irreversible. Every transition is tenant-scoped, idempotent, audited and emitted as a webhook event.
- Autenticación
- Sesión o API key
- Scope S2S
cards:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
statusbodyactive | frozen | terminatedrequeridoreasonbodyactivation | user_request | internal_control | suspected_fraud | review_cleared | lost | stolen | damaged | customer_request | expiredrequeridoRespuestas documentadas
Servicios y pagos recurrentes
15 operacionesGET/api/v1/bill-paymentsList bill-payment, top-up and gift-card orders+
- Autenticación
- Sesión o API key
- Scope S2S
payments:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/bill-paymentsPay an obligation or execute a top-up+
Uses the canonical account, double-entry ledger, risk evaluation, holds and settlement path. A review response remains pending until its hold is captured or released.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
accountIdbodystring (uuid)requeridobillerIdbodystring (uuid)requeridoobligationIdbodystring (uuid)opcionaldestinationReferencebodystringopcionalamountbodystringopcionalRespuestas documentadas
GET/api/v1/bill-payments/{id}Retrieve a bill-payment or top-up order+
- Autenticación
- Sesión o API key
- Scope S2S
payments:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/bill-payments/{id}/reverseReverse a settled bill-payment or top-up order+
Creates a compensating ledger transaction and reopens a linked obligation; financial postings are never destructively mutated.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
GET/api/v1/billersList the tenant biller and top-up catalog+
Returns Cimbra-owned catalog records. It never proxies or simulates a competitor or external biller response.
- Autenticación
- Sesión o API key
- Scope S2S
billers:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/billersRegister a directly contracted or internal sandbox biller+
Owner/Admin only for sessions. The record is tenant-scoped, idempotent, audited and emitted as an event.
- Autenticación
- Sesión o API key
- Scope S2S
billers:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
codebodystringrequeridonamebodystringrequeridocountrybodystringrequeridocategorybodyutilities | telecom | tax | education | health | insurance | transport | entertainment | otherrequeridoserviceTypebodybill_payment | mobile_topup | gift_cardrequeridocurrencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridoamountModebodyexact | range | fixedrequeridobill_payment requires exact; top-ups and gift cards require range or fixed.
minAmountbodystringopcionalmaxAmountbodystringopcionalcontractReferencebodystringopcionalRespuestas documentadas
GET/api/v1/billers/{id}Retrieve a tenant biller+
- Autenticación
- Sesión o API key
- Scope S2S
billers:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
GET/api/v1/billers/{id}/obligationsList debts issued by a tenant biller+
An optional raw subscriber reference is normalized and hashed inside the tenant boundary; only its last four characters are returned.
- Autenticación
- Sesión o API key
- Scope S2S
billers:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridosubscriberReferencequerystringopcionalSubscriber identifier used only to calculate a tenant-scoped digest.
Respuestas documentadas
POST/api/v1/billers/{id}/obligationsIssue a debt for a bill-payment biller+
Direct originator ingestion only. Cimbra persists the canonical obligation and never fabricates an external debt query.
- Autenticación
- Sesión o API key
- Scope S2S
billers:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
externalReferencebodystringrequeridosubscriberReferencebodystringrequeridoNormalized and hashed tenant-locally; only the last four characters are exposed.
amountbodystringrequeridodueAtbodystring (date-time)requeridodescriptionbodystringrequeridoRespuestas documentadas
POST/api/v1/billers/{id}/statusActivate or suspend a biller+
Owner/Admin only for sessions. Lifecycle changes are idempotent, audited and emitted as events.
- Autenticación
- Sesión o API key
- Scope S2S
billers:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
actionbodyactivate | suspendrequeridoRespuestas documentadas
GET/api/v1/recurring-mandatesList recurring payment mandates+
- Autenticación
- Sesión o API key
- Scope S2S
payments:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/recurring-mandatesCreate a weekly or monthly payment mandate+
Persists consent evidence, limits, cadence and retry policy. It does not claim homologated direct debit or a live biller rail.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
accountIdbodystring (uuid)requeridobillerIdbodystring (uuid)requeridosubscriberReferencebodystringrequeridofrequencybodyweekly | monthlyrequeridoamountbodystringopcionalRequired for mobile_topup and gift_card; omitted for debt-based bill_payment mandates.
amountLimitbodystringrequeridoconsentReferencebodystringrequeridoconsentedAtbodystring (date-time)requeridonextChargeAtbodystring (date-time)requeridomaxRetriesbodyintegeropcionalRespuestas documentadas
GET/api/v1/recurring-mandates/{id}Retrieve a recurring payment mandate+
- Autenticación
- Sesión o API key
- Scope S2S
payments:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
GET/api/v1/recurring-mandates/{id}/executionsList execution attempts for a recurring mandate+
Returns sandbox charge attempts (settled, skipped, failed). Does not imply a live direct-debit rail.
- Autenticación
- Sesión o API key
- Scope S2S
payments:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridolimitqueryintegeropcionalRespuestas documentadas
POST/api/v1/recurring-mandates/{id}/statusPause, resume or cancel a recurring mandate+
Lifecycle actions are tenant-scoped, idempotent, audited and emitted as webhook events. Cancelled is terminal.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
actionbodypause | resume | cancelrequeridoRespuestas documentadas
Payments y transfers
7 operacionesPOST/api/v1/paymentsCreate a cash-in or cash-out against an account+
Posts to the tenant ledger settlement account. When payment.create maker/checker is enabled, returns 202 with a pending approval instead of settling immediately.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
accountIdbodystring (uuid)requeridodirectionbodycash_in | cash_outrequeridocounterpartybodystringrequeridodescriptionbodystringrequeridoamountbodystringrequeridocurrencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridosignalsbodyobjectopcionalRespuestas documentadas
GET/api/v1/payments/{id}Retrieve a cash-in or cash-out by ID+
- Autenticación
- Sesión o API key
- Scope S2S
payments:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/payments/{id}/reverseReverse a settled cash-in or cash-out with compensating ledger postings+
Canonical payment reversal. When payment.reverse maker/checker is enabled, returns 202 with a pending approval instead of posting compensation immediately. Generic transfer reverse returns 409 payment_reverse_required for cash movements.
- Autenticación
- Sesión o API key
- Scope S2S
payments:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
GET/api/v1/transfersList transfers with cursor pagination+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
POST/api/v1/transfersCreate an idempotent sandbox transfer+
When the tenant enables transfer dual control, this returns 202 without reserving funds. A different owner/admin with MFA must approve in a human session; balance and risk are re-evaluated atomically at approval time.
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
counterpartybodystringrequeridodescriptionbodystringrequeridoamountbodystring | numberrequeridoDecimal major-unit amount. Prefer a string to avoid floating-point serialization.
currencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridosignalsbodyobjectopcionalRespuestas documentadas
GET/api/v1/transfers/{id}Retrieve a transfer by ID+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/transfers/{id}/reverseReverse a settled transfer with a compensating journal+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
Payouts
10 operacionesGET/api/v1/payout-batchesList payout batches with per-item results+
- Autenticación
- Sesión o API key
- Scope S2S
payouts:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/payout-batchesCreate an immutable payout batch draft+
Accepts 1-100 items. Every beneficiary, account and currency is validated inside the tenant before persistence.
- Autenticación
- Sesión o API key
- Scope S2S
payouts:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
sourceAccountIdbodystring (uuid)requeridoexternalReferencebodystringrequeridodescriptionbodystringrequeridocurrencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridoscheduledForbodystring (date-time)opcionalOptional start time
processBeforebodystring (date-time)opcionalOptional processing deadline strictly after the effective start.
itemsbodyobject[]requeridoRespuestas documentadas
GET/api/v1/payout-batches/{id}Retrieve a payout batch and all item results+
- Autenticación
- Sesión o API key
- Scope S2S
payouts:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/payout-batches/{id}/cancelCancel a draft or scheduled payout batch+
Pending approvals are cancelled through the approval request. Processing and terminal batches cannot be cancelled destructively.
- Autenticación
- Sesión o API key
- Scope S2S
payouts:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
GET/api/v1/payout-batches/{id}/resultDownload the real per-item payout result file+
CSV contains protected beneficiary data, amounts, transaction links, terminal/current states and failure codes from the sandbox worker.
- Autenticación
- Sesión o API key
- Scope S2S
payouts:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/payout-batches/{id}/submitSubmit a payout batch for approval, scheduling or execution+
Returns 202. When dual control is enabled, a different Owner/Admin with MFA must authorize the batch. Otherwise a leased worker processes each item independently through risk and the ledger.
- Autenticación
- Sesión o API key
- Scope S2S
payouts:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
GET/api/v1/payout-beneficiariesList tenant-scoped payout beneficiaries+
Returns only a protected destination type and last four characters; the original destination is never returned.
- Autenticación
- Sesión o API key
- Scope S2S
payouts:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/payout-beneficiariesCreate a protected payout beneficiary+
Owner/Admin only for sessions. Cimbra persists a tenant-scoped digest and last four characters, not the raw destination.
- Autenticación
- Sesión o API key
- Scope S2S
payouts:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
externalReferencebodystringrequeridonamebodystringrequeridoentityTypebodyindividual | businessrequeridocountrybodystringrequeridocurrencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridodestinationTypebodylocal_account | alias | iban | clabe | pix_keyrequeridodestinationbodystringrequeridoConverted to a tenant-scoped one-way digest before persistence.
bankCodebodystringopcionalRespuestas documentadas
GET/api/v1/payout-beneficiaries/{id}Retrieve one payout beneficiary+
- Autenticación
- Sesión o API key
- Scope S2S
payouts:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/payout-beneficiaries/{id}/statusActivate or suspend a payout beneficiary+
- Autenticación
- Sesión o API key
- Scope S2S
payouts:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
actionbodyactivate | suspendrequeridoRespuestas documentadas
Ledger y holds
3 operacionesPOST/api/v1/holds/{id}/captureCapture an active hold and post its financial journal+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
POST/api/v1/holds/{id}/releaseRelease an active hold without posting a financial journal+
- Autenticación
- Sesión o API key
- Scope S2S
transfers:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
GET/api/v1/ledgerRead currency-isolated balances, journals and active holds+
- Autenticación
- Sesión o API key
- Scope S2S
ledger:read- Content-Type
Sin body
Respuestas documentadas
Risk
14 operacionesGET/api/v1/riskList system policies, tenant rules, evaluations and cases+
- Autenticación
- Sesión o API key
- Scope S2S
risk:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/risk/cases/{id}/resolveResolve a case and capture or release its linked hold+
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
resolutionbodyapproved | declinedrequeridonotebodystringrequeridoRespuestas documentadas
POST/api/v1/risk/evaluationsRun and persist an explainable risk decision+
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
operationTypebodytransfer | cash_in | cash_outrequeridoamountbodystringrequeridocurrencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridocounterpartybodystringrequeridosignalsbodyobjectopcionalRespuestas documentadas
POST/api/v1/risk/evaluations/{id}/outcomesAppend a confirmed legitimate or fraud outcome to an evaluation+
Corrections are immutable revisions and must identify the active outcome being superseded. Raw device and identity references are never returned.
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
labelbodylegitimate | fraudrequeridofraudTypebodyaccount_takeover | identity_fraud | scam | stolen_instrument | merchant_fraud | otheropcionallossAmountbodystringopcionalcurrencybodyARS | USD | MXN | COP | BRL | CLP | PENopcionalnotebodystringopcionalsupersedesOutcomeIdbodystring (uuid)opcionalRespuestas documentadas
GET/api/v1/risk/evaluations/{id}/step-up-challengesList OTP step-up challenges for one risk evaluation+
Returns lifecycle metadata only. Credentials, hashes and encrypted values are never exposed by reads.
- Autenticación
- Sesión o API key
- Scope S2S
risk:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/risk/evaluations/{id}/step-up-challengesCreate a client-managed OTP challenge for an evaluation in review+
Cimbra generates and protects the OTP. The credential is returned only by this authenticated create request and its identical replay while pending; it is absent from lists, audit events and webhooks. This is a rail-agnostic sandbox control, not 3DS or an ACS.
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
methodbodystringopcionaldeliverybodystringopcionalexpiresInSecondsbodyintegeropcionalmaxAttemptsbodyintegeropcionalRespuestas documentadas
POST/api/v1/risk/evaluations/{id}/step-up-challenges/{challengeId}/verifyVerify one OTP attempt under lock and persist its result+
Attempts are append-only, idempotent and limited. A successful step-up becomes evidence for the risk case but never bypasses case resolution or maker/checker policy.
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridochallengeIdpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
credentialbodystringrequeridoRespuestas documentadas
POST/api/v1/risk/listsAdd a tenant-scoped counterparty, device or identity decision-list entry+
The subject is converted to a tenant-scoped one-way digest before persistence; only a digest-derived preview is returned.
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
subjectTypebodycounterparty | device | identityrequeridosubjectValuebodystringrequeridocategorybodyallow | watch | blockrequeridoreasonbodystringrequeridoexpiresAtbodystring (date-time)opcionalRespuestas documentadas
DELETE/api/v1/risk/lists/{id}Disable an active tenant risk-list entry+
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/risk/rulesCreate the first active champion of a tenant risk-policy family+
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
namebodystringrequeridokindbodyamount_threshold | velocity_count | counterparty_matchrequeridooperationTypebodyany | transfer | cash_in | cash_outrequeridoscoreDeltabodyintegerrequeridoactionbodyscore | review | declinerequeridoprioritybodyintegeropcionalconfigurationbodyobjectrequeridoRespuestas documentadas
DELETE/api/v1/risk/rules/{id}Disable an active tenant rule+
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/risk/rules/{id}/promoteAtomically promote a challenger and archive its previous champion+
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
POST/api/v1/risk/rules/{id}/versionsCreate an immutable challenger version in an existing policy family+
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
namebodystringrequeridokindbodyamount_threshold | velocity_count | counterparty_matchrequeridooperationTypebodyany | transfer | cash_in | cash_outrequeridoscoreDeltabodyintegerrequeridoactionbodyscore | review | declinerequeridoprioritybodyintegeropcionalconfigurationbodyobjectrequeridoRespuestas documentadas
POST/api/v1/risk/simulationsCompare a challenger against live champions without changing production decisions+
Accepts up to 50 samples and persists only aggregate decision summaries, never the raw sample payload.
- Autenticación
- Sesión o API key
- Scope S2S
risk:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
candidateRuleIdbodystring (uuid)requeridosamplesbodyobject[]requeridoRespuestas documentadas
Disputas
4 operacionesGET/api/v1/disputesList disputes and eligible settled debits+
Returns tenant-scoped native Cimbra disputes plus debits that remain eligible under the 90-day sandbox window.
- Autenticación
- Sesión o API key
- Scope S2S
disputes:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/disputesOpen a partial or full dispute for a settled debit+
Creates one dispute per transaction. The original transaction and postings remain immutable. A requested provisional credit is posted only when review begins.
- Autenticación
- Sesión o API key
- Scope S2S
disputes:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
transactionIdbodystring (uuid)requeridoreasonbodycard_not_present | duplicate | amount_mismatch | service_not_received | credit_not_processed | cash_not_received | otherrequeridodescriptionbodystringrequeridoamountbodystringrequeridocurrencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridoprovisionalCreditRequestedbodybooleanopcionalRespuestas documentadas
GET/api/v1/disputes/{id}Retrieve a dispute with its immutable timeline+
- Autenticación
- Sesión o API key
- Scope S2S
disputes:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/disputes/{id}/eventsApply an allowed dispute lifecycle transition+
Validates the state machine, posts or compensates dispute credits in the double-entry ledger, and emits audit and webhook events. network_ready never means sent to a real card network.
- Autenticación
- Sesión o API key
- Scope S2S
disputes:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
eventbodystart_review | mark_network_ready | resolve_won | resolve_lost | reject | cancelrequeridonotebodystringrequeridoRespuestas documentadas
Conciliación y settlement
9 operacionesGET/api/v1/reconciliationList reconciliation runs and exception queue+
- Autenticación
- Sesión o API key
- Scope S2S
reconciliation:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/reconciliation/exceptions/{id}/resolveCorrect or explicitly accept an exception+
- Autenticación
- Sesión o API key
- Scope S2S
reconciliation:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
resolutionbodycorrected | acceptedrequeridonotebodystringrequeridoRespuestas documentadas
POST/api/v1/reconciliation/importsImport a canonical UTF-8 CSV and reconcile it atomically+
The raw file is parsed in memory and discarded. Cimbra persists its SHA-256 checksum, safe filename and normalized entries. Maximum size is 2 MB and 500 data rows.
- Autenticación
- Sesión o API key
- Scope S2S
reconciliation:write- Content-Type
multipart/form-data
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
namebodystringrequeridosourcebodybank | clearing | card_network | cash_network | internalrequeridocurrencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridoperiodStartbodystring (date-time)requeridoperiodEndbodystring (date-time)requeridofilebodystring (binary)requeridoRespuestas documentadas
POST/api/v1/reconciliation/runsCompare an external batch with Cimbra transactions+
Produces exact matches, amount mismatches, missing internal records and missing external records. The maximum period is 31 days and each request accepts at most 500 entries.
- Autenticación
- Sesión o API key
- Scope S2S
reconciliation:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
namebodystringrequeridosourcebodybank | clearing | card_network | cash_network | internalrequeridocurrencybodyARS | USD | MXN | COP | BRL | CLP | PENrequeridoperiodStartbodystring (date-time)requeridoperiodEndbodystring (date-time)requeridoentriesbodyobject[]requeridoRespuestas documentadas
GET/api/v1/reconciliation/runs/{id}Retrieve a run with every compared item+
- Autenticación
- Sesión o API key
- Scope S2S
reconciliation:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
GET/api/v1/settlementsList tenant settlement cycles+
- Autenticación
- Sesión o API key
- Scope S2S
settlements:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/settlementsCreate one sandbox settlement cycle from a completed reconciliation+
This records and schedules an operational acknowledgement. It does not move real funds or connect to a rail.
- Autenticación
- Sesión o API key
- Scope S2S
settlements:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
reconciliationRunIdbodystring (uuid)requeridonamebodystringrequeridoscheduledForbodystring (date-time)opcionalRespuestas documentadas
GET/api/v1/settlements/{id}Retrieve a tenant settlement cycle+
- Autenticación
- Sesión o API key
- Scope S2S
settlements:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/settlements/{id}/executeExecute a due sandbox settlement cycle idempotently+
- Autenticación
- Sesión o API key
- Scope S2S
settlements:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
Operaciones
4 operacionesGET/api/v1/operations/work-itemsList the unified risk, reconciliation and disputes work queue+
Returns tenant-scoped work items, assignable members, private document metadata, notes and evidence links for an operational console.
- Autenticación
- Sesión o API key
- Scope S2S
operations:read- Content-Type
Sin body
Respuestas documentadas
PATCH/api/v1/operations/work-items/{type}/{id}Assign, prioritize, schedule or escalate an open work item+
- Autenticación
- Sesión o API key
- Scope S2S
operations:write- Content-Type
application/json
Parámetros
typepathrisk-case | reconciliation-exception | disputerequeridoidpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
assignedToUserIdbodyobject (uuid)opcionalprioritybodylow | medium | high | criticalopcionaldueAtbodyobject (date-time)opcionalescalatedbodybooleanopcionalRespuestas documentadas
POST/api/v1/operations/work-items/{type}/{id}/evidenceLink a private compliance document to a work item+
- Autenticación
- Sesión o API key
- Scope S2S
operations:write- Content-Type
application/json
Parámetros
typepathrisk-case | reconciliation-exception | disputerequeridoidpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
documentIdbodystring (uuid)requeridoRespuestas documentadas
POST/api/v1/operations/work-items/{type}/{id}/notesAdd an immutable comment to a work item+
- Autenticación
- Sesión o API key
- Scope S2S
operations:write- Content-Type
application/json
Parámetros
typepathrisk-case | reconciliation-exception | disputerequeridoidpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
bodybodystringrequeridoRespuestas documentadas
Aprobaciones
7 operacionesGET/api/platform/approval-policyRead dual-control policies for money movement and sensitive operational decisions+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
Sin body
Respuestas documentadas
PATCH/api/platform/approval-policyEnable or disable dual approval as owner with MFA+
Enabling requires another owner/admin with MFA. Disabling is blocked while requests are pending.
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
application/json
Parámetros
actionTypebodysettlement.execute | transfer.create | payment.create | payment.reverse | payout_batch.execute | risk.case.resolve | reconciliation.exception.resolve | dispute.resolveopcionalenabledbodybooleanrequeridoexpiresInMinutesbodyintegerrequeridoRespuestas documentadas
GET/api/v1/approvalsList maker/checker requests for the tenant+
API keys require approvals:read. Decisions remain session-only so an S2S credential cannot act as a human checker.
- Autenticación
- Sesión o API key
- Scope S2S
approvals:read- Content-Type
Sin body
Respuestas documentadas
GET/api/v1/approvals/{id}Retrieve one tenant approval request+
- Autenticación
- Sesión o API key
- Scope S2S
approvals:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/approvals/{id}/approveApprove and atomically execute a protected operation+
Requires a different owner/admin with MFA and a console session. API keys are rejected.
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
reasonbodystringopcionalRespuestas documentadas
POST/api/v1/approvals/{id}/cancelCancel a pending request as its maker+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
reasonbodystringopcionalRespuestas documentadas
POST/api/v1/approvals/{id}/rejectReject a protected operation with a reason+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
reasonbodystringrequeridoRespuestas documentadas
Eventos y webhooks
6 operacionesGET/api/v1/eventsList the immutable tenant audit log+
- Autenticación
- Sesión o API key
- Scope S2S
events:read- Content-Type
Sin body
Parámetros
limitqueryintegeropcionalcursorquerystringopcionalOpaque cursor returned as nextCursor by the previous page.
Respuestas documentadas
GET/api/v1/webhooksList endpoints, deliveries and attempt logs+
- Autenticación
- Sesión o API key
- Scope S2S
webhooks:manage- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/webhooksRegister a public HTTPS webhook and return its signing secret once+
- Autenticación
- Sesión o API key
- Scope S2S
webhooks:manage- Content-Type
application/json
Parámetros
namebodystringrequeridourlbodystring (uri)requeridoeventTypesbodystring[]requeridoRespuestas documentadas
DELETE/api/v1/webhooks/{id}Disable an endpoint and cancel pending deliveries+
- Autenticación
- Sesión o API key
- Scope S2S
webhooks:manage- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/webhooks/{id}/rotateRotate a webhook signing secret+
- Autenticación
- Sesión o API key
- Scope S2S
webhooks:manage- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/webhooks/deliveries/{id}/replayRequeue a webhook delivery while retaining prior attempt logs+
- Autenticación
- Sesión o API key
- Scope S2S
webhooks:manage- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
Compliance
9 operacionesPOST/api/v1/compliance/documentsUpload private compliance evidence+
- Autenticación
- Sesión o API key
- Scope S2S
compliance:write- Content-Type
multipart/form-data
Parámetros
filebodystring (binary)requeridoRespuestas documentadas
GET/api/v1/due-diligenceRead the tenant KYC/KYB policy, metrics, cases, customers and evidence inventory+
Returns Cimbra's native due-diligence orchestration state. It records evidence and controlled decisions but does not claim biometric, government-registry or regulated approval without a direct certified source.
- Autenticación
- Sesión o API key
- Scope S2S
compliance:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/due-diligence/casesCreate a KYC or KYB case from the canonical customer type+
Individual customers produce KYC cases and business customers produce KYB cases. Only one non-expired active case is allowed per customer.
- Autenticación
- Sesión o API key
- Scope S2S
compliance:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
customerIdbodystring (uuid)requeridoexpiresInDaysbodyintegeropcionalRespuestas documentadas
GET/api/v1/due-diligence/cases/{id}Retrieve one KYC/KYB case with parties, append-only checks and lifecycle events+
- Autenticación
- Sesión o API key
- Scope S2S
compliance:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/v1/due-diligence/cases/{id}/cancelCancel a draft or in-review KYC/KYB case with a reason+
- Autenticación
- Sesión o API key
- Scope S2S
compliance:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
notebodystringrequeridoRespuestas documentadas
POST/api/v1/due-diligence/cases/{id}/checksAppend an evidence-backed KYC/KYB check while the case is in draft+
Check history is append-only. New checks supersede older observations by check type without mutating prior evidence.
- Autenticación
- Sesión o API key
- Scope S2S
compliance:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
checkTypebodyidentity_document | address | sanctions | pep | business_registry | beneficial_ownershiprequeridosourcebodymanual_review | official_registry | internal_listrequeridostatusbodypending | passed | failed | reviewrequeridoresultCodebodystringrequeridonotebodystringrequeridoevidenceDocumentIdbodystring (uuid)opcionalRespuestas documentadas
POST/api/v1/due-diligence/cases/{id}/decideApprove or reject an in-review case under mandatory maker-checker control+
Session-only decision. Requires an owner or admin with MFA who is different from the submitter. Approval also requires every latest required check to have passed.
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
decisionbodyapprove | rejectrequeridoriskRatingbodylow | medium | high | prohibitedrequeridonotebodystringrequeridoRespuestas documentadas
POST/api/v1/due-diligence/cases/{id}/partiesAppend a subject or KYB related party while the case is in draft+
- Autenticación
- Sesión o API key
- Scope S2S
compliance:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
rolebodysubject | legal_representative | beneficial_owner | directorrequeridonamebodystringrequeridotaxIdbodystringrequeridoOnly the final four alphanumeric characters are retained.
ownershipPercentagebodynumberopcionalpepDeclaredbodybooleanopcionalRespuestas documentadas
POST/api/v1/due-diligence/cases/{id}/submitSubmit a complete draft to the independent review queue+
Every required check must have a non-pending observation; KYB also requires a legal representative and beneficial owner.
- Autenticación
- Sesión o API key
- Scope S2S
compliance:write- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
Respuestas documentadas
Soporte
8 operacionesGET/api/ops/support/cases/{id}Retrieve any tenant support case with its conversation+
Restricted to platform operators provisioned in CIMBRA_PLATFORM_OPERATOR_EMAILS. Sessions only.
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
PATCH/api/ops/support/cases/{id}Move any tenant support case to another status+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridostatusbodyopen | pending_cimbra | pending_tenant | resolved | closedrequeridoRespuestas documentadas
POST/api/ops/support/cases/{id}/messagesAnswer a tenant support case as Cimbra+
Adds a platform-authored message and moves the case to pending_tenant.
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridobodybodystringrequeridoRespuestas documentadas
GET/api/v1/support/casesList the tenant support cases with their status and message count+
Support cases are tenant-scoped. A viewer can read them; opening or replying requires an operator role or the support:write scope.
- Autenticación
- Sesión o API key
- Scope S2S
support:read- Content-Type
Sin body
Respuestas documentadas
POST/api/v1/support/casesOpen a support case with its first message+
Limited to 20 open cases per tenant. Emits an audit event and a support.case_opened webhook.
- Autenticación
- Sesión o API key
- Scope S2S
support:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
categorybodysandbox | api | console | compliance | commercial | otherrequeridosubjectbodystringrequeridomessagebodystringrequeridoRespuestas documentadas
GET/api/v1/support/cases/{id}Retrieve a support case with its full conversation+
- Autenticación
- Sesión o API key
- Scope S2S
support:read- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
PATCH/api/v1/support/cases/{id}Move a support case to another status+
- Autenticación
- Sesión o API key
- Scope S2S
support:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
statusbodyopen | pending_cimbra | pending_tenant | resolved | closedrequeridoRespuestas documentadas
POST/api/v1/support/cases/{id}/messagesAdd a tenant message to an open support case+
Moves the case to pending_cimbra. Closed and resolved cases reject new messages.
- Autenticación
- Sesión o API key
- Scope S2S
support:write- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridoIdempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
bodybodystringrequeridoRespuestas documentadas
Plataforma y servicios
3 operacionesPATCH/api/ops/leads/{id}Move a commercial lead through its pipeline status+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridostatusbodynew | contacted | qualified | closedrequeridoRespuestas documentadas
GET/api/ops/overviewPlatform superadmin overview across every tenant+
Restricted to platform operators provisioned in CIMBRA_PLATFORM_OPERATOR_EMAILS. Sessions only, never API keys.
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
Sin body
Respuestas documentadas
GET/api/v1/servicesReturn the service catalog, ownership boundaries and extraction debt+
Every table and data-access module belongs to exactly one domain service. Services run in a shared runtime until a documented volume or risk gate justifies extracting them, and the cross-service write debt is reported explicitly.
- Autenticación
- Sesión o API key
- Scope S2S
platform:read- Content-Type
Sin body
Respuestas documentadas
Organización y credenciales
11 operacionesGET/api/platform/accessList tenant members and invitation history for owner or admin+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
Sin body
Respuestas documentadas
POST/api/platform/accessInvite an email to the tenant with an assignable role+
The invitation expires after seven days. A verified email is required before membership is accepted automatically.
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
application/json
Parámetros
emailbodystring (email)requeridorolebodyadmin | operator | viewerrequeridoRespuestas documentadas
DELETE/api/platform/access/invitations/{id}Revoke a pending organization invitation+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
PATCH/api/platform/access/members/{id}Change a member role within the owner/admin hierarchy+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
application/json
Parámetros
idpathstring (uuid)requeridorolebodyadmin | operator | viewerrequeridoRespuestas documentadas
DELETE/api/platform/access/members/{id}Remove a member from the tenant without deleting their identity+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
GET/api/platform/api-keysList safe API key metadata+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
Sin body
Respuestas documentadas
POST/api/platform/api-keysCreate an S2S API key; the secret is returned once+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
application/json
Parámetros
namebodystringrequeridoscopesbodycustomers:read | customers:write | accounts:read | accounts:write | cards:read | cards:write | transfers:read | transfers:write | payments:read | payments:write | payouts:read | payouts:write | billers:read | billers:write | wallets:read | wallets:write | risk:read | risk:write | disputes:read | disputes:write | reconciliation:read | reconciliation:write | settlements:read | settlements:write | approvals:read | operations:read | operations:write | support:read | support:write | organization:read | organization:write | platform:read | ledger:read | events:read | compliance:read | compliance:write | webhooks:manage[]requeridoexpiresInDaysbodyintegeropcionalRespuestas documentadas
DELETE/api/platform/api-keys/{id}Revoke an API key immediately+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
POST/api/platform/api-keys/{id}/rotateAtomically replace and revoke an API key+
- Autenticación
- Sesión
- Scope S2S
No aplica- Content-Type
Sin body
Parámetros
idpathstring (uuid)requeridoRespuestas documentadas
GET/api/v1/organizationRetrieve the tenant profile and member count+
- Autenticación
- Sesión o API key
- Scope S2S
organization:read- Content-Type
Sin body
Respuestas documentadas
PATCH/api/v1/organizationUpdate the tenant display name or country+
Requires an owner or admin role, or the organization:write scope. Emits an audit event and an organization.updated webhook.
- Autenticación
- Sesión o API key
- Scope S2S
organization:write- Content-Type
application/json
Parámetros
Idempotency-KeyheaderstringrequeridoStable unique key for this logical write. Replays return the original resource; reusing it with a different payload returns 409.
namebodystringopcionalcountrybodyAR | MX | CO | BR | CL | PEopcionalRespuestas documentadas
CHANGELOG
Cambios que ya están en el runtime.
Consola: ledger, cash-in/out y nav por capability
Ledger y Cash-in/out operan APIs reales; Book transfers queda separado. La navegación filtra por capability. El SDK agrega approvals.approve/reject/cancel. OpenAPI permanece en 194 operaciones.
Banco patrocinante operable en /ops
official_rail_connections suma negotiating, evidencia de sponsor (razón social, CUIT, contrato, safeguarding) y due diligence PSPCP. /ops opera PATCH /api/ops/rails/{id}. BIND Banco es candidato a entidad financiera patrocinante; bindX/BIND PSP siguen fuera del core. El adaptador documental no despacha fondos. OpenAPI permanece en 194 operaciones.
Movimientos sobre la API de transferencias
La consola deja el snapshot del dashboard y opera GET/POST /api/v1/transfers con detalle, paginación, export CSV y reversas compensatorias. Viewer lee; operator/admin/owner escriben. OpenAPI permanece en 194 operaciones.
Auditoría del tenant en la consola
La consola opera GET /api/v1/events: log append-only, paginado, filtrable por recurso y exportable. Todos los roles leen; no hay mutación. No es un SIEM. OpenAPI permanece en 194 operaciones.
Cuentas de producto en la consola
La consola opera GET/POST /api/v1/accounts y el statement de 30 días. Alta idempotente sobre un cliente del tenant, una moneda por cuenta y saldo derivado del ledger. Viewer lee; operator/admin/owner abren. No es CBU/CVU. OpenAPI permanece en 194 operaciones.
Padrón de clientes en la consola
La consola opera GET/POST /api/v1/customers con el mismo contrato del SDK: alta idempotente, last4 fiscal y detalle por id. Viewer lee; operator/admin/owner crean. El KYC/KYB sigue en Compliance. OpenAPI permanece en 194 operaciones.
Soporte, organización, superadmin y catálogo de servicios
API v1 de casos de soporte y perfil del tenant, /ops para operadores provisionados, /help y /status públicos, y GET /api/v1/services con fronteras de dominio verificadas. Runtime compartido: ningún servicio se declara standalone. OpenAPI pasa a 194 operaciones. BIND, Dock, tapi, Pismo, Pomelo y Wibond siguen siendo benchmarks.
Data room público y presupuesto Gate 1
GET /api/v1/live-readiness publica capitalPlan (USD 500, gastado 0, liveReadyAfterSpend=false). /investors muestra evidencia del sandbox sin clientes ni volumen inventados. El envelope no autoriza AWS pago, Coelsa, banco patrocinante ni Go Live. OpenAPI quedó en 179 operaciones en ese corte; el contrato vigente es 194.
QR estático del punto de recaudación
Un collection_till emite su propio cimbra:qr:static:v1 (issueStaticQr o POST /api/v1/collection-tills/{id}/static-qr) sin gastar el QR estático de la cuenta. closedAmountOnly exige una orden de venta pendiente. El pago imputa collectionTillId. El payload no se cancela: se deshabilita el punto. OpenAPI quedó en 179 operaciones en ese corte; el contrato vigente es 194. No es QR interoperable, EMVCo ni POS.
Devolución parcial de un link de cobro
POST /api/v1/payment-links/{id}/refund acepta amount y creditId opcionales. Vacío devuelve lo cobrado pendiente. Un parcial deja postings compensatorios sin mutar el asiento original. Un link CVU puede reabrirse si el neto queda por debajo del monto; internal, QR e inbound permanecen cerrados. GET embebe refunds y partiallyRefunded. OpenAPI sigue en 178 operaciones.
Ítems de checkout y créditos embebidos en el link
POST /api/v1/payment-links acepta items[] informativos (máx. 20). No controlan el monto ni sustituyen un carrito PCI. GET, list y pay embeben items, credits y partiallyCollected. successUrl, errorUrl y configuracionCheckout se rechazan. OpenAPI sigue en 178 operaciones.
Créditos parciales CVU y checkout público
POST /api/v1/payment-links/{id}/pay acepta amount sólo con cimbra_cvu. Se puede acreditar el restante, un parcial, varios créditos o más del monto. checkoutUrl apunta a /pay/{id} sin formulario de tarjeta. QR e internal siguen monto cerrado. collection.link_credited se emite en cada crédito que no completa el link.
Link de cobro asociado a deuda QR o till
POST /api/v1/payment-links acepta qrDebtId y collectionTillId. Los medios cimbra_qr y cimbra_cvu liquidan el QR de la deuda o el CVU del till. Pagar el QR también cierra el link. No hay checkout PCI, tarjeta ni QR de red.
Punto de recaudación Cimbra con CVU propio
POST /api/v1/collection-tills emite un CVU sandbox atribuido al till, no un segundo CVU de la cuenta cobradora. PATCH asigna alias de tenant, POST /inbound acredita el ledger y DELETE deshabilita el CVU. La transferencia interna al CVU queda con collectionTillId. No es caja BIND ni crédito Coelsa.
QR de deuda Cimbra
POST /api/v1/qr-debts crea una deuda con monto cerrado y un solo pago. Payload cimbra:qr:debt:v1. Exige CVU sandbox activo. DELETE la elimina y el QR no se vuelve a pagar. No es deuda BIND, EMVCo ni PCT Coelsa.
Orden de venta Cimbra sobre QR estático
POST /api/v1/qr-sale-orders fija un monto cerrado y un vencimiento sobre un QR estático activo. Una pendiente por QR; crear otra reemplaza la anterior. DELETE la elimina y el QR vuelve a monto abierto. No es caja BIND, EMVCo ni Transferencias 3.0.
QR estático Cimbra, reutilizable y sin riel ajeno
POST /api/v1/payment-qrs con kind=static emite cimbra:qr:static:v1. Exige un CVU sandbox activo, no vence, cobra monto abierto las veces que haga falta y admite un estático activo por cuenta. POST /api/v1/payment-qrs/{id}/cancel deja de cobrar. No es EMVCo, Transferencias 3.0 ni caja BIND.
Rieles oficiales y camino PSPCP fail-closed
GET /api/v1/live-readiness publica el catálogo de contrapartes BCRA/Coelsa/sponsor/PCI, el checklist PSPCP argentino y exige riel live más adaptador Cimbra para liveReady. El sandbox no despacha cámara. Marcar un producto Go Live no mueve fondos.
Eliminar CVU sandbox sin tocar la cuenta
DELETE /api/v1/rail-instruments/{id} deja el CVU y su alias inoperables. La cuenta ARS y el saldo permanecen. Un POST posterior de emisión reactiva el mismo CVU sandbox. No es una baja en Coelsa.
Asignar o cambiar alias de un CVU sandbox
PATCH /api/v1/rail-instruments/{id}/alias asigna o reemplaza el alias de un CVU ya emitido. La unicidad es del tenant, no un directorio nacional. Un cambio real queda limitado a una vez cada 24 horas; emitir el CVU o la primera asignación no arrancan esa ventana. Repetir el mismo alias responde 200 sin mover el reloj.
Readiness alineado a BIND, Pismo, Pomelo y tapi
GET /api/v1/live-readiness deja de inventar gates de software. Expone sandbox vs production como Pismo y BIND, las etapas Integración → Homologación → Go Live de Pomelo, y productos del catálogo público: consulta CBU/CVU/Alias, transferencias, DEBIN, ECHEQ, CVU, QR interoperable, cobro BIND PSP, issuing PCI/BIN y pago de servicios tapi. Production no tiene hostname. Ningún producto está en Go Live.
ECHEQ sandbox para Argentina
Emisión, aceptación, endoso, depósito interno, anulación y devolución previa. Payload cimbra:echeq:v1, CUIT AFIP y rechazo por fondos insuficientes. Descuento, custodia, USD y Coelsa responden 422. No es un cheque compensable en cámara.
Cobranzas sandbox para Argentina
Links de cobro con payload cimbra:link:v1, eco cerrado entre cuentas Cimbra, inbound ledger y devoluciones compensatorias. Tarjetas, POS y QR interoperable responden 422. No es adquirencia de red.
Pagos instantáneos sandbox para Argentina
Emisión de CVU 0009999, alias tenant-scoped, confirmación de titular, crédito interno o cash-out a settlement, débito interno, QR Cimbra dinámico, estático y de deuda con orden de venta y devoluciones compensatorias. No es Coelsa, DEBIN ni QR interoperable.
Wallets nativas con bolsillos ledger-backed
Programas tenant, wallets por customer, pockets mapeados a cuentas de producto, freeze/close, movimientos internos via book transfers, API, SDK, eventos y consola por rol. No custodia fondos ni publica una app de consumidor.
Book transfers y estados de cuenta nativos
Movimientos account-to-account con dos postings atómicos, saldo disponible, holds de riesgo, maker/checker, reversas compensatorias, API paginada, SDK, eventos y consola por rol.
Beneficiarios y payouts masivos nativos
Destinos protegidos por tenant, lotes inmutables de hasta 100 ítems, programación/deadline, maker-checker, worker con lease, riesgo/ledger por ítem, CSV de resultados, scopes, SDK y consola por rol.
Servicios, recargas y mandatos recurrentes nativos
Catálogo por tenant, obligaciones emitidas con referencia protegida, pagos y recargas conectados a ledger/riesgo/holds, reversas compensatorias, mandatos con consentimiento, límites, reintentos, scopes S2S, SDK, eventos y consola por rol.
KYC/KYB nativo y maker/checker obligatorio
Expedientes versionados con partes y beneficiarios finales, checks/evidencia append-only, expiración, scopes S2S, SDK de orquestación, webhooks y consola por rol. La decisión queda reservada a otro Owner/Admin con MFA y sesión humana.
Step-up OTP y SLO de decisión
Challenges client-managed con secreto cifrado y hasheado, expiración, intentos append-only, idempotencia, RBAC, auditoría y SDK. Riesgo publica p50/p95/p99 y cumplimiento medido; no se presenta como 3DS o ACS.
Disputas y chargebacks nativos
Disputas parciales con lifecycle explícito, créditos provisionales o definitivos en doble partida, compensaciones, evidencia, cola operativa, maker/checker, API, SDK y permisos por rol. network_ready no implica conexión a una red real.
Runtime verificable y métricas por período
El build valida el servidor standalone usado por OCI y el overview calcula ventanas reales de 7/30 días; los fallos de red o respuestas inválidas ya no dejan acciones bloqueadas.
Issuing nativo: programas, lifecycle y controles
Programas tenant, estados terminales, controles append-only por límites/canales/MCC, seis eventos, SDK y consola por rol; el sandbox no expone datos PCI ni afirma conexión a redes.
Doble control para decisiones operativas
Casos de riesgo, excepciones de conciliación y disputas admiten políticas independientes, revalidación atómica y protección contra bypass de holds o créditos.
Cola operativa con SLA y evidencia
Riesgo, conciliación y disputas comparten ownership, prioridad, vencimiento, escalamiento, comentarios y documentos privados mediante API, SDK y consola.
RBAC y sesiones consistentes
Una matriz canónica gobierna consola y API; 401 y 403 quedan diferenciados y las sesiones vencidas preservan el destino.
Maker/checker para transferencias y settlement
Solicitudes persistidas, separación de personas, MFA, expiración y revalidación transaccional antes de ejecutar.
Riesgo, conciliación y settlement nativos
Reglas, evaluaciones, casos, importación CSV, excepciones y ciclos sandbox conectados al ledger y a webhooks.
La ruta mayor es /api/v1 y cada respuesta publica Cimbra-Version: 2026-09-01 y Cimbra-Environment. Live no está habilitado; el flip de entorno reutiliza este contrato.