Ir para o conteúdo
DocsAPI 2026-11-13

Referência da API

Transferências

Favorecidos e saques com aprovação.

Cadastrar favorecido (mesma titularidade; validação por pessoa com step-up e quarentena)

POST/v1/beneficiariesImplementada

Chave de API (Authorization: Bearer ep_…)· escopo transfers:write· createBeneficiary

Cadastra um favorecido de saque (chave Pix ou conta bancária) da mesma titularidade da conta. O destino é guardado cifrado e entra em quarentena; a validação por uma pessoa, com confirmação reforçada no painel, libera o uso.

Escopo da chave: transfers:write.

Idempotência: exige o header Idempotency-Key.

Headers de createBeneficiary
HeaderObrigatórioDescrição
X-Account-IdsimConta permitida pelos grants do principal.
Idempotency-KeysimChave única por intenção (16 a 128 caracteres visíveis). Ao refazer a mesma chamada, repita a mesma chave: o resultado gravado é devolvido. Mesma chave com outro conteúdo responde 409 IDEMPOTENCY_CONFLICT.
Parâmetros de createBeneficiary
ParâmetroOndeTipoDescrição
Eclipta-Pay-Versionheader"2026-11-13"Versão de data do contrato. Opcional; a resposta sempre informa a versão usada. Valor desconhecido responde 400 UNSUPPORTED_API_VERSION.

Corpo da requisição

Campos do corpo de createBeneficiary
CampoTipoDescrição
variante 1Um dos formatos abaixo.
kind obrigatório"PIX_KEY"
pixKey obrigatóriotexto 3–140 caracteres
pixKeyType obrigatório"CPF" | "CNPJ" | "EMAIL" | "PHONE" | "EVP"
holderTaxId obrigatóriotexto formato ^([0-9]{11}|[0-9]{14})$
holderName obrigatóriotexto 2–150 caracteres
variante 2Um dos formatos abaixo.
kind obrigatório"BANK_ACCOUNT"
bankCode obrigatóriotexto formato ^[0-9]{3}$
agency obrigatóriotexto formato ^[0-9]{1,5}$
account obrigatóriotexto formato ^[0-9]{1,13}$
accountDigit obrigatóriotexto formato ^[0-9Xx]{1,2}$
accountType obrigatório"CONTA_CORRENTE" | "CONTA_POUPANCA"
holderTaxId obrigatóriotexto formato ^([0-9]{11}|[0-9]{14})$
holderName obrigatóriotexto 2–150 caracteres
Exemplo
curl -X POST "$ECLIPTA_PAY_API/v1/beneficiaries" \
  -H "Authorization: Bearer $ECLIPTA_PAY_KEY" \
  -H "X-Account-Id: $ECLIPTA_PAY_ACCOUNT" \
  -H "Idempotency-Key: <uma chave por intenção>" \
  -H "Content-Type: application/json" \
  -d '{"kind":"PIX_KEY","pixKey":"11222333000181","pixKeyType":"CNPJ","holderTaxId":"11222333000181","holderName":"Loja Órbita Sintética LTDA"}'

Resposta 201: Recurso criado.

Campos da resposta 201 de createBeneficiary
CampoTipoDescrição
id obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
versionId obrigatórioId (texto) ou nulo
version obrigatóriointeiro ou nulo
kind obrigatório"PIX_KEY" | "BANK_ACCOUNT"
maskedDestination obrigatóriotexto
status obrigatório"ACTIVE" | "ARCHIVED"
versionStatus obrigatório"PENDING_VALIDATION" | "VALIDATED" | "SUPERSEDED" | "REJECTED"
availableFrom obrigatóriodata e hora (ISO 8601) ou nuloFim da quarentena de 24 h após a validação.
usable obrigatóriobooleano
createdAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
Exemplo 201
{
  "id": "ben_01JDYA51B2C3D4E5F6G7H8J9KE",
  "versionId": "bnv_01JDYA61B2C3D4E5F6G7H8J9KF",
  "version": 1,
  "kind": "PIX_KEY",
  "maskedDestination": "Chave CNPJ ••.•••.333/0001-••",
  "status": "ACTIVE",
  "versionStatus": "PENDING_VALIDATION",
  "availableFrom": null,
  "usable": false,
  "createdAt": "2026-11-13T13:00:00.000Z"
}

Erros

