钱包与应用 · 接入巴西出入金渠道

面向钱包与应用的 Pix 稳定币服务

应用已上线,却受限于 BRL 入金体验?这里每位用户各有额度,每笔交易有可查询状态,界面无需自行推断当前阶段。

创建沙盒密钥 联系接入团队 完整文档

适用对象

面临的问题

钱包应用中的充值体验会影响用户是否继续操作。金额被拒绝却没有可用额度提示,或付款后无法了解进展,都容易造成困惑。明确的限额与状态信息有助于改善这一流程。

API 分别提供两类信息: 每位付款人 的额度可在输入金额前查询;状态响应提供服务器记录的时间线及可能的阶段统计。仅在返回实际数据时展示相应阶段与典型耗时,不要编造进度或完成时间。

完整交易流程

  1. 用户提供 CPF 后,查询 GET /cashin/limits?payer_tax= ,提前展示可充值额度,区分 无冻结期 及可接受但须冻结的金额。
  2. 用户选择金额。 POST /cashin/charge 并传入 customer_ref (用户在您系统中的 ID),响应会返回 Pix Copia e Cola 支付码。
  3. 用户付款后,webhook cashin.paid 到达,您的后端可更新界面阶段,并通过状态查询对账。
  4. 交付后, cashin.settled 提供哈希。若目的地为 saldo,则记入 BRL 余额,可用性仍须按冻结及等待期规则核对。
  5. 提现使用: POST /payouts (Pix)或 POST /saldo/sacar-cripto (目录中可交付的币种),并始终使用相同的 customer_ref。

使用的接口

接口用途
GET /cashin/limits?payer_tax=在要求用户输入金额前,查询其当前可付款额度。
POST /cashin/charge充值时用 customer_ref 将交易关联至用户。
GET /cashin/{cashin_id}/status服务器记录的时间线及返回的阶段统计,可用于交易跟踪界面。
GET /saldo?customer_ref=查询该用户余额、等待期及后续释放时间。
POST /saldo/sacar-cripto从用户余额扣款,通过可交付路由提取加密资产。
POST /payouts通过 Pix 向用户本人或第三方的收款标识付款。

可运行示例

# 用户入金:按其 CPF 识别 Pix,向其钱包交付加密资产
curl -X POST https://api.luniumpay.com/cashin/charge -H "X-API-Key: $LUNIUM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount_cents":15000,"asset":"usdt","chain":"polygon",
       "payout_address":"0xCarteiraDoUsuario",
       "payer_tax_number":"12345678909",
       "customer_ref":"user_8842","external_id":"dep-8842-17"}'

# 展示金额输入前,先查询该用户限额
curl "https://api.luniumpay.com/cashin/limits?payer_tax=12345678909" -H "X-API-Key: $LUNIUM_KEY"
async function limiteDoUsuario(cpf) {
  const r = await fetch(`${API}/cashin/limits?payer_tax=${cpf}`, {
    headers: { "X-API-Key": process.env.LUNIUM_KEY },
  });
  const l = await r.json();
  return { naHora: l.instant_available_cents, comRetencao: l.held_qr?.available_cents ?? 0 };
}

async function depositar({ cents, cpf, carteira, userId, idempotencia }) {
  const r = await fetch(`${API}/cashin/charge`, {
    method: "POST",
    headers: { "X-API-Key": process.env.LUNIUM_KEY, "Content-Type": "application/json" },
    body: JSON.stringify({
      amount_cents: cents, asset: "usdt", chain: "polygon",
      payout_address: carteira, payer_tax_number: cpf,
      customer_ref: userId, external_id: idempotencia,
    }),
  });
  if (r.status === 403) throw new Error("acima do limite deste pagador");
  return r.json();
}
import os, requests

API, H = "https://api.luniumpay.com", {"X-API-Key": os.environ["LUNIUM_KEY"]}

def limite_do_usuario(cpf):
    l = requests.get(f"{API}/cashin/limits", headers=H, params={"payer_tax": cpf}, timeout=20).json()
    return l["instant_available_cents"], (l.get("held_qr") or {}).get("available_cents", 0)

def depositar(cents, cpf, carteira, user_id, idempotencia):
    r = requests.post(f"{API}/cashin/charge", headers=H, timeout=30, json={
        "amount_cents": cents, "asset": "usdt", "chain": "polygon",
        "payout_address": carteira, "payer_tax_number": cpf,
        "customer_ref": user_id, "external_id": idempotencia})
    if r.status_code == 403:
        raise RuntimeError("acima do limite deste pagador")
    return r.json()

测试环境:先验证,再使用真实资金

只需一次调用,无需预先审批或绑定银行卡,仅测试人员邮箱为必填项,手册、流程图及接入步骤将发送至该邮箱。 lun_test_ 密钥可用于验证文档列出的功能,不涉及真实资金。

curl -X POST https://api.luniumpay.com/keys/sandbox \
  -H "Content-Type: application/json" \
  -d '{"email":"voce@empresa.com","name":"meu-teste"}'

测试环境无法 不 证明真实结算。不会转移加密资产或支付真实 Pix;它用于验证接口契约,不能衡量实际结算渠道。

资产与网络

