Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.stablegenius.co/llms.txt

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

Webhook Events

This is the complete reference for all webhook events fired by Stable Genius.

Event Envelope

Every webhook event shares this envelope structure:
{
  "id": "evt_*",
  "object": "event",
  "type": "event.type",
  "api_version": "2026-04-01",
  "created_at": "ISO 8601 timestamp",
  "data": { /* event-specific payload */ }
}

Payment Intent Events

payment_intent.confirmed

Fired when USDC is received and confirmed on-chain for a payment intent.
{
  "id": "evt_pi_conf_001",
  "object": "event",
  "type": "payment_intent.confirmed",
  "api_version": "2026-04-01",
  "created_at": "2026-04-01T20:00:12Z",
  "data": {
    "id": "pi_xyz789",
    "object": "payment_intent",
    "status": "confirmed",
    "amount": 4.50,
    "currency": "usd",
    "net_amount": 4.455,
    "fee": 0.045,
    "fee_rate": 0.01,
    "merchant_id": "mer_abc123",
    "payment_address": "0x1a2b...cdef",
    "tx_hash": "0xabc1...f456",
    "chain": "base",
    "token": "USDC",
    "sender_address": "0x9876...5432",
    "block_number": 12345678,
    "confirmed_at": "2026-04-01T20:00:12Z",
    "metadata": {
      "order_id": "order_456",
      "terminal_id": "pos_01"
    }
  }
}

payment_intent.expired

Fired when a payment intent expires without receiving payment.
{
  "id": "evt_pi_exp_001",
  "object": "event",
  "type": "payment_intent.expired",
  "api_version": "2026-04-01",
  "created_at": "2026-04-01T20:05:00Z",
  "data": {
    "id": "pi_xyz789",
    "object": "payment_intent",
    "status": "expired",
    "amount": 4.50,
    "currency": "usd",
    "merchant_id": "mer_abc123",
    "expired_at": "2026-04-01T20:05:00Z",
    "metadata": {
      "order_id": "order_456"
    }
  }
}

payment_intent.cancelled

Fired when an integrator cancels a payment intent.
{
  "id": "evt_pi_can_001",
  "object": "event",
  "type": "payment_intent.cancelled",
  "api_version": "2026-04-01",
  "created_at": "2026-04-01T20:02:30Z",
  "data": {
    "id": "pi_xyz789",
    "object": "payment_intent",
    "status": "cancelled",
    "amount": 4.50,
    "currency": "usd",
    "merchant_id": "mer_abc123",
    "cancelled_at": "2026-04-01T20:02:30Z",
    "metadata": {
      "order_id": "order_456"
    }
  }
}

Transaction Events

transaction.created

Fired when any USDC transfer is detected at a merchant’s payment address, even if not tied to an active payment intent. Use this as a catch-all for incoming payments.
{
  "id": "evt_txn_crt_001",
  "object": "event",
  "type": "transaction.created",
  "api_version": "2026-04-01",
  "created_at": "2026-04-01T20:00:12Z",
  "data": {
    "id": "txn_def456",
    "object": "transaction",
    "payment_intent_id": "pi_xyz789",
    "merchant_id": "mer_abc123",
    "status": "confirmed",
    "amount": 4.50,
    "currency": "usd",
    "net_amount": 4.455,
    "fee": 0.045,
    "chain": "base",
    "token": "USDC",
    "tx_hash": "0xabc1...f456",
    "sender_address": "0x9876...5432",
    "confirmed_at": "2026-04-01T20:00:12Z"
  }
}
payment_intent_id may be null if the transaction wasn’t associated with a specific payment intent (e.g., a direct transfer to the merchant’s address).

Settlement Events

settlement.completed

Fired when a merchant’s funds are successfully sent to their bank account.
{
  "id": "evt_stl_cmp_001",
  "object": "event",
  "type": "settlement.completed",
  "api_version": "2026-04-01",
  "created_at": "2026-04-01T08:00:00Z",
  "data": {
    "id": "stl_ghi789",
    "object": "settlement",
    "merchant_id": "mer_abc123",
    "amount": 142.55,
    "currency": "usd",
    "status": "completed",
    "bank_name": "Wells Fargo",
    "bank_last_4": "0468",
    "estimated_arrival": "2026-04-03",
    "initiated_at": "2026-04-01T08:00:00Z"
  }
}

settlement.failed

Fired when an ACH transfer to a merchant’s bank fails (e.g., invalid account, NSF return).
{
  "id": "evt_stl_fld_001",
  "object": "event",
  "type": "settlement.failed",
  "api_version": "2026-04-01",
  "created_at": "2026-04-03T14:30:00Z",
  "data": {
    "id": "stl_ghi789",
    "object": "settlement",
    "merchant_id": "mer_abc123",
    "amount": 142.55,
    "currency": "usd",
    "status": "failed",
    "failure_reason": "account_closed",
    "failure_message": "The bank account has been closed. Please update bank details.",
    "initiated_at": "2026-04-01T08:00:00Z",
    "failed_at": "2026-04-03T14:30:00Z"
  }
}