MEXICOP2P

Webhook Overview

Events, payload format, delivery behavior, and retry policy.

Events

MexicoP2P sends webhook notifications for order lifecycle events. Configure your webhook URL in the Partner Dashboard.

EventWhen
order.createdOrder placed, entering PENDING_DEPOSIT
order.deposit_confirmedEscrow deposit confirmed on Starknet
order.lockedBuyer locked the order
order.payment_verifiedSPEI payment (CEP) validated
order.completedEscrow released, trade finished
order.refundedCrypto refunded to seller
order.lock_expiredBuyer didn't complete payment in time
order.disputedDispute opened by either party
order.dispute_resolvedDispute resolved by admin

Payload format

All webhook payloads follow the same structure:

{
  "event": "order.completed",
  "timestamp": "2025-06-15T12:35:00.000Z",
  "data": {
    "orderId": "ord_xyz789",
    "escrowOrderId": "0x1a2b3c...",
    "status": "COMPLETED",
    "partnerUserRef": "user_12345",
    "token": "USDC",
    "amount": 100,
    "totalMxn": 1725.00,
    "exchangeRate": 17.25,
    "buyerWallet": "0x04a1b2c3...",
    "lockedAt": "2025-06-15T12:15:00.000Z",
    "completedAt": "2025-06-15T12:35:00.000Z",
    "createdAt": "2025-06-15T12:03:00.000Z"
  }
}

Payload fields

FieldTypeDescription
eventstringEvent type
timestampstringWhen the event occurred
data.orderIdstringOrder ID
data.escrowOrderIdstringStarknet escrow order ID
data.statusstringCurrent order status
data.partnerUserRefstringYour user reference
data.tokenstringUSDC or USDT
data.amountnumberToken amount
data.totalMxnnumberTotal MXN value
data.exchangeRatenumberUSD/MXN rate
data.buyerWalletstring|nullBuyer's Starknet wallet
data.lockedAtstring|nullWhen buyer locked
data.completedAtstring|nullWhen trade completed
data.createdAtstringOrder creation time

Headers

Each webhook delivery includes these headers:

HeaderDescription
X-Webhook-IdUnique delivery ID
X-Webhook-SignatureHMAC-SHA256 hex signature
X-Webhook-TimestampUnix timestamp (seconds)
Content-Typeapplication/json

Delivery

  • Timeout: 10 seconds per attempt
  • Success: Any 2xx HTTP response
  • Failure: Non-2xx response or timeout

Retry policy

Failed deliveries are retried with exponential backoff:

AttemptDelay after failure
1st retry30 seconds
2nd retry2 minutes
3rd retry10 minutes
4th retry30 minutes
5th retry2 hours

After 5 failed attempts, the delivery is marked as FAILED. Check failed deliveries via GET /webhooks?status=FAILED.

Best practices

  • Return 200 OK quickly — process the webhook payload asynchronously
  • Use the X-Webhook-Id for idempotency (you may receive the same event twice)
  • Verify the signature before processing (see Signature Verification)
  • Store the raw payload for debugging

On this page