curl -X POST https://checkout.noxpay.io/v2/naas/submerchants/static_link \
-H "api-key: <key>" \
-H "X-Signature: <assinatura-do-corpo>" \
-H "Content-Type: application/json" \
-d '{
"timestamp": "2026-05-27T14:30:00Z",
"payload": {
"correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001",
"link_path": "plano-basico",
"currency_code": "TRX_USDT_S2UZ",
"amount_fiat": 99.90,
"webhook": "https://yourserver.com/payment-webhook",
"return_url": "https://acme.com/obrigado"
}
}'
import requests
body, sig = sign_envelope({
"correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001",
"link_path": "plano-basico",
"currency_code": "TRX_USDT_S2UZ",
"amount_fiat": 99.90,
"webhook": "https://yourserver.com/payment-webhook",
"return_url": "https://acme.com/obrigado",
})
response = requests.post(
"https://checkout.noxpay.io/v2/naas/submerchants/static_link",
headers={"api-key": "<key>", "X-Signature": sig, "Content-Type": "application/json"},
data=body,
)
print(response.json())
const { body, signature } = signEnvelope({
correlation_id: "a1b2c3d4-e5f6-4789-abcd-000000000001",
link_path: "plano-basico",
currency_code: "TRX_USDT_S2UZ",
amount_fiat: 99.90,
webhook: "https://yourserver.com/payment-webhook",
return_url: "https://acme.com/obrigado",
});
const response = await fetch("https://checkout.noxpay.io/v2/naas/submerchants/static_link", {
method: "POST",
headers: { "api-key": "<key>", "X-Signature": signature, "Content-Type": "application/json" },
body,
});
const data = await response.json();
{ "link": "https://checkout.noxpay.io/pay/acmepay/plano-basico" }
{ "error": "link_path already exists for this sub-merchant" }
{ "error": "sub-merchant has no portal account" }
NaaS — Gestão de Sub-merchants
Criar Link Estático
POST /v2/naas/submerchants/static_link — cria um link de pagamento estático permanente para um sub-merchant.
curl -X POST https://checkout.noxpay.io/v2/naas/submerchants/static_link \
-H "api-key: <key>" \
-H "X-Signature: <assinatura-do-corpo>" \
-H "Content-Type: application/json" \
-d '{
"timestamp": "2026-05-27T14:30:00Z",
"payload": {
"correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001",
"link_path": "plano-basico",
"currency_code": "TRX_USDT_S2UZ",
"amount_fiat": 99.90,
"webhook": "https://yourserver.com/payment-webhook",
"return_url": "https://acme.com/obrigado"
}
}'
import requests
body, sig = sign_envelope({
"correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001",
"link_path": "plano-basico",
"currency_code": "TRX_USDT_S2UZ",
"amount_fiat": 99.90,
"webhook": "https://yourserver.com/payment-webhook",
"return_url": "https://acme.com/obrigado",
})
response = requests.post(
"https://checkout.noxpay.io/v2/naas/submerchants/static_link",
headers={"api-key": "<key>", "X-Signature": sig, "Content-Type": "application/json"},
data=body,
)
print(response.json())
const { body, signature } = signEnvelope({
correlation_id: "a1b2c3d4-e5f6-4789-abcd-000000000001",
link_path: "plano-basico",
currency_code: "TRX_USDT_S2UZ",
amount_fiat: 99.90,
webhook: "https://yourserver.com/payment-webhook",
return_url: "https://acme.com/obrigado",
});
const response = await fetch("https://checkout.noxpay.io/v2/naas/submerchants/static_link", {
method: "POST",
headers: { "api-key": "<key>", "X-Signature": signature, "Content-Type": "application/json" },
body,
});
const data = await response.json();
{ "link": "https://checkout.noxpay.io/pay/acmepay/plano-basico" }
{ "error": "link_path already exists for this sub-merchant" }
{ "error": "sub-merchant has no portal account" }
Cria um link de pagamento estático para um sub-merchant. O link resolve o slug do sub-merchant automaticamente e roteia o checkout pela conta dele.
Response
O
correlation_id é obrigatório para este endpoint, mas não vai no envelope de nível superior — passe-o dentro do payload.O sub-merchant deve ter concluído o KYB e ter uma conta no portal.
link_path deve ser único por sub-merchant e é permanente após a criação.Campos do payload
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
correlation_id | string (UUID) | Sim | UUID retornado por Cadastrar Sub-merchant. |
link_path | string | Sim | Segmento de caminho da URL. Apenas letras, números, _ e -. Máx 32 caracteres. Deve ser único por sub-merchant. |
currency_code | string | Sim | Código da moeda para este link (ex: TRX_USDT_S2UZ, BTC). |
amount_fiat | number | Não | Valor fixo em BRL. Omita para permitir que o pagador insira o valor. |
amount_crypto | number | Não | Valor fixo em cripto. Mutuamente exclusivo com amount_fiat. |
webhook | string | Não | URL que recebe uma notificação POST quando o pagamento é concluído. |
return_url | string | Não | URL para onde o pagador é redirecionado após o checkout. |
Response 201 Created
{ "link": "https://checkout.noxpay.io/pay/acmepay/plano-basico" }
link é construído a partir do alias do sub-merchant (definido via Definir Alias). Se nenhum alias foi definido, um slug gerado automaticamente é usado.
400 — campos obrigatórios ausentes; formato de link_path inválido; ou link_path já existe para este sub-merchant.
404 — correlation_id não encontrado ou não pertence a este merchant master.
422 — sub-merchant ainda não tem conta no portal (KYB não concluído).
curl -X POST https://checkout.noxpay.io/v2/naas/submerchants/static_link \
-H "api-key: <key>" \
-H "X-Signature: <assinatura-do-corpo>" \
-H "Content-Type: application/json" \
-d '{
"timestamp": "2026-05-27T14:30:00Z",
"payload": {
"correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001",
"link_path": "plano-basico",
"currency_code": "TRX_USDT_S2UZ",
"amount_fiat": 99.90,
"webhook": "https://yourserver.com/payment-webhook",
"return_url": "https://acme.com/obrigado"
}
}'
import requests
body, sig = sign_envelope({
"correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001",
"link_path": "plano-basico",
"currency_code": "TRX_USDT_S2UZ",
"amount_fiat": 99.90,
"webhook": "https://yourserver.com/payment-webhook",
"return_url": "https://acme.com/obrigado",
})
response = requests.post(
"https://checkout.noxpay.io/v2/naas/submerchants/static_link",
headers={"api-key": "<key>", "X-Signature": sig, "Content-Type": "application/json"},
data=body,
)
print(response.json())
const { body, signature } = signEnvelope({
correlation_id: "a1b2c3d4-e5f6-4789-abcd-000000000001",
link_path: "plano-basico",
currency_code: "TRX_USDT_S2UZ",
amount_fiat: 99.90,
webhook: "https://yourserver.com/payment-webhook",
return_url: "https://acme.com/obrigado",
});
const response = await fetch("https://checkout.noxpay.io/v2/naas/submerchants/static_link", {
method: "POST",
headers: { "api-key": "<key>", "X-Signature": signature, "Content-Type": "application/json" },
body,
});
const data = await response.json();
{ "link": "https://checkout.noxpay.io/pay/acmepay/plano-basico" }
{ "error": "link_path already exists for this sub-merchant" }
{ "error": "sub-merchant has no portal account" }

