基础设施 · 子账户与资金托管

以您的品牌提供 Pix 与稳定币服务

为产品提供“充值与提现”功能。每位最终客户在账本中对应一个子账户,使用您系统中已有的客户 ID 识别。

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

适用对象

面临的问题

管理客户资金不仅是收款,还需要按客户隔离余额、冻结暂不可支用金额、追踪每笔变动,并能解释历史余额。这涉及账本、对账及审计记录,适合通过明确的接口能力接入。

使用同一个客户引用标识隔离余额。 customer_ref 贯穿收款单、余额、提现及流水;账本仅追加记录,每笔变动均有来源。您负责自有品牌体验,并将这些记录接入自身业务对账。

完整交易流程

  1. 充值: POST /cashin/charge 并传入 destino: "saldo" 及 customer_ref 关联客户,Pix 记入其 BRL 子账户余额。
  2. 查看: GET /saldo?customer_ref= 返回可用、冻结余额及后续释放时间。 GET /saldo/extrato 返回逐笔流水。
  3. 以 BRL 提现: POST /payouts 使用同一 customer_ref ,确保从正确子账户扣款。
  4. 以加密资产提现: POST /saldo/sacar-cripto 通过当前目录中的可交付路由发送,并在扣款前校验最低金额。
  5. 客户之间转账: POST /saldo/transferir 在内部账本中处理,不调用外部支付渠道。

使用的接口

接口用途
POST /cashin/charge (destino: saldo)向最终客户子账户充值 BRL。
GET /saldo?customer_ref=余额、当前费用及后续资金释放。
GET /saldo/extrato逐笔流水,并提供各项来源。
GET /saldo/clientes · /saldo/consolidado全部子账户及总托管金额。
POST /saldo/transferir账本内部的子账户转账。
POST /saldo/sacar-cripto · POST /payouts两种出金方式:加密资产交付至客户钱包,或 Pix 支付至其收款标识。

可运行示例

# 将收款记入终端客户子账户
curl -X POST https://api.luniumpay.com/cashin/charge -H "X-API-Key: $LUNIUM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount_cents":50000,"destino":"saldo","customer_ref":"cliente_412",
       "payer_tax_number":"12345678909","external_id":"dep-412-88"}'

# 查询该客户余额
curl "https://api.luniumpay.com/saldo?customer_ref=cliente_412" -H "X-API-Key: $LUNIUM_KEY"

# 子账户之间的内部账本转账
curl -X POST https://api.luniumpay.com/saldo/transferir -H "X-API-Key: $LUNIUM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from_customer_ref":"cliente_412","to_customer_ref":"cliente_907",
       "amount_cents":15000,"external_id":"tr-9912"}'
const h = { "X-API-Key": process.env.LUNIUM_KEY, "Content-Type": "application/json" };
const api = (rota, corpo) => fetch(`${API}${rota}`, corpo
  ? { method: "POST", headers: h, body: JSON.stringify(corpo) }
  : { headers: h }).then((r) => r.json());

export const depositar = (cliente, cents, cpf, id) => api("/cashin/charge", {
  amount_cents: cents, destino: "saldo", customer_ref: cliente,
  payer_tax_number: cpf, external_id: id,
});

export const saldoDe = (cliente) => api(`/saldo?customer_ref=${encodeURIComponent(cliente)}`);

export const sacarPix = (cliente, cents, chave, tipo, doc, id) => api("/payouts", {
  amount_cents: cents, pix_key: chave, pix_key_type: tipo,
  tax_number: doc, customer_ref: cliente, external_id: id,
});

export const sacarCripto = (cliente, cents, ativo, rede, carteira, doc, id) => api("/saldo/sacar-cripto", {
  amount_cents: cents, asset: ativo, chain: rede, payout_address: carteira,
  tax_number: doc, customer_ref: cliente, external_id: id,
});
import os, requests

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

def depositar(cliente, cents, cpf, ident):
    return requests.post(f"{API}/cashin/charge", headers=H, timeout=30, json={
        "amount_cents": cents, "destino": "saldo", "customer_ref": cliente,
        "payer_tax_number": cpf, "external_id": ident}).json()

def saldo_de(cliente):
    return requests.get(f"{API}/saldo", headers=H, params={"customer_ref": cliente}, timeout=20).json()

def transferir(de, para, cents, ident):
    return requests.post(f"{API}/saldo/transferir", headers=H, timeout=30, json={
        "from_customer_ref": de, "to_customer_ref": para,
        "amount_cents": cents, "external_id": ident}).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。

异常处理

首次 Pix 的资金冻结: 余额可用性取决于项目条件。即时释放项目中,新付款人超过 R$ 100.00 的首次 Pix 仍可能由服务商冻结 24 小时,并显示为 delayed → GET /saldo,之后通过 saldo.liberado 自动释放。应向客户展示返回时间,而非通用错误。

余额不足: 402 会分别列明可用及冻结金额,不执行扣款。

提现低于币种最低金额: 会被拒绝,且发生在 扣款之前 ,并提供预估最低 BRL 金额,避免先扣款后才发现路由最低金额不满足。

安全机制

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

从哪里开始接入

充值与余额查询分别通过对应接口实现。API 提供当前费用及冻结条件,您的界面可据此解释资金状态,无需将规则固定写入代码。

接入常见问题

这会使我成为支付机构吗?

Lunium 负责其提供的托管及结算环节,您负责产品体验及最终客户关系。产品的监管归类须由您及法律顾问判断,我们不出售牌照或法律意见。

如何隔离各用户资金?

使用 customer_ref,使用您已有的客户 ID。账本仅追加记录,每笔变动来源可追踪; GET /saldo/consolidado 用于核对总托管金额。

可以约定余额等待期吗?

请以密钥实际条件为准,Pix 确认后仍须核对余额可用性(GET /saldo 示例中可能显示 carencia_horas: 0)。如项目约定了等待期,界面应读取 API 当前值,并同时遵守付款人及收款单的冻结规则。

最终客户可以提取加密资产吗?

可以, POST /saldo/sacar-cripto 使用当前目录中的可交付路由,并在扣款前核对最低金额。

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

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

以您的品牌提供支付流程,从测试密钥开始。

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

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

其他接入方向

Pix 兑换 USDT API以 BRL 收款,将 USDT 交付至客户钱包。USDT 兑换 Pix API卖出稳定币,向 Pix 收款标识付款。Pix 对外付款 API通过 API,以 BRL 向供应商和用户付款。通过 API 兑换 BRL ↔ USDT支持双向兑换,并提供报价与交易凭证。巴西法币与加密资产的双向兑换一次接入,支持巴西境内的法币与加密资产兑换。客户用 Pix 付款,商户以稳定币收款接收客户的 Pix 付款,将资金兑换为数字美元。面向钱包的 Pix 与稳定币服务为您的用户接入法币与加密资产的双向兑换通道。

与开发团队直接沟通

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

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