1. Payment Links
PIK
  • Start
    • Getting Started
  • Authentication
    • Authentication Token
      POST
  • Global Account
    • Contacts
      • Create Contact
      • List Contacts
      • Get Contact
      • Count Contacts
    • Virtual Accounts
      • Create Virtual Account
      • List Virtual Accounts
      • Get Virtual Account
    • Transactions
      • List Transactions
      • Get Transaction
    • Account Balance
      • List Account Balances
      • Get Balance by Currency
    • Payout
      • Create Payout
    • Webhooks
      • Unified Webhook Entry
      • Virtual Account Webhook
      • Deposit Webhook
      • Payout Status Webhook
  • Payment Links
    • Payment Links
      • Create Payment Link
      • Update Payment Link
      • Get Payment Link Detail
      • Get Payment Link List
    • Transactions
      • Get Transaction List
  • Webhook
    • Global Account
      • Deposit Webhook
      • Payout Webhook
      • Virtual Account Webhook
    • Payment Links
      • Overview
      • Order Collect Out Webhook
      • Customer Payment Webhook
      • Customer Refund Webhook
      • Master Recharge Webhook
      • Web3 Direct Payment Webhook
      • Withdraw Out Webhook
  1. Payment Links

Master Recharge Webhook

The merchant (or any third party) deposits tokens directly to the master address without going through a payment link. Typical use case: the merchant tops up their own PIK wallet from an exchange or external wallet.
Read webhook-overview.md first for signature verification, retry policy, and the state machine common to all events.

When it fires#

PIK detects an incoming on-chain transfer to a master address, AND the transaction hash does not match any open payment link order (which is what distinguishes it from WEB3_DIRECT_PAYMENT).
Trigger conditionNotes
toAddress ∈ PIK master addresses
fromAddress ∉ PIK order poolNot a sweep
txHash does not match any pre-recorded payment transactionNo payment link involved

Event identifiers#

FieldValue
eventTypeMASTER_RECHARGE
businessRefTypePAYMENT
directionIN

State machine#

  PENDING ──── on-chain confirmed ────► CONFIRMED  (balance credited)
     │
     └──────── reverted ─────────────► FAILED
StatusWhenSide effects
PENDINGFirst on-chain detection of the inbound transferNone visible to merchant balance yet
CONFIRMEDSufficient confirmations reachedFunds added to the master available balance
FAILEDTransaction revertedNo balance change

Payload examples#

status = PENDING#

{
  "event": "transaction.created",
  "timestamp": 1738800000000,
  "data": {
    "fundEventCode": "FE20260206120000003",
    "paymentLinkName": null,
    "businessRefType": "PAYMENT",
    "chain": "Tron",
    "tokenSymbol": "USDT",
    "tokenAddress": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
    "txHash": "trxabc123def456trxabc123def456trxabc123def456trxabc123def456abcd",
    "fromAddress": "TPzZkjy6CqkSjUKjy7gw1AHQ4G7Wt8z1MyPay",
    "toAddress": "TMasterAddressBBBBMasterAddressBBBBMasterB",
    "amount": 5000.00,
    "direction": "IN",
    "eventType": "MASTER_RECHARGE",
    "status": "PENDING",
    "createTimeUtc": "2026-02-06 12:00:00"
  }
}

status = CONFIRMED#

{
  "event": "transaction.created",
  "timestamp": 1738800180000,
  "data": {
    "fundEventCode": "FE20260206120000003",
    "paymentLinkName": null,
    "businessRefType": "PAYMENT",
    "chain": "Tron",
    "tokenSymbol": "USDT",
    "tokenAddress": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
    "txHash": "trxabc123def456trxabc123def456trxabc123def456trxabc123def456abcd",
    "fromAddress": "TPzZkjy6CqkSjUKjy7gw1AHQ4G7Wt8z1MyPay",
    "toAddress": "TMasterAddressBBBBMasterAddressBBBBMasterB",
    "amount": 5000.00,
    "direction": "IN",
    "eventType": "MASTER_RECHARGE",
    "status": "CONFIRMED",
    "createTimeUtc": "2026-02-06 12:00:00"
  }
}

status = FAILED#

{
  "event": "transaction.created",
  "timestamp": 1738800240000,
  "data": {
    "fundEventCode": "FE20260206120000003",
    "paymentLinkName": null,
    "businessRefType": "PAYMENT",
    "chain": "Tron",
    "tokenSymbol": "USDT",
    "tokenAddress": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
    "txHash": "trxabc123def456trxabc123def456trxabc123def456trxabc123def456abcd",
    "fromAddress": "TPzZkjy6CqkSjUKjy7gw1AHQ4G7Wt8z1MyPay",
    "toAddress": "TMasterAddressBBBBMasterAddressBBBBMasterB",
    "amount": 5000.00,
    "direction": "IN",
    "eventType": "MASTER_RECHARGE",
    "status": "FAILED",
    "createTimeUtc": "2026-02-06 12:00:00"
  }
}

Field notes specific to this event#

FieldNotes
paymentLinkNameAlways null — no payment link involved
toAddressThe merchant master address
fromAddressWhoever initiated the deposit (often the merchant's exchange withdrawal address)

Recommended handler logic#

1. Verify signature.
2. Look up the deposit by fundEventCode (idempotency).
3. Switch on status:
     PENDING   → record the inbound deposit, optionally notify finance team.
     CONFIRMED → reconcile balance, fire any internal "deposit available" hooks.
     FAILED    → mark as failed and investigate.
4. Respond 200 within 5 seconds.

Related events#

MASTER_RECHARGE does not produce a follow-up ORDER_COLLECT_OUT event because the funds already landed in the master address.
Modified at 2026-05-25 08:36:02
Previous
Customer Refund Webhook
Next
Web3 Direct Payment Webhook
Built with