Erros de createBeneficiary
HTTPExemplo de codeQuando
400INVALID_REQUESTRequisição inválida: fieldErrors aponta cada campo.
401INVALID_API_KEYChave de API ausente, inválida, expirada ou revogada.
403SCOPE_MISSINGEscopo ausente, conta não permitida em X-Account-Id, IP fora da lista ou conta suspensa.
409IDEMPOTENCY_CONFLICTConflito de idempotência (IDEMPOTENCY_CONFLICT), requisição em andamento com a mesma chave (REQUEST_IN_PROGRESS) ou estado do recurso.
422CAPABILITY_UNAVAILABLERegra de negócio ou capacidade indisponível para a conta.
429TOO_MANY_REQUESTSLimite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.

Listar favorecidos (destino mascarado)

GET/v1/beneficiariesImplementada

Chave de API (Authorization: Bearer ep_…)· escopo balance:read· listBeneficiaries

Lista os favorecidos com o destino mascarado e a situação da versão atual (pendente de validação, validado ou substituído).

Escopo da chave: balance:read.

Headers de listBeneficiaries
HeaderObrigatórioDescrição
X-Account-IdsimConta permitida pelos grants do principal.
Parâmetros de listBeneficiaries
ParâmetroOndeTipoDescrição
cursorquerytexto0–200 caracteres
limitqueryinteiro1 a 100 · padrão 20
Eclipta-Pay-Versionheader"2026-11-13"Versão de data do contrato. Opcional; a resposta sempre informa a versão usada. Valor desconhecido responde 400 UNSUPPORTED_API_VERSION.
Exemplo
curl -X GET "$ECLIPTA_PAY_API/v1/beneficiaries" \
  -H "Authorization: Bearer $ECLIPTA_PAY_KEY" \
  -H "X-Account-Id: $ECLIPTA_PAY_ACCOUNT"

Resposta 200: Sucesso.

Campos da resposta 200 de listBeneficiaries
CampoTipoDescrição
data obrigatóriolista de Beneficiary
data[].id obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
data[].versionId obrigatórioId (texto) ou nulo
data[].version obrigatóriointeiro ou nulo
data[].kind obrigatório"PIX_KEY" | "BANK_ACCOUNT"
data[].maskedDestination obrigatóriotexto
data[].status obrigatório"ACTIVE" | "ARCHIVED"
data[].versionStatus obrigatório"PENDING_VALIDATION" | "VALIDATED" | "SUPERSEDED" | "REJECTED"
data[].availableFrom obrigatóriodata e hora (ISO 8601) ou nuloFim da quarentena de 24 h após a validação.
data[].usable obrigatóriobooleano
data[].createdAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
nextCursor obrigatóriotexto ou nulo
Exemplo 200
{
  "data": [
    {
      "id": "ben_01JDYA51B2C3D4E5F6G7H8J9KE",
      "versionId": "bnv_01JDYA61B2C3D4E5F6G7H8J9KF",
      "version": 1,
      "kind": "PIX_KEY",
      "maskedDestination": "Chave CNPJ ••.•••.333/0001-••",
      "status": "ACTIVE",
      "versionStatus": "VALIDATED",
      "availableFrom": "2026-11-14T13:00:00.000Z",
      "usable": true,
      "createdAt": "2026-11-13T13:00:00.000Z"
    }
  ],
  "nextCursor": null
}

Erros

Erros de listBeneficiaries
HTTPExemplo de codeQuando
400INVALID_REQUESTRequisição inválida: fieldErrors aponta cada campo.
401INVALID_API_KEYChave de API ausente, inválida, expirada ou revogada.
403SCOPE_MISSINGEscopo ausente, conta não permitida em X-Account-Id, IP fora da lista ou conta suspensa.
429TOO_MANY_REQUESTSLimite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.

Solicitar transferência (reserva saldo e aguarda aprovação no painel)

POST/v1/transfersImplementada

Chave de API (Authorization: Bearer ep_…)· escopo transfers:write· requestTransfer

Solicita uma transferência para um favorecido validado. O valor é reservado do saldo elegível (somente saldo conciliado, nunca estimado) e a transferência aguarda aprovação de outra pessoa no painel. Responde 202 com a transferência.

Escopo da chave: transfers:write.

Idempotência: exige o header Idempotency-Key.

