RAILS
Sandbox

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:

  1. 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.
  2. 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: ed25519 ou ecdsa-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ê envia FCM-Version, também "fcm-version". "authorization" não é assinado: uma assinatura que o cobre é rejeitada com signature_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_…) e alg.
    • Com corpo: Content-Digest: sha-256=:…: (RFC 9530) calculado sobre os bytes exatos que você envia.
HTTP
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 todo POST (16 a 128 caracteres A-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 5xx nã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 com GET /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 qualquer 2xx. O estado vigente é consultado com GET /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 Deprecation e Sunset, 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.

GET/v1/entity#

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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâmetros da assinatura RFC 9421 (componentes cobertos, created, nonce, keyid, alg).

    comprimento máx. 2048

Respostas

200 A entidade.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: Entity

  • id EntityId obrigatório
  • object "entity" obrigatório
  • legal_name string obrigatório
    comprimento máx. 200
  • cuit Cuit | null obrigatório

    CUIT com o qual a entidade é titular dos seus CVU perante a COELSA.

  • status EntityStatus obrigatório

    suspended: pode ler, mas não ordenar transferências.

  • environment string obrigatório
    Valores: live, test
  • api_version string obrigatório

    Versão do contrato fixada para a entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • limits Limits obrigatório

    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.

  • usage LimitUsage obrigatório
  • fees FeeSchedule obrigatório

    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_at string (date-time) obrigatório
401 Falta a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

Contas

Contas de pagamento em pesos da entidade (fundos e garantia), com seu saldo no ledger.

GET/v1/accounts#

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

  • limit integer

    Quantidade máxima de objetos por página.

    mín. 1 · máx. 100 · por padrão 25
  • starting_after string

    Cursor opaco (next_cursor da página anterior).

    comprimento máx. 200

Cabeçalhos

  • FCM-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâ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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: AccountList

  • object "list" obrigatório
  • data array de Account obrigatório
  • has_more boolean obrigatório
  • next_cursor string | null obrigatório
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

parametro

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

GET/v1/accounts/{account_id}#

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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâmetros da assinatura RFC 9421 (componentes cobertos, created, nonce, keyid, alg).

    comprimento máx. 2048

Respostas

200 A conta.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: Account

  • id AccountId obrigatório
  • object "account" obrigatório
  • entity_id EntityId obrigatório
  • type AccountType obrigatório

    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.

  • name string obrigatório
    comprimento máx. 80
  • currency Currency obrigatório

    Única moeda da API.

  • status AccountStatus obrigatório

    frozen: não pode ordenar saídas; as entradas são lançadas.

  • balances Balances obrigatório
  • primary_account_number_id AccountNumberId | null obrigatório

    CVU que aparece como origem perante a COELSA se a transferência não indicar outro.

  • created_at string (date-time) obrigatório
  • updated_at string (date-time) obrigatório

Conta de fundos com uma saída em andamento

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

Números de conta

CVU de cada conta (N por conta). A entidade é a titular de todos.

GET/v1/account_numbers#

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_id AccountId

    Filtra por conta.

  • Filtra por estado.

  • limit integer

    Quantidade máxima de objetos por página.

    mín. 1 · máx. 100 · por padrão 25
  • starting_after string

    Cursor opaco (next_cursor da página anterior).

    comprimento máx. 200

Cabeçalhos

  • FCM-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâ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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: AccountNumberList

  • object "list" obrigatório
  • data array de AccountNumber obrigatório
  • has_more boolean obrigatório
  • next_cursor string | null obrigatório
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

parametro

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

GET/v1/account_numbers/{account_number_id}#

Ver um número de conta

Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).

Cabeçalhos

  • FCM-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâ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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: AccountNumber

  • id AccountNumberId obrigatório
  • object "account_number" obrigatório
  • account_id AccountId obrigatório
  • cvu BankKey obrigatório

    CBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.

  • alias Alias | null obrigatório
  • status AccountNumberStatus obrigatório

    pending: cadastro na COELSA em andamento. inactive: descadastrado ou inativo na COELSA.

  • holder Holder obrigatório

    Titular registrado na COELSA. Na fase 1 é sempre a entidade.

    Campos de holder
    • name string obrigatório
      comprimento máx. 120
    • cuit Cuit obrigatório

      CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.

  • is_primary boolean obrigatório
  • external_reference ExternalReference | null obrigatório

    Etiqueta que o cliente pediu para este CVU (por exemplo, o id do seu usuário ou comerciante). Sem dados pessoais.

  • created_at string (date-time) obrigatório
401 Falta a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

Contrapartes

Validação do titular de um destino junto à COELSA antes de pagar.

POST/v1/counterparty_validations#

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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Idempotency-Key IdempotencyKeyValue obrigatório

    Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".

  • Signature-Input string obrigatório

    Parâmetros da assinatura RFC 9421 (componentes cobertos, created, nonce, keyid, alg).

    comprimento máx. 2048
  • Content-Digest string obrigatório

    SHA-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

  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • expected_cuit Cuit

    Se vier, o resultado é holder_mismatch quando a COELSA informa outro CUIT.

Validar um alias esperando um CUIT

application/json
{
  "destination": {
    "type": "alias",
    "value": "proveedor.ejemplo"
  },
  "expected_cuit": "27000000006"
}

Respostas

201 Validação feita (o resultado pode ser negativo).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

  • Idempotent-Replayed boolean

    true se é a resposta guardada para essa Idempotency-Key.

Esquema: CounterpartyValidation

  • id CounterpartyValidationId obrigatório
  • object "counterparty_validation" obrigatório
  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • expected_cuit Cuit | null obrigatório
  • result CounterpartyValidationResult obrigatório

    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_message string | null obrigatório

    Texto em espanhol para mostrar ao usuário final quando o resultado não é valid.

  • counterparty Counterparty | null obrigatório

    Presente se a COELSA informou um titular (valid, inactive e holder_mismatch).

  • validated_at string (date-time) obrigatório
  • expires_at string (date-time) obrigatório

    Até quando pode ser usada numa transferência (15 minutos).

Titular encontrado e ativo

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

parametro

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

409 Conflito de idempotência.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

reusada

