Webhooks Overview
Webhooks allow you to receive real-time HTTP notifications when specific events occur in your Minteo account.
Events vs Hooks
It's important to understand the distinction:
- Event: A business occurrence that triggers a notification (e.g., an order reaches
SUCCEEDEDstatus) - Hook: An individual delivery attempt to notify your endpoint about an event
Example
When an order reaches a final state:
- Minteo creates one Event with a unique
event_id - Minteo sends Hook #1 (first delivery attempt) to your endpoint
- If Hook #1 fails (non-200 response), Minteo sends Hook #2 (retry)
- This continues up to 14 hooks (delivery attempts) for the same event
When to use webhooks
Use webhooks when you need to:
- React immediately to state changes (final states for most entities, plus intermediate states for payins)
- Avoid polling the API repeatedly
- Build event-driven integrations
Payins trigger webhooks not only at final states (FULFILLED, ABORTED) but also when the payment gateway confirms the user completed the payment (status_code: GATEWAY_CONFIRM_PAYIN). This allows you to react immediately when the user pays, before the full tokenization process completes.
How it works
┌─────────────────────────────────────────────────────────────┐
│ Entity reaches triggering state │
│ • Order: SUCCEEDED / FAILED │
│ • Payout: FULFILLED / ABORTED │
│ • Payin: IN_PROGRESS (status_code: GATEWAY_CONFIRM_PAYIN) /│
│ FULFILLED / ABORTED │
│ • Payout Item: SUCCEEDED / REJECTED │
└────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ System creates unique Event │
│ event_id generated │
└────────────────────────┬────────────────────────────────────┘
│
▼
┌──────────┐
│ Hooks │
│configured│
│ in Board?│
└────┬─────┘
│
┌──────────┴──────────┐
│ │
No Yes
│ │
▼ ▼
┌──────────────┐ ┌─────────────────────┐
│ End │ │ Trigger Hook #1 │
│ No │ │ Immediate attempt │
│ notification │ └──────────┬──────────┘
└──────────────┘ │
▼
┌───────────────────────┐
│ POST to customer URL │
│ Timeout: 10 seconds │◀─────────────────┐
└──────────┬────────────┘ │
│ │
▼ │
┌──────────┐ │
│ Response │ │
│ 200? │ │
└────┬─────┘ │
│ │
┌──────────┴──────── ──┐ │
Yes No │
│ │ │
▼ ▼ │
┌──────────────────┐ ┌──────────┐ │
│ ✅ Success │ │ Reached │ │
│ Event marked as │ │ 14 │ │
│ SUCCEEDED │ │ attempts?│ │
└──────────────────┘ └────┬─────┘ │
│ │
┌──────────┴──────────┐ │
Yes No │
│ │ │
▼ ▼ │
┌──────────────────┐ ┌─────────────────┐ │
│ ❌ Failed │ │ ⏳ Wait with │ │
│ Event marked │ │ exponential │ │
│ FAILED │ │ backoff │ │
└──────────────────┘ └────────┬────────┘ │
│ │
▼ │
┌──────────────────┐ │
│ Trigger next │ │
│ Hook (Attempt #N)│ │
└────────┬─────────┘ │
│ │
│ │
└───────────────┘
Retry policy
If your endpoint doesn't respond with HTTP 200:
- Any non-200 status code triggers a retry
- Timeouts (>10 seconds) trigger a retry
- Minteo retries up to 14 times with exponential backoff
- Total retry window: ~64 hours from first attempt
See Retry Schedule for the complete timing table.
Configuration
Webhooks are configured in the Minteo Board (not via API):
- Production
- Sandbox
Configure at: https://board.minteo.com/developers/hooks
Configure at: https://board.sandbox.minteo.com/developers/hooks
Webhook configuration is currently only available through the Board UI. API-based configuration is not supported in v1.