Pular para o conteúdo principal
curl -X POST https://checkout.noxpay.io/v2/rfq/accept \
  -H "api-key: <key>" \
  -H "Content-Type: application/json" \
  -d '{
    "rfq_id": "NOXabc123...",
    "settlement_day": "d0",
    "wallet_id": "..."
  }'
import requests

response = requests.post(
    "https://checkout.noxpay.io/v2/rfq/accept",
    headers={
        "api-key": "<key>",
        "Content-Type": "application/json",
    },
    json={
        "rfq_id": "NOXabc123...",
        "settlement_day": "d0",
        "wallet_id": "...",
    },
)
print(response.json())
const response = await fetch("https://checkout.noxpay.io/v2/rfq/accept", {
  method: "POST",
  headers: {
    "api-key": "<key>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    rfq_id: "NOXabc123...",
    settlement_day: "d0",
    wallet_id: "...",
  }),
});
const data = await response.json();
{
  "rfq_id":         "NOXabc123...",
  "state":          "DONE",
  "amount_from":    1000.0,
  "amount_to":      5050.0,
  "rate":           5.050,
  "quote_pair":     "USDT_BRL",
  "settlement_eta": "2026-07-01T19:00:00Z"
}
{ "state": "EXPIRED", "reason": "Taxa expirou e foi renovada — busque a nova cotação antes de tentar novamente" }
{ "state": "DEPRECATED", "reason": "Janela de renovação encerrada — crie uma nova conversão" }
{ "state": "ERROR", "reason": "Saldo insuficiente" }
Aceita uma cotação criada via Criar Conversão, travando a taxa e agendando a entrega. O saldo em from_currency precisa estar disponível no momento do aceite — ele não é reservado quando a cotação é criada.

Corpo da requisição

CampoTipoObrigatórioDescrição
rfq_idstringSimID retornado por Criar Conversão
settlement_daystringSim"d0" ou "d1"
wallet_idstringCondicionalID da wallet cripto de destino (pagamento em cripto)
pix_keystringCondicionalChave Pix de destino (pagamento em BRL)

Response 200 OK (aceito)

CampoTipoDescrição
rfq_idstringID da conversão
statestringDONE assim que aceito
amount_fromfloatMontante confirmado enviado
amount_tofloatMontante confirmado a receber
ratefloatTaxa confirmada
quote_pairstringIdentificador do par de cotação
settlement_etastringHorário de liquidação confirmado (RFC 3339)
Um 200 aqui significa que a operação está travada e a entrega agendada — não significa que os fundos já chegaram. A entrega é concluída em settlement_eta; use Consultar Conversão ou o webhook para acompanhar.

Respostas de erro

HTTPEstadoMotivo
409 ConflictEXPIREDA taxa expirou e a cotação foi renovada — consulte a conversão via GET e reenvie o aceite com a nova taxa
410 GoneDEPRECATEDA janela de renovação foi encerrada — crie uma nova cotação
422 Unprocessable EntityERRORSaldo insuficiente, limite excedido ou outra falha de regra de negócio
202 AcceptedoutroAinda em processamento — tente aceitar novamente, ou consulte via GET, até atingir um estado final
Códigos de retorno: 200, 202, 400, 401, 409, 410, 422, 500
curl -X POST https://checkout.noxpay.io/v2/rfq/accept \
  -H "api-key: <key>" \
  -H "Content-Type: application/json" \
  -d '{
    "rfq_id": "NOXabc123...",
    "settlement_day": "d0",
    "wallet_id": "..."
  }'
import requests

response = requests.post(
    "https://checkout.noxpay.io/v2/rfq/accept",
    headers={
        "api-key": "<key>",
        "Content-Type": "application/json",
    },
    json={
        "rfq_id": "NOXabc123...",
        "settlement_day": "d0",
        "wallet_id": "...",
    },
)
print(response.json())
const response = await fetch("https://checkout.noxpay.io/v2/rfq/accept", {
  method: "POST",
  headers: {
    "api-key": "<key>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    rfq_id: "NOXabc123...",
    settlement_day: "d0",
    wallet_id: "...",
  }),
});
const data = await response.json();
{
  "rfq_id":         "NOXabc123...",
  "state":          "DONE",
  "amount_from":    1000.0,
  "amount_to":      5050.0,
  "rate":           5.050,
  "quote_pair":     "USDT_BRL",
  "settlement_eta": "2026-07-01T19:00:00Z"
}
{ "state": "EXPIRED", "reason": "Taxa expirou e foi renovada — busque a nova cotação antes de tentar novamente" }
{ "state": "DEPRECATED", "reason": "Janela de renovação encerrada — crie uma nova conversão" }
{ "state": "ERROR", "reason": "Saldo insuficiente" }