application/json
{
  "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.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

Transferências de saída

Pagamentos em pesos para CBU, CVU ou alias, com autorização prévia e reserva no ledger.

POST/v1/outgoing_transfers#

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:

  1. Conta e entidade ativas, conta não congelada e transferências habilitadas.
  2. Limite por operação.
  3. Reserva no ledger (transferência pendente) pelo valor mais os encargos. Sem saldo disponível: insufficient_funds.
  4. 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ê enviou expected_counterparty_cuit, coincide.
  5. Listas de sanções (o RePET da Argentina, a ONU e a OFAC) sobre o titular do destino.
  6. Limites diário e mensal da entidade (contam as transferências reserved, submitted e completed).
  7. 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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Idempotency-Key IdempotencyKeyValue obrigatório

    Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".

  • Signature-Input string obrigatório

    Parâmetros da assinatura RFC 9421 (componentes cobertos, created, nonce, keyid, alg).

    comprimento máx. 2048
  • Content-Digest string obrigatório

    SHA-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_id AccountId obrigatório
  • account_number_id AccountNumberId

    CVU da conta que aparece como origem perante a COELSA. Por padrão, o principal da conta.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • currency Currency obrigatório

    Única moeda da API.

  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • expected_counterparty_cuit Cuit

    Recomendado sempre. Se a COELSA informar outro CUIT para o titular, é rejeitada com destination_holder_mismatch.

  • counterparty_validation_id CounterpartyValidationId

    Validação valid vigente (15 minutos) do mesmo destino. Se vencer ou não coincidir, 400 parameter_invalid.

  • concept Concept

    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.

  • description string

    Texto do cliente. Fica no Grip Rails; na fase 1 não viaja para a COELSA.

    comprimento máx. 140
  • external_reference ExternalReference

    Referência do cliente para conciliar. Não precisa ser única e não viaja para a COELSA.

  • metadata Metadata

    Até 20 pares chave-valor do cliente. Não coloque dados pessoais.

Pagamento a um CBU com controle de titular

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

  • Idempotent-Replayed boolean

    true se é a resposta guardada para essa Idempotency-Key.

Esquema: OutgoingTransfer

  • id OutgoingTransferId obrigatório

    Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.

  • object "outgoing_transfer" obrigatório
  • account_id AccountId obrigatório
  • account_number_id AccountNumberId | null obrigatório

    CVU que aparece como origem perante a COELSA. null se foi rejeitada antes de escolhê-lo.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • currency Currency obrigatório

    Única moeda da API.

  • charges array de Charge obrigatório

    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_fee de 0 e o seu motivo.

  • total_debit_amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • counterparty Counterparty | null obrigatório

    Titular verificado. null se foi rejeitada antes de consultar o destino.

  • concept Concept obrigatório

    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.

  • description string | null obrigatório
    comprimento máx. 140
  • external_reference ExternalReference | null obrigatório
  • metadata Metadata obrigatório

    Até 20 pares chave-valor do cliente. Não coloque dados pessoais.

  • status OutgoingTransferStatus obrigatório

    Veja a tabela de estados na descrição geral.

  • status_reason OutgoingTransferStatusReason | null obrigatório
  • iso20022 Iso20022OutgoingStatus obrigatório
  • authorization Authorization obrigatório

    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.

  • reservation Reservation | null obrigatório

    null se foi rejeitada antes de reservar.

  • rail Rail | null obrigatório

    null até ser enviada.

  • failure Failure | null obrigatório

    Presente só em failed.

  • idempotency_key IdempotencyKeyValue obrigatório
  • created_at string (date-time) obrigatório
  • updated_at string (date-time) obrigatório
  • completed_at string (date-time) | null obrigatório
  • failed_at string (date-time) | null obrigatório

    Hora em que ficou failed. Volta a null se for reaberta por uma liquidação tardia.

Recém-autorizada

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

  • Idempotent-Replayed boolean

    true se é a resposta guardada para essa Idempotency-Key.

Esquema: OutgoingTransfer

  • id OutgoingTransferId obrigatório

    Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.

  • object "outgoing_transfer" obrigatório
  • account_id AccountId obrigatório
  • account_number_id AccountNumberId | null obrigatório

    CVU que aparece como origem perante a COELSA. null se foi rejeitada antes de escolhê-lo.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • currency Currency obrigatório

    Única moeda da API.

  • charges array de Charge obrigatório

    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_fee de 0 e o seu motivo.

  • total_debit_amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • counterparty Counterparty | null obrigatório

    Titular verificado. null se foi rejeitada antes de consultar o destino.

  • concept Concept obrigatório

    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.

  • description string | null obrigatório
    comprimento máx. 140
  • external_reference ExternalReference | null obrigatório
  • metadata Metadata obrigatório

    Até 20 pares chave-valor do cliente. Não coloque dados pessoais.

  • status OutgoingTransferStatus obrigatório

    Veja a tabela de estados na descrição geral.

  • status_reason OutgoingTransferStatusReason | null obrigatório
  • iso20022 Iso20022OutgoingStatus obrigatório
  • authorization Authorization obrigatório

    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.

  • reservation Reservation | null obrigatório

    null se foi rejeitada antes de reservar.

  • rail Rail | null obrigatório

    null até ser enviada.

  • failure Failure | null obrigatório

    Presente só em failed.

  • idempotency_key IdempotencyKeyValue obrigatório
  • created_at string (date-time) obrigatório
  • updated_at string (date-time) obrigatório
  • completed_at string (date-time) | null obrigatório
  • failed_at string (date-time) | null obrigatório

    Hora em que ficou failed. Volta a null se for reaberta por uma liquidação tardia.

400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

parametro

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

409 Conflito de idempotência.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

reusada

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Idempotent-Replayed boolean

    true se é a resposta guardada para essa Idempotency-Key.

Esquema: Error

sin_saldo

application/json
{
  "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

application/json
{
  "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.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

GET/v1/outgoing_transfers#

Listar transferências de saída

Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).

Query

  • account_id AccountId

    Filtra por conta.

  • Filtra por estado.

  • idempotency_key IdempotencyKeyValue

    Busca a transferência criada com esta Idempotency-Key (funciona também depois dos 35 dias).

  • external_reference ExternalReference

    Filtra pela sua referência.

  • created_after string (date-time)

    Só objetos criados neste instante ou depois (RFC 3339).

  • created_before string (date-time)

    Só objetos criados antes deste instante (RFC 3339).

  • limit integer

    Quantidade máxima de objetos por página.

    mín. 1 · máx. 100 · por padrão 25
  • starting_after string

    Cursor opaco (next_cursor da página anterior).

    comprimento máx. 200

Cabeçalhos

  • FCM-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâ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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: OutgoingTransferList

  • object "list" obrigatório
  • data array de OutgoingTransfer obrigatório
  • has_more boolean obrigatório
  • next_cursor string | null obrigatório
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

parametro

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

GET/v1/outgoing_transfers/{outgoing_transfer_id}#

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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâmetros da assinatura RFC 9421 (componentes cobertos, created, nonce, keyid, alg).

    comprimento máx. 2048

Respostas

200 A transferência.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: OutgoingTransfer

  • id OutgoingTransferId obrigatório

    Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.

  • object "outgoing_transfer" obrigatório
  • account_id AccountId obrigatório
  • account_number_id AccountNumberId | null obrigatório

    CVU que aparece como origem perante a COELSA. null se foi rejeitada antes de escolhê-lo.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • currency Currency obrigatório

    Única moeda da API.

  • charges array de Charge obrigatório

    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_fee de 0 e o seu motivo.

  • total_debit_amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • counterparty Counterparty | null obrigatório

    Titular verificado. null se foi rejeitada antes de consultar o destino.

  • concept Concept obrigatório

    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.

  • description string | null obrigatório
    comprimento máx. 140
  • external_reference ExternalReference | null obrigatório
  • metadata Metadata obrigatório

    Até 20 pares chave-valor do cliente. Não coloque dados pessoais.

  • status OutgoingTransferStatus obrigatório

    Veja a tabela de estados na descrição geral.

  • status_reason OutgoingTransferStatusReason | null obrigatório
  • iso20022 Iso20022OutgoingStatus obrigatório
  • authorization Authorization obrigatório

    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.

  • reservation Reservation | null obrigatório

    null se foi rejeitada antes de reservar.

  • rail Rail | null obrigatório

    null até ser enviada.

  • failure Failure | null obrigatório

    Presente só em failed.

  • idempotency_key IdempotencyKeyValue obrigatório
  • created_at string (date-time) obrigatório
  • updated_at string (date-time) obrigatório
  • completed_at string (date-time) | null obrigatório
  • failed_at string (date-time) | null obrigatório

    Hora em que ficou failed. Volta a null se for reaberta por uma liquidação tardia.

Creditada pela COELSA

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

Transferências de entrada

Créditos recebidos nos CVU da entidade, lançados com liquidação real da COELSA.

GET/v1/incoming_transfers#

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_id AccountId

    Filtra por conta.

  • account_number_id AccountNumberId

    Filtra pelo CVU por onde entrou.

  • created_after string (date-time)

    Só objetos criados neste instante ou depois (RFC 3339).

  • created_before string (date-time)

    Só objetos criados antes deste instante (RFC 3339).

  • limit integer

    Quantidade máxima de objetos por página.

    mín. 1 · máx. 100 · por padrão 25
  • starting_after string

    Cursor opaco (next_cursor da página anterior).

    comprimento máx. 200

Cabeçalhos

  • FCM-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâ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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: IncomingTransferList

  • object "list" obrigatório
  • data array de IncomingTransfer obrigatório
  • has_more boolean obrigatório
  • next_cursor string | null obrigatório
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

parametro

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

GET/v1/incoming_transfers/{incoming_transfer_id}#

Ver um crédito recebido

Autenticação: API key (Authorization: Bearer) e assinatura da requisição (Signature, Signature-Input).

Cabeçalhos

  • FCM-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâ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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: IncomingTransfer

  • id IncomingTransferId obrigatório

    Determinístico a partir do id da COELSA do crédito.

  • object "incoming_transfer" obrigatório
  • account_id AccountId obrigatório
  • account_number_id AccountNumberId obrigatório
  • cvu BankKey obrigatório

    CBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • currency Currency obrigatório

    Única moeda da API.

  • charges array de Charge obrigatório
  • net_amount AmountOrZero obrigatório

    Valor em centavos de peso argentino; pode ser zero.

  • payer Payer obrigatório

    Quem pagou, segundo o aviso da COELSA. Qualquer dado pode faltar se a COELSA não o informar.

  • concept string | null obrigatório

    Conceito BCRA informado pela COELSA, se vier.

    padrão ^[A-Z]{3}$
  • status string obrigatório

    Na fase 1, sempre posted.

    Valores: posted
  • iso20022 object obrigatório
    Campos de iso20022
    • entry_status string obrigatório

      camt.054 EntryStatus.

      Valores: BOOK
  • rail object obrigatório
    Campos de rail
    • name string obrigatório
      Valores: coelsa, fcm_book
    • operation_id string obrigatório

      Id da COELSA do crédito, ou o otr_… de origem se name é fcm_book (interna entre contas do Grip Rails). É a chave de idempotência do lançamento.

      comprimento máx. 64
    • business_date string (date) | null obrigatório

      Data de negócio (compensação) informada pela COELSA.

  • ledger_references array de LedgerReference obrigatório
  • posted_at string (date-time) obrigatório
  • created_at string (date-time) obrigatório

Crédito por um CVU de referência

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

Eventos

Registro ordenado do que aconteceu, para conciliar e para os webhooks.

GET/v1/events#

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_sequence integer (int64)

    Devolve os eventos com sequence maior que este valor. Por padrão, 0 (a partir do primeiro disponível).

    mín. 0 · por padrão 0
  • Filtra por tipo de evento.

  • limit integer

    Quantidade máxima de eventos (1 a 100).

    mín. 1 · máx. 100 · por padrão 100

Cabeçalhos

  • FCM-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâ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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: EventList

  • object "list" obrigatório
  • data array de Event obrigatório
  • has_more boolean obrigatório
  • next_after_sequence integer (int64) | null obrigatório

    Valor para o próximo after_sequence (a sequence do último evento devolvido).

Dois eventos

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

parametro

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

GET/v1/events/{event_id}#

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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâmetros da assinatura RFC 9421 (componentes cobertos, created, nonce, keyid, alg).

    comprimento máx. 2048

Respostas

200 O evento.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: Event

  • id EventId obrigatório
  • object "event" obrigatório
  • type EventType obrigatório

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

  • sequence integer (int64) obrigatório

    Contíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.

    mín. 1
  • entity_id EntityId obrigatório
  • api_version string obrigatório
    padrão ^\d{4}-\d{2}-\d{2}$
  • created_at string (date-time) obrigatório
  • data EventData obrigatório

    Referê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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

Idempotência

Consulta de uma Idempotency-Key usada.

GET/v1/idempotency_keys/{idempotency_key}#

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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâ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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • FCM-Version string

    Versão do contrato com que se respondeu.

Esquema: IdempotencyRecord

  • key IdempotencyKeyValue obrigatório
  • object "idempotency_key" obrigatório
  • status string obrigatório
    Valores: in_progress, completed
  • method string obrigatório
    Valores: POST
  • path string obrigatório
    comprimento máx. 200
  • request_fingerprint string obrigatório

    SHA-256 do método, do caminho e do corpo canonizado (RFC 8785).

    padrão ^[0-9a-f]{64}$
  • response_status integer | null obrigatório
    mín. 200 · máx. 499
  • resource object | null obrigatório

    Objeto criado ou afetado, se houver.

    Variante object
    • object string obrigatório
    • id string obrigatório
  • created_at string (date-time) obrigatório
  • expires_at string (date-time) obrigatório
401 Falta a API key ou a assinatura, ou elas não são válidas.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

Chaves do Grip Rails

Chaves públicas com que o Grip Rails assina os webhooks.

GET/.well-known/jwks.json#

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-Control string

    Pode ficar em cache por 5 minutos.

Esquema: Jwks

Uma chave P-256 vigente

application/json
{
  "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.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

Sandbox

Simuladores. Só existem no sandbox.

POST/v1/simulations/incoming_transfers#

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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Idempotency-Key IdempotencyKeyValue obrigatório

    Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".

  • Signature-Input string obrigatório

    Parâmetros da assinatura RFC 9421 (componentes cobertos, created, nonce, keyid, alg).

    comprimento máx. 2048
  • Content-Digest string obrigatório

    SHA-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

  • account_number_id AccountNumberId obrigatório
  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • payer object

    Dados do pagador simulado. Se faltarem, usa-se um sintético.

    Campos de payer
    • name string
      comprimento máx. 120
    • cuit Cuit

      CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.

    • account BankKey

      CBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.

  • concept Concept

    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.

Crédito de ARS 15.000

application/json
{
  "account_number_id": "acn_01JA2B3C4D5E6F7G8H9JKMNPQD",
  "amount": 1500000
}

Respostas

201 Crédito simulado e lançado.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Idempotent-Replayed boolean

    true se é a resposta guardada para essa Idempotency-Key.

Esquema: IncomingTransfer

  • id IncomingTransferId obrigatório

    Determinístico a partir do id da COELSA do crédito.

  • object "incoming_transfer" obrigatório
  • account_id AccountId obrigatório
  • account_number_id AccountNumberId obrigatório
  • cvu BankKey obrigatório

    CBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • currency Currency obrigatório

    Única moeda da API.

  • charges array de Charge obrigatório
  • net_amount AmountOrZero obrigatório

    Valor em centavos de peso argentino; pode ser zero.

  • payer Payer obrigatório

    Quem pagou, segundo o aviso da COELSA. Qualquer dado pode faltar se a COELSA não o informar.

  • concept string | null obrigatório

    Conceito BCRA informado pela COELSA, se vier.

    padrão ^[A-Z]{3}$
  • status string obrigatório

    Na fase 1, sempre posted.

    Valores: posted
  • iso20022 object obrigatório
    Campos de iso20022
    • entry_status string obrigatório

      camt.054 EntryStatus.

      Valores: BOOK
  • rail object obrigatório
    Campos de rail
    • name string obrigatório
      Valores: coelsa, fcm_book
    • operation_id string obrigatório

      Id da COELSA do crédito, ou o otr_… de origem se name é fcm_book (interna entre contas do Grip Rails). É a chave de idempotência do lançamento.

      comprimento máx. 64
    • business_date string (date) | null obrigatório

      Data de negócio (compensação) informada pela COELSA.

  • ledger_references array de LedgerReference obrigatório
  • posted_at string (date-time) obrigatório
  • created_at string (date-time) obrigatório
400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

parametro

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

409 Conflito de idempotência.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

reusada

application/json
{
  "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.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

POST/v1/simulations/outgoing_transfers/{outgoing_transfer_id}/rail_result#

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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Idempotency-Key IdempotencyKeyValue obrigatório

    Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".

  • Signature-Input string obrigatório

    Parâmetros da assinatura RFC 9421 (componentes cobertos, created, nonce, keyid, alg).

    comprimento máx. 2048
  • Content-Digest string obrigatório

    SHA-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

  • outcome string obrigatório
    Valores: completed, failed
  • coelsa_code string

    Código da COELSA a simular. Por padrão, 7500 se completed e 7699 se failed.

    padrão ^\d{2,4}$

A COELSA rejeita por conta inexistente

application/json
{
  "outcome": "failed",
  "coelsa_code": "7502"
}

Sobre uma transferência failed, a COELSA a credita depois (liquidação tardia)

application/json
{
  "outcome": "completed"
}

Respostas

200 Resultado aplicado. Devolve a transferência atualizada.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Idempotent-Replayed boolean

    true se é a resposta guardada para essa Idempotency-Key.

Esquema: OutgoingTransfer

  • id OutgoingTransferId obrigatório

    Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.

  • object "outgoing_transfer" obrigatório
  • account_id AccountId obrigatório
  • account_number_id AccountNumberId | null obrigatório

    CVU que aparece como origem perante a COELSA. null se foi rejeitada antes de escolhê-lo.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • currency Currency obrigatório

    Única moeda da API.

  • charges array de Charge obrigatório

    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_fee de 0 e o seu motivo.

  • total_debit_amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • counterparty Counterparty | null obrigatório

    Titular verificado. null se foi rejeitada antes de consultar o destino.

  • concept Concept obrigatório

    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.

  • description string | null obrigatório
    comprimento máx. 140
  • external_reference ExternalReference | null obrigatório
  • metadata Metadata obrigatório

    Até 20 pares chave-valor do cliente. Não coloque dados pessoais.

  • status OutgoingTransferStatus obrigatório

    Veja a tabela de estados na descrição geral.

  • status_reason OutgoingTransferStatusReason | null obrigatório
  • iso20022 Iso20022OutgoingStatus obrigatório
  • authorization Authorization obrigatório

    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.

  • reservation Reservation | null obrigatório

    null se foi rejeitada antes de reservar.

  • rail Rail | null obrigatório

    null até ser enviada.

  • failure Failure | null obrigatório

    Presente só em failed.

  • idempotency_key IdempotencyKeyValue obrigatório
  • created_at string (date-time) obrigatório
  • updated_at string (date-time) obrigatório
  • completed_at string (date-time) | null obrigatório
  • failed_at string (date-time) | null obrigatório

    Hora em que ficou failed. Volta a null se for reaberta por uma liquidação tardia.

400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

parametro

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

409 Conflito de idempotência.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

reusada

application/json
{
  "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.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

POST/v1/simulations/outgoing_transfers/{outgoing_transfer_id}/late_settlement_review#

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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Idempotency-Key IdempotencyKeyValue obrigatório

    Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".

  • Signature-Input string obrigatório

    Parâmetros da assinatura RFC 9421 (componentes cobertos, created, nonce, keyid, alg).

    comprimento máx. 2048
  • Content-Digest string obrigatório

    SHA-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

  • outcome string obrigatório

    A ú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

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Idempotent-Replayed boolean

    true se é a resposta guardada para essa Idempotency-Key.

Esquema: OutgoingTransfer

  • id OutgoingTransferId obrigatório

    Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.

  • object "outgoing_transfer" obrigatório
  • account_id AccountId obrigatório
  • account_number_id AccountNumberId | null obrigatório

    CVU que aparece como origem perante a COELSA. null se foi rejeitada antes de escolhê-lo.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • currency Currency obrigatório

    Única moeda da API.

  • charges array de Charge obrigatório

    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_fee de 0 e o seu motivo.

  • total_debit_amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • counterparty Counterparty | null obrigatório

    Titular verificado. null se foi rejeitada antes de consultar o destino.

  • concept Concept obrigatório

    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.

  • description string | null obrigatório
    comprimento máx. 140
  • external_reference ExternalReference | null obrigatório
  • metadata Metadata obrigatório

    Até 20 pares chave-valor do cliente. Não coloque dados pessoais.

  • status OutgoingTransferStatus obrigatório

    Veja a tabela de estados na descrição geral.

  • status_reason OutgoingTransferStatusReason | null obrigatório
  • iso20022 Iso20022OutgoingStatus obrigatório
  • authorization Authorization obrigatório

    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.

  • reservation Reservation | null obrigatório

    null se foi rejeitada antes de reservar.

  • rail Rail | null obrigatório

    null até ser enviada.

  • failure Failure | null obrigatório

    Presente só em failed.

  • idempotency_key IdempotencyKeyValue obrigatório
  • created_at string (date-time) obrigatório
  • updated_at string (date-time) obrigatório
  • completed_at string (date-time) | null obrigatório
  • failed_at string (date-time) | null obrigatório

    Hora em que ficou failed. Volta a null se for reaberta por uma liquidação tardia.

400 Requisição mal formada ou parâmetro inválido. Nada foi criado.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

parametro

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

409 Conflito de idempotência.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

reusada

application/json
{
  "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.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

503 A COELSA, o ledger ou as transferências não estão disponíveis no momento. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

GET/v1/simulations/clock#

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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Signature-Input string obrigatório

    Parâmetros da assinatura RFC 9421 (componentes cobertos, created, nonce, keyid, alg).

    comprimento máx. 2048

Respostas

200 O relógio.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: SandboxClock

  • object "sandbox_clock" obrigatório
  • entity_id EntityId obrigatório
  • now string (date-time) obrigatório

    Hora da entidade no sandbox.

  • offset_seconds integer (int64) obrigatório

    Quanto 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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

429 Você ultrapassou o limite de requisições por segundo.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

POST/v1/simulations/clock/advance#

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-Version string

    Versão por data do contrato. Se faltar, usa-se a versão fixada da entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • Idempotency-Key IdempotencyKeyValue obrigatório

    Chave única por intenção do cliente. Obrigatória em todo POST. Veja "Idempotência".

  • Signature-Input string obrigatório

    Parâmetros da assinatura RFC 9421 (componentes cobertos, created, nonce, keyid, alg).

    comprimento máx. 2048
  • Content-Digest string obrigatório

    SHA-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_seconds integer obrigatório

    Segundos a avançar (até 31 dias por requisição).

    mín. 1 · máx. 2678400

Avançar um dia

application/json
{
  "advance_seconds": 86400
}

Respostas

200 Relógio avançado.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Idempotent-Replayed boolean

    true se é a resposta guardada para essa Idempotency-Key.

Esquema: SandboxClock

  • object "sandbox_clock" obrigatório
  • entity_id EntityId obrigatório
  • now string (date-time) obrigatório

    Hora da entidade no sandbox.

  • offset_seconds integer (int64) obrigatório

    Quanto 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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

parametro

application/json
{
  "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-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

firma

application/json
{
  "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).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

404 Não existe, ou é de outra entidade (o Grip Rails não distingue os dois casos).
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

409 Conflito de idempotência.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

reusada

application/json
{
  "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.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

  • Retry-After integer

    Segundos a esperar antes de tentar de novo.

Esquema: Error

500 Erro do Grip Rails. Repita com a mesma Idempotency-Key.
Cabeçalhos
  • FCM-Request-Id RequestId

    Id da requisição no Grip Rails. Cite-o em qualquer consulta ao suporte.

Esquema: Error

Webhooks

O que o Grip Rails envia para a sua URL. Como verificá-los: Webhooks e assinaturas.

POSTtransfer.incoming.posted#

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-Signature string obrigatório

    JWS 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_-]+$
  • FCM-Event-Id EventId obrigatório

    Id do evento (igual ao id do corpo). Chave para deduplicar.

  • FCM-Event-Type EventType obrigatório

    Tipo do evento (igual ao type do corpo).

  • FCM-Delivery-Id string obrigatório

    Id desta tentativa de entrega (igual ao claim jti).

    padrão ^whd_[0-9A-HJKMNP-TV-Z]{26}$
  • FCM-Delivery-Attempt integer obrigatório

    Número da tentativa (1 a 25).

    mín. 1 · máx. 25

Corpo da requisição obrigatório

Esquema: Event

  • id EventId obrigatório
  • object "event" obrigatório
  • type EventType obrigatório

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

  • sequence integer (int64) obrigatório

    Contíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.

    mín. 1
  • entity_id EntityId obrigatório
  • api_version string obrigatório
    padrão ^\d{4}-\d{2}-\d{2}$
  • created_at string (date-time) obrigatório
  • data EventData obrigatório

    Referência enxuta ao objeto. Para o estado vigente, peça o objeto.

credito

application/json
{
  "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.
POSTtransfer.outgoing.reserved#

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-Signature string obrigatório

    JWS 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_-]+$
  • FCM-Event-Id EventId obrigatório

    Id do evento (igual ao id do corpo). Chave para deduplicar.

  • FCM-Event-Type EventType obrigatório

    Tipo do evento (igual ao type do corpo).

  • FCM-Delivery-Id string obrigatório

    Id desta tentativa de entrega (igual ao claim jti).

    padrão ^whd_[0-9A-HJKMNP-TV-Z]{26}$
  • FCM-Delivery-Attempt integer obrigatório

    Número da tentativa (1 a 25).

    mín. 1 · máx. 25

Corpo da requisição obrigatório

Esquema: Event

  • id EventId obrigatório
  • object "event" obrigatório
  • type EventType obrigatório

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

  • sequence integer (int64) obrigatório

    Contíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.

    mín. 1
  • entity_id EntityId obrigatório
  • api_version string obrigatório
    padrão ^\d{4}-\d{2}-\d{2}$
  • created_at string (date-time) obrigatório
  • data EventData obrigatório

    Referência enxuta ao objeto. Para o estado vigente, peça o objeto.

Respostas

2XX Recebido.
default Reintento según la política.
POSTtransfer.outgoing.completed#

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-Signature string obrigatório

    JWS 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_-]+$
  • FCM-Event-Id EventId obrigatório

    Id do evento (igual ao id do corpo). Chave para deduplicar.

  • FCM-Event-Type EventType obrigatório

    Tipo do evento (igual ao type do corpo).

  • FCM-Delivery-Id string obrigatório

    Id desta tentativa de entrega (igual ao claim jti).

    padrão ^whd_[0-9A-HJKMNP-TV-Z]{26}$
  • FCM-Delivery-Attempt integer obrigatório

    Número da tentativa (1 a 25).

    mín. 1 · máx. 25

Corpo da requisição obrigatório

Esquema: Event

  • id EventId obrigatório
  • object "event" obrigatório
  • type EventType obrigatório

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

  • sequence integer (int64) obrigatório

    Contíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.

    mín. 1
  • entity_id EntityId obrigatório
  • api_version string obrigatório
    padrão ^\d{4}-\d{2}-\d{2}$
  • created_at string (date-time) obrigatório
  • data EventData obrigatório

    Referência enxuta ao objeto. Para o estado vigente, peça o objeto.

Respostas

2XX Recebido.
default Reintento según la política.
POSTtransfer.outgoing.failed#

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-Signature string obrigatório

    JWS 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_-]+$
  • FCM-Event-Id EventId obrigatório

    Id do evento (igual ao id do corpo). Chave para deduplicar.

  • FCM-Event-Type EventType obrigatório

    Tipo do evento (igual ao type do corpo).

  • FCM-Delivery-Id string obrigatório

    Id desta tentativa de entrega (igual ao claim jti).

    padrão ^whd_[0-9A-HJKMNP-TV-Z]{26}$
  • FCM-Delivery-Attempt integer obrigatório

    Número da tentativa (1 a 25).

    mín. 1 · máx. 25

Corpo da requisição obrigatório

Esquema: Event

  • id EventId obrigatório
  • object "event" obrigatório
  • type EventType obrigatório

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

  • sequence integer (int64) obrigatório

    Contíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.

    mín. 1
  • entity_id EntityId obrigatório
  • api_version string obrigatório
    padrão ^\d{4}-\d{2}-\d{2}$
  • created_at string (date-time) obrigatório
  • data EventData obrigatório

    Referência enxuta ao objeto. Para o estado vigente, peça o objeto.

Respostas

2XX Recebido.
default Reintento según la política.
POSTtransfer.outgoing.reopened#

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-Signature string obrigatório

    JWS 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_-]+$
  • FCM-Event-Id EventId obrigatório

    Id do evento (igual ao id do corpo). Chave para deduplicar.

  • FCM-Event-Type EventType obrigatório

    Tipo do evento (igual ao type do corpo).

  • FCM-Delivery-Id string obrigatório

    Id desta tentativa de entrega (igual ao claim jti).

    padrão ^whd_[0-9A-HJKMNP-TV-Z]{26}$
  • FCM-Delivery-Attempt integer obrigatório

    Número da tentativa (1 a 25).

    mín. 1 · máx. 25

Corpo da requisição obrigatório

Esquema: Event

  • id EventId obrigatório
  • object "event" obrigatório
  • type EventType obrigatório

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

  • sequence integer (int64) obrigatório

    Contíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.

    mín. 1
  • entity_id EntityId obrigatório
  • api_version string obrigatório
    padrão ^\d{4}-\d{2}-\d{2}$
  • created_at string (date-time) obrigatório
  • data EventData obrigatório

    Referê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
padrão ^ent_[0-9A-HJKMNP-TV-Z]{26}$
AccountId string
padrão ^acc_[0-9A-HJKMNP-TV-Z]{26}$
AccountNumberId string
padrão ^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.

padrão ^otr_[0-9A-HJKMNP-TV-Z]{26}$
IncomingTransferId string

Determinístico a partir do id da COELSA do crédito.

padrão ^itr_[0-9A-HJKMNP-TV-Z]{26}$
CounterpartyValidationId string
padrão ^cval_[0-9A-HJKMNP-TV-Z]{26}$
EventId string
padrão ^evt_[0-9A-HJKMNP-TV-Z]{26}$
RequestId string
padrão ^req_[0-9A-HJKMNP-TV-Z]{26}$
IdempotencyKeyValue string
padrão ^[A-Za-z0-9._:-]{16,128}$
Amount integer (int64)

Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

mín. 1 · máx. 9007199254740991
AmountOrZero integer (int64)

Valor em centavos de peso argentino; pode ser zero.

mín. 0 · máx. 9007199254740991
Currency string

Única moeda da API.

Valores: ARS
Cuit string

CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.

padrão ^\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.

padrão ^\d{22}$
Alias string

Alias do sistema da COELSA (o nome legível de um CBU ou CVU).

padrão ^[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.

padrão ^[0-9a-f]{32}$
ExternalReference string

Referência do cliente para conciliar. Não precisa ser única e não viaja para a COELSA.

padrão ^[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.

Valores: VAR, ALQ, CUO, EXP, FAC, HAB, HON, PRE, SEG · por padrão VAR
EntityStatus string

suspended: pode ler, mas não ordenar transferências.

Valores: active, suspended, closed
Entity object
  • id EntityId obrigatório
  • object "entity" obrigatório
  • legal_name string obrigatório
    comprimento máx. 200
  • cuit Cuit | null obrigatório

    CUIT com o qual a entidade é titular dos seus CVU perante a COELSA.

  • status EntityStatus obrigatório

    suspended: pode ler, mas não ordenar transferências.

  • environment string obrigatório
    Valores: live, test
  • api_version string obrigatório

    Versão do contrato fixada para a entidade.

    padrão ^\d{4}-\d{2}-\d{2}$
  • limits Limits obrigatório

    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.

  • usage LimitUsage obrigatório
  • fees FeeSchedule obrigatório

    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_at string (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_amount integer (int64) | null obrigatório
    mín. 1
  • daily_max_amount integer (int64) | null obrigatório
    mín. 1
  • monthly_max_amount integer (int64) | null obrigatório
    mín. 1
LimitUsage object
  • business_date string (date) obrigatório

    Dia de Buenos Aires ao qual corresponde o uso diário.

  • daily_used_amount AmountOrZero obrigatório

    Valor em centavos de peso argentino; pode ser zero.

  • daily_remaining_amount integer (int64) | null obrigatório

    null se não há limite diário.

    mín. 0
  • month string obrigatório
    padrão ^\d{4}-\d{2}$
  • monthly_used_amount AmountOrZero obrigatório

    Valor em centavos de peso argentino; pode ser zero.

  • monthly_remaining_amount integer (int64) | null obrigatório

    null se não há limite mensal.

    mín. 0
FeeRule object
  • fixed_amount AmountOrZero obrigatório

    Valor em centavos de peso argentino; pode ser zero.

  • rate_bps integer obrigatório

    Porcentagem 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

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.

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.

Valores: funds, guarantee
AccountStatus string

frozen: não pode ordenar saídas; as entradas são lançadas.

Valores: active, frozen, closed
Balances object
  • posted AmountOrZero obrigatório

    Valor em centavos de peso argentino; pode ser zero.

  • held AmountOrZero obrigatório

    Valor em centavos de peso argentino; pode ser zero.

  • available AmountOrZero obrigatório

    Valor em centavos de peso argentino; pode ser zero.

Account object
  • id AccountId obrigatório
  • object "account" obrigatório
  • entity_id EntityId obrigatório
  • type AccountType obrigatório

    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.

  • name string obrigatório
    comprimento máx. 80
  • currency Currency obrigatório

    Única moeda da API.

  • status AccountStatus obrigatório

    frozen: não pode ordenar saídas; as entradas são lançadas.

  • balances Balances obrigatório
  • primary_account_number_id AccountNumberId | null obrigatório

    CVU que aparece como origem perante a COELSA se a transferência não indicar outro.

  • created_at string (date-time) obrigatório
  • updated_at string (date-time) obrigatório
AccountList object
  • object "list" obrigatório
  • data array de Account obrigatório
  • has_more boolean obrigatório
  • next_cursor string | null obrigatório
AccountNumberStatus string

pending: cadastro na COELSA em andamento. inactive: descadastrado ou inativo na COELSA.

Valores: active, inactive, pending
Holder object
  • name string obrigatório
    comprimento máx. 120
  • cuit Cuit obrigatório

    CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.

AccountNumber object
  • id AccountNumberId obrigatório
  • object "account_number" obrigatório
  • account_id AccountId obrigatório
  • cvu BankKey obrigatório

    CBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.

  • alias Alias | null obrigatório
  • status AccountNumberStatus obrigatório

    pending: cadastro na COELSA em andamento. inactive: descadastrado ou inativo na COELSA.

  • holder Holder obrigatório

    Titular registrado na COELSA. Na fase 1 é sempre a entidade.

    Campos de holder
    • name string obrigatório
      comprimento máx. 120
    • cuit Cuit obrigatório

      CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.

  • is_primary boolean obrigatório
  • external_reference ExternalReference | null obrigatório

    Etiqueta que o cliente pediu para este CVU (por exemplo, o id do seu usuário ou comerciante). Sem dados pessoais.

  • created_at string (date-time) obrigatório
AccountNumberList object
  • object "list" obrigatório
  • data array de AccountNumber obrigatório
  • has_more boolean obrigatório
  • next_cursor string | 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ório
  • value BankKey obrigatório

    CBU 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ório
  • value BankKey obrigatório

    CBU 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ório
  • value Alias obrigatório

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

  • name string obrigatório
    comprimento máx. 120
  • cuit Cuit obrigatório

    CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.

  • account BankKey obrigatório

    CBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.

  • account_type string obrigatório
    Valores: cbu, cvu
  • bank_code string | null obrigatório

    Código da instituição financeira do CBU, se a COELSA o informar.

    padrão ^\d{3}$
  • alias Alias | null obrigatório
  • is_fcm_account boolean obrigatório

    true se o destino é uma conta do Grip Rails (a transferência é interna).

CounterpartyValidationRequest object
  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • expected_cuit Cuit

    Se vier, o resultado é holder_mismatch quando 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).

Valores: valid, not_found, inactive, holder_mismatch, blocked
CounterpartyValidation object
  • id CounterpartyValidationId obrigatório
  • object "counterparty_validation" obrigatório
  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • expected_cuit Cuit | null obrigatório
  • result CounterpartyValidationResult obrigatório

    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_message string | null obrigatório

    Texto em espanhol para mostrar ao usuário final quando o resultado não é valid.

  • counterparty Counterparty | null obrigatório

    Presente se a COELSA informou um titular (valid, inactive e holder_mismatch).

  • validated_at string (date-time) obrigatório
  • expires_at string (date-time) obrigatório

    Até quando pode ser usada numa transferência (15 minutos).

OutgoingTransferCreateRequest object
  • account_id AccountId obrigatório
  • account_number_id AccountNumberId

    CVU da conta que aparece como origem perante a COELSA. Por padrão, o principal da conta.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • currency Currency obrigatório

    Única moeda da API.

  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • expected_counterparty_cuit Cuit

    Recomendado sempre. Se a COELSA informar outro CUIT para o titular, é rejeitada com destination_holder_mismatch.

  • counterparty_validation_id CounterpartyValidationId

    Validação valid vigente (15 minutos) do mesmo destino. Se vencer ou não coincidir, 400 parameter_invalid.

  • concept Concept

    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.

  • description string

    Texto do cliente. Fica no Grip Rails; na fase 1 não viaja para a COELSA.

    comprimento máx. 140
  • external_reference ExternalReference

    Referência do cliente para conciliar. Não precisa ser única e não viaja para a COELSA.

  • metadata Metadata

    Até 20 pares chave-valor do cliente. Não coloque dados pessoais.

OutgoingTransferStatus string

Veja a tabela de estados na descrição geral.

Valores: pending, rejected, reserved, submitted, completed, failed
OutgoingTransferStatusReason 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.

Valores: awaiting_rail_result, rail_outcome_unknown, late_settlement_review
ChargeType string
Valores: fee, tax
ChargeCode 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.

Valores: fcm_fee, idcb
Charge object
  • type ChargeType obrigatório
  • code ChargeCode obrigatório

    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.

  • amount AmountOrZero obrigatório

    Valor em centavos de peso argentino; pode ser zero.

  • description string obrigatório
    comprimento máx. 140
Iso20022OutgoingStatus object
  • status string obrigatório

    pacs.002 TransactionStatus (ExternalPaymentTransactionStatus1Code).

    Valores: PDNG, ACCP, ACSP, ACCC, RJCT
  • reason string | null obrigatório

    ExternalStatusReason1Code 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).

Valores: account, limits, funds, counterparty, compliance
AuthorizationCheck object
  • name AuthorizationCheckName obrigatório

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

  • result string obrigatório
    Valores: passed, failed, not_run
Rationale object
  • code string obrigatório

    approved, ou o código de erro da rejeição (por exemplo insufficient_funds).

  • message string obrigatório
    comprimento 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.

  • decision string obrigatório

    approved, declined ou pending (a autorização ainda não terminou; decided_at é a hora em que ficou pendente).

    Valores: approved, declined, pending
  • decided_at string (date-time) obrigatório
  • rationale Rationale obrigatório
  • checks array de AuthorizationCheck obrigatório

    Um resultado por controle. not_run se não chegou a rodar porque um anterior falhou.

Reservation object

Reserva no ledger (transferências pendentes) pelo valor mais os encargos.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • state string obrigatório

    held: reservada. posted: lançada (o dinheiro saiu). voided: liberada. Uma transferência reaberta por uma liquidação tardia continua voided (a reserva foi liberada ao falhar e o valor foi debitado com um lançamento compensatório); quando o Grip Rails a fecha como completed, sem custo, ela fica posted pelo valor, com as referências do lançamento compensatório.

    Valores: held, posted, voided
  • placed_at string (date-time) obrigatório
  • resolved_at string (date-time) | null obrigatório
  • ledger_references array de LedgerReference obrigatório
Rail object
  • name string obrigatório

    coelsa: transferência pela COELSA. fcm_book: interna entre contas do Grip Rails.

    Valores: coelsa, fcm_book
  • operation_id string | null obrigatório

    Id da operação na COELSA.

    comprimento máx. 64
  • origin_reference string | null obrigatório

    ori_trx_id com que o Grip Rails enviou a operação. Não muda entre novas tentativas.

    padrão ^\d{1,16}$
  • status_code string | null obrigatório

    Último código de estado da COELSA (por exemplo 7541 persistido, 7500 creditado).

    comprimento máx. 8
  • submitted_at string (date-time) | null obrigatório
  • finalized_at string (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).

Valores: rail_rejected, rail_expired, destination_closed, canceled_by_fcm
Failure object
  • code FailureCode obrigatório

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

  • message string obrigatório
    comprimento máx. 300
  • display_message string | null obrigatório
    comprimento máx. 200
OutgoingTransfer object
  • id OutgoingTransferId obrigatório

    Determinístico a partir da entidade e da Idempotency-Key, para que uma nova tentativa chegue ao mesmo objeto.

  • object "outgoing_transfer" obrigatório
  • account_id AccountId obrigatório
  • account_number_id AccountNumberId | null obrigatório

    CVU que aparece como origem perante a COELSA. null se foi rejeitada antes de escolhê-lo.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • currency Currency obrigatório

    Única moeda da API.

  • charges array de Charge obrigatório

    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_fee de 0 e o seu motivo.

  • total_debit_amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • destination Destination obrigatório

    Destino de uma transferência ou de uma validação.

  • counterparty Counterparty | null obrigatório

    Titular verificado. null se foi rejeitada antes de consultar o destino.

  • concept Concept obrigatório

    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.

  • description string | null obrigatório
    comprimento máx. 140
  • external_reference ExternalReference | null obrigatório
  • metadata Metadata obrigatório

    Até 20 pares chave-valor do cliente. Não coloque dados pessoais.

  • status OutgoingTransferStatus obrigatório

    Veja a tabela de estados na descrição geral.

  • status_reason OutgoingTransferStatusReason | null obrigatório
  • iso20022 Iso20022OutgoingStatus obrigatório
  • authorization Authorization obrigatório

    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.

  • reservation Reservation | null obrigatório

    null se foi rejeitada antes de reservar.

  • rail Rail | null obrigatório

    null até ser enviada.

  • failure Failure | null obrigatório

    Presente só em failed.

  • idempotency_key IdempotencyKeyValue obrigatório
  • created_at string (date-time) obrigatório
  • updated_at string (date-time) obrigatório
  • completed_at string (date-time) | null obrigatório
  • failed_at string (date-time) | null obrigatório

    Hora em que ficou failed. Volta a null se for reaberta por uma liquidação tardia.

OutgoingTransferList object
  • object "list" obrigatório
  • data array de OutgoingTransfer obrigatório
  • has_more boolean obrigatório
  • next_cursor string | null obrigatório
Payer object

Quem pagou, segundo o aviso da COELSA. Qualquer dado pode faltar se a COELSA não o informar.

  • name string | null obrigatório
    comprimento máx. 120
  • cuit Cuit | null obrigatório
  • account BankKey | null obrigatório
  • account_type string | null obrigatório
    Valores: cbu, cvu, null
  • bank_code string | null obrigatório
    padrão ^\d{3}$
IncomingTransfer object
  • id IncomingTransferId obrigatório

    Determinístico a partir do id da COELSA do crédito.

  • object "incoming_transfer" obrigatório
  • account_id AccountId obrigatório
  • account_number_id AccountNumberId obrigatório
  • cvu BankKey obrigatório

    CBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.

  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • currency Currency obrigatório

    Única moeda da API.

  • charges array de Charge obrigatório
  • net_amount AmountOrZero obrigatório

    Valor em centavos de peso argentino; pode ser zero.

  • payer Payer obrigatório

    Quem pagou, segundo o aviso da COELSA. Qualquer dado pode faltar se a COELSA não o informar.

  • concept string | null obrigatório

    Conceito BCRA informado pela COELSA, se vier.

    padrão ^[A-Z]{3}$
  • status string obrigatório

    Na fase 1, sempre posted.

    Valores: posted
  • iso20022 object obrigatório
    Campos de iso20022
    • entry_status string obrigatório

      camt.054 EntryStatus.

      Valores: BOOK
  • rail object obrigatório
    Campos de rail
    • name string obrigatório
      Valores: coelsa, fcm_book
    • operation_id string obrigatório

      Id da COELSA do crédito, ou o otr_… de origem se name é fcm_book (interna entre contas do Grip Rails). É a chave de idempotência do lançamento.

      comprimento máx. 64
    • business_date string (date) | null obrigatório

      Data de negócio (compensação) informada pela COELSA.

  • ledger_references array de LedgerReference obrigatório
  • posted_at string (date-time) obrigatório
  • created_at string (date-time) obrigatório
IncomingTransferList object
  • object "list" obrigatório
  • data array de IncomingTransfer obrigatório
  • has_more boolean obrigatório
  • next_cursor string | 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).

Valores: transfer.incoming.posted, transfer.outgoing.reserved, transfer.outgoing.completed, transfer.outgoing.failed, transfer.outgoing.reopened
EventData object

Referência enxuta ao objeto. Para o estado vigente, peça o objeto.

  • object string obrigatório
    Valores: incoming_transfer, outgoing_transfer
  • id string obrigatório
    comprimento máx. 40
  • account_id AccountId obrigatório
  • ledger_references array de LedgerReference obrigatório

    Lançamentos do ledger que produziram o evento.

Event object
  • id EventId obrigatório
  • object "event" obrigatório
  • type EventType obrigatório

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

  • sequence integer (int64) obrigatório

    Contíguo e crescente por entidade, atribuído na ordem em que a mudança foi confirmada.

    mín. 1
  • entity_id EntityId obrigatório
  • api_version string obrigatório
    padrão ^\d{4}-\d{2}-\d{2}$
  • created_at string (date-time) obrigatório
  • data EventData obrigatório

    Referência enxuta ao objeto. Para o estado vigente, peça o objeto.

EventList object
  • object "list" obrigatório
  • data array de Event obrigatório
  • has_more boolean obrigatório
  • next_after_sequence integer (int64) | null obrigatório

    Valor para o próximo after_sequence (a sequence do último evento devolvido).

IdempotencyRecord object
  • key IdempotencyKeyValue obrigatório
  • object "idempotency_key" obrigatório
  • status string obrigatório
    Valores: in_progress, completed
  • method string obrigatório
    Valores: POST
  • path string obrigatório
    comprimento máx. 200
  • request_fingerprint string obrigatório

    SHA-256 do método, do caminho e do corpo canonizado (RFC 8785).

    padrão ^[0-9a-f]{64}$
  • response_status integer | null obrigatório
    mín. 200 · máx. 499
  • resource object | null obrigatório

    Objeto criado ou afetado, se houver.

    Variante object
    • object string obrigatório
    • id string obrigatório
  • created_at string (date-time) obrigatório
  • expires_at string (date-time) obrigatório
ErrorType string
Valores: invalid_request_error, authentication_error, permission_error, not_found_error, idempotency_error, transfer_declined, rate_limit_error, service_error
ErrorCode string

Veja a tabela de códigos na descrição geral.

Valores: 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_unavailable
ErrorBody object
  • type ErrorType obrigatório
  • code ErrorCode obrigatório

    Veja a tabela de códigos na descrição geral.

  • message string obrigatório

    Explicação técnica para quem integra. Não mostrar a usuários finais.

  • display_message string | null obrigatório

    Texto em espanhol adequado para mostrar a um usuário final, ou null.

  • param string | null obrigatório

    Campo ou cabeçalho que causou o erro, se aplicável.

  • request_id RequestId obrigatório
  • retryable boolean obrigatório

    true: repita a mesma requisição com a mesma Idempotency-Key.

  • doc_url string (uri) obrigatório
  • transfer_id OutgoingTransferId | null obrigatório

    Num 422 de transferência, o id do objeto que ficou em rejected.

Error object
JwkOkp object
  • kty "OKP" obrigatório
  • crv "Ed25519" obrigatório
  • x string obrigatório
    padrão ^[A-Za-z0-9_-]{43}$
  • kid string obrigatório
    comprimento máx. 64
  • alg "EdDSA" obrigatório
  • use "sig" obrigatório
JwkEc object
  • kty "EC" obrigatório
  • crv "P-256" obrigatório
  • x string obrigatório
    padrão ^[A-Za-z0-9_-]{43}$
  • y string obrigatório
    padrão ^[A-Za-z0-9_-]{43}$
  • kid string obrigatório
    comprimento máx. 64
  • alg "ES256" obrigatório
  • use "sig" obrigatório
Jwks object
SimulateIncomingTransferRequest object
  • account_number_id AccountNumberId obrigatório
  • amount Amount obrigatório

    Valor em centavos de peso argentino. 150000 = ARS 1.500,00.

  • payer object

    Dados do pagador simulado. Se faltarem, usa-se um sintético.

    Campos de payer
    • name string
      comprimento máx. 120
    • cuit Cuit

      CUIT ou CUIL (identificação fiscal ou trabalhista argentina), 11 dígitos sem hífens.

    • account BankKey

      CBU ou CVU (número de conta bancária ou virtual argentino) de 22 dígitos com dígitos verificadores válidos.

  • concept Concept

    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.

SimulateRailResultRequest object
  • outcome string obrigatório
    Valores: completed, failed
  • coelsa_code string

    Código da COELSA a simular. Por padrão, 7500 se completed e 7699 se failed.

    padrão ^\d{2,4}$
SimulateLateSettlementReviewRequest object
  • outcome string obrigatório

    A ú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ório
  • entity_id EntityId obrigatório
  • now string (date-time) obrigatório

    Hora da entidade no sandbox.

  • offset_seconds integer (int64) obrigatório

    Quanto está adiantada em relação à hora real.

    mín. 0
AdvanceClockRequest object
  • advance_seconds integer obrigatório

    Segundos a avançar (até 31 dias por requisição).

    mín. 1 · máx. 2678400