加密资产入金目录为 GET /catalog;Pix 收款后的交付目录为 GET /cashin/catalog。报价前,请查询所选流程的资产及网络。可用性和最低金额可能变化。

使用 deposit_tag 处理需要 memo 的充值;交付时,若路由要求,还须传入 payout_tag 。有关各字段, API 手册 提供了完整说明。

限额与资金冻结

查询 GET /keys/me 查询账户限额及费用,通过 GET /cashin/limits?payer_tax=... 查询付款人额度,并通过预览查询路由最低金额。不要为 cash-in、cash-out 及 Pix 对外付款共用固定上限。

收款单已付款后,仍可能等待资金解冻才能结算。通过状态、时间线及签名事件,区分款项收到、余额可用及最终交付。交易有效期见 expires_at。

依据实际跟踪,不作固定时效承诺

处理时间取决于流程、可用路由、网络确认及可能的资金冻结。请跟踪至最终状态,并查询 服务状态。模拟耗时不代表真实结算时间。

幂等性

传入 external_id 于支持该字段的资金操作中。重复相同请求会返回 同一笔 交易,不会新建第二笔。相同参数配合不同 ID 可能创建两笔交易;相同 ID 配合不同参数则返回 409 external_id_divergente ,而不会擅自猜测。

超时不等于拒绝。未收到响应时,须先通过 external_id 查询,原交易可能已经存在。

Webhook 与对账

状态变化通过带时间戳的 HMAC SHA-256 签名事件通知,请求头为 X-Lunium-Signature,格式为 t=…,v1=…。校验时间戳有效期可防止已捕获事件被重放;信任请求体前,须先完成验签。

Webhook 是主要通知方式,也可辅以轮询。查询状态时,请根据 timeline 中记录的 服务器时间 展示阶段,因为轮询计时器测得的是您的查询间隔,不能代表交易实际耗时。

未收到 2xx 时,系统按退避策略重试。可通过以下接口手动重发: POST /webhooks/deliveries/{event_id}/retry ;测试接收端 URL 使用 POST /webhooks/test。

异常处理

超过付款人限额: 403 limite_do_pagador 并传入 acao: "corrigir" 及可接受金额。应显示具体数值,而不是仅显示“错误”。

低于路由最低金额: 响应提供预估最低 BRL 金额,且 不会扣款。可让用户快捷选择正确金额。

该证件的首次充值: 余额可用性以项目条件为准。即时释放项目中,新付款人超过 R$ 100.00 的首次 Pix 仍可能由服务商冻结 24 小时(delayed,之后会通过 saldo.liberado自动释放)。展示返回的时间,勿仅提示“稍后再试”。

安全机制

公开核验有助于交易对方独立检查 Pix,无需 API 密钥或人工确认。

从哪里开始接入

应用核心流程包括查询额度及创建收款单,测试环境均可验证。团队可先构建并测试界面,再与接入团队确认商业及生产条件。

接入常见问题

需要保存交易状态吗?

无需自行重建服务端流程,但应保存业务订单及关键标识。 GET /cashin/{id}/status 提供服务器时间线及返回的阶段统计,webhook 通知状态变化。您的数据库须保存 external_id ,并维护自身订单、已处理事件及对账记录。

如何隔离不同用户?

使用 customer_ref贯穿收款单、余额、提现及流水。账本按该引用隔离客户余额,无需为每位用户创建 API 密钥。

可以提取 USDT 以外的资产吗?

可以, POST /saldo/sacar-cripto 支持通过购买交付渠道提取当前可交付的币种,并在扣款前校验路由最低金额。

用户可以超过初始即时到账额度充值吗?

可以,超过即时到账分级范围时,仍可能接受二维码付款并由服务商冻结 24 小时。如产品无法等待,请传入 allow_hold: false ,系统会返回 403 并说明不冻结时可接受的金额。

创建沙盒密钥 联系接入团队

当前 OpenAPI 契约 · 本页公开资料见 product-truth.json · 服务状态

为您的钱包接入 Pix,从测试密钥开始。

一次调用即可免费获得测试密钥,无需预先审批;接入需求可直接交给团队讨论。

获取测试密钥并联系接入团队 Cash-in 与 Pix 对外付款按当前密钥费率计费 · 请查询报价 · 无月费

其他接入方向

Pix 兑换 USDT API以 BRL 收款,将 USDT 交付至客户钱包。USDT 兑换 Pix API卖出稳定币,向 Pix 收款标识付款。Pix 对外付款 API通过 API,以 BRL 向供应商和用户付款。通过 API 兑换 BRL ↔ USDT支持双向兑换,并提供报价与交易凭证。巴西法币与加密资产的双向兑换一次接入,支持巴西境内的法币与加密资产兑换。客户用 Pix 付款,商户以稳定币收款接收客户的 Pix 付款,将资金兑换为数字美元。使用您的品牌的支付基础设施在您的产品背后运行完整资金流程。

与开发团队直接沟通

测试密钥只需一次调用,无需预先审批。如需开始测试,请前往 文档。本表单适用于按量协商费率、文档未覆盖的业务场景,或接入前的疑问。

希望直接发邮件? contato@luniumpay.com