Referência · versão 2026-10-15
API de empresas clientes do Grip Rails (fase 1)
Contas de pagamento em pesos argentinos, CVU, transferências pela COELSA e eventos para empresas clientes da FCM Payment Solutions S.A.S.
Baixar openapi.pt.yaml openapi.pt.json
Esta referência é gerada a partir da versão em português do contrato OpenAPI 3.1.0. O contrato é a fonte da verdade; a sua versão canônica está em espanhol (openapi.yaml).
API para que as empresas clientes da FCM Payment Solutions S.A.S. (prestadora de serviços de pagamento que oferece contas de pagamento, registrada no BCRA, o Banco Central da República Argentina; PSP 214 na COELSA, a câmara de compensação argentina de transferências imediatas) operem contas de pagamento em pesos argentinos: consultar saldos, usar seus CVU (números de conta virtual argentinos), validar contrapartes, ordenar transferências pela COELSA e ficar sabendo dos créditos recebidos.
É o contrato da fase 1, multicliente desde o primeiro dia: cada entidade tem suas credenciais, suas chaves de assinatura, sua URL de webhook, suas contas no ledger, seus CVU, seus limites e sua tarifa. Este contrato é estável: a implementação pode mudar e a integração do cliente, não.
O que esta API não faz
- Não opera ativos digitais. Não há criptoativos, stablecoins, endereços de blockchain, conversões nem cotações. O texto ordenado de PSP do BCRA (item 4.6) proíbe a FCM Payment Solutions S.A.S. de realizar e de facilitar essas operações. Se um cliente opera cripto, essa ponta é executada por outra pessoa jurídica regulada, e a FCM Payment Solutions S.A.S. só movimenta pesos mediante instruções.
- Não opera moeda estrangeira nem remessas ao exterior. A única moeda é
ARS, e os destinos são CBU, CVU ou alias do sistema argentino. - Não cria CVU nem contas na fase 1. O Grip Rails os cadastra a pedido da entidade (aparecem como números de conta listáveis). O cadastro pela API é da fase 2.
A FCM Payment Solutions S.A.S. limita-se a oferecer serviços de pagamento e não está autorizada pelo BCRA a operar como instituição financeira. Os fundos depositados em contas de pagamento não constituem depósitos em uma instituição financeira nem contam com nenhuma das garantias de que tais depósitos possam gozar de acordo com a legislação e a regulamentação aplicáveis aos depósitos em instituições financeiras.
Autenticação: API key e assinatura de cada requisição
Toda requisição leva as duas coisas:
Authorization: Bearer fcm_live_…: a API key da entidade. O Grip Rails a guarda com hash. Pode haver duas ativas para fazer a rotação sem interrupção.- Assinatura HTTP da requisição (RFC 9421, HTTP Message Signatures) feita com a chave privada do cliente. O Grip
Rails guarda só a chave pública, registrada no cadastro (até duas ativas por ambiente). Algoritmos:
ed25519ouecdsa-p256-sha256.- Componentes assinados obrigatórios:
"@method"e"@target-uri". Se a requisição tem corpo, também"content-type","content-digest"e"idempotency-key". Se você enviaFCM-Version, também"fcm-version"."authorization"não é assinado: uma assinatura que o cobre é rejeitada comsignature_invalid. Assim o Grip Rails pode verificar de novo a assinatura de cada instrução com a sua chave pública, sem a sua API key, que ele só guarda com hash. - Parâmetros obrigatórios da assinatura:
created(segundos Unix; aceita-se ±300 s),nonce(16 a 64 caracteres base64url, único por chave durante 10 minutos),keyid(id da sua chave pública,ck_…) ealg. - Com corpo:
Content-Digest: sha-256=:…:(RFC 9530) calculado sobre os bytes exatos que você envia.
- Componentes assinados obrigatórios:
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…==:
Em produção, a entidade pode pedir uma lista de IPs permitidos. mTLS é oferecido como camada adicional na fase 2 para quem o exigir; não substitui a assinatura.
Idempotência
Idempotency-Keyé obrigatória em todoPOST(16 a 128 caracteresA-Z a-z 0-9 . _ : -; recomenda-se UUID ou ULID). O escopo é a entidade naquele ambiente.- Mesma chave e mesma requisição: mesma resposta (código e corpo), com
Idempotent-Replayed: true. - Mesma chave com outra requisição (impressão digital SHA-256 do método, do caminho e do corpo canonizado segundo a
RFC 8785):
409 idempotency_key_reused. - Enquanto a primeira requisição está em andamento:
409 idempotency_request_in_progress(pode ser repetida). - As respostas
5xxnão são guardadas: repita com a mesma chave. - O registro completo vive 35 dias e é consultado com
GET /v1/idempotency_keys/{idempotency_key}. A chave de uma transferência fica vinculada a essa transferência para sempre: não pode ser reutilizada nem depois dos 35 dias, e a transferência é buscada comGET /v1/outgoing_transfers?idempotency_key=…. - Se a primeira resposta se perdeu (por exemplo, numa queda de conexão), a nova tentativa devolve o estado atual da mesma transferência, que pode estar mais avançado que o original.
- Uma resposta
202é guardada e repetida como qualquer2xx. O estado vigente é consultado comGET /v1/outgoing_transfers/{id}ou chega por webhook.
Versionamento
- A versão maior vai no caminho (
/v1) e só muda diante de um redesenho total. - A versão por data vai em
FCM-Version: AAAA-MM-DD. Cada entidade fica fixada na versão vigente quando é cadastrada e pode testar outra enviando o cabeçalho. A resposta devolve a versão usada. - Entram sem versão nova as mudanças aditivas: endpoints novos, campos opcionais novos nas requisições, campos novos nas respostas, valores novos em enums de resposta e tipos de evento novos. Sua integração precisa ignorar campos e tipos de evento desconhecidos e tolerar valores de enum novos.
- O que quebra compatibilidade só sai numa versão nova. Uma versão é mantida por pelo menos 12 meses depois de
publicada a seguinte, e sua retirada é avisada com 6 meses de antecedência (cabeçalhos
DeprecationeSunset, e-mail ao contato técnico e changelog). Há no máximo duas versões vigentes ao mesmo tempo. - Os webhooks e os eventos são montados na versão fixada da entidade (campo
api_version).
Valores, moeda e datas
- Valores: inteiros em centavos de peso argentino (
150000= ARS 1.500,00). Moeda: sóARS. - Datas e horas: RFC 3339 em UTC. O dia de negócio e os limites diários e mensais usam o calendário de Buenos Aires
(
America/Argentina/Buenos_Aires).
Paginação
As listas vêm do mais novo para o mais antigo. limit vai de 1 a 100 (25 por padrão); para a página seguinte, envie
starting_after com o next_cursor recebido. Os eventos são diferentes: ordem crescente por sequence (veja "Eventos
e webhooks").
Transferências de saída: autorizar antes de transferir
Veja POST /v1/outgoing_transfers. Estados e seu equivalente ISO 20022 (pacs.002, TransactionStatus):
status |
O que significa | Reserva no ledger | ISO 20022 |
|---|---|---|---|
pending |
O Grip Rails recebeu a ordem, mas ainda não consegue confirmar a autorização. Pode haver dinheiro reservado. Não repita com outra Idempotency-Key. | Pode haver uma pendente | PDNG |
rejected |
A autorização a rejeitou. Não saiu dinheiro. | Não há, ou foi liberada | RJCT |
reserved |
Autorizada; valor mais encargos reservados; ainda não foi enviada à COELSA. | Pendente | ACCP |
submitted |
Enviada à COELSA; falta o resultado. Com status_reason: late_settlement_review, reaberta por uma liquidação tardia (veja abaixo). |
Pendente (reaberta: liberada, com o valor já debitado) | ACSP |
completed |
A COELSA a creditou no destino. | Lançada | ACCC |
failed |
A COELSA a rejeitou ou ela expirou. Sem encargo. Se a COELSA a creditar depois, ela é reaberta e o valor é debitado, sempre sem tarifa (veja abaixo). | Liberada | RJCT |
Liquidação tardia. Se a COELSA credita uma transferência que já informamos a você como failed (o aviso chegou
tarde ou se perdeu), o dinheiro saiu e o Grip Rails a reabre: ela volta a submitted com status_reason: late_settlement_review (ISO ACSP; failure e failed_at voltam a null) e avisamos você com o evento
transfer.outgoing.reopened. O valor é debitado da sua conta de fundos com um lançamento compensatório (suas
referências vão no evento); se os fundos não bastarem, a sua conta de garantia cobre o que faltar e o restante fica como
dívida com a FCM Payment Solutions S.A.S., conforme o contrato. O Grip Rails desabilita as suas transferências de saída,
e elas continuam desabilitadas, mesmo depois de completed, até que o Grip Rails volte a habilitá-las (só no sandbox
elas são reabilitadas sozinhas depois do fechamento simulado: veja Sandbox). Quando duas pessoas do Grip Rails confirmam
a liquidação, a transferência passa a completed (evento transfer.outgoing.completed) sem custo: o Grip Rails não
cobra tarifa por uma transferência reaberta, porque a reabertura não é culpa sua (o Grip Rails só libera uma reserva com
evidência). charges informa isso com um encargo fcm_fee de 0 e o seu motivo, e total_debit_amount é o valor. É
a única forma de sair de failed; não a repita com outra Idempotency-Key.
Os créditos recebidos têm um único estado na fase 1, posted, equivalente a BOOK (camt.054).
Limites de uso
Por entidade: 5 escritas e 25 leituras por segundo (ampliáveis por contrato). Ao ultrapassar: 429 rate_limited com
Retry-After.
Mais em Erros, Webhooks e assinaturas e Ambientes.
Entidade
A empresa cliente autenticada, seus limites, seu uso e suas tarifas.
Ver a entidade autenticada
Devolve a entidade dona da API key, com seus limites, o uso do dia e do mês e suas tarifas.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 A entidade.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: Entity
object"entity"obrigatóriolegal_namestring obrigatóriocomprimento máx.200CUIT com o qual a entidade é titular dos seus CVU perante a COELSA.
suspended: pode ler, mas não ordenar transferências.environmentstring obrigatórioValores:live,testapi_versionstring obrigatórioVersão do contrato fixada para a entidade.
padrão^\d{4}-\d{2}-\d{2}$Limites de transferências de saída da entidade, fixados por contrato (o Grip Rails os aprova; não são alterados pela API). Contam o valor, sem encargos, das transferências
reserved,submittedecompleted.null= sem limite.Tarifa por movimentação, conforme o contrato. É cobrada como lançamento separado no ledger: numa saída, é reservada com a transferência e liberada se ela falhar; numa entrada, é descontada ao lançar e nunca supera o valor recebido.
created_atstring (date-time) obrigatório
401 Falta a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Contas
Contas de pagamento em pesos da entidade (fundos e garantia), com seu saldo no ledger.
Listar contas
Lista as contas da entidade com seu saldo e seu estado.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Query
limitintegerQuantidade máxima de objetos por página.
mín.1· máx.100· por padrão25starting_afterstringCursor opaco (
next_cursorda página anterior).comprimento máx.200
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 Página de contas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: AccountList
object"list"obrigatóriohas_moreboolean obrigatórionext_cursorstring | null obrigatório
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Ver uma conta (saldo e estado)
Saldo e estado de uma conta. O saldo vem do ledger no momento da requisição:
posted é o lançado, held o reservado por transferências de saída em andamento e available = posted − held.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 A conta.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: Account
object"account"obrigatóriofunds: conta de fundos, a que opera.guarantee: conta de garantia (reserva) que o cliente deposita conforme o contrato para cobrir faltas; é visível, mas não é debitada pela API.namestring obrigatóriocomprimento máx.80Única moeda da API.
frozen: não pode ordenar saídas; as entradas são lançadas.CVU que aparece como origem perante a COELSA se a transferência não indicar outro.
created_atstring (date-time) obrigatórioupdated_atstring (date-time) obrigatório
Conta de fundos com uma saída em andamento
{
"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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Números de conta
CVU de cada conta (N por conta). A entidade é a titular de todos.
Listar números de conta (CVU)
Lista os CVU da entidade. Uma conta pode ter N CVU (por exemplo, um para cada usuário ou comerciante do cliente, para atribuir recebimentos); a entidade é a titular de todos, e o que entra por qualquer um deles é lançado na mesma conta. Na fase 1, quem os cadastra é o Grip Rails.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Query
account_idAccountIdFiltra por conta.
statusAccountNumberStatusFiltra por estado.
limitintegerQuantidade máxima de objetos por página.
mín.1· máx.100· por padrão25starting_afterstringCursor opaco (
next_cursorda página anterior).comprimento máx.200
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 Página de números de conta.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: AccountNumberList
object"list"obrigatóriohas_moreboolean obrigatórionext_cursorstring | null obrigatório
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Ver um número de conta
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 O número de conta.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: AccountNumber
object"account_number"obrigatórioCBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.
pending: cadastro na COELSA em andamento.inactive: descadastrado ou inativo na COELSA.Titular registrado na COELSA. Na fase 1 é sempre a entidade.
Campos de
holdernamestring obrigatóriocomprimento máx.120CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.
is_primaryboolean obrigatórioEtiqueta que o cliente pediu para este CVU (por exemplo, o id do seu usuário ou comerciante). Sem dados pessoais.
created_atstring (date-time) obrigatório
401 Falta a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Contrapartes
Validação do titular de um destino junto à COELSA antes de pagar.
Validar uma contraparte
Consulta na COELSA quem é o titular de um CBU, CVU ou alias, se a conta está ativa e se passa nos controles de compliance do Grip Rails. Não movimenta dinheiro.
Uma validação valid dura 15 minutos (expires_at) e pode ser passada em counterparty_validation_id ao criar a
transferência para não consultar de novo. Um resultado negativo não é um erro HTTP: responde 201 com o result
correspondente. Se a COELSA não responder: 503 rail_unavailable.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".
Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048Content-Digeststring obrigatórioSHA-256 dos bytes exatos do corpo, segundo a RFC 9530.
padrão^sha-256=:[A-Za-z0-9+/]{43}=:$
Corpo da requisição obrigatório
Esquema: CounterpartyValidationRequest
Destino de uma transferência ou de uma validação.
expected_cuitCuitSe vier, o resultado é
holder_mismatchquando a COELSA informa outro CUIT.
Validar um alias esperando um CUIT
{
"destination": {
"type": "alias",
"value": "proveedor.ejemplo"
},
"expected_cuit": "27000000006"
}
Respostas
201 Validação feita (o resultado pode ser negativo).
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Idempotent-Replayedbooleantruese é a resposta guardada para essa Idempotency-Key.
Esquema: CounterpartyValidation
object"counterparty_validation"obrigatórioDestino de uma transferência ou de uma validação.
valid: titular encontrado, conta ativa e controles em ordem.not_found: a COELSA não conhece a conta nem o alias.inactive: a conta existe, mas não está ativa.holder_mismatch: o CUIT não é o esperado.blocked: o Grip Rails não pode operar com essa conta (controle de compliance; sem detalhe).display_messagestring | null obrigatórioTexto em espanhol para mostrar ao usuário final quando o resultado não é
valid.Presente se a COELSA informou um titular (
valid,inactiveeholder_mismatch).validated_atstring (date-time) obrigatórioexpires_atstring (date-time) obrigatórioAté quando pode ser usada numa transferência (15 minutos).
Titular encontrado e ativo
{
"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 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
409 Conflito de idempotência.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Transferências de saída
Pagamentos em pesos para CBU, CVU ou alias, com autorização prévia e reserva no ledger.
Criar uma transferência de saída
Ordena uma transferência em pesos de uma conta da entidade para um CBU, CVU ou alias.
Antes de movimentar um peso, o Grip Rails autoriza, nesta ordem:
- Conta e entidade ativas, conta não congelada e transferências habilitadas.
- Limite por operação.
- Reserva no ledger (transferência pendente) pelo valor mais os encargos. Sem saldo
disponível:
insufficient_funds. - Titular do destino segundo a COELSA (ou uma validação vigente passada em
counterparty_validation_id): existe, está ativo, não é a mesma conta e, se você enviouexpected_counterparty_cuit, coincide. - Listas de sanções (o RePET da Argentina, a ONU e a OFAC) sobre o titular do destino.
- Limites diário e mensal da entidade (contam as transferências
reserved,submittedecompleted). - Regras antifraude.
Se tudo passar: 201 com a transferência em reserved e o evento transfer.outgoing.reserved. O Grip Rails a
envia à COELSA em seguida (submitted) e a fecha com o aviso da COELSA: completed (o dinheiro chegou e a reserva é
lançada, com o evento transfer.outgoing.completed) ou failed (a reserva é liberada, não há encargo, evento
transfer.outgoing.failed). Se a COELSA a creditar depois de informá-la como failed, o Grip Rails a reabre
(submitted com status_reason: late_settlement_review, evento transfer.outgoing.reopened) e a fecha como
completed: veja "Liquidação tardia" na descrição geral.
Se o Grip Rails não conseguir confirmar o resultado no momento: 202 com a transferência em pending, ou em
submitted com status_reason: rail_outcome_unknown se uma nova tentativa a encontrar já enviada e sem resultado. A
ordem existe e está vinculada à sua Idempotency-Key: não a repita com outra chave. Uma pending termina em reserved
(evento transfer.outgoing.reserved) ou em failed com failure.code: canceled_by_fcm (evento
transfer.outgoing.failed).
Se algo falhar: 422 com o motivo em error.code. A transferência fica guardada em rejected (seu id vai em
error.transfer_id) e a reserva, se chegou a ser feita, é liberada. As requisições mal formadas (400) não criam nada.
A COELSA é irreversível: o Grip Rails não libera uma reserva já enviada sem evidência de rejeição. Se o resultado
não chegar, a transferência continua em submitted com status_reason: rail_outcome_unknown e o dinheiro continua
reservado até que se resolva. Nunca é reenviada com outro identificador.
Se o destino é uma conta do Grip Rails, a transferência é interna (rail.name: fcm_book) e se completa na hora.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".
Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048Content-Digeststring obrigatórioSHA-256 dos bytes exatos do corpo, segundo a RFC 9530.
padrão^sha-256=:[A-Za-z0-9+/]{43}=:$
Corpo da requisição obrigatório
Esquema: OutgoingTransferCreateRequest
account_number_idAccountNumberIdCVU da conta que aparece como origem perante a COELSA. Por padrão, o principal da conta.
Valor em centavos de peso argentino.
150000= ARS 1.500,00.Única moeda da API.
Destino de uma transferência ou de uma validação.
expected_counterparty_cuitCuitRecomendado sempre. Se a COELSA informar outro CUIT para o titular, é rejeitada com
destination_holder_mismatch.counterparty_validation_idCounterpartyValidationIdValidação
validvigente (15 minutos) do mesmo destino. Se vencer ou não coincidir,400 parameter_invalid.conceptConceptConceito BCRA da transferência (código de finalidade), que viaja para a COELSA. Lista inicial; pode crescer de forma aditiva. VAR diversos, ALQ aluguéis, CUO parcelas, EXP despesas de condomínio, FAC faturas, HAB salários, HON honorários, PRE empréstimos, SEG seguros.
descriptionstringTexto do cliente. Fica no Grip Rails; na fase 1 não viaja para a COELSA.
comprimento máx.140external_referenceExternalReferenceReferência do cliente para conciliar. Não precisa ser única e não viaja para a COELSA.
metadataMetadataAté 20 pares chave-valor do cliente. Não coloque dados pessoais.
Pagamento a um CBU com controle 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"
}
}
Respostas
201 Autorizada e reservada.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Idempotent-Replayedbooleantruese é a resposta guardada para essa Idempotency-Key.
Esquema: OutgoingTransfer
Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.
object"outgoing_transfer"obrigatórioCVU que aparece como origem perante a COELSA.
nullse foi rejeitada antes de escolhê-lo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Única moeda da API.
Encargos desta transferência. Cada um com valor é um lançamento separado no ledger. Uma transferência reaberta por uma liquidação tardia e completada vai sem custo e informa isso com um
fcm_feede0e o seu motivo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Destino de uma transferência ou de uma validação.
Titular verificado.
nullse foi rejeitada antes de consultar o destino.Conceito BCRA da transferência (código de finalidade), que viaja para a COELSA. Lista inicial; pode crescer de forma aditiva. VAR diversos, ALQ aluguéis, CUO parcelas, EXP despesas de condomínio, FAC faturas, HAB salários, HON honorários, PRE empréstimos, SEG seguros.
descriptionstring | null obrigatóriocomprimento máx.140Até 20 pares chave-valor do cliente. Não coloque dados pessoais.
Veja a tabela de estados na descrição geral.
Decisão da autorização prévia, com o seu motivo. A FCM Payment Solutions S.A.S. também guarda o detalhe completo de cada controle.
nullse foi rejeitada antes de reservar.nullaté ser enviada.Presente só em
failed.created_atstring (date-time) obrigatórioupdated_atstring (date-time) obrigatóriocompleted_atstring (date-time) | null obrigatóriofailed_atstring (date-time) | null obrigatórioHora em que ficou
failed. Volta anullse for reaberta por uma liquidação tardia.
Recém-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 Recebida; o resultado ainda não pode ser confirmado. Não repita com outra Idempotency-Key.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Idempotent-Replayedbooleantruese é a resposta guardada para essa Idempotency-Key.
Esquema: OutgoingTransfer
Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.
object"outgoing_transfer"obrigatórioCVU que aparece como origem perante a COELSA.
nullse foi rejeitada antes de escolhê-lo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Única moeda da API.
Encargos desta transferência. Cada um com valor é um lançamento separado no ledger. Uma transferência reaberta por uma liquidação tardia e completada vai sem custo e informa isso com um
fcm_feede0e o seu motivo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Destino de uma transferência ou de uma validação.
Titular verificado.
nullse foi rejeitada antes de consultar o destino.Conceito BCRA da transferência (código de finalidade), que viaja para a COELSA. Lista inicial; pode crescer de forma aditiva. VAR diversos, ALQ aluguéis, CUO parcelas, EXP despesas de condomínio, FAC faturas, HAB salários, HON honorários, PRE empréstimos, SEG seguros.
descriptionstring | null obrigatóriocomprimento máx.140Até 20 pares chave-valor do cliente. Não coloque dados pessoais.
Veja a tabela de estados na descrição geral.
Decisão da autorização prévia, com o seu motivo. A FCM Payment Solutions S.A.S. também guarda o detalhe completo de cada controle.
nullse foi rejeitada antes de reservar.nullaté ser enviada.Presente só em
failed.created_atstring (date-time) obrigatórioupdated_atstring (date-time) obrigatóriocompleted_atstring (date-time) | null obrigatóriofailed_atstring (date-time) | null obrigatórioHora em que ficou
failed. Volta anullse for reaberta por uma liquidação tardia.
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
409 Conflito de idempotência.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A autorização rejeitou a transferência. Ela ficou guardada em rejected e não saiu dinheiro.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
Idempotent-Replayedbooleantruese é a resposta guardada para essa 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 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Listar transferências de saída
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Query
account_idAccountIdFiltra por conta.
statusOutgoingTransferStatusFiltra por estado.
idempotency_keyIdempotencyKeyValueBusca a transferência criada com esta Idempotency-Key (funciona também depois dos 35 dias).
external_referenceExternalReferenceFiltra pela sua referência.
created_afterstring (date-time)Só objetos criados neste instante ou depois (RFC 3339).
created_beforestring (date-time)Só objetos criados antes deste instante (RFC 3339).
limitintegerQuantidade máxima de objetos por página.
mín.1· máx.100· por padrão25starting_afterstringCursor opaco (
next_cursorda página anterior).comprimento máx.200
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 Página de transferências de saída.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: OutgoingTransferList
object"list"obrigatóriohas_moreboolean obrigatórionext_cursorstring | null obrigatório
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Ver uma transferência de saída
Estado vigente da transferência. É o que se deve consultar ao receber um webhook.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 A transferência.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: OutgoingTransfer
Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.
object"outgoing_transfer"obrigatórioCVU que aparece como origem perante a COELSA.
nullse foi rejeitada antes de escolhê-lo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Única moeda da API.
Encargos desta transferência. Cada um com valor é um lançamento separado no ledger. Uma transferência reaberta por uma liquidação tardia e completada vai sem custo e informa isso com um
fcm_feede0e o seu motivo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Destino de uma transferência ou de uma validação.
Titular verificado.
nullse foi rejeitada antes de consultar o destino.Conceito BCRA da transferência (código de finalidade), que viaja para a COELSA. Lista inicial; pode crescer de forma aditiva. VAR diversos, ALQ aluguéis, CUO parcelas, EXP despesas de condomínio, FAC faturas, HAB salários, HON honorários, PRE empréstimos, SEG seguros.
descriptionstring | null obrigatóriocomprimento máx.140Até 20 pares chave-valor do cliente. Não coloque dados pessoais.
Veja a tabela de estados na descrição geral.
Decisão da autorização prévia, com o seu motivo. A FCM Payment Solutions S.A.S. também guarda o detalhe completo de cada controle.
nullse foi rejeitada antes de reservar.nullaté ser enviada.Presente só em
failed.created_atstring (date-time) obrigatórioupdated_atstring (date-time) obrigatóriocompleted_atstring (date-time) | null obrigatóriofailed_atstring (date-time) | null obrigatórioHora em que ficou
failed. Volta anullse for reaberta por uma liquidação tardia.
Creditada pela 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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Transferências de entrada
Créditos recebidos nos CVU da entidade, lançados com liquidação real da COELSA.
Listar créditos recebidos
Créditos recebidos nos CVU da entidade. Cada um nasce de um aviso da COELSA verificado (crédito já liquidado na conta arrecadadora da FCM Payment Solutions S.A.S.) e é lançado no ledger com a sua tarifa como lançamento separado.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Query
account_idAccountIdFiltra por conta.
account_number_idAccountNumberIdFiltra pelo CVU por onde entrou.
created_afterstring (date-time)Só objetos criados neste instante ou depois (RFC 3339).
created_beforestring (date-time)Só objetos criados antes deste instante (RFC 3339).
limitintegerQuantidade máxima de objetos por página.
mín.1· máx.100· por padrão25starting_afterstringCursor opaco (
next_cursorda página anterior).comprimento máx.200
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 Página de créditos recebidos.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: IncomingTransferList
object"list"obrigatóriohas_moreboolean obrigatórionext_cursorstring | null obrigatório
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Ver um crédito recebido
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 O crédito recebido.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: IncomingTransfer
Determinístico a partir do id da COELSA do crédito.
object"incoming_transfer"obrigatórioCBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.
Valor em centavos de peso argentino.
150000= ARS 1.500,00.Única moeda da API.
Valor em centavos de peso argentino; pode ser zero.
Quem pagou, segundo o aviso da COELSA. Qualquer dado pode faltar se a COELSA não o informar.
conceptstring | null obrigatórioConceito BCRA informado pela COELSA, se vier.
padrão^[A-Z]{3}$statusstring obrigatórioNa fase 1, sempre
posted.Valores:postediso20022object obrigatórioCampos de
iso20022entry_statusstring obrigatóriocamt.054
EntryStatus.Valores:BOOK
railobject obrigatórioCampos de
railnamestring obrigatórioValores:coelsa,fcm_bookoperation_idstring obrigatórioId da COELSA do crédito, ou o
otr_…de origem senameéfcm_book(interna entre contas do Grip Rails). É a chave de idempotência do lançamento.comprimento máx.64business_datestring (date) | null obrigatórioData de negócio (compensação) informada pela COELSA.
posted_atstring (date-time) obrigatóriocreated_atstring (date-time) obrigatório
Crédito por um CVU de referência
{
"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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Eventos
Registro ordenado do que aconteceu, para conciliar e para os webhooks.
Listar eventos por cursor
Eventos da entidade em ordem crescente de sequence, a partir do seguinte a after_sequence. Sem filtro de tipo,
sequence é contíguo: guarde o último que você processou e peça a partir daí. Com o filtro type, a sequência tem
saltos por design (é só para consulta). É a fonte para conciliar; os webhooks são um aviso.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Query
after_sequenceinteger (int64)Devolve os eventos com
sequencemaior que este valor. Por padrão, 0 (a partir do primeiro disponível).mín.0· por padrão0typeEventTypeFiltra por tipo de evento.
limitintegerQuantidade máxima de eventos (1 a 100).
mín.1· máx.100· por padrão100
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 Página de eventos.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: EventList
object"list"obrigatóriohas_moreboolean obrigatórionext_after_sequenceinteger (int64) | null obrigatórioValor para o próximo
after_sequence(asequencedo último evento devolvido).
Dois 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 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Ver um evento
Serve para confirmar por outra via um webhook recebido.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 O evento.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: Event
object"event"obrigatórioTipos da fase 1. Podem aparecer tipos novos sem aviso de versão; ignore os que você não conhece.
transfer.outgoing.reopened: uma transferênciafailedque a COELSA creditou depois voltou asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obrigatórioContíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.
mín.1api_versionstring obrigatóriopadrão^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obrigatórioReferência enxuta ao objeto. Para o estado vigente, peça o objeto.
401 Falta a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Idempotência
Consulta de uma Idempotency-Key usada.
Consultar uma Idempotency-Key
Diz se a chave está em andamento ou concluída, com que requisição foi usada (impressão digital), o que respondemos e que
objeto criou. Disponível por 35 dias desde o primeiro uso. As chaves de transferências continuam vinculadas à sua
transferência depois desse prazo (veja GET /v1/outgoing_transfers?idempotency_key=).
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 O registro da chave.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
FCM-VersionstringVersão do contrato com que se respondeu.
Esquema: IdempotencyRecord
object"idempotency_key"obrigatóriostatusstring obrigatórioValores:in_progress,completedmethodstring obrigatórioValores:POSTpathstring obrigatóriocomprimento máx.200request_fingerprintstring obrigatórioSHA-256 do método, do caminho e do corpo canonizado (RFC 8785).
padrão^[0-9a-f]{64}$response_statusinteger | null obrigatóriomín.200· máx.499resourceobject | null obrigatórioObjeto criado ou afetado, se houver.
Variante object
objectstring obrigatórioidstring obrigatório
created_atstring (date-time) obrigatórioexpires_atstring (date-time) obrigatório
401 Falta a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
429 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Chaves do Grip Rails
Chaves públicas com que o Grip Rails assina os webhooks.
Chaves públicas do Grip Rails para verificar webhooks
JWKS (RFC 7517) com as chaves públicas vigentes com que o Grip Rails assina os webhooks. Não exige autenticação. As chaves privadas vivem em KMS e não saem de lá.
Sem autenticação.
Respostas
200 Conjunto de chaves.
Cabeçalhos
Cache-ControlstringPode ficar em cache por 5 minutos.
Esquema: Jwks
- itens mín.
1
Uma chave 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 Você ultrapassou o limite de requisições por segundo.
Sandbox
Simuladores. Só existem no sandbox.
Simular um crédito recebido
Monta um aviso sintético da COELSA para um CVU da entidade e o faz passar pelo mesmo caminho que um real: lançamento no
ledger do sandbox, tarifa, evento transfer.incoming.posted e webhook. Só no sandbox.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".
Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048Content-Digeststring obrigatórioSHA-256 dos bytes exatos do corpo, segundo a RFC 9530.
padrão^sha-256=:[A-Za-z0-9+/]{43}=:$
Corpo da requisição obrigatório
Esquema: SimulateIncomingTransferRequest
Valor em centavos de peso argentino.
150000= ARS 1.500,00.payerobjectDados do pagador simulado. Se faltarem, usa-se um sintético.
conceptConceptConceito BCRA da transferência (código de finalidade), que viaja para a COELSA. Lista inicial; pode crescer de forma aditiva. VAR diversos, ALQ aluguéis, CUO parcelas, EXP despesas de condomínio, FAC faturas, HAB salários, HON honorários, PRE empréstimos, SEG seguros.
Crédito de ARS 15.000
{
"account_number_id": "acn_01JA2B3C4D5E6F7G8H9JKMNPQD",
"amount": 1500000
}
Respostas
201 Crédito simulado e lançado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
Idempotent-Replayedbooleantruese é a resposta guardada para essa Idempotency-Key.
Esquema: IncomingTransfer
Determinístico a partir do id da COELSA do crédito.
object"incoming_transfer"obrigatórioCBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.
Valor em centavos de peso argentino.
150000= ARS 1.500,00.Única moeda da API.
Valor em centavos de peso argentino; pode ser zero.
Quem pagou, segundo o aviso da COELSA. Qualquer dado pode faltar se a COELSA não o informar.
conceptstring | null obrigatórioConceito BCRA informado pela COELSA, se vier.
padrão^[A-Z]{3}$statusstring obrigatórioNa fase 1, sempre
posted.Valores:postediso20022object obrigatórioCampos de
iso20022entry_statusstring obrigatóriocamt.054
EntryStatus.Valores:BOOK
railobject obrigatórioCampos de
railnamestring obrigatórioValores:coelsa,fcm_bookoperation_idstring obrigatórioId da COELSA do crédito, ou o
otr_…de origem senameéfcm_book(interna entre contas do Grip Rails). É a chave de idempotência do lançamento.comprimento máx.64business_datestring (date) | null obrigatórioData de negócio (compensação) informada pela COELSA.
posted_atstring (date-time) obrigatóriocreated_atstring (date-time) obrigatório
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
409 Conflito de idempotência.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 Você ultrapassou o limite de requisições por segundo.
Simular o resultado da COELSA para uma transferência
Injeta o aviso de resultado da COELSA (equivalente a AvisoOperacionFinalizada) para uma transferência em submitted:
completed lança a reserva e failed a libera. Sobre uma transferência failed que saiu pela COELSA, completed
simula uma liquidação tardia: o aviso chega depois de liberada a reserva e o Grip Rails reabre a transferência pelo
mesmo caminho que em produção (débito compensatório do valor, transferências de saída desabilitadas, submitted com
status_reason: late_settlement_review e o evento transfer.outgoing.reopened). Só no sandbox. Qualquer outro caso
responde 400 parameter_invalid: outro estado, uma failed com outcome: failed, uma failed que nunca saiu para a
COELSA ou uma reaberta (quem a fecha é o Grip Rails: veja
POST /v1/simulations/outgoing_transfers/{id}/late_settlement_review).
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".
Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048Content-Digeststring obrigatórioSHA-256 dos bytes exatos do corpo, segundo a RFC 9530.
padrão^sha-256=:[A-Za-z0-9+/]{43}=:$
Corpo da requisição obrigatório
Esquema: SimulateRailResultRequest
outcomestring obrigatórioValores:completed,failedcoelsa_codestringCódigo da COELSA a simular. Por padrão, 7500 se
completede 7699 sefailed.padrão^\d{2,4}$
A COELSA rejeita por conta inexistente
{
"outcome": "failed",
"coelsa_code": "7502"
}
Sobre uma transferência failed, a COELSA a credita depois (liquidação tardia)
{
"outcome": "completed"
}
Respostas
200 Resultado aplicado. Devolve a transferência atualizada.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
Idempotent-Replayedbooleantruese é a resposta guardada para essa Idempotency-Key.
Esquema: OutgoingTransfer
Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.
object"outgoing_transfer"obrigatórioCVU que aparece como origem perante a COELSA.
nullse foi rejeitada antes de escolhê-lo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Única moeda da API.
Encargos desta transferência. Cada um com valor é um lançamento separado no ledger. Uma transferência reaberta por uma liquidação tardia e completada vai sem custo e informa isso com um
fcm_feede0e o seu motivo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Destino de uma transferência ou de uma validação.
Titular verificado.
nullse foi rejeitada antes de consultar o destino.Conceito BCRA da transferência (código de finalidade), que viaja para a COELSA. Lista inicial; pode crescer de forma aditiva. VAR diversos, ALQ aluguéis, CUO parcelas, EXP despesas de condomínio, FAC faturas, HAB salários, HON honorários, PRE empréstimos, SEG seguros.
descriptionstring | null obrigatóriocomprimento máx.140Até 20 pares chave-valor do cliente. Não coloque dados pessoais.
Veja a tabela de estados na descrição geral.
Decisão da autorização prévia, com o seu motivo. A FCM Payment Solutions S.A.S. também guarda o detalhe completo de cada controle.
nullse foi rejeitada antes de reservar.nullaté ser enviada.Presente só em
failed.created_atstring (date-time) obrigatórioupdated_atstring (date-time) obrigatóriocompleted_atstring (date-time) | null obrigatóriofailed_atstring (date-time) | null obrigatórioHora em que ficou
failed. Volta anullse for reaberta por uma liquidação tardia.
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
409 Conflito de idempotência.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 Você ultrapassou o limite de requisições por segundo.
Simular que duas pessoas do Grip Rails confirmam uma liquidação tardia
Para uma transferência reaberta por uma liquidação tardia (submitted com status_reason: late_settlement_review),
simula que duas pessoas do Grip Rails confirmam a liquidação: no sandbox são dois operadores sintéticos diferentes que
propõem e aprovam a conciliação pelo mesmo caminho que em produção. A resposta 202 traz a transferência ainda
reaberta; alguns segundos depois o Grip Rails a fecha como completed, sem custo (charges com um fcm_fee de 0 e o
seu motivo), com o evento transfer.outgoing.completed, e alguns segundos mais tarde volta a habilitar as suas
transferências de saída (GET /v1/entity volta a active; não se o Grip Rails tiver bloqueado a sua entidade nesse
meio-tempo): essa reabilitação automática existe só no sandbox; em produção elas continuam desabilitadas até que o Grip
Rails as reabilite. Só no sandbox. Uma transferência que não está reaberta responde 400 parameter_invalid.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".
Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048Content-Digeststring obrigatórioSHA-256 dos bytes exatos do corpo, segundo a RFC 9530.
padrão^sha-256=:[A-Za-z0-9+/]{43}=:$
Corpo da requisição obrigatório
Esquema: SimulateLateSettlementReviewRequest
outcomestring obrigatórioA única saída da revisão de uma liquidação tardia: duas pessoas do Grip Rails confirmam que o dinheiro saiu e a transferência é fechada como
completed, sem custo.Valores:completed
Duas pessoas do Grip Rails confirmam a liquidação tardia
{
"outcome": "completed"
}
Respostas
202 Confirmada por duas pessoas sintéticas. Devolve a transferência ainda reaberta; o Grip Rails a fecha como completed em segundos.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
Idempotent-Replayedbooleantruese é a resposta guardada para essa Idempotency-Key.
Esquema: OutgoingTransfer
Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.
object"outgoing_transfer"obrigatórioCVU que aparece como origem perante a COELSA.
nullse foi rejeitada antes de escolhê-lo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Única moeda da API.
Encargos desta transferência. Cada um com valor é um lançamento separado no ledger. Uma transferência reaberta por uma liquidação tardia e completada vai sem custo e informa isso com um
fcm_feede0e o seu motivo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Destino de uma transferência ou de uma validação.
Titular verificado.
nullse foi rejeitada antes de consultar o destino.Conceito BCRA da transferência (código de finalidade), que viaja para a COELSA. Lista inicial; pode crescer de forma aditiva. VAR diversos, ALQ aluguéis, CUO parcelas, EXP despesas de condomínio, FAC faturas, HAB salários, HON honorários, PRE empréstimos, SEG seguros.
descriptionstring | null obrigatóriocomprimento máx.140Até 20 pares chave-valor do cliente. Não coloque dados pessoais.
Veja a tabela de estados na descrição geral.
Decisão da autorização prévia, com o seu motivo. A FCM Payment Solutions S.A.S. também guarda o detalhe completo de cada controle.
nullse foi rejeitada antes de reservar.nullaté ser enviada.Presente só em
failed.created_atstring (date-time) obrigatórioupdated_atstring (date-time) obrigatóriocompleted_atstring (date-time) | null obrigatóriofailed_atstring (date-time) | null obrigatórioHora em que ficou
failed. Volta anullse for reaberta por uma liquidação tardia.
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
409 Conflito de idempotência.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 Você ultrapassou o limite de requisições por segundo.
500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Ver o relógio de teste da entidade
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048
Respostas
200 O relógio.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
Esquema: SandboxClock
object"sandbox_clock"obrigatórionowstring (date-time) obrigatórioHora da entidade no sandbox.
offset_secondsinteger (int64) obrigatórioQuanto está adiantada em relação à hora real.
mín.0
401 Falta a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
429 Você ultrapassou o limite de requisições por segundo.
Avançar o relógio de teste
Avança a hora da entidade no sandbox (nunca para trás). Afeta o dia e o mês dos limites, as novas tentativas de webhooks pendentes e os vencimentos simulados. Todas as datas que o sandbox devolve para essa entidade usam este relógio.
Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).
Cabeçalhos
FCM-VersionstringVersão por data do contrato. Se faltar, usa-se a versão fixada da entidade.
padrão^\d{4}-\d{2}-\d{2}$Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".
Signature-Inputstring obrigatórioParâmetros da assinatura RFC 9421 (componentes cobertos,
created,nonce,keyid,alg).comprimento máx.2048Content-Digeststring obrigatórioSHA-256 dos bytes exatos do corpo, segundo a RFC 9530.
padrão^sha-256=:[A-Za-z0-9+/]{43}=:$
Corpo da requisição obrigatório
Esquema: AdvanceClockRequest
advance_secondsinteger obrigatórioSegundos a avançar (até 31 dias por requisição).
mín.1· máx.2678400
Avançar um dia
{
"advance_seconds": 86400
}
Respostas
200 Relógio avançado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
Idempotent-Replayedbooleantruese é a resposta guardada para essa Idempotency-Key.
Esquema: SandboxClock
object"sandbox_clock"obrigatórionowstring (date-time) obrigatórioHora da entidade no sandbox.
offset_secondsinteger (int64) obrigatórioQuanto está adiantada em relação à hora real.
mín.0
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 A credencial é válida, mas não pode fazer isto (IP, ambiente ou entidade suspensa).
404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
409 Conflito de idempotência.
Cabeçalhos
FCM-Request-IdRequestIdId da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.
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 Você ultrapassou o limite de requisições por segundo.
Webhooks
O que o Grip Rails envia para a sua URL. Como verificá-los: Webhooks e assinaturas.
Entrou dinheiro numa conta da entidade
Foi lançado um crédito recebido. Peça GET /v1/incoming_transfers/{data.id} para o detalhe.
Sem autenticação.
Cabeçalhos
FCM-Signaturestring obrigatórioJWS compacto (JWT) assinado pelo Grip Rails. Veja "Eventos e webhooks" para os claims e os passos de verificação.
padrão^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$Id do evento (igual ao
iddo corpo). Chave para deduplicar.Tipo do evento (igual ao
typedo corpo).FCM-Delivery-Idstring obrigatórioId desta tentativa de entrega (igual ao claim
jti).padrão^whd_[0-9A-HJKMNP-TV-Z]{26}$FCM-Delivery-Attemptinteger obrigatórioNúmero da tentativa (1 a 25).
mín.1· máx.25
Corpo da requisição obrigatório
Esquema: Event
object"event"obrigatórioTipos da fase 1. Podem aparecer tipos novos sem aviso de versão; ignore os que você não conhece.
transfer.outgoing.reopened: uma transferênciafailedque a COELSA creditou depois voltou asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obrigatórioContíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.
mín.1api_versionstring obrigatóriopadrão^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obrigatórioReferência enxuta ao objeto. Para o estado vigente, peça o 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"
]
}
}
Respostas
2XX Recebido. Responda em no máximo 10 s e processe em segundo plano.
default Cualquier otra respuesta, o ninguna en 10 s, dispara un reintento según la política.
Uma transferência de saída foi autorizada e reservada
A autorização aprovou a transferência, e o valor mais os encargos ficaram reservados no ledger.
Sem autenticação.
Cabeçalhos
FCM-Signaturestring obrigatórioJWS compacto (JWT) assinado pelo Grip Rails. Veja "Eventos e webhooks" para os claims e os passos de verificação.
padrão^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$Id do evento (igual ao
iddo corpo). Chave para deduplicar.Tipo do evento (igual ao
typedo corpo).FCM-Delivery-Idstring obrigatórioId desta tentativa de entrega (igual ao claim
jti).padrão^whd_[0-9A-HJKMNP-TV-Z]{26}$FCM-Delivery-Attemptinteger obrigatórioNúmero da tentativa (1 a 25).
mín.1· máx.25
Corpo da requisição obrigatório
Esquema: Event
object"event"obrigatórioTipos da fase 1. Podem aparecer tipos novos sem aviso de versão; ignore os que você não conhece.
transfer.outgoing.reopened: uma transferênciafailedque a COELSA creditou depois voltou asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obrigatórioContíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.
mín.1api_versionstring obrigatóriopadrão^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obrigatórioReferência enxuta ao objeto. Para o estado vigente, peça o objeto.
Respostas
2XX Recebido.
default Reintento según la política.
Uma transferência de saída foi creditada
A COELSA confirmou o crédito no destino e a reserva foi lançada. É irreversível. Uma transferência reaberta por uma
liquidação tardia chega aqui quando o Grip Rails a fecha, sem custo: o seu único débito é o lançamento compensatório
(suas referências vão em data.ledger_references).
Sem autenticação.
Cabeçalhos
FCM-Signaturestring obrigatórioJWS compacto (JWT) assinado pelo Grip Rails. Veja "Eventos e webhooks" para os claims e os passos de verificação.
padrão^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$Id do evento (igual ao
iddo corpo). Chave para deduplicar.Tipo do evento (igual ao
typedo corpo).FCM-Delivery-Idstring obrigatórioId desta tentativa de entrega (igual ao claim
jti).padrão^whd_[0-9A-HJKMNP-TV-Z]{26}$FCM-Delivery-Attemptinteger obrigatórioNúmero da tentativa (1 a 25).
mín.1· máx.25
Corpo da requisição obrigatório
Esquema: Event
object"event"obrigatórioTipos da fase 1. Podem aparecer tipos novos sem aviso de versão; ignore os que você não conhece.
transfer.outgoing.reopened: uma transferênciafailedque a COELSA creditou depois voltou asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obrigatórioContíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.
mín.1api_versionstring obrigatóriopadrão^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obrigatórioReferência enxuta ao objeto. Para o estado vigente, peça o objeto.
Respostas
2XX Recebido.
default Reintento según la política.
Uma transferência de saída falhou
A COELSA a rejeitou ou ela expirou, ou o Grip Rails a cancelou antes de enviá-la. A reserva foi liberada e não houve encargo. O motivo está em failure do objeto. Se a COELSA a creditar depois, chega transfer.outgoing.reopened.
Sem autenticação.
Cabeçalhos
FCM-Signaturestring obrigatórioJWS compacto (JWT) assinado pelo Grip Rails. Veja "Eventos e webhooks" para os claims e os passos de verificação.
padrão^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$Id do evento (igual ao
iddo corpo). Chave para deduplicar.Tipo do evento (igual ao
typedo corpo).FCM-Delivery-Idstring obrigatórioId desta tentativa de entrega (igual ao claim
jti).padrão^whd_[0-9A-HJKMNP-TV-Z]{26}$FCM-Delivery-Attemptinteger obrigatórioNúmero da tentativa (1 a 25).
mín.1· máx.25
Corpo da requisição obrigatório
Esquema: Event
object"event"obrigatórioTipos da fase 1. Podem aparecer tipos novos sem aviso de versão; ignore os que você não conhece.
transfer.outgoing.reopened: uma transferênciafailedque a COELSA creditou depois voltou asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obrigatórioContíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.
mín.1api_versionstring obrigatóriopadrão^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obrigatórioReferência enxuta ao objeto. Para o estado vigente, peça o objeto.
Respostas
2XX Recebido.
default Reintento según la política.
Uma transferência de saída que tinha falhado foi reaberta
A COELSA creditou uma transferência que já tínhamos informado a você como failed (liquidação tardia): o dinheiro
saiu. A transferência volta a submitted com status_reason: late_settlement_review, o valor foi debitado com um
lançamento compensatório (suas referências vão em data.ledger_references) e o Grip Rails a fecha como completed
(evento transfer.outgoing.completed) quando duas pessoas confirmam a liquidação. Peça
GET /v1/outgoing_transfers/{data.id} para o estado vigente.
Sem autenticação.
Cabeçalhos
FCM-Signaturestring obrigatórioJWS compacto (JWT) assinado pelo Grip Rails. Veja "Eventos e webhooks" para os claims e os passos de verificação.
padrão^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$Id do evento (igual ao
iddo corpo). Chave para deduplicar.Tipo do evento (igual ao
typedo corpo).FCM-Delivery-Idstring obrigatórioId desta tentativa de entrega (igual ao claim
jti).padrão^whd_[0-9A-HJKMNP-TV-Z]{26}$FCM-Delivery-Attemptinteger obrigatórioNúmero da tentativa (1 a 25).
mín.1· máx.25
Corpo da requisição obrigatório
Esquema: Event
object"event"obrigatórioTipos da fase 1. Podem aparecer tipos novos sem aviso de versão; ignore os que você não conhece.
transfer.outgoing.reopened: uma transferênciafailedque a COELSA creditou depois voltou asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obrigatórioContíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.
mín.1api_versionstring obrigatóriopadrão^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obrigatórioReferência enxuta ao objeto. Para o estado vigente, peça o objeto.
Respostas
2XX Recebido.
default Reintento según la política.
Esquemas
Todos os objetos do contrato. Os links de tipo na referência levam para cá.
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 da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.
^otr_[0-9A-HJKMNP-TV-Z]{26}$IncomingTransferId string
Determinístico a partir do id da COELSA do 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)
Valor em centavos de peso argentino. 150000 = ARS 1.500,00.
1 · máx. 9007199254740991AmountOrZero integer (int64)
Valor em centavos de peso argentino; pode ser zero.
0 · máx. 9007199254740991Currency string
Única moeda da API.
ARSCuit string
CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.
^\d{11}$BankKey string
CBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.
^\d{22}$Alias string
Alias do sistema da COELSA (o nome legível de um CBU ou CVU).
^[A-Za-z0-9.-]{6,20}$LedgerReference string
Referência opaca e estável a um lançamento do ledger (id de 128 bits, em hexadecimal). Deriva de identificadores estáveis (id da COELSA, entidade e Idempotency-Key), por isso não muda se o ledger for reconstruído.
^[0-9a-f]{32}$ExternalReference string
Referência do cliente para conciliar. Não precisa ser única e não viaja para a COELSA.
^[A-Za-z0-9._:-]{1,64}$Metadata object
Até 20 pares chave-valor do cliente. Não coloque dados pessoais.
Concept string
Conceito BCRA da transferência (código de finalidade), que viaja para a COELSA. Lista inicial; pode crescer de forma aditiva. VAR diversos, ALQ aluguéis, CUO parcelas, EXP despesas de condomínio, FAC faturas, HAB salários, HON honorários, PRE empréstimos, SEG seguros.
VAR, ALQ, CUO, EXP, FAC, HAB, HON, PRE, SEG · por padrão VAREntityStatus string
suspended: pode ler, mas não ordenar transferências.
active, suspended, closedEntity object
object"entity"obrigatóriolegal_namestring obrigatóriocomprimento máx.200CUIT com o qual a entidade é titular dos seus CVU perante a COELSA.
suspended: pode ler, mas não ordenar transferências.environmentstring obrigatórioValores:live,testapi_versionstring obrigatórioVersão do contrato fixada para a entidade.
padrão^\d{4}-\d{2}-\d{2}$Limites de transferências de saída da entidade, fixados por contrato (o Grip Rails os aprova; não são alterados pela API). Contam o valor, sem encargos, das transferências
reserved,submittedecompleted.null= sem limite.Tarifa por movimentação, conforme o contrato. É cobrada como lançamento separado no ledger: numa saída, é reservada com a transferência e liberada se ela falhar; numa entrada, é descontada ao lançar e nunca supera o valor recebido.
created_atstring (date-time) obrigatório
Limits object
Limites de transferências de saída da entidade, fixados por contrato (o Grip Rails os aprova; não são alterados pela
API). Contam o valor, sem encargos, das transferências reserved, submitted e completed. null = sem limite.
per_transfer_max_amountinteger (int64) | null obrigatóriomín.1daily_max_amountinteger (int64) | null obrigatóriomín.1monthly_max_amountinteger (int64) | null obrigatóriomín.1
LimitUsage object
business_datestring (date) obrigatórioDia de Buenos Aires ao qual corresponde o uso diário.
Valor em centavos de peso argentino; pode ser zero.
daily_remaining_amountinteger (int64) | null obrigatórionullse não há limite diário.mín.0monthstring obrigatóriopadrão^\d{4}-\d{2}$Valor em centavos de peso argentino; pode ser zero.
monthly_remaining_amountinteger (int64) | null obrigatórionullse não há limite mensal.mín.0
FeeRule object
Valor em centavos de peso argentino; pode ser zero.
rate_bpsinteger obrigatórioPorcentagem em pontos-base sobre o valor (100 = 1%). A tarifa é fixa + porcentagem, arredondada para baixo ao centavo.
mín.0· máx.10000
FeeSchedule object
AccountType string
funds: conta de fundos, a que opera. guarantee: conta de garantia (reserva) que o cliente deposita conforme o
contrato para cobrir faltas; é visível, mas não é debitada pela API.
funds, guaranteeAccountStatus string
frozen: não pode ordenar saídas; as entradas são lançadas.
active, frozen, closedBalances object
Valor em centavos de peso argentino; pode ser zero.
Valor em centavos de peso argentino; pode ser zero.
Valor em centavos de peso argentino; pode ser zero.
Account object
object"account"obrigatóriofunds: conta de fundos, a que opera.guarantee: conta de garantia (reserva) que o cliente deposita conforme o contrato para cobrir faltas; é visível, mas não é debitada pela API.namestring obrigatóriocomprimento máx.80Única moeda da API.
frozen: não pode ordenar saídas; as entradas são lançadas.CVU que aparece como origem perante a COELSA se a transferência não indicar outro.
created_atstring (date-time) obrigatórioupdated_atstring (date-time) obrigatório
AccountList object
object"list"obrigatóriohas_moreboolean obrigatórionext_cursorstring | null obrigatório
AccountNumberStatus string
pending: cadastro na COELSA em andamento. inactive: descadastrado ou inativo na COELSA.
active, inactive, pendingHolder object
namestring obrigatóriocomprimento máx.120CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.
AccountNumber object
object"account_number"obrigatórioCBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.
pending: cadastro na COELSA em andamento.inactive: descadastrado ou inativo na COELSA.Titular registrado na COELSA. Na fase 1 é sempre a entidade.
Campos de
holdernamestring obrigatóriocomprimento máx.120CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.
is_primaryboolean obrigatórioEtiqueta que o cliente pediu para este CVU (por exemplo, o id do seu usuário ou comerciante). Sem dados pessoais.
created_atstring (date-time) obrigatório
AccountNumberList object
object"list"obrigatóriohas_moreboolean obrigatórionext_cursorstring | null obrigatório
Destination DestinationCbu | DestinationCvu | DestinationAlias
Destino de uma transferência ou de uma validação.
Uma de: DestinationCbu, DestinationCvu, DestinationAlias
DestinationCbu object
type"cbu"obrigatórioCBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.
DestinationCvu object
type"cvu"obrigatórioCBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.
DestinationAlias object
type"alias"obrigatórioAlias do sistema da COELSA (o nome legível de um CBU ou CVU).
Counterparty object
Titular e conta do destino segundo a COELSA, tal como foram verificados ao autorizar.
namestring obrigatóriocomprimento máx.120CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.
CBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.
account_typestring obrigatórioValores:cbu,cvubank_codestring | null obrigatórioCódigo da instituição financeira do CBU, se a COELSA o informar.
padrão^\d{3}$is_fcm_accountboolean obrigatóriotruese o destino é uma conta do Grip Rails (a transferência é interna).
CounterpartyValidationRequest object
Destino de uma transferência ou de uma validação.
expected_cuitCuitSe vier, o resultado é
holder_mismatchquando a COELSA informa outro CUIT.
CounterpartyValidationResult string
valid: titular encontrado, conta ativa e controles em ordem. not_found: a COELSA não conhece a conta nem o alias.
inactive: a conta existe, mas não está ativa. holder_mismatch: o CUIT não é o esperado. blocked: o Grip Rails não
pode operar com essa conta (controle de compliance; sem detalhe).
valid, not_found, inactive, holder_mismatch, blockedCounterpartyValidation object
object"counterparty_validation"obrigatórioDestino de uma transferência ou de uma validação.
valid: titular encontrado, conta ativa e controles em ordem.not_found: a COELSA não conhece a conta nem o alias.inactive: a conta existe, mas não está ativa.holder_mismatch: o CUIT não é o esperado.blocked: o Grip Rails não pode operar com essa conta (controle de compliance; sem detalhe).display_messagestring | null obrigatórioTexto em espanhol para mostrar ao usuário final quando o resultado não é
valid.Presente se a COELSA informou um titular (
valid,inactiveeholder_mismatch).validated_atstring (date-time) obrigatórioexpires_atstring (date-time) obrigatórioAté quando pode ser usada numa transferência (15 minutos).
OutgoingTransferCreateRequest object
account_number_idAccountNumberIdCVU da conta que aparece como origem perante a COELSA. Por padrão, o principal da conta.
Valor em centavos de peso argentino.
150000= ARS 1.500,00.Única moeda da API.
Destino de uma transferência ou de uma validação.
expected_counterparty_cuitCuitRecomendado sempre. Se a COELSA informar outro CUIT para o titular, é rejeitada com
destination_holder_mismatch.counterparty_validation_idCounterpartyValidationIdValidação
validvigente (15 minutos) do mesmo destino. Se vencer ou não coincidir,400 parameter_invalid.conceptConceptConceito BCRA da transferência (código de finalidade), que viaja para a COELSA. Lista inicial; pode crescer de forma aditiva. VAR diversos, ALQ aluguéis, CUO parcelas, EXP despesas de condomínio, FAC faturas, HAB salários, HON honorários, PRE empréstimos, SEG seguros.
descriptionstringTexto do cliente. Fica no Grip Rails; na fase 1 não viaja para a COELSA.
comprimento máx.140external_referenceExternalReferenceReferência do cliente para conciliar. Não precisa ser única e não viaja para a COELSA.
metadataMetadataAté 20 pares chave-valor do cliente. Não coloque dados pessoais.
OutgoingTransferStatus string
Veja a tabela de estados na descrição geral.
pending, rejected, reserved, submitted, completed, failedOutgoingTransferStatusReason string
Só em submitted. awaiting_rail_result: esperando o aviso da COELSA (normal, segundos).
rail_outcome_unknown: o resultado não chegou no prazo esperado; o Grip Rails está resolvendo com a COELSA e o dinheiro
continua reservado. Não repita com outra Idempotency-Key: você poderia pagar duas vezes.
late_settlement_review: a COELSA creditou a transferência depois de a informarmos a você como failed (liquidação
tardia). O dinheiro saiu e o valor foi debitado com um lançamento compensatório; o Grip Rails a fecha como completed
quando duas pessoas confirmam a liquidação.
awaiting_rail_result, rail_outcome_unknown, late_settlement_reviewChargeType string
fee, taxChargeCode string
fcm_fee: tarifa do Grip Rails. idcb: imposto sobre débitos e créditos bancários retido pela FCM Payment Solutions S.A.S. como agente de retenção, quando aplicável.
fcm_fee, idcbCharge object
fcm_fee: tarifa do Grip Rails.idcb: imposto sobre débitos e créditos bancários retido pela FCM Payment Solutions S.A.S. como agente de retenção, quando aplicável.Valor em centavos de peso argentino; pode ser zero.
descriptionstring obrigatóriocomprimento máx.140
Iso20022OutgoingStatus object
statusstring obrigatóriopacs.002
TransactionStatus(ExternalPaymentTransactionStatus1Code).Valores:PDNG,ACCP,ACSP,ACCC,RJCTreasonstring | null obrigatórioExternalStatusReason1Code quando
statuséRJCT(por exemplo AM04, AC03, AC04, AB05, RR04).padrão^[A-Z0-9]{4}$
AuthorizationCheckName string
account: entidade e conta habilitadas. limits: limites. funds: reserva no ledger. counterparty: titular do
destino na COELSA. compliance: listas de sanções e antifraude (informados juntos, sem detalhe).
account, limits, funds, counterparty, complianceAuthorizationCheck object
account: entidade e conta habilitadas.limits: limites.funds: reserva no ledger.counterparty: titular do destino na COELSA.compliance: listas de sanções e antifraude (informados juntos, sem detalhe).resultstring obrigatórioValores:passed,failed,not_run
Rationale object
codestring obrigatórioapproved, ou o código de erro da rejeição (por exemploinsufficient_funds).messagestring obrigatóriocomprimento máx.300
Authorization object
Decisão da autorização prévia, com o seu motivo. A FCM Payment Solutions S.A.S. também guarda o detalhe completo de cada controle.
decisionstring obrigatórioapproved,declinedoupending(a autorização ainda não terminou;decided_até a hora em que ficou pendente).Valores:approved,declined,pendingdecided_atstring (date-time) obrigatórioUm resultado por controle.
not_runse não chegou a rodar porque um anterior falhou.
Reservation object
Reserva no ledger (transferências pendentes) pelo valor mais os encargos.
Valor em centavos de peso argentino.
150000= ARS 1.500,00.statestring obrigatórioheld: reservada.posted: lançada (o dinheiro saiu).voided: liberada. Uma transferência reaberta por uma liquidação tardia continuavoided(a reserva foi liberada ao falhar e o valor foi debitado com um lançamento compensatório); quando o Grip Rails a fecha comocompleted, sem custo, ela ficapostedpelo valor, com as referências do lançamento compensatório.Valores:held,posted,voidedplaced_atstring (date-time) obrigatórioresolved_atstring (date-time) | null obrigatório
Rail object
namestring obrigatóriocoelsa: transferência pela COELSA.fcm_book: interna entre contas do Grip Rails.Valores:coelsa,fcm_bookoperation_idstring | null obrigatórioId da operação na COELSA.
comprimento máx.64origin_referencestring | null obrigatórioori_trx_idcom que o Grip Rails enviou a operação. Não muda entre novas tentativas.padrão^\d{1,16}$status_codestring | null obrigatórioÚltimo código de estado da COELSA (por exemplo 7541 persistido, 7500 creditado).
comprimento máx.8submitted_atstring (date-time) | null obrigatóriofinalized_atstring (date-time) | null obrigatório
FailureCode string
rail_rejected: a COELSA a rejeitou (detalhe em rail.status_code e iso20022.reason). rail_expired: expirou na
COELSA. destination_closed: a conta de destino não existe ou está encerrada no momento de creditar.
canceled_by_fcm: o Grip Rails a cancelou antes de enviá-la (corte de emergência, controle posterior à reserva ou uma transferência pending que não pôde ser autorizada).
rail_rejected, rail_expired, destination_closed, canceled_by_fcmFailure object
rail_rejected: a COELSA a rejeitou (detalhe emrail.status_codeeiso20022.reason).rail_expired: expirou na COELSA.destination_closed: a conta de destino não existe ou está encerrada no momento de creditar.canceled_by_fcm: o Grip Rails a cancelou antes de enviá-la (corte de emergência, controle posterior à reserva ou uma transferênciapendingque não pôde ser autorizada).messagestring obrigatóriocomprimento máx.300display_messagestring | null obrigatóriocomprimento máx.200
OutgoingTransfer object
Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.
object"outgoing_transfer"obrigatórioCVU que aparece como origem perante a COELSA.
nullse foi rejeitada antes de escolhê-lo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Única moeda da API.
Encargos desta transferência. Cada um com valor é um lançamento separado no ledger. Uma transferência reaberta por uma liquidação tardia e completada vai sem custo e informa isso com um
fcm_feede0e o seu motivo.Valor em centavos de peso argentino.
150000= ARS 1.500,00.Destino de uma transferência ou de uma validação.
Titular verificado.
nullse foi rejeitada antes de consultar o destino.Conceito BCRA da transferência (código de finalidade), que viaja para a COELSA. Lista inicial; pode crescer de forma aditiva. VAR diversos, ALQ aluguéis, CUO parcelas, EXP despesas de condomínio, FAC faturas, HAB salários, HON honorários, PRE empréstimos, SEG seguros.
descriptionstring | null obrigatóriocomprimento máx.140Até 20 pares chave-valor do cliente. Não coloque dados pessoais.
Veja a tabela de estados na descrição geral.
Decisão da autorização prévia, com o seu motivo. A FCM Payment Solutions S.A.S. também guarda o detalhe completo de cada controle.
nullse foi rejeitada antes de reservar.nullaté ser enviada.Presente só em
failed.created_atstring (date-time) obrigatórioupdated_atstring (date-time) obrigatóriocompleted_atstring (date-time) | null obrigatóriofailed_atstring (date-time) | null obrigatórioHora em que ficou
failed. Volta anullse for reaberta por uma liquidação tardia.
OutgoingTransferList object
object"list"obrigatóriohas_moreboolean obrigatórionext_cursorstring | null obrigatório
Payer object
Quem pagou, segundo o aviso da COELSA. Qualquer dado pode faltar se a COELSA não o informar.
namestring | null obrigatóriocomprimento máx.120account_typestring | null obrigatórioValores:cbu,cvu,nullbank_codestring | null obrigatóriopadrão^\d{3}$
IncomingTransfer object
Determinístico a partir do id da COELSA do crédito.
object"incoming_transfer"obrigatórioCBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.
Valor em centavos de peso argentino.
150000= ARS 1.500,00.Única moeda da API.
Valor em centavos de peso argentino; pode ser zero.
Quem pagou, segundo o aviso da COELSA. Qualquer dado pode faltar se a COELSA não o informar.
conceptstring | null obrigatórioConceito BCRA informado pela COELSA, se vier.
padrão^[A-Z]{3}$statusstring obrigatórioNa fase 1, sempre
posted.Valores:postediso20022object obrigatórioCampos de
iso20022entry_statusstring obrigatóriocamt.054
EntryStatus.Valores:BOOK
railobject obrigatórioCampos de
railnamestring obrigatórioValores:coelsa,fcm_bookoperation_idstring obrigatórioId da COELSA do crédito, ou o
otr_…de origem senameéfcm_book(interna entre contas do Grip Rails). É a chave de idempotência do lançamento.comprimento máx.64business_datestring (date) | null obrigatórioData de negócio (compensação) informada pela COELSA.
posted_atstring (date-time) obrigatóriocreated_atstring (date-time) obrigatório
IncomingTransferList object
object"list"obrigatóriohas_moreboolean obrigatórionext_cursorstring | null obrigatório
EventType string
Tipos da fase 1. Podem aparecer tipos novos sem aviso de versão; ignore os que você não conhece.
transfer.outgoing.reopened: uma transferência failed que a COELSA creditou depois voltou a
submitted (status_reason: late_settlement_review).
transfer.incoming.posted, transfer.outgoing.reserved, transfer.outgoing.completed, transfer.outgoing.failed, transfer.outgoing.reopenedEventData object
Referência enxuta ao objeto. Para o estado vigente, peça o objeto.
objectstring obrigatórioValores:incoming_transfer,outgoing_transferidstring obrigatóriocomprimento máx.40Lançamentos do ledger que produziram o evento.
Event object
object"event"obrigatórioTipos da fase 1. Podem aparecer tipos novos sem aviso de versão; ignore os que você não conhece.
transfer.outgoing.reopened: uma transferênciafailedque a COELSA creditou depois voltou asubmitted(status_reason: late_settlement_review).sequenceinteger (int64) obrigatórioContíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.
mín.1api_versionstring obrigatóriopadrão^\d{4}-\d{2}-\d{2}$created_atstring (date-time) obrigatórioReferência enxuta ao objeto. Para o estado vigente, peça o objeto.
EventList object
object"list"obrigatóriohas_moreboolean obrigatórionext_after_sequenceinteger (int64) | null obrigatórioValor para o próximo
after_sequence(asequencedo último evento devolvido).
IdempotencyRecord object
object"idempotency_key"obrigatóriostatusstring obrigatórioValores:in_progress,completedmethodstring obrigatórioValores:POSTpathstring obrigatóriocomprimento máx.200request_fingerprintstring obrigatórioSHA-256 do método, do caminho e do corpo canonizado (RFC 8785).
padrão^[0-9a-f]{64}$response_statusinteger | null obrigatóriomín.200· máx.499resourceobject | null obrigatórioObjeto criado ou afetado, se houver.
Variante object
objectstring obrigatórioidstring obrigatório
created_atstring (date-time) obrigatórioexpires_atstring (date-time) obrigatório
ErrorType string
invalid_request_error, authentication_error, permission_error, not_found_error, idempotency_error, transfer_declined, rate_limit_error, service_errorErrorCode string
Veja a tabela de códigos na descrição geral.
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
Veja a tabela de códigos na descrição geral.
messagestring obrigatórioExplicação técnica para quem integra. Não mostrar a usuários finais.
display_messagestring | null obrigatórioTexto em espanhol adequado para mostrar a um usuário final, ou
null.paramstring | null obrigatórioCampo ou cabeçalho que causou o erro, se aplicável.
retryableboolean obrigatóriotrue: repita a mesma requisição com a mesma Idempotency-Key.doc_urlstring (uri) obrigatórioNum
422de transferência, o id do objeto que ficou emrejected.
Error object
JwkOkp object
kty"OKP"obrigatóriocrv"Ed25519"obrigatórioxstring obrigatóriopadrão^[A-Za-z0-9_-]{43}$kidstring obrigatóriocomprimento máx.64alg"EdDSA"obrigatóriouse"sig"obrigatório
JwkEc object
kty"EC"obrigatóriocrv"P-256"obrigatórioxstring obrigatóriopadrão^[A-Za-z0-9_-]{43}$ystring obrigatóriopadrão^[A-Za-z0-9_-]{43}$kidstring obrigatóriocomprimento máx.64alg"ES256"obrigatóriouse"sig"obrigatório
SimulateIncomingTransferRequest object
Valor em centavos de peso argentino.
150000= ARS 1.500,00.payerobjectDados do pagador simulado. Se faltarem, usa-se um sintético.
conceptConceptConceito BCRA da transferência (código de finalidade), que viaja para a COELSA. Lista inicial; pode crescer de forma aditiva. VAR diversos, ALQ aluguéis, CUO parcelas, EXP despesas de condomínio, FAC faturas, HAB salários, HON honorários, PRE empréstimos, SEG seguros.
SimulateRailResultRequest object
outcomestring obrigatórioValores:completed,failedcoelsa_codestringCódigo da COELSA a simular. Por padrão, 7500 se
completede 7699 sefailed.padrão^\d{2,4}$
SimulateLateSettlementReviewRequest object
outcomestring obrigatórioA única saída da revisão de uma liquidação tardia: duas pessoas do Grip Rails confirmam que o dinheiro saiu e a transferência é fechada como
completed, sem custo.Valores:completed
SandboxClock object
object"sandbox_clock"obrigatórionowstring (date-time) obrigatórioHora da entidade no sandbox.
offset_secondsinteger (int64) obrigatórioQuanto está adiantada em relação à hora real.
mín.0
AdvanceClockRequest object
advance_secondsinteger obrigatórioSegundos a avançar (até 31 dias por requisição).
mín.1· máx.2678400