文档 / 集成

退款

退款即把款项转回给顾客:适用于订单取消、多付,或过期后的少付。可通过 API 或在后台提交退款申请。

由谁转出款项

取决于申请中的 executor 字段:

  • merchant:付款进入了您的钱包(常见情况)。Coinetic 不托管您的资金:由您自己向顾客转账,并登记交易哈希。
  • platform:付款进入了平台钱包。您只需发起退款申请;由 Coinetic 运营人员核验地址、审批并转出。

规则

  • 只能以原支付资产退款。顾客用 TRON 上的 USDT 付款,就会收到 TRON 上的 USDT。不做兑换。
  • 不超过已付金额,请查看账单的 refundable_amount。支持分次退款,每张账单最多 20 个未完成的申请。
  • 地址必须属于原支付网络。按该网络的地址格式校验(EVM 使用 EIP-55 校验和)。不接受 Coinetic 自己的地址。
  • 已支付的账单仍保持已支付状态。已退金额见 refunded_amount。
  • 对未付清的账单执行退款,会永久关闭该账单,即使只是部分退款:账单变为 cancelled,之后的补付不再计入订单。提交申请前请先确认账单状态。

提交申请

POST/v1/refunds
HTTP
POST /v1/refunds
Idempotency-Key: refund-ORDER-1001-1
Content-Type: application/json

{"invoice_id":"inv_x7k2…","amount_minor":"10500000","address":"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE","reason":"取消订单 ORDER-1001"}
字段必填说明
invoice_id是您商店的账单
amount_minor是以字符串表示的最小单位金额(6 位小数时 "10500000" = 10.5 USDT),或 "full",表示全部可退金额
address是顾客在原支付网络上的地址
reason否退款原因,最多 500 个字符

从您的钱包退款

  1. 从您自己的钱包,以原支付资产和网络向顾客转出申请中的 amount(网络手续费由您承担)。
  2. 登记交易哈希:
HTTP
POST /v1/refunds/{id}/executed
Idempotency-Key: refund-exec-ORDER-1001-1
Content-Type: application/json

{"tx_hash":"0x5c50…","ack_status_change":false}

申请将进入 reported 状态。在 EVM 网络(Ethereum、BSC、Polygon、Base、Arbitrum)上,Coinetic 会自动在链上找到已确认的交易,将申请转为 sent,并发送 refund.sent Webhook。Bitcoin、Litecoin、TRON 和 Solana 暂不支持自动核验,申请会保持 reported 状态。

如需撤销,请调用 POST /v1/refunds/{id}/cancel 并注明原因:该金额将重新变为可退。

状态

状态含义
requested申请已受理
approved已由运营人员批准(仅限 executor: platform)
reported您已提交交易哈希,等待链上确认
sent款项已转出,tx_hash 为链上交易
rejected已拒绝或已撤销,原因见 reject_reason

拒绝不会通过 Webhook 通知,请定时检查未完成的申请:GET /v1/refunds?status=requested。

在沙盒中

POST /v1/refunds/{id}/simulate 会一次性走完整个流程:申请变为 sent 并带有测试用 tx_hash,同时发送 refund.sent。生产环境中没有此接口。