Headers de requestTransfer
HeaderObrigatórioDescrição
X-Account-IdsimConta permitida pelos grants do principal.
Idempotency-KeysimChave única por intenção (16 a 128 caracteres visíveis). Ao refazer a mesma chamada, repita a mesma chave: o resultado gravado é devolvido. Mesma chave com outro conteúdo responde 409 IDEMPOTENCY_CONFLICT.
Parâmetros de requestTransfer
ParâmetroOndeTipoDescrição
Eclipta-Pay-Versionheader"2026-11-13"Versão de data do contrato. Opcional; a resposta sempre informa a versão usada. Valor desconhecido responde 400 UNSUPPORTED_API_VERSION.

Corpo da requisição

Campos do corpo de requestTransfer
CampoTipoDescrição
beneficiaryVersionId obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
amountCents obrigatórioPositiveCents (texto) formato ^[1-9][0-9]{0,14}$
descriptiontexto 0–140 caracteres
Exemplo
curl -X POST "$ECLIPTA_PAY_API/v1/transfers" \
  -H "Authorization: Bearer $ECLIPTA_PAY_KEY" \
  -H "X-Account-Id: $ECLIPTA_PAY_ACCOUNT" \
  -H "Idempotency-Key: <uma chave por intenção>" \
  -H "Content-Type: application/json" \
  -d '{"beneficiaryVersionId":"bnv_01JDYA61B2C3D4E5F6G7H8J9KF","amountCents":"250000","description":"Repasse semanal"}'

Resposta 202: Aceito: a intenção foi registrada; acompanhe o resultado (não é transação concluída).

Campos da resposta 202 de requestTransfer
CampoTipoDescrição
id obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
status obrigatório"AWAITING_APPROVAL" | "REJECTED" | "EXPIRED" | "CANCELLED" | "APPROVED" | "SUBMITTED" | "UNKNOWN" | "PENDING" | "BANK_PROCESSING" | "BLOCKED" | "DONE" | "FAILED"
amountCents obrigatórioPositiveCents (texto) formato ^[1-9][0-9]{0,14}$
feeBufferCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
beneficiaryId obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
beneficiaryVersionId obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
maskedDestination obrigatóriotexto
description obrigatóriotexto ou nulo
requestedBy obrigatórioobjeto
requestedBy.type obrigatório"USER" | "API_KEY"
requestedBy.id obrigatóriotexto
approval obrigatórioobjeto
approval.expiresAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
approval.decidedBy obrigatóriotexto ou nulo
approval.decidedAt obrigatóriodata e hora (ISO 8601) ou nulo
approval.note obrigatóriotexto ou nulo
reservation obrigatórioobjetoUNKNOWN mantém a reserva até evidência conclusiva (OUT-003).
reservation.state obrigatório"HELD" | "RELEASED" | "CONSUMED"
reservation.reflectedInStatement obrigatóriobooleano
operationId obrigatórioId (texto) ou nulo
operationStatus obrigatóriotexto ou nulo
providerStatus obrigatóriotexto ou nulo
failReason obrigatóriotexto ou nulo
version obrigatóriointeiro 1 a 9007199254740991
createdAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
updatedAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
Exemplo 202
{
  "id": "trf_01JDYA71B2C3D4E5F6G7H8J9KG",
  "status": "AWAITING_APPROVAL",
  "amountCents": "250000",
  "feeBufferCents": "0",
  "beneficiaryId": "ben_01JDYA51B2C3D4E5F6G7H8J9KE",
  "beneficiaryVersionId": "bnv_01JDYA61B2C3D4E5F6G7H8J9KF",
  "maskedDestination": "Chave CNPJ ••.•••.333/0001-••",
  "description": "Repasse semanal",
  "requestedBy": {
    "type": "API_KEY",
    "id": "key_01JDYAA1B2C3D4E5F6G7H8J9KK"
  },
  "approval": {
    "expiresAt": "2026-11-16T13:00:00.000Z",
    "decidedBy": null,
    "decidedAt": null,
    "note": null
  },
  "reservation": {
    "state": "HELD",
    "reflectedInStatement": false
  },
  "operationId": null,
  "operationStatus": null,
  "providerStatus": null,
  "failReason": null,
  "version": 1,
  "createdAt": "2026-11-13T13:00:00.000Z",
  "updatedAt": "2026-11-13T13:00:00.000Z"
}

Erros

