Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.minisend.xyz/llms.txt

Use this file to discover all available pages before exploring further.

Minisend POSTs to your server when a session reaches a terminal state: completed, failed, or expired.

Setup

1

Add your URL

SettingsWebhook URL → paste your HTTPS endpoint (e.g., https://yourbusiness.com/webhooks/minisend).
2

Save

Minisend starts delivering events.
3

Copy your secret

Your webhook_secret is shown in Settings. Use it to verify incoming signatures.
Always verify X-Minisend-Signature before processing. See Verification.

Request format

HeaderValue
Content-Typeapplication/json
X-Minisend-SignatureHMAC-SHA256 hex of the raw JSON body
User-AgentMinisend-Webhooks/1.0
Your endpoint must return a 2xx within 10 seconds.

Sample payload

{
  "event": "checkout.completed",
  "session_id": "cs_7f8a9b2c-...",
  "external_id": "order-4821",
  "amount_usdc": 25.00,
  "amount_local": 3225.00,
  "currency": "KES",
  "exchange_rate": 129.00,
  "receipt": "SHQ1234ABC",
  "status": "completed",
  "completed_at": "2026-04-13T14:32:00Z",
  "created_at": "2026-04-13T14:00:00Z"
}

Fields

event
string
required
checkout.completed, checkout.failed, or checkout.expired.
session_id
string
required
Use as an idempotency key.
external_id
string
Your reference, if set.
amount_usdc
number
required
USDC-equivalent amount.
amount_local
number
Net local currency after the 1% fee. completed only.
currency
string
Your payout currency: KES, NGN, GHS, or UGX. Always present.
exchange_rate
number
Local currency per 1 USDC at settlement. completed only.
receipt
string
Settlement receipt (e.g., M-Pesa code). completed only.
status
string
required
completed, failed, or expired.
completed_at
string
ISO 8601. completed only.
created_at
string
required
ISO 8601 — when the session was created.

Retry policy

Non-2xx or no response in 10s = retry. Up to 5 attempts with exponential backoff:
AttemptDelay after previous
1Immediate
230 seconds
32 minutes
48 minutes
532 minutes
Total window ≈ 42 minutes.
Every delivery attempt is logged. Contact support with a session_id to inspect the log.