Referencia · versión 2026-10-15
API de clientes empresa de Grip Rails (fase 1)
Cuentas de pago en pesos, CVU, transferencias por COELSA y eventos para clientes empresa de FCM Payment Solutions S.A.S.
Descargar openapi.yaml openapi.json
Esta referencia se genera desde el contrato OpenAPI 3.1.0. El contrato es la fuente de verdad.
API para que las empresas clientes de FCM Payment Solutions S.A.S. (proveedor de servicios de pago que ofrece cuentas de pago, inscripto en el BCRA; PSP 214 en COELSA) operen cuentas de pago en pesos: ver saldos, usar sus CVU, validar contrapartes, ordenar transferencias por COELSA y enterarse de los créditos entrantes.
Es el contrato de la fase 1, multi-cliente desde el día uno: cada entidad tiene sus credenciales, sus claves de firma, su URL de webhook, sus cuentas en el libro, sus CVU, sus topes y su comisión. Este contrato es estable: la implementación puede cambiar y la integración del cliente no.
Lo que esta API no hace
- No opera activos digitales. No hay criptoactivos, stablecoins, direcciones de blockchain, conversiones ni cotizaciones. El TO de PSP del BCRA (punto 4.6) prohíbe a FCM Payment Solutions S.A.S. realizarlas y facilitarlas. Si un cliente opera cripto, esa pata la ejecuta otra persona jurídica regulada y FCM Payment Solutions S.A.S. sólo mueve pesos contra instrucciones.
- No opera moneda extranjera ni giros al exterior. La única moneda es
ARSy los destinos son CBU, CVU o alias del sistema argentino. - No crea CVU ni cuentas en fase 1. Las da de alta Grip Rails a pedido de la entidad (llegan como números de cuenta listables). El alta por API es fase 2.
FCM Payment Solutions S.A.S. se limita a ofrecer servicios de pago y no se encuentra autorizada a operar como entidad financiera por el BCRA. Los fondos depositados en cuentas de pago no constituyen depósitos en una entidad financiera, ni cuentan con ninguna de las garantías que tales depósitos puedan gozar de acuerdo con la legislación y reglamentación aplicables en materia de depósitos en entidades financieras.
Autenticación: API key y firma de cada pedido
Todo pedido lleva las dos cosas:
Authorization: Bearer fcm_live_…: la API key de la entidad. Grip Rails la guarda hasheada. Puede haber dos activas para rotar sin corte.- Firma HTTP del pedido (RFC 9421, HTTP Message Signatures) hecha con la clave privada del cliente. Grip Rails guarda
sólo la clave pública, registrada en el alta (hasta dos activas por entorno). Algoritmos:
ed25519oecdsa-p256-sha256.- Componentes firmados obligatorios:
"@method"y"@target-uri". Si el pedido tiene cuerpo, también"content-type","content-digest"e"idempotency-key". Si mandásFCM-Version, también"fcm-version"."authorization"no se firma: una firma que la cubre se rechaza consignature_invalid. Así Grip Rails puede volver a verificar la firma de cada instrucción con tu clave pública, sin tu API key, que sólo guarda hasheada. - Parámetros obligatorios de la firma:
created(segundos Unix; se acepta ±300 s),nonce(16 a 64 caracteres base64url, único por clave durante 10 minutos),keyid(id de tu clave pública,ck_…) yalg. - Con cuerpo:
Content-Digest: sha-256=:…:(RFC 9530) calculado sobre los bytes exactos que mandás.
- Componentes firmados obligatorios:
POST /v1/outgoing_transfers HTTP/1.1
Host: api.fcmpayments.com
Authorization: Bearer fcm_live_3kTq…
Content-Type: application/json
Idempotency-Key: 01JA2B3C4D5E6F7G8H9JKMNPQR
Content-Digest: sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:
Signature-Input: sig1=("@method" "@target-uri" "content-type" "content-digest" "idempotency-key");created=1760112000;nonce="Vq3n8sZx0bR1yTqLkM2pWg";keyid="ck_01JA2B3C4D5E6F7G8H9JKMNPQS";alg="ed25519"
Signature: sig1=:Kp9…==:
En producción la entidad puede pedir una lista de IP permitidas. mTLS se ofrece como capa adicional en fase 2 para quien lo exija; no reemplaza la firma.
Idempotencia
Idempotency-Keyes obligatoria en todoPOST(16 a 128 caracteresA-Z a-z 0-9 . _ : -; recomendado UUID o ULID). El ámbito es la entidad en ese entorno.- Misma clave y mismo pedido: misma respuesta (código y cuerpo), con
Idempotent-Replayed: true. - Misma clave con otro pedido (huella SHA-256 de método, ruta y cuerpo canonizado según RFC 8785):
409 idempotency_key_reused. - Mientras el primer pedido está en curso:
409 idempotency_request_in_progress(reintentable). - Las respuestas
5xxno se guardan: reintentá con la misma clave. - El registro completo vive 35 días y se consulta con
GET /v1/idempotency_keys/{idempotency_key}. La clave de una transferencia queda atada a esa transferencia para siempre: no se puede reusar ni pasados los 35 días, y la transferencia se busca conGET /v1/outgoing_transfers?idempotency_key=…. - Si la primera respuesta se perdió (por ejemplo, un corte), el reintento devuelve el estado actual de la misma transferencia, que puede estar más avanzado que el original.
- Una respuesta
202se guarda y se repite igual que cualquier2xx. El estado vigente se pide conGET /v1/outgoing_transfers/{id}o llega por webhook.
Versionado
- El mayor va en la ruta (
/v1) y cambia sólo ante un rediseño total. - La versión por fecha va en
FCM-Version: AAAA-MM-DD. Cada entidad queda fijada a la versión vigente cuando se da de alta y puede probar otra mandando el header. La respuesta devuelve la versión usada. - Sin versión nueva entran los cambios aditivos: endpoints nuevos, campos opcionales nuevos en pedidos, campos nuevos en respuestas, valores nuevos en enums de respuesta y tipos de evento nuevos. Tu integración tiene que ignorar campos y tipos de evento desconocidos y tolerar valores de enum nuevos.
- Lo que rompe sólo sale en una versión nueva. Una versión se mantiene al menos 12 meses después de publicada la
siguiente y su retiro se avisa con 6 meses de anticipación (headers
DeprecationySunset, mail al contacto técnico y changelog). Como máximo hay dos versiones vivas. - Los webhooks y los eventos se arman en la versión fijada de la entidad (campo
api_version).
Montos, moneda y fechas
- Montos: enteros en centavos (
150000= $ 1.500,00). Moneda: sóloARS. - Fechas y horas: RFC 3339 en UTC. El día de negocio, los topes diarios y los mensuales usan el calendario de Buenos
Aires (
America/Argentina/Buenos_Aires).
Paginación
Las listas devuelven del más nuevo al más viejo. limit va de 1 a 100 (25 por defecto); para la página siguiente
mandá starting_after con el next_cursor recibido. Los eventos son distintos: orden ascendente por sequence
(ver "Eventos y webhooks").
Transferencias salientes: autorizar antes de transferir
Ver POST /v1/outgoing_transfers. Estados y su equivalente ISO 20022 (pacs.002, TransactionStatus):
status |
Qué significa | Reserva en el libro | ISO 20022 |
|---|---|---|---|
pending |
Grip Rails recibió la orden pero todavía no puede confirmar la autorización. Puede haber plata reservada. No reintentes con otra Idempotency-Key. | Puede haber una pendiente | PDNG |
rejected |
La autorización la rechazó. No salió plata. | No hay, o se liberó | RJCT |
reserved |
Autorizada; importe más cargos reservados; todavía no se envió a COELSA. | Pendiente | ACCP |
submitted |
Enviada a COELSA; falta el resultado. Con status_reason: late_settlement_review, reabierta por una acreditación tardía (ver abajo). |
Pendiente (reabierta: liberada, y el importe ya debitado) | ACSP |
completed |
COELSA la acreditó en el destino. | Asentada | ACCC |
failed |
COELSA la rechazó o venció. Sin cargo. Si COELSA la acredita después, se reabre y se debita el importe, siempre sin comisión (ver abajo). | Liberada | RJCT |
Acreditación tardía. Si COELSA acredita una transferencia que ya te informamos failed (su aviso
llegó tarde o se perdió), la plata salió y Grip Rails la reabre: vuelve a submitted con status_reason: late_settlement_review (ISO ACSP; failure y failed_at vuelven a null) y te avisamos con el evento
transfer.outgoing.reopened. El importe se debita de tu cuenta de fondos con un asiento compensatorio (sus referencias
van en el evento); si los fondos no alcanzan, el faltante lo cubre tu cuenta de garantía y el resto queda como deuda con
FCM Payment Solutions S.A.S., según contrato. Grip Rails deshabilita tus transferencias salientes y siguen deshabilitadas, aun después de completed,
hasta que Grip Rails las vuelva a habilitar (sólo en el sandbox se rehabilitan solas después del cierre simulado: ver
Sandbox). Cuando dos personas de Grip Rails confirman la acreditación, la transferencia pasa a
completed (evento transfer.outgoing.completed) sin cargo: Grip Rails no cobra comisión por una transferencia
reabierta, porque la reapertura no es culpa tuya (Grip Rails sólo libera una reserva con evidencia). charges lo dice con un
cargo fcm_fee de 0 y su motivo, y total_debit_amount es el importe. Es la única forma de salir de failed; no
la repitas con otra Idempotency-Key.
Los créditos entrantes tienen un solo estado en fase 1, posted, equivalente a BOOK (camt.054).
Límites de uso
Por entidad: 5 escrituras y 25 lecturas por segundo (ampliables por contrato). Al pasarte: 429 rate_limited con
Retry-After.
Más en Errores, Webhooks y firmas y Entornos.
Entidad
La empresa cliente autenticada, sus topes, su uso y sus comisiones.
Ver la entidad autenticada
Devuelve la entidad dueña de la API key, con sus topes, el uso del día y del mes, y sus comisiones.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 La entidad.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: Entity
object"entity"obligatoriolegal_namestring obligatoriolargo máx.200CUIT con el que la entidad es titular de sus CVU ante COELSA.
suspended: puede leer pero no ordenar transferencias.environmentstring obligatorioValores:live,testapi_versionstring obligatorioVersión del contrato fijada para la entidad.
patrón^\d{4}-\d{2}-\d{2}$Topes de transferencias salientes de la entidad, fijados por contrato (los aprueba Grip Rails, no se cambian por API). Cuentan el importe sin cargos de las transferencias
reserved,submittedycompleted.null= sin tope.Comisión por movimiento, según contrato. Se cobra como asiento separado en el libro: en una salida se reserva con la transferencia y se libera si falla; en una entrada se descuenta al asentar y nunca supera el importe recibido.
created_atstring (date-time) obligatorio
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Cuentas
Cuentas de pago en pesos de la entidad (fondos y garantía) con su saldo en el libro.
Listar cuentas
Lista las cuentas de la entidad con su saldo y su estado.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Query
limitintegerCantidad máxima de objetos por página.
mín.1· máx.100· por defecto25starting_afterstringCursor opaco (
next_cursorde la página anterior).largo máx.200
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 Página de cuentas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: AccountList
object"list"obligatoriohas_moreboolean obligatorionext_cursorstring | null obligatorio
400 Pedido mal formado o parámetro inválido. No se creó nada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
parametro
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "amount tiene que ser un entero positivo en centavos.",
"display_message": null,
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#amount_invalid",
"transfer_id": null
}
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Ver una cuenta (saldo y estado)
Saldo y estado de una cuenta. El saldo sale del libro en el momento del pedido:
posted es lo asentado, held lo reservado por transferencias salientes en curso y available = posted − held.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 La cuenta.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: Account
object"account"obligatoriofunds: cuenta de fondos, la que opera.guarantee: cuenta de garantía (reserva) que el cliente deposita según contrato para cubrir faltantes; se ve pero no se debita por API.namestring obligatoriolargo máx.80Única moneda de la API.
frozen: no puede ordenar salidas; las entradas se asientan.CVU que figura como origen ante COELSA si la transferencia no indica otro.
created_atstring (date-time) obligatorioupdated_atstring (date-time) obligatorio
Cuenta de fondos con una salida en curso
{
"id": "acc_01JA2B3C4D5E6F7G8H9JKMNPQR",
"object": "account",
"entity_id": "ent_01JA2B3C4D5E6F7G8H9JKMNPQA",
"type": "funds",
"name": "Fondos operativos",
"currency": "ARS",
"status": "active",
"balances": {
"posted": 2500000,
"held": 150050,
"available": 2349950
},
"primary_account_number_id": "acn_01JA2B3C4D5E6F7G8H9JKMNPQB",
"created_at": "2026-10-15T13:00:00Z",
"updated_at": "2026-10-16T18:22:41Z"
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Números de cuenta
CVU de cada cuenta (N por cuenta). Todos tienen como titular a la entidad.
Listar números de cuenta (CVU)
Lista los CVU de la entidad. Una cuenta puede tener N CVU (por ejemplo, uno por cada usuario o comercio del cliente, para atribuir cobros); todos tienen como titular a la entidad y lo que entra por cualquiera de ellos se asienta en la misma cuenta. En fase 1 los da de alta Grip Rails.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Query
account_idAccountIdFiltra por cuenta.
statusAccountNumberStatusFiltra por estado.
limitintegerCantidad máxima de objetos por página.
mín.1· máx.100· por defecto25starting_afterstringCursor opaco (
next_cursorde la página anterior).largo máx.200
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 Página de números de cuenta.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: AccountNumberList
object"list"obligatoriohas_moreboolean obligatorionext_cursorstring | null obligatorio
400 Pedido mal formado o parámetro inválido. No se creó nada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
parametro
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "amount tiene que ser un entero positivo en centavos.",
"display_message": null,
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#amount_invalid",
"transfer_id": null
}
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Ver un número de cuenta
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 El número de cuenta.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: AccountNumber
object"account_number"obligatorioCBU o CVU de 22 dígitos con dígitos verificadores válidos.
pending: alta en COELSA en curso.inactive: dado de baja o inactivo en COELSA.Titular registrado en COELSA. En fase 1 siempre es la entidad.
Campos de
holdernamestring obligatoriolargo máx.120CUIT o CUIL, 11 dígitos sin guiones.
is_primaryboolean obligatorioEtiqueta que el cliente pidió para este CVU (por ejemplo, el id de su usuario o comercio). Sin datos personales.
created_atstring (date-time) obligatorio
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Contrapartes
Validación del titular de un destino contra COELSA antes de pagar.
Validar una contraparte
Consulta en COELSA quién es el titular de un CBU, CVU o alias, si la cuenta está activa y si pasa los controles de cumplimiento de Grip Rails. No mueve plata.
Una validación valid dura 15 minutos (expires_at) y se puede pasar en counterparty_validation_id al crear la
transferencia para no consultar de nuevo. Un resultado negativo no es un error HTTP: responde 201 con el
result correspondiente. Si COELSA no contesta: 503 rail_unavailable.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Clave única por intención del cliente. Obligatoria en todo POST. Ver "Idempotencia".
Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048Content-Digeststring obligatorioSHA-256 de los bytes exactos del cuerpo, según RFC 9530.
patrón^sha-256=:[A-Za-z0-9+/]{43}=:$
Cuerpo del pedido obligatorio
Esquema: CounterpartyValidationRequest
Destino de una transferencia o de una validación.
expected_cuitCuitSi viene, el resultado es
holder_mismatchcuando COELSA informa otro CUIT.
Validar un alias esperando un CUIT
{
"destination": {
"type": "alias",
"value": "proveedor.ejemplo"
},
"expected_cuit": "27000000006"
}
Respuestas
201 Validación hecha (el resultado puede ser negativo).
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Idempotent-Replayedbooleantruesi es la respuesta guardada para esa Idempotency-Key.
Esquema: CounterpartyValidation
object"counterparty_validation"obligatorioDestino de una transferencia o de una validación.
valid: titular encontrado, cuenta activa y controles en orden.not_found: COELSA no conoce la cuenta o el alias.inactive: la cuenta existe pero no está activa.holder_mismatch: el CUIT no es el esperado.blocked: Grip Rails no puede operar con esa cuenta (control de cumplimiento; sin detalle).display_messagestring | null obligatorioTexto en castellano para mostrar al usuario final cuando el resultado no es
valid.Presente si COELSA informó un titular (
valid,inactiveyholder_mismatch).validated_atstring (date-time) obligatorioexpires_atstring (date-time) obligatorioHasta cuándo se puede usar en una transferencia (15 minutos).
Titular encontrado y activo
{
"id": "cval_01JA2B3C4D5E6F7G8H9JKMNPQC",
"object": "counterparty_validation",
"destination": {
"type": "alias",
"value": "proveedor.ejemplo"
},
"expected_cuit": "27000000006",
"result": "valid",
"display_message": null,
"counterparty": {
"name": "PROVEEDOR EJEMPLO",
"cuit": "27000000006",
"account": "0110599520000001234569",
"account_type": "cbu",
"bank_code": "011",
"alias": "proveedor.ejemplo",
"is_fcm_account": false
},
"validated_at": "2026-10-16T18:20:03Z",
"expires_at": "2026-10-16T18:35:03Z"
}
400 Pedido mal formado o parámetro inválido. No se creó nada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
parametro
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "amount tiene que ser un entero positivo en centavos.",
"display_message": null,
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#amount_invalid",
"transfer_id": null
}
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
409 Conflicto de idempotencia.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
reusada
{
"error": {
"type": "idempotency_error",
"code": "idempotency_key_reused",
"message": "La Idempotency-Key 01JA2B3C4D5E6F7G8H9JKMNPQR ya se usó con otro pedido (POST /v1/outgoing_transfers, huella distinta).",
"display_message": null,
"param": "Idempotency-Key",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#idempotency_key_reused",
"transfer_id": null
}
}
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Transferencias salientes
Pagos en pesos a CBU, CVU o alias, con autorización previa y reserva en el libro.
Crear una transferencia saliente
Ordena una transferencia en pesos desde una cuenta de la entidad hacia un CBU, CVU o alias.
Antes de mover un peso, Grip Rails autoriza, en este orden:
- Cuenta y entidad activas, cuenta no congelada y transferencias habilitadas.
- Tope por operación.
- Reserva en el libro (transferencia pendiente) por el importe más los cargos. Sin saldo
disponible:
insufficient_funds. - Titular del destino según COELSA (o una validación vigente pasada en
counterparty_validation_id): existe, está activo, no es la misma cuenta y, si mandasteexpected_counterparty_cuit, coincide. - Listas sancionatorias (RePET, ONU, OFAC) sobre el titular del destino.
- Topes diario y mensual de la entidad (cuentan las transferencias
reserved,submittedycompleted). - Reglas antifraude.
Si todo pasa: 201 con la transferencia en reserved y el evento transfer.outgoing.reserved. Grip Rails la envía
a COELSA enseguida (submitted) y la cierra con el aviso de COELSA: completed (la plata llegó y la reserva se
asienta, con el evento transfer.outgoing.completed) o failed (la reserva se libera, no hay cargo, evento
transfer.outgoing.failed). Si COELSA la acredita después de informarla failed, Grip Rails la reabre (submitted con
status_reason: late_settlement_review, evento transfer.outgoing.reopened) y la cierra en completed: ver
"Acreditación tardía" en la descripción general.
Si Grip Rails no puede confirmar el resultado en el momento: 202 con la transferencia en pending, o en submitted
con status_reason: rail_outcome_unknown si un reintento la encuentra ya enviada y sin resultado. La orden existe y
está atada a tu Idempotency-Key: no la repitas con otra clave. Una pending termina en reserved (evento
transfer.outgoing.reserved) o en failed con failure.code: canceled_by_fcm (evento transfer.outgoing.failed).
Si algo falla: 422 con el motivo en error.code. La transferencia queda guardada en rejected (su id va en
error.transfer_id) y la reserva, si llegó a tomarse, se libera. Los pedidos mal formados (400) no crean nada.
COELSA es irreversible: Grip Rails no libera una reserva ya enviada sin evidencia de rechazo. Si el resultado no
llega, la transferencia sigue submitted con status_reason: rail_outcome_unknown y la plata sigue reservada
hasta resolverlo. Nunca se reenvía con otro identificador.
Si el destino es una cuenta de Grip Rails, la transferencia es interna (rail.name: fcm_book) y se completa en el acto.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Clave única por intención del cliente. Obligatoria en todo POST. Ver "Idempotencia".
Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048Content-Digeststring obligatorioSHA-256 de los bytes exactos del cuerpo, según RFC 9530.
patrón^sha-256=:[A-Za-z0-9+/]{43}=:$
Cuerpo del pedido obligatorio
Esquema: OutgoingTransferCreateRequest
account_number_idAccountNumberIdCVU de la cuenta que figura como origen ante COELSA. Por defecto, el principal de la cuenta.
Importe en centavos de peso.
150000= $ 1.500,00.Única moneda de la API.
Destino de una transferencia o de una validación.
expected_counterparty_cuitCuitRecomendado siempre. Si COELSA informa otro CUIT para el titular, se rechaza con
destination_holder_mismatch.counterparty_validation_idCounterpartyValidationIdValidación
validvigente (15 minutos) del mismo destino. Si vence o no coincide,400 parameter_invalid.conceptConceptConcepto BCRA de la transferencia, que viaja a COELSA. Lista inicial; puede crecer de forma aditiva. VAR varios, ALQ alquileres, CUO cuotas, EXP expensas, FAC facturas, HAB haberes, HON honorarios, PRE préstamos, SEG seguros.
descriptionstringTexto del cliente. Queda en Grip Rails; en fase 1 no viaja a COELSA.
largo máx.140external_referenceExternalReferenceReferencia del cliente para conciliar. No tiene que ser única y no viaja a COELSA.
metadataMetadataHasta 20 pares clave-valor del cliente. No poner datos personales.
Pago a un CBU con control de titular
{
"account_id": "acc_01JA2B3C4D5E6F7G8H9JKMNPQR",
"amount": 150000,
"currency": "ARS",
"destination": {
"type": "cbu",
"value": "0110599520000001234569"
},
"expected_counterparty_cuit": "27000000006",
"concept": "FAC",
"description": "Factura 0003-00001234",
"external_reference": "pedido-7781",
"metadata": {
"agent_id": "agt_42"
}
}
Respuestas
201 Autorizada y reservada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Idempotent-Replayedbooleantruesi es la respuesta guardada para esa Idempotency-Key.
Esquema: OutgoingTransfer
Determinístico a partir de la entidad y la Idempotency-Key, así un reintento llega al mismo objeto.
object"outgoing_transfer"obligatorioCVU que figura como origen ante COELSA.
nullsi se rechazó antes de elegirlo.Importe en centavos de peso.
150000= $ 1.500,00.Única moneda de la API.
Cargos de esta transferencia. Cada uno con importe es un asiento separado en el libro. Una transferencia reabierta por una acreditación tardía y completada va sin cargo y lo dice con un
fcm_feede0y su motivo.Importe en centavos de peso.
150000= $ 1.500,00.Destino de una transferencia o de una validación.
Titular verificado.
nullsi se rechazó antes de consultar el destino.Concepto BCRA de la transferencia, que viaja a COELSA. Lista inicial; puede crecer de forma aditiva. VAR varios, ALQ alquileres, CUO cuotas, EXP expensas, FAC facturas, HAB haberes, HON honorarios, PRE préstamos, SEG seguros.
descriptionstring | null obligatoriolargo máx.140Hasta 20 pares clave-valor del cliente. No poner datos personales.
Ver la tabla de estados en la descripción general.
Decisión de la autorización previa, con su motivo. FCM Payment Solutions S.A.S. guarda además el detalle completo de cada control.
nullsi se rechazó antes de reservar.nullhasta que se envía.Presente sólo en
failed.created_atstring (date-time) obligatorioupdated_atstring (date-time) obligatoriocompleted_atstring (date-time) | null obligatoriofailed_atstring (date-time) | null obligatorioHora en que quedó
failed. Vuelve anullsi se reabre por una acreditación tardía.
Recién autorizada
{
"id": "otr_01JA2B3C4D5E6F7G8H9JKMNPQV",
"object": "outgoing_transfer",
"account_id": "acc_01JA2B3C4D5E6F7G8H9JKMNPQR",
"account_number_id": "acn_01JA2B3C4D5E6F7G8H9JKMNPQB",
"amount": 150000,
"currency": "ARS",
"charges": [
{
"type": "fee",
"code": "fcm_fee",
"amount": 50,
"description": "Comisión por transferencia saliente"
}
],
"total_debit_amount": 150050,
"destination": {
"type": "cbu",
"value": "0110599520000001234569"
},
"counterparty": {
"name": "PROVEEDOR EJEMPLO",
"cuit": "27000000006",
"account": "0110599520000001234569",
"account_type": "cbu",
"bank_code": "011",
"alias": null,
"is_fcm_account": false
},
"concept": "FAC",
"description": "Factura 0003-00001234",
"external_reference": "pedido-7781",
"metadata": {
"agent_id": "agt_42"
},
"status": "reserved",
"status_reason": null,
"iso20022": {
"status": "ACCP",
"reason": null
},
"authorization": {
"decision": "approved",
"decided_at": "2026-10-16T18:22:41Z",
"rationale": {
"code": "approved",
"message": "Pasó todos los controles."
},
"checks": [
{
"name": "account",
"result": "passed"
},
{
"name": "limits",
"result": "passed"
},
{
"name": "funds",
"result": "passed"
},
{
"name": "counterparty",
"result": "passed"
},
{
"name": "compliance",
"result": "passed"
}
]
},
"reservation": {
"amount": 150050,
"state": "held",
"placed_at": "2026-10-16T18:22:41Z",
"resolved_at": null,
"ledger_references": [
"7f3a9c2e4b1d8f6a0c5e3b9d7a1f4c2e",
"1b8e4d2c9a7f3e5d0b6c8a2f4e1d9c7b"
]
},
"rail": null,
"failure": null,
"idempotency_key": "01JA2B3C4D5E6F7G8H9JKMNPQR",
"created_at": "2026-10-16T18:22:40Z",
"updated_at": "2026-10-16T18:22:41Z",
"completed_at": null,
"failed_at": null
}
202 Recibida; el resultado todavía no se puede confirmar. No reintentes con otra Idempotency-Key.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Idempotent-Replayedbooleantruesi es la respuesta guardada para esa Idempotency-Key.
Esquema: OutgoingTransfer
Determinístico a partir de la entidad y la Idempotency-Key, así un reintento llega al mismo objeto.
object"outgoing_transfer"obligatorioCVU que figura como origen ante COELSA.
nullsi se rechazó antes de elegirlo.Importe en centavos de peso.
150000= $ 1.500,00.Única moneda de la API.
Cargos de esta transferencia. Cada uno con importe es un asiento separado en el libro. Una transferencia reabierta por una acreditación tardía y completada va sin cargo y lo dice con un
fcm_feede0y su motivo.Importe en centavos de peso.
150000= $ 1.500,00.Destino de una transferencia o de una validación.
Titular verificado.
nullsi se rechazó antes de consultar el destino.Concepto BCRA de la transferencia, que viaja a COELSA. Lista inicial; puede crecer de forma aditiva. VAR varios, ALQ alquileres, CUO cuotas, EXP expensas, FAC facturas, HAB haberes, HON honorarios, PRE préstamos, SEG seguros.
descriptionstring | null obligatoriolargo máx.140Hasta 20 pares clave-valor del cliente. No poner datos personales.
Ver la tabla de estados en la descripción general.
Decisión de la autorización previa, con su motivo. FCM Payment Solutions S.A.S. guarda además el detalle completo de cada control.
nullsi se rechazó antes de reservar.nullhasta que se envía.Presente sólo en
failed.created_atstring (date-time) obligatorioupdated_atstring (date-time) obligatoriocompleted_atstring (date-time) | null obligatoriofailed_atstring (date-time) | null obligatorioHora en que quedó
failed. Vuelve anullsi se reabre por una acreditación tardía.
400 Pedido mal formado o parámetro inválido. No se creó nada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
parametro
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "amount tiene que ser un entero positivo en centavos.",
"display_message": null,
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#amount_invalid",
"transfer_id": null
}
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
409 Conflicto de idempotencia.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
reusada
{
"error": {
"type": "idempotency_error",
"code": "idempotency_key_reused",
"message": "La Idempotency-Key 01JA2B3C4D5E6F7G8H9JKMNPQR ya se usó con otro pedido (POST /v1/outgoing_transfers, huella distinta).",
"display_message": null,
"param": "Idempotency-Key",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#idempotency_key_reused",
"transfer_id": null
}
}
422 La autorización rechazó la transferencia. Quedó guardada en rejected y no salió plata.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Idempotent-Replayedbooleantruesi es la respuesta guardada para esa Idempotency-Key.
Esquema: Error
sin_saldo
{
"error": {
"type": "transfer_declined",
"code": "insufficient_funds",
"message": "La cuenta acc_01JA2B3C4D5E6F7G8H9JKMNPQR tiene 120000 centavos disponibles y la transferencia necesita 150050.",
"display_message": "No hay saldo suficiente para esta transferencia.",
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#insufficient_funds",
"transfer_id": "otr_01JA2B3C4D5E6F7G8H9JKMNPQV"
}
}
titular
{
"error": {
"type": "transfer_declined",
"code": "destination_holder_mismatch",
"message": "COELSA informa otro CUIT para el titular del destino.",
"display_message": "La cuenta de destino no es de quien esperabas.",
"param": "expected_counterparty_cuit",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#destination_holder_mismatch",
"transfer_id": "otr_01JA2B3C4D5E6F7G8H9JKMNPQV"
}
}
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Listar transferencias salientes
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Query
account_idAccountIdFiltra por cuenta.
statusOutgoingTransferStatusFiltra por estado.
idempotency_keyIdempotencyKeyValueBusca la transferencia creada con esta Idempotency-Key (sirve también pasados los 35 días).
external_referenceExternalReferenceFiltra por tu referencia.
created_afterstring (date-time)Sólo objetos creados en este instante o después (RFC 3339).
created_beforestring (date-time)Sólo objetos creados antes de este instante (RFC 3339).
limitintegerCantidad máxima de objetos por página.
mín.1· máx.100· por defecto25starting_afterstringCursor opaco (
next_cursorde la página anterior).largo máx.200
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 Página de transferencias salientes.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: OutgoingTransferList
object"list"obligatoriohas_moreboolean obligatorionext_cursorstring | null obligatorio
400 Pedido mal formado o parámetro inválido. No se creó nada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
parametro
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "amount tiene que ser un entero positivo en centavos.",
"display_message": null,
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#amount_invalid",
"transfer_id": null
}
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Ver una transferencia saliente
Estado vigente de la transferencia. Es lo que hay que consultar al recibir un webhook.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 La transferencia.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: OutgoingTransfer
Determinístico a partir de la entidad y la Idempotency-Key, así un reintento llega al mismo objeto.
object"outgoing_transfer"obligatorioCVU que figura como origen ante COELSA.
nullsi se rechazó antes de elegirlo.Importe en centavos de peso.
150000= $ 1.500,00.Única moneda de la API.
Cargos de esta transferencia. Cada uno con importe es un asiento separado en el libro. Una transferencia reabierta por una acreditación tardía y completada va sin cargo y lo dice con un
fcm_feede0y su motivo.Importe en centavos de peso.
150000= $ 1.500,00.Destino de una transferencia o de una validación.
Titular verificado.
nullsi se rechazó antes de consultar el destino.Concepto BCRA de la transferencia, que viaja a COELSA. Lista inicial; puede crecer de forma aditiva. VAR varios, ALQ alquileres, CUO cuotas, EXP expensas, FAC facturas, HAB haberes, HON honorarios, PRE préstamos, SEG seguros.
descriptionstring | null obligatoriolargo máx.140Hasta 20 pares clave-valor del cliente. No poner datos personales.
Ver la tabla de estados en la descripción general.
Decisión de la autorización previa, con su motivo. FCM Payment Solutions S.A.S. guarda además el detalle completo de cada control.
nullsi se rechazó antes de reservar.nullhasta que se envía.Presente sólo en
failed.created_atstring (date-time) obligatorioupdated_atstring (date-time) obligatoriocompleted_atstring (date-time) | null obligatoriofailed_atstring (date-time) | null obligatorioHora en que quedó
failed. Vuelve anullsi se reabre por una acreditación tardía.
Acreditada por COELSA
{
"id": "otr_01JA2B3C4D5E6F7G8H9JKMNPQV",
"object": "outgoing_transfer",
"account_id": "acc_01JA2B3C4D5E6F7G8H9JKMNPQR",
"account_number_id": "acn_01JA2B3C4D5E6F7G8H9JKMNPQB",
"amount": 150000,
"currency": "ARS",
"charges": [
{
"type": "fee",
"code": "fcm_fee",
"amount": 50,
"description": "Comisión por transferencia saliente"
}
],
"total_debit_amount": 150050,
"destination": {
"type": "cbu",
"value": "0110599520000001234569"
},
"counterparty": {
"name": "PROVEEDOR EJEMPLO",
"cuit": "27000000006",
"account": "0110599520000001234569",
"account_type": "cbu",
"bank_code": "011",
"alias": null,
"is_fcm_account": false
},
"concept": "FAC",
"description": "Factura 0003-00001234",
"external_reference": "pedido-7781",
"metadata": {
"agent_id": "agt_42"
},
"status": "completed",
"status_reason": null,
"iso20022": {
"status": "ACCC",
"reason": null
},
"authorization": {
"decision": "approved",
"decided_at": "2026-10-16T18:22:41Z",
"rationale": {
"code": "approved",
"message": "Pasó todos los controles."
},
"checks": [
{
"name": "account",
"result": "passed"
},
{
"name": "limits",
"result": "passed"
},
{
"name": "funds",
"result": "passed"
},
{
"name": "counterparty",
"result": "passed"
},
{
"name": "compliance",
"result": "passed"
}
]
},
"reservation": {
"amount": 150050,
"state": "posted",
"placed_at": "2026-10-16T18:22:41Z",
"resolved_at": "2026-10-16T18:22:44Z",
"ledger_references": [
"7f3a9c2e4b1d8f6a0c5e3b9d7a1f4c2e",
"1b8e4d2c9a7f3e5d0b6c8a2f4e1d9c7b"
]
},
"rail": {
"name": "coelsa",
"operation_id": "86VRPQ2GX0O4XQ4Y9GLY0X",
"origin_reference": "9000000000017",
"status_code": "7500",
"submitted_at": "2026-10-16T18:22:42Z",
"finalized_at": "2026-10-16T18:22:44Z"
},
"failure": null,
"idempotency_key": "01JA2B3C4D5E6F7G8H9JKMNPQR",
"created_at": "2026-10-16T18:22:40Z",
"updated_at": "2026-10-16T18:22:44Z",
"completed_at": "2026-10-16T18:22:44Z",
"failed_at": null
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Transferencias entrantes
Créditos recibidos en los CVU de la entidad, asentados con liquidación real de COELSA.
Listar créditos entrantes
Créditos recibidos en los CVU de la entidad. Cada uno nace de un aviso de COELSA verificado (crédito ya liquidado en la cuenta recaudadora de FCM Payment Solutions S.A.S.) y se asienta en el libro con su comisión como asiento aparte.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Query
account_idAccountIdFiltra por cuenta.
account_number_idAccountNumberIdFiltra por el CVU por el que entró.
created_afterstring (date-time)Sólo objetos creados en este instante o después (RFC 3339).
created_beforestring (date-time)Sólo objetos creados antes de este instante (RFC 3339).
limitintegerCantidad máxima de objetos por página.
mín.1· máx.100· por defecto25starting_afterstringCursor opaco (
next_cursorde la página anterior).largo máx.200
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 Página de créditos entrantes.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: IncomingTransferList
object"list"obligatoriohas_moreboolean obligatorionext_cursorstring | null obligatorio
400 Pedido mal formado o parámetro inválido. No se creó nada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
parametro
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "amount tiene que ser un entero positivo en centavos.",
"display_message": null,
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#amount_invalid",
"transfer_id": null
}
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Ver un crédito entrante
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 El crédito entrante.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: IncomingTransfer
Determinístico a partir del id de COELSA del crédito.
object"incoming_transfer"obligatorioCBU o CVU de 22 dígitos con dígitos verificadores válidos.
Importe en centavos de peso.
150000= $ 1.500,00.Única moneda de la API.
Importe en centavos de peso, puede ser cero.
Quien pagó, según el aviso de COELSA. Cualquier dato puede faltar si COELSA no lo informa.
conceptstring | null obligatorioConcepto BCRA informado por COELSA, si viene.
patrón^[A-Z]{3}$statusstring obligatorioEn fase 1 siempre
posted.Valores:postediso20022object obligatorioCampos de
iso20022entry_statusstring obligatoriocamt.054
EntryStatus.Valores:BOOK
railobject obligatorioCampos de
railnamestring obligatorioValores:coelsa,fcm_bookoperation_idstring obligatorioId de COELSA del crédito, o el
otr_…de origen sinameesfcm_book(interna entre cuentas de Grip Rails). Es la clave de idempotencia del asiento.largo máx.64business_datestring (date) | null obligatorioFecha de negocio (compensación) informada por COELSA.
posted_atstring (date-time) obligatoriocreated_atstring (date-time) obligatorio
Crédito por un CVU de referencia
{
"id": "itr_01JA2B3C4D5E6F7G8H9JKMNPQW",
"object": "incoming_transfer",
"account_id": "acc_01JA2B3C4D5E6F7G8H9JKMNPQR",
"account_number_id": "acn_01JA2B3C4D5E6F7G8H9JKMNPQD",
"cvu": "0000214300000009999994",
"amount": 1500000,
"currency": "ARS",
"charges": [
{
"type": "fee",
"code": "fcm_fee",
"amount": 50,
"description": "Comisión por crédito entrante"
}
],
"net_amount": 1499950,
"payer": {
"name": "PAGADOR EJEMPLO",
"cuit": "20000000001",
"account": "0000999100000000000420",
"account_type": "cvu",
"bank_code": null
},
"concept": "VAR",
"status": "posted",
"iso20022": {
"entry_status": "BOOK"
},
"rail": {
"name": "coelsa",
"operation_id": "WY7ZEPN6YGGPE6LV2Q0M5X",
"business_date": "2026-10-16"
},
"ledger_references": [
"3c9e1a7b5d2f8e4c6a0b9d3f7e1c5a2b",
"9d4b2f8a6c1e7d3b5f0a8c2e6d4b1f9a",
"5e2c8a4f1b7d9e3c6a0f2b8d4e6c1a7f"
],
"posted_at": "2026-10-16T21:20:15Z",
"created_at": "2026-10-16T21:20:15Z"
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Eventos
Registro ordenado de lo que pasó, para conciliar y para los webhooks.
Listar eventos por cursor
Eventos de la entidad en orden ascendente de sequence, desde el siguiente a after_sequence. Sin filtro de
tipo, sequence es contiguo: guardá el último que procesaste y pedí desde ahí. Con el filtro type la secuencia
tiene saltos por diseño (es sólo para consultar). Es la fuente para conciliar; los webhooks son un aviso.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Query
after_sequenceinteger (int64)Devuelve los eventos con
sequencemayor a este valor. Por defecto 0 (desde el primero disponible).mín.0· por defecto0typeEventTypeFiltra por tipo de evento.
limitintegerCantidad máxima de eventos (1 a 100).
mín.1· máx.100· por defecto100
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 Página de eventos.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: EventList
object"list"obligatoriohas_moreboolean obligatorionext_after_sequenceinteger (int64) | null obligatorioValor para el próximo
after_sequence(lasequencedel último evento devuelto).
Dos eventos
{
"object": "list",
"data": [
{
"id": "evt_01JA2B3C4D5E6F7G8H9JKMNPQX",
"object": "event",
"type": "transfer.outgoing.reserved",
"sequence": 41,
"entity_id": "ent_01JA2B3C4D5E6F7G8H9JKMNPQA",
"api_version": "2026-10-15",
"created_at": "2026-10-16T18:22:41Z",
"data": {
"object": "outgoing_transfer",
"id": "otr_01JA2B3C4D5E6F7G8H9JKMNPQV",
"account_id": "acc_01JA2B3C4D5E6F7G8H9JKMNPQR",
"ledger_references": [
"7f3a9c2e4b1d8f6a0c5e3b9d7a1f4c2e",
"1b8e4d2c9a7f3e5d0b6c8a2f4e1d9c7b"
]
}
},
{
"id": "evt_01JA2B3C4D5E6F7G8H9JKMNPQY",
"object": "event",
"type": "transfer.outgoing.completed",
"sequence": 42,
"entity_id": "ent_01JA2B3C4D5E6F7G8H9JKMNPQA",
"api_version": "2026-10-15",
"created_at": "2026-10-16T18:22:44Z",
"data": {
"object": "outgoing_transfer",
"id": "otr_01JA2B3C4D5E6F7G8H9JKMNPQV",
"account_id": "acc_01JA2B3C4D5E6F7G8H9JKMNPQR",
"ledger_references": [
"2a6d9f3c8e1b5a7d4c0e9b2f6a8d3c1e",
"8c3f7a1e5d9b2c6f0a4e8d1b7c5f3a9e"
]
}
}
],
"has_more": false,
"next_after_sequence": 42
}
400 Pedido mal formado o parámetro inválido. No se creó nada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
parametro
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "amount tiene que ser un entero positivo en centavos.",
"display_message": null,
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#amount_invalid",
"transfer_id": null
}
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Ver un evento
Sirve para confirmar por otra vía un webhook recibido.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 El evento.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: Event
object"event"obligatorioTipos de la fase 1. Pueden aparecer tipos nuevos sin aviso de versión; ignorá los que no conozcas.
transfer.outgoing.reopened: una transferenciafailedque COELSA acreditó después volvió asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obligatorioContiguo y creciente por entidad, asignado en el orden en que se confirmó el cambio.
mín.1api_versionstring obligatoriopatrón^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obligatorioReferencia delgada al objeto. Para el estado vigente, pedí el objeto.
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Idempotencia
Consulta de una Idempotency-Key usada.
Consultar una Idempotency-Key
Dice si la clave está en curso o terminada, con qué pedido se usó (huella), qué respondimos y qué objeto creó.
Disponible 35 días desde el primer uso. Las claves de transferencias siguen ligadas a su transferencia después de
ese plazo (ver GET /v1/outgoing_transfers?idempotency_key=).
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 El registro de la clave.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
FCM-VersionstringVersión del contrato con la que se respondió.
Esquema: IdempotencyRecord
object"idempotency_key"obligatoriostatusstring obligatorioValores:in_progress,completedmethodstring obligatorioValores:POSTpathstring obligatoriolargo máx.200request_fingerprintstring obligatorioSHA-256 de método, ruta y cuerpo canonizado (RFC 8785).
patrón^[0-9a-f]{64}$response_statusinteger | null obligatoriomín.200· máx.499resourceobject | null obligatorioObjeto creado o afectado, si lo hubo.
Variante object
objectstring obligatorioidstring obligatorio
created_atstring (date-time) obligatorioexpires_atstring (date-time) obligatorio
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Claves de Grip Rails
Claves públicas con las que Grip Rails firma los webhooks.
Claves públicas de Grip Rails para verificar webhooks
JWKS (RFC 7517) con las claves públicas vigentes con las que Grip Rails firma los webhooks. No requiere autenticación. Las claves privadas viven en KMS y no salen de ahí.
Sin autenticación.
Respuestas
200 Conjunto de claves.
Encabezados
Cache-ControlstringSe puede cachear 5 minutos.
Esquema: Jwks
- ítems mín.
1
Una clave P-256 vigente
{
"keys": [
{
"kty": "EC",
"crv": "P-256",
"x": "f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",
"y": "x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0",
"kid": "fcm-whk-2026-10",
"alg": "ES256",
"use": "sig"
}
]
}
429 Pasaste el límite de pedidos por segundo.
Sandbox
Simuladores. Sólo existen en el sandbox.
Simular un crédito entrante
Arma un aviso de COELSA sintético hacia un CVU de la entidad y lo hace pasar por el mismo camino que uno real:
asiento en el libro del sandbox, comisión, evento transfer.incoming.posted y webhook. Sólo sandbox.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Clave única por intención del cliente. Obligatoria en todo POST. Ver "Idempotencia".
Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048Content-Digeststring obligatorioSHA-256 de los bytes exactos del cuerpo, según RFC 9530.
patrón^sha-256=:[A-Za-z0-9+/]{43}=:$
Cuerpo del pedido obligatorio
Esquema: SimulateIncomingTransferRequest
Importe en centavos de peso.
150000= $ 1.500,00.payerobjectDatos del pagador simulado. Si falta, se usa uno sintético.
conceptConceptConcepto BCRA de la transferencia, que viaja a COELSA. Lista inicial; puede crecer de forma aditiva. VAR varios, ALQ alquileres, CUO cuotas, EXP expensas, FAC facturas, HAB haberes, HON honorarios, PRE préstamos, SEG seguros.
Crédito de $ 15.000
{
"account_number_id": "acn_01JA2B3C4D5E6F7G8H9JKMNPQD",
"amount": 1500000
}
Respuestas
201 Crédito simulado y asentado.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Idempotent-Replayedbooleantruesi es la respuesta guardada para esa Idempotency-Key.
Esquema: IncomingTransfer
Determinístico a partir del id de COELSA del crédito.
object"incoming_transfer"obligatorioCBU o CVU de 22 dígitos con dígitos verificadores válidos.
Importe en centavos de peso.
150000= $ 1.500,00.Única moneda de la API.
Importe en centavos de peso, puede ser cero.
Quien pagó, según el aviso de COELSA. Cualquier dato puede faltar si COELSA no lo informa.
conceptstring | null obligatorioConcepto BCRA informado por COELSA, si viene.
patrón^[A-Z]{3}$statusstring obligatorioEn fase 1 siempre
posted.Valores:postediso20022object obligatorioCampos de
iso20022entry_statusstring obligatoriocamt.054
EntryStatus.Valores:BOOK
railobject obligatorioCampos de
railnamestring obligatorioValores:coelsa,fcm_bookoperation_idstring obligatorioId de COELSA del crédito, o el
otr_…de origen sinameesfcm_book(interna entre cuentas de Grip Rails). Es la clave de idempotencia del asiento.largo máx.64business_datestring (date) | null obligatorioFecha de negocio (compensación) informada por COELSA.
posted_atstring (date-time) obligatoriocreated_atstring (date-time) obligatorio
400 Pedido mal formado o parámetro inválido. No se creó nada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
parametro
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "amount tiene que ser un entero positivo en centavos.",
"display_message": null,
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#amount_invalid",
"transfer_id": null
}
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
409 Conflicto de idempotencia.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
reusada
{
"error": {
"type": "idempotency_error",
"code": "idempotency_key_reused",
"message": "La Idempotency-Key 01JA2B3C4D5E6F7G8H9JKMNPQR ya se usó con otro pedido (POST /v1/outgoing_transfers, huella distinta).",
"display_message": null,
"param": "Idempotency-Key",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#idempotency_key_reused",
"transfer_id": null
}
}
429 Pasaste el límite de pedidos por segundo.
Simular el resultado de COELSA para una transferencia
Inyecta el aviso de resultado de COELSA (equivalente a AvisoOperacionFinalizada) para una transferencia en
submitted: completed asienta la reserva y failed la libera. Sobre una transferencia failed que salió por
COELSA, completed simula una acreditación tardía: el aviso llega después de liberada la reserva y
Grip Rails la reabre por el mismo camino que en producción (débito compensatorio del importe, salidas deshabilitadas,
submitted con status_reason: late_settlement_review y el evento transfer.outgoing.reopened). Sólo sandbox.
Cualquier otro caso responde 400 parameter_invalid: otro estado, una failed con outcome: failed, una
failed que nunca salió a COELSA o una reabierta (la cierra Grip Rails: ver
POST /v1/simulations/outgoing_transfers/{id}/late_settlement_review).
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Clave única por intención del cliente. Obligatoria en todo POST. Ver "Idempotencia".
Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048Content-Digeststring obligatorioSHA-256 de los bytes exactos del cuerpo, según RFC 9530.
patrón^sha-256=:[A-Za-z0-9+/]{43}=:$
Cuerpo del pedido obligatorio
Esquema: SimulateRailResultRequest
outcomestring obligatorioValores:completed,failedcoelsa_codestringCódigo de COELSA a simular. Por defecto 7500 si
completedy 7699 sifailed.patrón^\d{2,4}$
COELSA rechaza por cuenta inexistente
{
"outcome": "failed",
"coelsa_code": "7502"
}
Sobre una transferencia failed, COELSA la acredita después (acreditación tardía)
{
"outcome": "completed"
}
Respuestas
200 Resultado aplicado. Devuelve la transferencia actualizada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Idempotent-Replayedbooleantruesi es la respuesta guardada para esa Idempotency-Key.
Esquema: OutgoingTransfer
Determinístico a partir de la entidad y la Idempotency-Key, así un reintento llega al mismo objeto.
object"outgoing_transfer"obligatorioCVU que figura como origen ante COELSA.
nullsi se rechazó antes de elegirlo.Importe en centavos de peso.
150000= $ 1.500,00.Única moneda de la API.
Cargos de esta transferencia. Cada uno con importe es un asiento separado en el libro. Una transferencia reabierta por una acreditación tardía y completada va sin cargo y lo dice con un
fcm_feede0y su motivo.Importe en centavos de peso.
150000= $ 1.500,00.Destino de una transferencia o de una validación.
Titular verificado.
nullsi se rechazó antes de consultar el destino.Concepto BCRA de la transferencia, que viaja a COELSA. Lista inicial; puede crecer de forma aditiva. VAR varios, ALQ alquileres, CUO cuotas, EXP expensas, FAC facturas, HAB haberes, HON honorarios, PRE préstamos, SEG seguros.
descriptionstring | null obligatoriolargo máx.140Hasta 20 pares clave-valor del cliente. No poner datos personales.
Ver la tabla de estados en la descripción general.
Decisión de la autorización previa, con su motivo. FCM Payment Solutions S.A.S. guarda además el detalle completo de cada control.
nullsi se rechazó antes de reservar.nullhasta que se envía.Presente sólo en
failed.created_atstring (date-time) obligatorioupdated_atstring (date-time) obligatoriocompleted_atstring (date-time) | null obligatoriofailed_atstring (date-time) | null obligatorioHora en que quedó
failed. Vuelve anullsi se reabre por una acreditación tardía.
400 Pedido mal formado o parámetro inválido. No se creó nada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
parametro
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "amount tiene que ser un entero positivo en centavos.",
"display_message": null,
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#amount_invalid",
"transfer_id": null
}
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
409 Conflicto de idempotencia.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
reusada
{
"error": {
"type": "idempotency_error",
"code": "idempotency_key_reused",
"message": "La Idempotency-Key 01JA2B3C4D5E6F7G8H9JKMNPQR ya se usó con otro pedido (POST /v1/outgoing_transfers, huella distinta).",
"display_message": null,
"param": "Idempotency-Key",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#idempotency_key_reused",
"transfer_id": null
}
}
429 Pasaste el límite de pedidos por segundo.
Simular que dos personas de Grip Rails confirman una acreditación tardía
Para una transferencia reabierta por una acreditación tardía (submitted con status_reason: late_settlement_review), simula que dos personas de Grip Rails confirman la acreditación: en el sandbox son dos
operadores sintéticos distintos que proponen y aprueban la conciliación por el mismo camino que en producción. La
respuesta 202 trae la transferencia todavía reabierta; unos segundos después Grip Rails la cierra en completed, sin
cargo (charges con un fcm_fee de 0 y su motivo), con el evento transfer.outgoing.completed, y unos
segundos más tarde vuelve a habilitar tus transferencias salientes (GET /v1/entity vuelve a active; no si Grip Rails
bloqueó tu entidad en el medio): esa rehabilitación automática existe sólo en el sandbox; en producción siguen
deshabilitadas hasta que Grip Rails las rehabilite. Sólo sandbox. Una transferencia que no está reabierta responde
400 parameter_invalid.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Clave única por intención del cliente. Obligatoria en todo POST. Ver "Idempotencia".
Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048Content-Digeststring obligatorioSHA-256 de los bytes exactos del cuerpo, según RFC 9530.
patrón^sha-256=:[A-Za-z0-9+/]{43}=:$
Cuerpo del pedido obligatorio
Esquema: SimulateLateSettlementReviewRequest
outcomestring obligatorioLa única salida de la revisión de una acreditación tardía: dos personas de Grip Rails confirman que la plata salió y la transferencia se cierra en
completed, sin cargo.Valores:completed
Dos personas de Grip Rails confirman la acreditación tardía
{
"outcome": "completed"
}
Respuestas
202 Confirmada por dos personas sintéticas. Devuelve la transferencia todavía reabierta; Grip Rails la cierra en completed en segundos.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Idempotent-Replayedbooleantruesi es la respuesta guardada para esa Idempotency-Key.
Esquema: OutgoingTransfer
Determinístico a partir de la entidad y la Idempotency-Key, así un reintento llega al mismo objeto.
object"outgoing_transfer"obligatorioCVU que figura como origen ante COELSA.
nullsi se rechazó antes de elegirlo.Importe en centavos de peso.
150000= $ 1.500,00.Única moneda de la API.
Cargos de esta transferencia. Cada uno con importe es un asiento separado en el libro. Una transferencia reabierta por una acreditación tardía y completada va sin cargo y lo dice con un
fcm_feede0y su motivo.Importe en centavos de peso.
150000= $ 1.500,00.Destino de una transferencia o de una validación.
Titular verificado.
nullsi se rechazó antes de consultar el destino.Concepto BCRA de la transferencia, que viaja a COELSA. Lista inicial; puede crecer de forma aditiva. VAR varios, ALQ alquileres, CUO cuotas, EXP expensas, FAC facturas, HAB haberes, HON honorarios, PRE préstamos, SEG seguros.
descriptionstring | null obligatoriolargo máx.140Hasta 20 pares clave-valor del cliente. No poner datos personales.
Ver la tabla de estados en la descripción general.
Decisión de la autorización previa, con su motivo. FCM Payment Solutions S.A.S. guarda además el detalle completo de cada control.
nullsi se rechazó antes de reservar.nullhasta que se envía.Presente sólo en
failed.created_atstring (date-time) obligatorioupdated_atstring (date-time) obligatoriocompleted_atstring (date-time) | null obligatoriofailed_atstring (date-time) | null obligatorioHora en que quedó
failed. Vuelve anullsi se reabre por una acreditación tardía.
400 Pedido mal formado o parámetro inválido. No se creó nada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
parametro
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "amount tiene que ser un entero positivo en centavos.",
"display_message": null,
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#amount_invalid",
"transfer_id": null
}
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
409 Conflicto de idempotencia.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
reusada
{
"error": {
"type": "idempotency_error",
"code": "idempotency_key_reused",
"message": "La Idempotency-Key 01JA2B3C4D5E6F7G8H9JKMNPQR ya se usó con otro pedido (POST /v1/outgoing_transfers, huella distinta).",
"display_message": null,
"param": "Idempotency-Key",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#idempotency_key_reused",
"transfer_id": null
}
}
429 Pasaste el límite de pedidos por segundo.
500 Error de Grip Rails. Reintentá con la misma Idempotency-Key.
503 COELSA, el libro o las transferencias no están disponibles por ahora. Reintentá con la misma Idempotency-Key.
Ver el reloj de prueba de la entidad
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048
Respuestas
200 El reloj.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: SandboxClock
object"sandbox_clock"obligatorionowstring (date-time) obligatorioHora de la entidad en el sandbox.
offset_secondsinteger (int64) obligatorioCuánto está adelantada respecto de la hora real.
mín.0
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
429 Pasaste el límite de pedidos por segundo.
Adelantar el reloj de prueba
Mueve hacia adelante la hora de la entidad en el sandbox (nunca hacia atrás). Afecta el día y el mes de los topes, los reintentos de webhooks pendientes y los vencimientos simulados. Todas las fechas que devuelve el sandbox para esa entidad usan este reloj.
Autenticación: API key (Authorization: Bearer) y firma del pedido (Signature, Signature-Input).
Encabezados
FCM-VersionstringVersión por fecha del contrato. Si falta, se usa la versión fijada de la entidad.
patrón^\d{4}-\d{2}-\d{2}$Clave única por intención del cliente. Obligatoria en todo POST. Ver "Idempotencia".
Signature-Inputstring obligatorioParámetros de la firma RFC 9421 (componentes cubiertos,
created,nonce,keyid,alg).largo máx.2048Content-Digeststring obligatorioSHA-256 de los bytes exactos del cuerpo, según RFC 9530.
patrón^sha-256=:[A-Za-z0-9+/]{43}=:$
Cuerpo del pedido obligatorio
Esquema: AdvanceClockRequest
advance_secondsinteger obligatorioSegundos a adelantar (hasta 31 días por pedido).
mín.1· máx.2678400
Adelantar un día
{
"advance_seconds": 86400
}
Respuestas
200 Reloj adelantado.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Idempotent-Replayedbooleantruesi es la respuesta guardada para esa Idempotency-Key.
Esquema: SandboxClock
object"sandbox_clock"obligatorionowstring (date-time) obligatorioHora de la entidad en el sandbox.
offset_secondsinteger (int64) obligatorioCuánto está adelantada respecto de la hora real.
mín.0
400 Pedido mal formado o parámetro inválido. No se creó nada.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
parametro
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "amount tiene que ser un entero positivo en centavos.",
"display_message": null,
"param": "amount",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#amount_invalid",
"transfer_id": null
}
}
401 Falta la API key o la firma, o no son válidas.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
firma
{
"error": {
"type": "authentication_error",
"code": "signature_expired",
"message": "El parámetro created de la firma está fuera de la ventana de ±300 segundos.",
"display_message": null,
"param": null,
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": true,
"doc_url": "https://docs.fcmpayments.com/errores#signature_expired",
"transfer_id": null
}
}
403 La credencial es válida pero no puede hacer esto (IP, entorno o entidad suspendida).
404 No existe, o es de otra entidad (Grip Rails no distingue los dos casos).
409 Conflicto de idempotencia.
Encabezados
FCM-Request-IdRequestIdId del pedido en Grip Rails. Citalo en cualquier consulta a soporte.
Esquema: Error
reusada
{
"error": {
"type": "idempotency_error",
"code": "idempotency_key_reused",
"message": "La Idempotency-Key 01JA2B3C4D5E6F7G8H9JKMNPQR ya se usó con otro pedido (POST /v1/outgoing_transfers, huella distinta).",
"display_message": null,
"param": "Idempotency-Key",
"request_id": "req_01JA2B3C4D5E6F7G8H9JKMNPQT",
"retryable": false,
"doc_url": "https://docs.fcmpayments.com/errores#idempotency_key_reused",
"transfer_id": null
}
}
429 Pasaste el límite de pedidos por segundo.
Webhooks
Lo que Grip Rails envía a tu URL. Cómo verificarlos: Webhooks y firmas.
Entró plata a una cuenta de la entidad
Se asentó un crédito entrante. Pedí GET /v1/incoming_transfers/{data.id} para el detalle.
Sin autenticación.
Encabezados
FCM-Signaturestring obligatorioJWS compacto (JWT) firmado por Grip Rails. Ver "Eventos y webhooks" para los claims y los pasos de verificación.
patrón^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$Id del evento (igual a
iddel cuerpo). Clave para deduplicar.Tipo del evento (igual a
typedel cuerpo).FCM-Delivery-Idstring obligatorioId de este intento de entrega (igual al claim
jti).patrón^whd_[0-9A-HJKMNP-TV-Z]{26}$FCM-Delivery-Attemptinteger obligatorioNúmero de intento (1 a 25).
mín.1· máx.25
Cuerpo del pedido obligatorio
Esquema: Event
object"event"obligatorioTipos de la fase 1. Pueden aparecer tipos nuevos sin aviso de versión; ignorá los que no conozcas.
transfer.outgoing.reopened: una transferenciafailedque COELSA acreditó después volvió asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obligatorioContiguo y creciente por entidad, asignado en el orden en que se confirmó el cambio.
mín.1api_versionstring obligatoriopatrón^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obligatorioReferencia delgada al objeto. Para el estado vigente, pedí el objeto.
credito
{
"id": "evt_01JA2B3C4D5E6F7G8H9JKMNPQZ",
"object": "event",
"type": "transfer.incoming.posted",
"sequence": 43,
"entity_id": "ent_01JA2B3C4D5E6F7G8H9JKMNPQA",
"api_version": "2026-10-15",
"created_at": "2026-10-16T21:20:15Z",
"data": {
"object": "incoming_transfer",
"id": "itr_01JA2B3C4D5E6F7G8H9JKMNPQW",
"account_id": "acc_01JA2B3C4D5E6F7G8H9JKMNPQR",
"ledger_references": [
"3c9e1a7b5d2f8e4c6a0b9d3f7e1c5a2b",
"9d4b2f8a6c1e7d3b5f0a8c2e6d4b1f9a",
"5e2c8a4f1b7d9e3c6a0f2b8d4e6c1a7f"
]
}
}
Respuestas
2XX Recibido. Respondé en 10 s como máximo y procesá en segundo plano.
default Cualquier otra respuesta, o ninguna en 10 s, dispara un reintento según la política.
Una transferencia saliente quedó autorizada y reservada
La autorización aprobó la transferencia y el importe más los cargos quedaron reservados en el libro.
Sin autenticación.
Encabezados
FCM-Signaturestring obligatorioJWS compacto (JWT) firmado por Grip Rails. Ver "Eventos y webhooks" para los claims y los pasos de verificación.
patrón^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$Id del evento (igual a
iddel cuerpo). Clave para deduplicar.Tipo del evento (igual a
typedel cuerpo).FCM-Delivery-Idstring obligatorioId de este intento de entrega (igual al claim
jti).patrón^whd_[0-9A-HJKMNP-TV-Z]{26}$FCM-Delivery-Attemptinteger obligatorioNúmero de intento (1 a 25).
mín.1· máx.25
Cuerpo del pedido obligatorio
Esquema: Event
object"event"obligatorioTipos de la fase 1. Pueden aparecer tipos nuevos sin aviso de versión; ignorá los que no conozcas.
transfer.outgoing.reopened: una transferenciafailedque COELSA acreditó después volvió asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obligatorioContiguo y creciente por entidad, asignado en el orden en que se confirmó el cambio.
mín.1api_versionstring obligatoriopatrón^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obligatorioReferencia delgada al objeto. Para el estado vigente, pedí el objeto.
Respuestas
2XX Recibido.
default Reintento según la política.
Una transferencia saliente se acreditó
COELSA confirmó la acreditación en el destino y la reserva se asentó. Es irreversible. Una transferencia reabierta
por una acreditación tardía llega acá cuando Grip Rails la cierra, sin cargo: su único débito es el asiento
compensatorio (sus referencias van en data.ledger_references).
Sin autenticación.
Encabezados
FCM-Signaturestring obligatorioJWS compacto (JWT) firmado por Grip Rails. Ver "Eventos y webhooks" para los claims y los pasos de verificación.
patrón^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$Id del evento (igual a
iddel cuerpo). Clave para deduplicar.Tipo del evento (igual a
typedel cuerpo).FCM-Delivery-Idstring obligatorioId de este intento de entrega (igual al claim
jti).patrón^whd_[0-9A-HJKMNP-TV-Z]{26}$FCM-Delivery-Attemptinteger obligatorioNúmero de intento (1 a 25).
mín.1· máx.25
Cuerpo del pedido obligatorio
Esquema: Event
object"event"obligatorioTipos de la fase 1. Pueden aparecer tipos nuevos sin aviso de versión; ignorá los que no conozcas.
transfer.outgoing.reopened: una transferenciafailedque COELSA acreditó después volvió asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obligatorioContiguo y creciente por entidad, asignado en el orden en que se confirmó el cambio.
mín.1api_versionstring obligatoriopatrón^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obligatorioReferencia delgada al objeto. Para el estado vigente, pedí el objeto.
Respuestas
2XX Recibido.
default Reintento según la política.
Una transferencia saliente falló
COELSA la rechazó o venció, o Grip Rails la canceló antes de enviarla. La reserva se liberó y no hubo cargo. El motivo está en failure del objeto. Si COELSA la acredita después, llega transfer.outgoing.reopened.
Sin autenticación.
Encabezados
FCM-Signaturestring obligatorioJWS compacto (JWT) firmado por Grip Rails. Ver "Eventos y webhooks" para los claims y los pasos de verificación.
patrón^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$Id del evento (igual a
iddel cuerpo). Clave para deduplicar.Tipo del evento (igual a
typedel cuerpo).FCM-Delivery-Idstring obligatorioId de este intento de entrega (igual al claim
jti).patrón^whd_[0-9A-HJKMNP-TV-Z]{26}$FCM-Delivery-Attemptinteger obligatorioNúmero de intento (1 a 25).
mín.1· máx.25
Cuerpo del pedido obligatorio
Esquema: Event
object"event"obligatorioTipos de la fase 1. Pueden aparecer tipos nuevos sin aviso de versión; ignorá los que no conozcas.
transfer.outgoing.reopened: una transferenciafailedque COELSA acreditó después volvió asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obligatorioContiguo y creciente por entidad, asignado en el orden en que se confirmó el cambio.
mín.1api_versionstring obligatoriopatrón^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obligatorioReferencia delgada al objeto. Para el estado vigente, pedí el objeto.
Respuestas
2XX Recibido.
default Reintento según la política.
Una transferencia saliente fallida se reabrió
COELSA acreditó una transferencia que ya te habíamos informado failed (acreditación tardía): la
plata salió. La transferencia vuelve a submitted con status_reason: late_settlement_review, el importe se debitó
con un asiento compensatorio (sus referencias van en data.ledger_references) y Grip Rails la cierra en completed
(evento transfer.outgoing.completed) cuando dos personas confirman la acreditación. Pedí
GET /v1/outgoing_transfers/{data.id} para el estado vigente.
Sin autenticación.
Encabezados
FCM-Signaturestring obligatorioJWS compacto (JWT) firmado por Grip Rails. Ver "Eventos y webhooks" para los claims y los pasos de verificación.
patrón^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$Id del evento (igual a
iddel cuerpo). Clave para deduplicar.Tipo del evento (igual a
typedel cuerpo).FCM-Delivery-Idstring obligatorioId de este intento de entrega (igual al claim
jti).patrón^whd_[0-9A-HJKMNP-TV-Z]{26}$FCM-Delivery-Attemptinteger obligatorioNúmero de intento (1 a 25).
mín.1· máx.25
Cuerpo del pedido obligatorio
Esquema: Event
object"event"obligatorioTipos de la fase 1. Pueden aparecer tipos nuevos sin aviso de versión; ignorá los que no conozcas.
transfer.outgoing.reopened: una transferenciafailedque COELSA acreditó después volvió asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obligatorioContiguo y creciente por entidad, asignado en el orden en que se confirmó el cambio.
mín.1api_versionstring obligatoriopatrón^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obligatorioReferencia delgada al objeto. Para el estado vigente, pedí el objeto.
Respuestas
2XX Recibido.
default Reintento según la política.
Esquemas
Todos los objetos del contrato. Los enlaces de tipo en la referencia llevan acá.
EntityId string
^ent_[0-9A-HJKMNP-TV-Z]{26}$AccountId string
^acc_[0-9A-HJKMNP-TV-Z]{26}$AccountNumberId string
^acn_[0-9A-HJKMNP-TV-Z]{26}$OutgoingTransferId string
Determinístico a partir de la entidad y la Idempotency-Key, así un reintento llega al mismo objeto.
^otr_[0-9A-HJKMNP-TV-Z]{26}$IncomingTransferId string
Determinístico a partir del id de COELSA del crédito.
^itr_[0-9A-HJKMNP-TV-Z]{26}$CounterpartyValidationId string
^cval_[0-9A-HJKMNP-TV-Z]{26}$EventId string
^evt_[0-9A-HJKMNP-TV-Z]{26}$RequestId string
^req_[0-9A-HJKMNP-TV-Z]{26}$IdempotencyKeyValue string
^[A-Za-z0-9._:-]{16,128}$Amount integer (int64)
Importe en centavos de peso. 150000 = $ 1.500,00.
1 · máx. 9007199254740991AmountOrZero integer (int64)
Importe en centavos de peso, puede ser cero.
0 · máx. 9007199254740991Currency string
Única moneda de la API.
ARSCuit string
CUIT o CUIL, 11 dígitos sin guiones.
^\d{11}$BankKey string
CBU o CVU de 22 dígitos con dígitos verificadores válidos.
^\d{22}$Alias string
Alias del sistema de COELSA.
^[A-Za-z0-9.-]{6,20}$LedgerReference string
Referencia opaca y estable a un asiento del libro (id de 128 bits, en hexadecimal). Se deriva de identificadores estables (id de COELSA, entidad e Idempotency-Key), así que no cambia si el libro se reconstruye.
^[0-9a-f]{32}$ExternalReference string
Referencia del cliente para conciliar. No tiene que ser única y no viaja a COELSA.
^[A-Za-z0-9._:-]{1,64}$Metadata object
Hasta 20 pares clave-valor del cliente. No poner datos personales.
Concept string
Concepto BCRA de la transferencia, que viaja a COELSA. Lista inicial; puede crecer de forma aditiva. VAR varios, ALQ alquileres, CUO cuotas, EXP expensas, FAC facturas, HAB haberes, HON honorarios, PRE préstamos, SEG seguros.
VAR, ALQ, CUO, EXP, FAC, HAB, HON, PRE, SEG · por defecto VAREntityStatus string
suspended: puede leer pero no ordenar transferencias.
active, suspended, closedEntity object
object"entity"obligatoriolegal_namestring obligatoriolargo máx.200CUIT con el que la entidad es titular de sus CVU ante COELSA.
suspended: puede leer pero no ordenar transferencias.environmentstring obligatorioValores:live,testapi_versionstring obligatorioVersión del contrato fijada para la entidad.
patrón^\d{4}-\d{2}-\d{2}$Topes de transferencias salientes de la entidad, fijados por contrato (los aprueba Grip Rails, no se cambian por API). Cuentan el importe sin cargos de las transferencias
reserved,submittedycompleted.null= sin tope.Comisión por movimiento, según contrato. Se cobra como asiento separado en el libro: en una salida se reserva con la transferencia y se libera si falla; en una entrada se descuenta al asentar y nunca supera el importe recibido.
created_atstring (date-time) obligatorio
Limits object
Topes de transferencias salientes de la entidad, fijados por contrato (los aprueba Grip Rails, no se cambian por API).
Cuentan el importe sin cargos de las transferencias reserved, submitted y completed. null = sin tope.
per_transfer_max_amountinteger (int64) | null obligatoriomín.1daily_max_amountinteger (int64) | null obligatoriomín.1monthly_max_amountinteger (int64) | null obligatoriomín.1
LimitUsage object
business_datestring (date) obligatorioDía de Buenos Aires al que corresponde el uso diario.
Importe en centavos de peso, puede ser cero.
daily_remaining_amountinteger (int64) | null obligatorionullsi no hay tope diario.mín.0monthstring obligatoriopatrón^\d{4}-\d{2}$Importe en centavos de peso, puede ser cero.
monthly_remaining_amountinteger (int64) | null obligatorionullsi no hay tope mensual.mín.0
FeeRule object
Importe en centavos de peso, puede ser cero.
rate_bpsinteger obligatorioPorcentaje en puntos básicos sobre el importe (100 = 1 %). La comisión es fijo + porcentaje, redondeado hacia abajo al centavo.
mín.0· máx.10000
FeeSchedule object
AccountType string
funds: cuenta de fondos, la que opera. guarantee: cuenta de garantía (reserva) que el cliente deposita según
contrato para cubrir faltantes; se ve pero no se debita por API.
funds, guaranteeAccountStatus string
frozen: no puede ordenar salidas; las entradas se asientan.
active, frozen, closedBalances object
Importe en centavos de peso, puede ser cero.
Importe en centavos de peso, puede ser cero.
Importe en centavos de peso, puede ser cero.
Account object
object"account"obligatoriofunds: cuenta de fondos, la que opera.guarantee: cuenta de garantía (reserva) que el cliente deposita según contrato para cubrir faltantes; se ve pero no se debita por API.namestring obligatoriolargo máx.80Única moneda de la API.
frozen: no puede ordenar salidas; las entradas se asientan.CVU que figura como origen ante COELSA si la transferencia no indica otro.
created_atstring (date-time) obligatorioupdated_atstring (date-time) obligatorio
AccountList object
object"list"obligatoriohas_moreboolean obligatorionext_cursorstring | null obligatorio
AccountNumberStatus string
pending: alta en COELSA en curso. inactive: dado de baja o inactivo en COELSA.
active, inactive, pendingHolder object
namestring obligatoriolargo máx.120CUIT o CUIL, 11 dígitos sin guiones.
AccountNumber object
object"account_number"obligatorioCBU o CVU de 22 dígitos con dígitos verificadores válidos.
pending: alta en COELSA en curso.inactive: dado de baja o inactivo en COELSA.Titular registrado en COELSA. En fase 1 siempre es la entidad.
Campos de
holdernamestring obligatoriolargo máx.120CUIT o CUIL, 11 dígitos sin guiones.
is_primaryboolean obligatorioEtiqueta que el cliente pidió para este CVU (por ejemplo, el id de su usuario o comercio). Sin datos personales.
created_atstring (date-time) obligatorio
AccountNumberList object
object"list"obligatoriohas_moreboolean obligatorionext_cursorstring | null obligatorio
Destination DestinationCbu | DestinationCvu | DestinationAlias
Destino de una transferencia o de una validación.
Una de: DestinationCbu, DestinationCvu, DestinationAlias
DestinationCbu object
type"cbu"obligatorioCBU o CVU de 22 dígitos con dígitos verificadores válidos.
DestinationCvu object
type"cvu"obligatorioCBU o CVU de 22 dígitos con dígitos verificadores válidos.
DestinationAlias object
type"alias"obligatorioAlias del sistema de COELSA.
Counterparty object
Titular y cuenta del destino según COELSA, tal como se verificaron al autorizar.
namestring obligatoriolargo máx.120CUIT o CUIL, 11 dígitos sin guiones.
CBU o CVU de 22 dígitos con dígitos verificadores válidos.
account_typestring obligatorioValores:cbu,cvubank_codestring | null obligatorioCódigo de la entidad financiera del CBU, si COELSA lo informa.
patrón^\d{3}$is_fcm_accountboolean obligatoriotruesi el destino es una cuenta de Grip Rails (la transferencia es interna).
CounterpartyValidationRequest object
Destino de una transferencia o de una validación.
expected_cuitCuitSi viene, el resultado es
holder_mismatchcuando COELSA informa otro CUIT.
CounterpartyValidationResult string
valid: titular encontrado, cuenta activa y controles en orden. not_found: COELSA no conoce la cuenta o el
alias. inactive: la cuenta existe pero no está activa. holder_mismatch: el CUIT no es el esperado.
blocked: Grip Rails no puede operar con esa cuenta (control de cumplimiento; sin detalle).
valid, not_found, inactive, holder_mismatch, blockedCounterpartyValidation object
object"counterparty_validation"obligatorioDestino de una transferencia o de una validación.
valid: titular encontrado, cuenta activa y controles en orden.not_found: COELSA no conoce la cuenta o el alias.inactive: la cuenta existe pero no está activa.holder_mismatch: el CUIT no es el esperado.blocked: Grip Rails no puede operar con esa cuenta (control de cumplimiento; sin detalle).display_messagestring | null obligatorioTexto en castellano para mostrar al usuario final cuando el resultado no es
valid.Presente si COELSA informó un titular (
valid,inactiveyholder_mismatch).validated_atstring (date-time) obligatorioexpires_atstring (date-time) obligatorioHasta cuándo se puede usar en una transferencia (15 minutos).
OutgoingTransferCreateRequest object
account_number_idAccountNumberIdCVU de la cuenta que figura como origen ante COELSA. Por defecto, el principal de la cuenta.
Importe en centavos de peso.
150000= $ 1.500,00.Única moneda de la API.
Destino de una transferencia o de una validación.
expected_counterparty_cuitCuitRecomendado siempre. Si COELSA informa otro CUIT para el titular, se rechaza con
destination_holder_mismatch.counterparty_validation_idCounterpartyValidationIdValidación
validvigente (15 minutos) del mismo destino. Si vence o no coincide,400 parameter_invalid.conceptConceptConcepto BCRA de la transferencia, que viaja a COELSA. Lista inicial; puede crecer de forma aditiva. VAR varios, ALQ alquileres, CUO cuotas, EXP expensas, FAC facturas, HAB haberes, HON honorarios, PRE préstamos, SEG seguros.
descriptionstringTexto del cliente. Queda en Grip Rails; en fase 1 no viaja a COELSA.
largo máx.140external_referenceExternalReferenceReferencia del cliente para conciliar. No tiene que ser única y no viaja a COELSA.
metadataMetadataHasta 20 pares clave-valor del cliente. No poner datos personales.
OutgoingTransferStatus string
Ver la tabla de estados en la descripción general.
pending, rejected, reserved, submitted, completed, failedOutgoingTransferStatusReason string
Sólo en submitted. awaiting_rail_result: esperando el aviso de COELSA (normal, segundos).
rail_outcome_unknown: el resultado no llegó en el plazo esperado; Grip Rails lo está resolviendo con COELSA y la plata
sigue reservada. No reintentes con otra Idempotency-Key: podrías pagar dos veces.
late_settlement_review: COELSA acreditó la transferencia después de que te la informamos failed
(acreditación tardía). La plata salió y el importe se debitó con un asiento compensatorio; Grip Rails la cierra en
completed cuando dos personas confirman la acreditación.
awaiting_rail_result, rail_outcome_unknown, late_settlement_reviewChargeType string
fee, taxChargeCode string
fcm_fee: comisión de Grip Rails. idcb: impuesto a los débitos y créditos retenido por FCM Payment Solutions S.A.S. como agente, si corresponde.
fcm_fee, idcbCharge object
fcm_fee: comisión de Grip Rails.idcb: impuesto a los débitos y créditos retenido por FCM Payment Solutions S.A.S. como agente, si corresponde.Importe en centavos de peso, puede ser cero.
descriptionstring obligatoriolargo máx.140
Iso20022OutgoingStatus object
statusstring obligatoriopacs.002
TransactionStatus(ExternalPaymentTransactionStatus1Code).Valores:PDNG,ACCP,ACSP,ACCC,RJCTreasonstring | null obligatorioExternalStatusReason1Code cuando
statusesRJCT(por ejemplo AM04, AC03, AC04, AB05, RR04).patrón^[A-Z0-9]{4}$
AuthorizationCheckName string
account: entidad y cuenta habilitadas. limits: topes. funds: reserva en el libro. counterparty: titular
del destino en COELSA. compliance: listas sancionatorias y antifraude (se informa junto, sin detalle).
account, limits, funds, counterparty, complianceAuthorizationCheck object
account: entidad y cuenta habilitadas.limits: topes.funds: reserva en el libro.counterparty: titular del destino en COELSA.compliance: listas sancionatorias y antifraude (se informa junto, sin detalle).resultstring obligatorioValores:passed,failed,not_run
Rationale object
codestring obligatorioapproved, o el código de error del rechazo (por ejemploinsufficient_funds).messagestring obligatoriolargo máx.300
Authorization object
Decisión de la autorización previa, con su motivo. FCM Payment Solutions S.A.S. guarda además el detalle completo de cada control.
decisionstring obligatorioapproved,declinedopending(la autorización todavía no terminó;decided_ates la hora en que quedó pendiente).Valores:approved,declined,pendingdecided_atstring (date-time) obligatorioUn resultado por control.
not_runsi no llegó a correr porque uno anterior falló.
Reservation object
Reserva en el libro (transferencias pendientes) por el importe más los cargos.
Importe en centavos de peso.
150000= $ 1.500,00.statestring obligatorioheld: reservada.posted: asentada (la plata salió).voided: liberada. Una transferencia reabierta por una acreditación tardía siguevoided(la reserva se liberó al fallar y el importe se debitó con un asiento compensatorio); cuando Grip Rails la cierra encompleted, sin cargo, quedapostedpor el importe con las referencias del asiento compensatorio.Valores:held,posted,voidedplaced_atstring (date-time) obligatorioresolved_atstring (date-time) | null obligatorio
Rail object
namestring obligatoriocoelsa: transferencia por COELSA.fcm_book: interna entre cuentas de Grip Rails.Valores:coelsa,fcm_bookoperation_idstring | null obligatorioId de la operación en COELSA.
largo máx.64origin_referencestring | null obligatorioori_trx_idcon el que Grip Rails envió la operación. No cambia entre reintentos.patrón^\d{1,16}$status_codestring | null obligatorioÚltimo código de estado de COELSA (por ejemplo 7541 persistido, 7500 acreditado).
largo máx.8submitted_atstring (date-time) | null obligatoriofinalized_atstring (date-time) | null obligatorio
FailureCode string
rail_rejected: COELSA la rechazó (detalle en rail.status_code e iso20022.reason). rail_expired: venció
en COELSA. destination_closed: la cuenta de destino no existe o está cerrada al momento de acreditar.
canceled_by_fcm: Grip Rails la canceló antes de enviarla (corte de emergencia, control posterior a la reserva o una transferencia pending que no se pudo autorizar).
rail_rejected, rail_expired, destination_closed, canceled_by_fcmFailure object
rail_rejected: COELSA la rechazó (detalle enrail.status_codeeiso20022.reason).rail_expired: venció en COELSA.destination_closed: la cuenta de destino no existe o está cerrada al momento de acreditar.canceled_by_fcm: Grip Rails la canceló antes de enviarla (corte de emergencia, control posterior a la reserva o una transferenciapendingque no se pudo autorizar).messagestring obligatoriolargo máx.300display_messagestring | null obligatoriolargo máx.200
OutgoingTransfer object
Determinístico a partir de la entidad y la Idempotency-Key, así un reintento llega al mismo objeto.
object"outgoing_transfer"obligatorioCVU que figura como origen ante COELSA.
nullsi se rechazó antes de elegirlo.Importe en centavos de peso.
150000= $ 1.500,00.Única moneda de la API.
Cargos de esta transferencia. Cada uno con importe es un asiento separado en el libro. Una transferencia reabierta por una acreditación tardía y completada va sin cargo y lo dice con un
fcm_feede0y su motivo.Importe en centavos de peso.
150000= $ 1.500,00.Destino de una transferencia o de una validación.
Titular verificado.
nullsi se rechazó antes de consultar el destino.Concepto BCRA de la transferencia, que viaja a COELSA. Lista inicial; puede crecer de forma aditiva. VAR varios, ALQ alquileres, CUO cuotas, EXP expensas, FAC facturas, HAB haberes, HON honorarios, PRE préstamos, SEG seguros.
descriptionstring | null obligatoriolargo máx.140Hasta 20 pares clave-valor del cliente. No poner datos personales.
Ver la tabla de estados en la descripción general.
Decisión de la autorización previa, con su motivo. FCM Payment Solutions S.A.S. guarda además el detalle completo de cada control.
nullsi se rechazó antes de reservar.nullhasta que se envía.Presente sólo en
failed.created_atstring (date-time) obligatorioupdated_atstring (date-time) obligatoriocompleted_atstring (date-time) | null obligatoriofailed_atstring (date-time) | null obligatorioHora en que quedó
failed. Vuelve anullsi se reabre por una acreditación tardía.
OutgoingTransferList object
object"list"obligatoriohas_moreboolean obligatorionext_cursorstring | null obligatorio
Payer object
Quien pagó, según el aviso de COELSA. Cualquier dato puede faltar si COELSA no lo informa.
namestring | null obligatoriolargo máx.120account_typestring | null obligatorioValores:cbu,cvu,nullbank_codestring | null obligatoriopatrón^\d{3}$
IncomingTransfer object
Determinístico a partir del id de COELSA del crédito.
object"incoming_transfer"obligatorioCBU o CVU de 22 dígitos con dígitos verificadores válidos.
Importe en centavos de peso.
150000= $ 1.500,00.Única moneda de la API.
Importe en centavos de peso, puede ser cero.
Quien pagó, según el aviso de COELSA. Cualquier dato puede faltar si COELSA no lo informa.
conceptstring | null obligatorioConcepto BCRA informado por COELSA, si viene.
patrón^[A-Z]{3}$statusstring obligatorioEn fase 1 siempre
posted.Valores:postediso20022object obligatorioCampos de
iso20022entry_statusstring obligatoriocamt.054
EntryStatus.Valores:BOOK
railobject obligatorioCampos de
railnamestring obligatorioValores:coelsa,fcm_bookoperation_idstring obligatorioId de COELSA del crédito, o el
otr_…de origen sinameesfcm_book(interna entre cuentas de Grip Rails). Es la clave de idempotencia del asiento.largo máx.64business_datestring (date) | null obligatorioFecha de negocio (compensación) informada por COELSA.
posted_atstring (date-time) obligatoriocreated_atstring (date-time) obligatorio
IncomingTransferList object
object"list"obligatoriohas_moreboolean obligatorionext_cursorstring | null obligatorio
EventType string
Tipos de la fase 1. Pueden aparecer tipos nuevos sin aviso de versión; ignorá los que no conozcas.
transfer.outgoing.reopened: una transferencia failed que COELSA acreditó después volvió a
submitted (status_reason: late_settlement_review).
transfer.incoming.posted, transfer.outgoing.reserved, transfer.outgoing.completed, transfer.outgoing.failed, transfer.outgoing.reopenedEventData object
Referencia delgada al objeto. Para el estado vigente, pedí el objeto.
objectstring obligatorioValores:incoming_transfer,outgoing_transferidstring obligatoriolargo máx.40Asientos del libro que produjeron el evento.
Event object
object"event"obligatorioTipos de la fase 1. Pueden aparecer tipos nuevos sin aviso de versión; ignorá los que no conozcas.
transfer.outgoing.reopened: una transferenciafailedque COELSA acreditó después volvió asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obligatorioContiguo y creciente por entidad, asignado en el orden en que se confirmó el cambio.
mín.1api_versionstring obligatoriopatrón^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obligatorioReferencia delgada al objeto. Para el estado vigente, pedí el objeto.
EventList object
object"list"obligatoriohas_moreboolean obligatorionext_after_sequenceinteger (int64) | null obligatorioValor para el próximo
after_sequence(lasequencedel último evento devuelto).
IdempotencyRecord object
object"idempotency_key"obligatoriostatusstring obligatorioValores:in_progress,completedmethodstring obligatorioValores:POSTpathstring obligatoriolargo máx.200request_fingerprintstring obligatorioSHA-256 de método, ruta y cuerpo canonizado (RFC 8785).
patrón^[0-9a-f]{64}$response_statusinteger | null obligatoriomín.200· máx.499resourceobject | null obligatorioObjeto creado o afectado, si lo hubo.
Variante object
objectstring obligatorioidstring obligatorio
created_atstring (date-time) obligatorioexpires_atstring (date-time) obligatorio
ErrorType string
invalid_request_error, authentication_error, permission_error, not_found_error, idempotency_error, transfer_declined, rate_limit_error, service_errorErrorCode string
Ver la tabla de códigos en la descripción general.
invalid_request, parameter_missing, parameter_invalid, amount_invalid, currency_not_supported, concept_not_supported, destination_invalid, unsupported_version, idempotency_key_missing, idempotency_key_invalid, api_key_missing, api_key_invalid, signature_missing, signature_invalid, signature_expired, signature_replayed, signature_key_unknown, content_digest_mismatch, ip_not_allowed, environment_mismatch, entity_suspended, not_found, idempotency_key_reused, idempotency_request_in_progress, insufficient_funds, account_frozen, account_closed, limit_per_transfer_exceeded, limit_daily_exceeded, limit_monthly_exceeded, destination_not_found, destination_inactive, destination_is_source, destination_holder_mismatch, compliance_rejected, risk_rejected, rate_limited, internal_error, rail_unavailable, ledger_unavailable, transfers_paused, service_unavailableErrorBody object
Ver la tabla de códigos en la descripción general.
messagestring obligatorioExplicación técnica para quien integra. No mostrar a usuarios finales.
display_messagestring | null obligatorioTexto en castellano apto para mostrar a un usuario final, o
null.paramstring | null obligatorioCampo o header que causó el error, si aplica.
retryableboolean obligatoriotrue: reintentá el mismo pedido con la misma Idempotency-Key.doc_urlstring (uri) obligatorioEn un
422de transferencia, el id del objeto que quedó enrejected.
Error object
JwkOkp object
kty"OKP"obligatoriocrv"Ed25519"obligatorioxstring obligatoriopatrón^[A-Za-z0-9_-]{43}$kidstring obligatoriolargo máx.64alg"EdDSA"obligatoriouse"sig"obligatorio
JwkEc object
kty"EC"obligatoriocrv"P-256"obligatorioxstring obligatoriopatrón^[A-Za-z0-9_-]{43}$ystring obligatoriopatrón^[A-Za-z0-9_-]{43}$kidstring obligatoriolargo máx.64alg"ES256"obligatoriouse"sig"obligatorio
SimulateIncomingTransferRequest object
Importe en centavos de peso.
150000= $ 1.500,00.payerobjectDatos del pagador simulado. Si falta, se usa uno sintético.
conceptConceptConcepto BCRA de la transferencia, que viaja a COELSA. Lista inicial; puede crecer de forma aditiva. VAR varios, ALQ alquileres, CUO cuotas, EXP expensas, FAC facturas, HAB haberes, HON honorarios, PRE préstamos, SEG seguros.
SimulateRailResultRequest object
outcomestring obligatorioValores:completed,failedcoelsa_codestringCódigo de COELSA a simular. Por defecto 7500 si
completedy 7699 sifailed.patrón^\d{2,4}$
SimulateLateSettlementReviewRequest object
outcomestring obligatorioLa única salida de la revisión de una acreditación tardía: dos personas de Grip Rails confirman que la plata salió y la transferencia se cierra en
completed, sin cargo.Valores:completed
SandboxClock object
object"sandbox_clock"obligatorionowstring (date-time) obligatorioHora de la entidad en el sandbox.
offset_secondsinteger (int64) obligatorioCuánto está adelantada respecto de la hora real.
mín.0
AdvanceClockRequest object
advance_secondsinteger obligatorioSegundos a adelantar (hasta 31 días por pedido).
mín.1· máx.2678400