Erros de requestTransfer
HTTPExemplo de codeQuando
400INVALID_REQUESTRequisição inválida: fieldErrors aponta cada campo.
401INVALID_API_KEYChave de API ausente, inválida, expirada ou revogada.
403SCOPE_MISSINGEscopo ausente, conta não permitida em X-Account-Id, IP fora da lista ou conta suspensa.
409IDEMPOTENCY_CONFLICTConflito de idempotência (IDEMPOTENCY_CONFLICT), requisição em andamento com a mesma chave (REQUEST_IN_PROGRESS) ou estado do recurso.
422CAPABILITY_UNAVAILABLERegra de negócio ou capacidade indisponível para a conta.
429TOO_MANY_REQUESTSLimite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.

Listar transferências

GET/v1/transfersImplementada

Chave de API (Authorization: Bearer ep_…)· escopo balance:read· listTransfers

Lista as transferências da conta com filtros por situação, com o valor reservado e o vínculo com o provedor quando já enviada.

Escopo da chave: balance:read.

Headers de listTransfers
HeaderObrigatórioDescrição
X-Account-IdsimConta permitida pelos grants do principal.
Parâmetros de listTransfers
ParâmetroOndeTipoDescrição
cursorquerytexto0–200 caracteres
limitqueryinteiro1 a 100 · padrão 20
statusquery"AWAITING_APPROVAL" | "REJECTED" | "EXPIRED" | "CANCELLED" | "APPROVED" | "SUBMITTED" | "UNKNOWN" | "PENDING" | "BANK_PROCESSING" | "BLOCKED" | "DONE" | "FAILED"
Eclipta-Pay-Versionheader"2026-11-13"Versão de data do contrato. Opcional; a resposta sempre informa a versão usada. Valor desconhecido responde 400 UNSUPPORTED_API_VERSION.
Exemplo
curl -X GET "$ECLIPTA_PAY_API/v1/transfers" \
  -H "Authorization: Bearer $ECLIPTA_PAY_KEY" \
  -H "X-Account-Id: $ECLIPTA_PAY_ACCOUNT"

Resposta 200: Sucesso.

Campos da resposta 200 de listTransfers
CampoTipoDescrição
data obrigatóriolista de Transfer
data[].id obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
data[].status obrigatório"AWAITING_APPROVAL" | "REJECTED" | "EXPIRED" | "CANCELLED" | "APPROVED" | "SUBMITTED" | "UNKNOWN" | "PENDING" | "BANK_PROCESSING" | "BLOCKED" | "DONE" | "FAILED"
data[].amountCents obrigatórioPositiveCents (texto) formato ^[1-9][0-9]{0,14}$
data[].feeBufferCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
data[].beneficiaryId obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
data[].beneficiaryVersionId obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
data[].maskedDestination obrigatóriotexto
data[].description obrigatóriotexto ou nulo
data[].requestedBy obrigatórioobjeto
data[].requestedBy.type obrigatório"USER" | "API_KEY"
data[].requestedBy.id obrigatóriotexto
data[].approval obrigatórioobjeto
data[].approval.expiresAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
data[].approval.decidedBy obrigatóriotexto ou nulo
data[].approval.decidedAt obrigatóriodata e hora (ISO 8601) ou nulo
data[].approval.note obrigatóriotexto ou nulo
data[].reservation obrigatórioobjetoUNKNOWN mantém a reserva até evidência conclusiva (OUT-003).
data[].reservation.state obrigatório"HELD" | "RELEASED" | "CONSUMED"
data[].reservation.reflectedInStatement obrigatóriobooleano
data[].operationId obrigatórioId (texto) ou nulo
data[].operationStatus obrigatóriotexto ou nulo
data[].providerStatus obrigatóriotexto ou nulo
data[].failReason obrigatóriotexto ou nulo
data[].version obrigatóriointeiro 1 a 9007199254740991
data[].createdAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
data[].updatedAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
nextCursor obrigatóriotexto ou nulo
Exemplo 200
{
  "data": [
    {
      "id": "trf_01JDYA71B2C3D4E5F6G7H8J9KG",
      "status": "AWAITING_APPROVAL",
      "amountCents": "250000",
      "feeBufferCents": "0",
      "beneficiaryId": "ben_01JDYA51B2C3D4E5F6G7H8J9KE",
      "beneficiaryVersionId": "bnv_01JDYA61B2C3D4E5F6G7H8J9KF",
      "maskedDestination": "Chave CNPJ ••.•••.333/0001-••",
      "description": "Repasse semanal",
      "requestedBy": {
        "type": "API_KEY",
        "id": "key_01JDYAA1B2C3D4E5F6G7H8J9KK"
      },
      "approval": {
        "expiresAt": "2026-11-16T13:00:00.000Z",
        "decidedBy": null,
        "decidedAt": null,
        "note": null
      },
      "reservation": {
        "state": "HELD",
        "reflectedInStatement": false
      },
      "operationId": null,
      "operationStatus": null,
      "providerStatus": null,
      "failReason": null,
      "version": 1,
      "createdAt": "2026-11-13T13:00:00.000Z",
      "updatedAt": "2026-11-13T13:00:00.000Z"
    }
  ],
  "nextCursor": null
}

