Integration docs
Hold and release API.
Create payouts, track holds, receive release events. One endpoint.
Quickstart
Create a payout hold
Every payout is created held. The response carries the hold reference and the verification URL for the merchant.
POST https://api.memblock.io/v2/payouts
Authorization: Bearer sk_live_<key>
Content-Type: application/json
{
"reference": "TO-8641-RLOMOZAD",
"amount": 120.00,
"currency": "USD",
"network": "btc"
}
201 Created
{
"id": "po_3Nq8kL0sWmB2",
"reference": "TO-8641-RLOMOZAD",
"status": "held",
"confirmations": 1,
"required_confirmations": 3,
"hold_policy": "MWV-114",
"hold_expires_at": "2026-10-06T19:44:00Z",
"verification_url": "https://memblock.io/verify?ref=TO-8641-RLOMOZAD"
}
Hold lifecycle
HELD → VERIFYING → RELEASED
1HeldPayment detected · 3 confirmations required
2VerifyingMerchant wallet verification pending
3ReleasedPayout settled · webhook fired
Holds that reach the end of the hold window without verification return to the sender on-chain. The hold window is 48 hours from the third confirmation.
Webhooks
Release events
Release and return events are signed and delivered to your endpoint within seconds of settlement.
{
"event": "payout.released",
"reference": "TO-8641-RLOMOZAD",
"amount": 120.00,
"currency": "USD",
"settled_at": "2026-10-04T21:03:11Z"
}
Verify the MemBlock-Signature header before acting on an event.
Errors
Error codes
| Code | Meaning |
|---|---|
| 402 hold_not_found | The reference has no active hold. |
| 409 hold_returned | The hold window expired; funds returned to sender. |
| 429 rate_limited | Slow down; retry after the backoff header. |
| 503 node_degraded | The cluster is behind; events still queue. |