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

Referência da API

Pedidos

Pedido local que agrupa as cobranças e define o total.

Criar pedido

POST/v1/ordersImplementada

Chave de API (Authorization: Bearer ep_…)· escopo orders:write· createOrder

Cria o pedido local que agrupa as cobranças. O total (amountCents) é definido aqui e nunca pelo navegador. Mesma referência com o mesmo conteúdo devolve o pedido original (200); com outro conteúdo, 409.

Escopo da chave: orders:write.

Idempotência: exige o header Idempotency-Key.

Headers de createOrder
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 createOrder
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 createOrder
CampoTipoDescrição
customerId obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
externalOrderReference obrigatóriotexto 1–100 caracteres
amountCents obrigatórioPositiveCents (texto) formato ^[1-9][0-9]{0,14}$
currency obrigatórioCurrency (texto)
descriptiontexto 0–500 caracteres
fulfillmentPolicy obrigatório"ON_FULLY_PAID" | "ON_FIRST_PAID"
itemslista de objetoSó exibição; o total é amountCents. 0–50 itens
items[].name obrigatóriotexto 1–120 caracteres
items[].quantity obrigatóriointeiro 1 a 10000
items[].unitAmountCents obrigatórioPositiveCents (texto) formato ^[1-9][0-9]{0,14}$
metadatamapa
Exemplo
curl -X POST "$ECLIPTA_PAY_API/v1/orders" \
  -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 '{"customerId":"cus_01JDY8A1B2C3D4E5F6G7H8J9KA","externalOrderReference":"pedido-98765","amountCents":"14970","currency":"BRL","description":"Plano anual","fulfillmentPolicy":"ON_FULLY_PAID"}'

Resposta 201: Recurso criado.

Campos da resposta 201 de createOrder
CampoTipoDescrição
id obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
customerId obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
externalOrderReference obrigatóriotexto
amountCents obrigatórioPositiveCents (texto) formato ^[1-9][0-9]{0,14}$
confirmedCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
receivedCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
refundedCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
overpaidCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
status obrigatório"OPEN" | "PARTIALLY_PAID" | "PAYMENT_COMPLETED" | "REFUND_PENDING" | "PARTIALLY_REFUNDED" | "REFUNDED" | "DISPUTED" | "CANCELLED"
fulfillmentEligible obrigatóriobooleano
mode 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)))$
Exemplo 201
{
  "id": "ord_01JDY8B1B2C3D4E5F6G7H8J9KB",
  "customerId": "cus_01JDY8A1B2C3D4E5F6G7H8J9KA",
  "externalOrderReference": "pedido-98765",
  "amountCents": "14970",
  "confirmedCents": "0",
  "receivedCents": "0",
  "refundedCents": "0",
  "overpaidCents": "0",
  "status": "OPEN",
  "fulfillmentEligible": false,
  "mode": null,
  "version": 1,
  "createdAt": "2026-11-13T13:00:00.000Z"
}

Erros

Erros de createOrder
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 pedidos

GET/v1/ordersEspecificada

Chave de API (Authorization: Bearer ep_…)· escopo orders:read· listOrders

Listar pedidos.

Situação: especificada, ainda não implementada nesta versão.

Escopo da chave: orders:read.

Headers de listOrders
HeaderObrigatórioDescrição
X-Account-IdsimConta permitida pelos grants do principal.
Parâmetros de listOrders
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/orders" \
  -H "Authorization: Bearer $ECLIPTA_PAY_KEY" \
  -H "X-Account-Id: $ECLIPTA_PAY_ACCOUNT"

Resposta 200: Sucesso.

Campos da resposta 200 de listOrders
CampoTipoDescrição
data obrigatóriolista de Order
data[].id obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
data[].customerId obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
data[].externalOrderReference obrigatóriotexto
data[].amountCents obrigatórioPositiveCents (texto) formato ^[1-9][0-9]{0,14}$
data[].confirmedCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
data[].receivedCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
data[].refundedCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
data[].overpaidCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
data[].status obrigatório"OPEN" | "PARTIALLY_PAID" | "PAYMENT_COMPLETED" | "REFUND_PENDING" | "PARTIALLY_REFUNDED" | "REFUNDED" | "DISPUTED" | "CANCELLED"
data[].fulfillmentEligible obrigatóriobooleano
data[].mode 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)))$
nextCursor obrigatóriotexto ou nulo

Erros

Erros de listOrders
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 pedido

GET/v1/orders/{id}Implementada

Chave de API (Authorization: Bearer ep_…)· escopo orders:read· getOrder

Total, valores confirmados/recebidos/estornados e se o pedido já pode ser entregue (fulfillmentEligible).

Escopo da chave: orders:read.

Headers de getOrder
HeaderObrigatórioDescrição
X-Account-IdsimConta permitida pelos grants do principal.
Parâmetros de getOrder
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/orders/{id}" \
  -H "Authorization: Bearer $ECLIPTA_PAY_KEY" \
  -H "X-Account-Id: $ECLIPTA_PAY_ACCOUNT"

Resposta 200: Sucesso.

Campos da resposta 200 de getOrder
CampoTipoDescrição
id obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
customerId obrigatórioId (texto) 8–160 caracteres · formato ^[A-Za-z0-9_]+$
externalOrderReference obrigatóriotexto
amountCents obrigatórioPositiveCents (texto) formato ^[1-9][0-9]{0,14}$
confirmedCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
receivedCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
refundedCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
overpaidCents obrigatórioCents (texto) formato ^(0|[1-9][0-9]{0,14})$
status obrigatório"OPEN" | "PARTIALLY_PAID" | "PAYMENT_COMPLETED" | "REFUND_PENDING" | "PARTIALLY_REFUNDED" | "REFUNDED" | "DISPUTED" | "CANCELLED"
fulfillmentEligible obrigatóriobooleano
mode 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)))$
Exemplo 200
{
  "id": "ord_01JDY8B1B2C3D4E5F6G7H8J9KB",
  "customerId": "cus_01JDY8A1B2C3D4E5F6G7H8J9KA",
  "externalOrderReference": "pedido-98765",
  "amountCents": "14970",
  "confirmedCents": "14970",
  "receivedCents": "0",
  "refundedCents": "0",
  "overpaidCents": "0",
  "status": "PAYMENT_COMPLETED",
  "fulfillmentEligible": true,
  "mode": "PIX",
  "version": 3,
  "createdAt": "2026-11-13T13:00:00.000Z"
}

Erros

Erros de getOrder
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