Erros

Erros de listTransfers
HTTPExemplo de codeQuando
400INVALID_REQUESTRequisição inválida: fieldErrors aponta cada campo.
401INVALID_API_KEYChave de API ausente, inválida, expirada ou revogada.
403SCOPE_MISSINGEscopo ausente, conta não permitida em X-Account-Id, IP fora da lista ou conta suspensa.
429TOO_MANY_REQUESTSLimite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.

Consultar transferência

GET/v1/transfers/{id}Implementada

Chave de API (Authorization: Bearer ep_…)· escopo balance:read· getTransfer

Consulta uma transferência: quem pediu, quem decidiu, situação no provedor e se o débito já apareceu no extrato. Resultado incerto aparece como tal até a confirmação.

Escopo da chave: balance:read.

Headers de getTransfer
HeaderObrigatórioDescrição
X-Account-IdsimConta permitida pelos grants do principal.
Parâmetros de getTransfer
ParâmetroOndeTipoDescrição
id obrigatóriocaminhoId (texto)8–160 caracteres · formato ^[A-Za-z0-9_]+$
Eclipta-Pay-Versionheader"2026-11-13"Versão de data do contrato. Opcional; a resposta sempre informa a versão usada. Valor desconhecido responde 400 UNSUPPORTED_API_VERSION.
Exemplo
curl -X GET "$ECLIPTA_PAY_API/v1/transfers/{id}" \
  -H "Authorization: Bearer $ECLIPTA_PAY_KEY" \
  -H "X-Account-Id: $ECLIPTA_PAY_ACCOUNT"

Resposta 200: Sucesso.

Campos da resposta 200 de getTransfer
CampoTipoDescrição
id obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
status obrigatório"AWAITING_APPROVAL" | "REJECTED" | "EXPIRED" | "CANCELLED" | "APPROVED" | "SUBMITTED" | "UNKNOWN" | "PENDING" | "BANK_PROCESSING" | "BLOCKED" | "DONE" | "FAILED"
amountCents obrigatórioPositiveCents (texto) formato ^[1-9][0-9]{0,14}$
feeBufferCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
beneficiaryId obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
beneficiaryVersionId obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
maskedDestination obrigatóriotexto
description obrigatóriotexto ou nulo
requestedBy obrigatórioobjeto
requestedBy.type obrigatório"USER" | "API_KEY"
requestedBy.id obrigatóriotexto
approval obrigatórioobjeto
approval.expiresAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
approval.decidedBy obrigatóriotexto ou nulo
approval.decidedAt obrigatóriodata e hora (ISO 8601) ou nulo
approval.note obrigatóriotexto ou nulo
reservation obrigatórioobjetoUNKNOWN mantém a reserva até evidência conclusiva (OUT-003).
reservation.state obrigatório"HELD" | "RELEASED" | "CONSUMED"
reservation.reflectedInStatement obrigatóriobooleano
operationId obrigatórioId (texto) ou nulo
operationStatus obrigatóriotexto ou nulo
providerStatus obrigatóriotexto ou nulo
failReason obrigatóriotexto ou nulo
version obrigatóriointeiro 1 a 9007199254740991
createdAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
updatedAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
Exemplo 200
{
  "id": "trf_01JDYA71B2C3D4E5F6G7H8J9KG",
  "status": "AWAITING_APPROVAL",
  "amountCents": "250000",
  "feeBufferCents": "0",
  "beneficiaryId": "ben_01JDYA51B2C3D4E5F6G7H8J9KE",
  "beneficiaryVersionId": "bnv_01JDYA61B2C3D4E5F6G7H8J9KF",
  "maskedDestination": "Chave CNPJ ••.•••.333/0001-••",
  "description": "Repasse semanal",
  "requestedBy": {
    "type": "API_KEY",
    "id": "key_01JDYAA1B2C3D4E5F6G7H8J9KK"
  },
  "approval": {
    "expiresAt": "2026-11-16T13:00:00.000Z",
    "decidedBy": null,
    "decidedAt": null,
    "note": null
  },
  "reservation": {
    "state": "HELD",
    "reflectedInStatement": false
  },
  "operationId": null,
  "operationStatus": null,
  "providerStatus": null,
  "failReason": null,
  "version": 1,
  "createdAt": "2026-11-13T13:00:00.000Z",
  "updatedAt": "2026-11-13T13:00:00.000Z"
}

