- Monitoring Only - No wallet is created, MPCVault holds no keys, and no assets are moved
- No Historical Backfill - Only transfers that occur after registration are notified
Watch Address uses the same API token as Sweep, issued by MPCVault - not a token created from the web console. Contact your MPCVault account manager to enable it and configure your webhook URL.
Preparation
You provide:- Webhook URL
- Outbound IPs (if IP allowlisting is enabled)
- API base URL:
https://api.mpcvault.com - API token, sent in the
x-mtokenheader - Webhook verification public key (see below)
How It Works
- Register each address via AddWatchAddress.
- MPCVault sends a signed webhook for every transfer on the address, by lifecycle stage.
- Verify the signature, deduplicate, and apply your business logic.
Webhook
Push Rules
- Both incoming and outgoing transfers are notified; there is no minimum amount
- Currently monitored assets: TRX and USDT
- Only successful on-chain transactions are pushed; failed transactions are not
- Self-transfers (sender and recipient are the same address) are not pushed
- Each transaction is notified by lifecycle stage:
CONFIRMED(19 blocks) thenFINALIZED(38 blocks), strictly in order; TRX and USDT use the same thresholds, and TRON does not sendREVERTED
Signature Verification
Request headers:Request Body
Example (USDT incoming):Idempotency
Each transaction produces two notifications -CONFIRMED then FINALIZED - with the same uuid. If both sender and recipient of one transfer are watched, each side additionally gets its own pair: same unique_id, but different wallet_address, is_send, and uuid.
Use uuid + event_type for idempotency - uuid alone would drop the FINALIZED stage, and unique_id alone would drop one side of a watched-to-watched transfer.
After verifying and processing a webhook, return HTTP 200 (exactly; the response body is ignored). Any other status or a failed request is retried with exponential backoff, indefinitely - so your endpoint must be idempotent.
Recommended Handling Steps
- Read the raw request body and verify the signature with the public key.
- Parse the JSON and check that
statusisSUCCESS. - Deduplicate by
uuid+event_type. - Optionally re-verify the transaction hash, direction, token, and amount via TRON RPC.
- Apply your business logic and return HTTP 200.