Erros

Erros de getTransfer
HTTPExemplo de codeQuando
400INVALID_REQUESTRequisição inválida: fieldErrors aponta cada campo.
401INVALID_API_KEYChave de API ausente, inválida, expirada ou revogada.
403SCOPE_MISSINGEscopo ausente, conta não permitida em X-Account-Id, IP fora da lista ou conta suspensa.
404RESOURCE_NOT_FOUNDRecurso inexistente nesta conta (inclusive recurso de outra conta ou de outro tenant).
429TOO_MANY_REQUESTSLimite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.

Consultar favorecido

GET/v1/beneficiaries/{id}Implementada

Chave de API (Authorization: Bearer ep_…)· escopo balance:read· getBeneficiary

Consulta um favorecido e a versão vigente do destino (mascarado). Alterar o destino cria uma nova versão, que exige nova validação.

Escopo da chave: balance:read.

Headers de getBeneficiary
HeaderObrigatórioDescrição
X-Account-IdsimConta permitida pelos grants do principal.
Parâmetros de getBeneficiary
ParâmetroOndeTipoDescrição
id obrigatóriocaminhoId (texto)8–160 caracteres · formato ^[A-Za-z0-9_]+$
Eclipta-Pay-Versionheader"2026-11-13"Versão de data do contrato. Opcional; a resposta sempre informa a versão usada. Valor desconhecido responde 400 UNSUPPORTED_API_VERSION.
Exemplo
curl -X GET "$ECLIPTA_PAY_API/v1/beneficiaries/{id}" \
  -H "Authorization: Bearer $ECLIPTA_PAY_KEY" \
  -H "X-Account-Id: $ECLIPTA_PAY_ACCOUNT"

Resposta 200: Sucesso.

Campos da resposta 200 de getBeneficiary
CampoTipoDescrição
id obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
versionId obrigatórioId (texto) ou nulo
version obrigatóriointeiro ou nulo
kind obrigatório"PIX_KEY" | "BANK_ACCOUNT"
maskedDestination obrigatóriotexto
status obrigatório"ACTIVE" | "ARCHIVED"
versionStatus obrigatório"PENDING_VALIDATION" | "VALIDATED" | "SUPERSEDED" | "REJECTED"
availableFrom obrigatóriodata e hora (ISO 8601) ou nuloFim da quarentena de 24 h após a validação.
usable obrigatóriobooleano
createdAt obrigatóriodata e hora (ISO 8601) formato ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
Exemplo 200
{
  "id": "ben_01JDYA51B2C3D4E5F6G7H8J9KE",
  "versionId": "bnv_01JDYA61B2C3D4E5F6G7H8J9KF",
  "version": 1,
  "kind": "PIX_KEY",
  "maskedDestination": "Chave CNPJ ••.•••.333/0001-••",
  "status": "ACTIVE",
  "versionStatus": "VALIDATED",
  "availableFrom": "2026-11-14T13:00:00.000Z",
  "usable": true,
  "createdAt": "2026-11-13T13:00:00.000Z"
}

Erros

Erros de getBeneficiary
HTTPExemplo de codeQuando
400INVALID_REQUESTRequisição inválida: fieldErrors aponta cada campo.
401INVALID_API_KEYChave de API ausente, inválida, expirada ou revogada.
403SCOPE_MISSINGEscopo ausente, conta não permitida em X-Account-Id, IP fora da lista ou conta suspensa.
404RESOURCE_NOT_FOUNDRecurso inexistente nesta conta (inclusive recurso de outra conta ou de outro tenant).
429TOO_MANY_REQUESTSLimite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.

Todas as rotas