Skip to content

Webhook Event Types

This document provides detailed information about the different webhook event types supported by the Stable Mint API and their respective payload structures.

Overview

Stable Mint webhooks notify your application about various events related to payment processing. Each event type corresponds to a specific stage in the payment lifecycle and carries relevant data in its payload.

All payloads shown below use the Version 2 webhook format, where the event data is wrapped in an envelope with an eventId and a data object.

Available Events

Deposit Events

Withdrawal Events

Token Transfer Events

Transaction Events

Partner Customer Events

Deposit Events

partner.customer.deposit.created

Triggered when a new deposit request is created for a partner customer.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "partner.customer.deposit.created",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "currency": "string",
        "customFields": {},
        "customerCitizenshipCountryCode": "string | null",
        "customerEmail": "string",
        "customerId": "string",
        "customerFullName": "string | null",
        "customerResidenceAddress": "string | null",
        "endToEndId": "string",
        "idempotencyKey": "string | null",
        "partnerName": "string",
        "paymentCountryCode": "string | null",
        "paymentMethod": "string",
        "reference": "string",
        "sessionId": "string",
        "websiteReference": "string | null"
    }
}

partner.customer.deposit.initiated

Triggered when a deposit has been initiated by the customer.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "partner.customer.deposit.initiated",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "currency": "string",
        "customFields": {},
        "customerEmail": "string",
        "customerId": "string",
        "endToEndId": "string",
        "idempotencyKey": "string | null",
        "paymentCountryCode": "string",
        "paymentMethod": "string",
        "reference": "string",
        "sessionId": "string",
        "userIpAddress": "string",
        "websiteReference": "string | null"
    }
}

partner.customer.deposit.submitted

Triggered when a deposit has been submitted to the payment processor.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "partner.customer.deposit.submitted",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "currency": "string",
        "customFields": {},
        "customerEmail": "string",
        "customerId": "string",
        "customerIpAddress": "string",
        "endToEndId": "string",
        "idempotencyKey": "string | null",
        "paymentCountryCode": "string",
        "paymentMethod": "string",
        "reference": "string",
        "sessionId": "string",
        "websiteReference": "string | null"
    }
}

partner.customer.deposit.accepted

Triggered when a deposit has been accepted and reconciled with the bank.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "partner.customer.deposit.accepted",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "currency": "string",
        "customFields": {},
        "customerEmail": "string | null",
        "customerId": "string",
        "debtorAccount": "string",
        "debtorAddress": "string | null",
        "debtorBic": "string",
        "debtorCountryCode": "string",
        "debtorName": "string",
        "endToEndId": "string",
        "idempotencyKey": "string | null",
        "paymentCountryCode": "string | null",
        "paymentMethod": "string",
        "reference": "string",
        "sessionId": "string",
        "websiteReference": "string | null"
    }
}

partner.customer.deposit.failed

Triggered when a deposit fails to process.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "partner.customer.deposit.failed",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "currency": "string",
        "customFields": {},
        "customerEmail": "string",
        "customerId": "string",
        "customerIpAddress": "string",
        "endToEndId": "string",
        "errorDetails": "string | null",
        "idempotencyKey": "string | null",
        "paymentCountryCode": "string",
        "paymentMethod": "string",
        "reference": "string",
        "sessionId": "string",
        "websiteReference": "string | null"
    }
}

partner.customer.deposit.completed

Triggered when a deposit has been fully completed and funds are settled.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "partner.customer.deposit.completed",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "blockchainTransactionHash": "string | null",
        "currency": "string",
        "customFields": {},
        "customerEmail": "string | null",
        "customerId": "string",
        "debtorAccount": "string",
        "debtorAddress": "string | null",
        "debtorBic": "string",
        "debtorCountryCode": "string",
        "debtorName": "string",
        "endToEndId": "string",
        "idempotencyKey": "string | null",
        "paymentCountryCode": "string | null",
        "paymentMethod": "string",
        "reference": "string",
        "sessionId": "string",
        "websiteReference": "string | null"
    }
}

Withdrawal Events

partner.customer.withdrawal.requested

Triggered when a withdrawal request is created.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "partner.customer.withdrawal.requested",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "creditorAccount": "string",
        "creditorAddress": "string | null",
        "creditorBic": "string | null",
        "creditorCountryCode": "string",
        "creditorName": "string",
        "currency": "string",
        "customFields": {},
        "customerEmail": "string",
        "customerId": "string",
        "customerIpAddress": "string",
        "customerIpCountryCode": "string",
        "idempotencyKey": "string | null",
        "reference": "string",
        "websiteReference": "string | null",
        "withdrawalReason": "string"
    }
}

partner.customer.withdrawal.accepted

Triggered when a withdrawal has been accepted for processing.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "partner.customer.withdrawal.accepted",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "creditorAccount": "string",
        "creditorAddress": "string | null",
        "creditorBic": "string | null",
        "creditorCountryCode": "string",
        "creditorName": "string",
        "currency": "string",
        "customFields": {},
        "customerEmail": "string",
        "customerId": "string",
        "customerIpAddress": "string",
        "customerIpCountryCode": "string",
        "idempotencyKey": "string | null",
        "reference": "string",
        "websiteReference": "string | null",
        "withdrawalReason": "string"
    }
}

partner.customer.withdrawal.sent

Triggered when a withdrawal has been successfully sent to the beneficiary.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "partner.customer.withdrawal.sent",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "creditorAccount": "string",
        "creditorAddress": "string | null",
        "creditorBic": "string | null",
        "creditorCountryCode": "string",
        "creditorName": "string",
        "currency": "string",
        "customFields": {},
        "customerEmail": "string",
        "customerId": "string",
        "customerIpAddress": "string",
        "customerIpCountryCode": "string",
        "idempotencyKey": "string | null",
        "reference": "string",
        "websiteReference": "string | null",
        "withdrawalReason": "string"
    }
}

partner.customer.withdrawal.failed

Triggered when a withdrawal fails to process.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "partner.customer.withdrawal.failed",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "creditorAccount": "string",
        "creditorAddress": "string | null",
        "creditorBic": "string | null",
        "creditorCountryCode": "string",
        "creditorName": "string",
        "currency": "string",
        "customFields": {},
        "customerEmail": "string",
        "customerId": "string",
        "customerIpAddress": "string",
        "customerIpCountryCode": "string",
        "errorDetails": "string | null",
        "idempotencyKey": "string | null",
        "reference": "string",
        "websiteReference": "string | null",
        "withdrawalReason": "string"
    }
}

Token Transfer Events

customer.token.transfer.in.initiated

Triggered when an incoming token transfer is initiated for a customer.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "customer.token.transfer.in.initiated",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "calldata": "string",
        "contractAddress": "string | null",
        "currency": "string",
        "customerGuid": "string",
        "partnerGuid": "string | null",
        "reference": "string",
        "walletAddressTo": "string"
    }
}

Transaction Events

transaction.status.changed

Triggered when a transaction status changes. This is a generic event that covers both deposit and withdrawal transactions.

json
{
    "eventId": "uuid",
    "data":
    {
        "eventType": "transaction.status.changed",
        "timestamp": "2026-01-01T00:00:00Z",
        "amount": 0.00,
        "currency": "string",
        "customerGuid": "string | null",
        "customFields": {},
        "idempotencyKey": "string | null",
        "originatingTransactionReference": "string | null",
        "partnerGuid": "string | null",
        "reference": "string",
        "status": "string",
        "transactionHash": "string | null",
        "transactionType": "string",
        "websiteReference": "string | null"
    }
}

Common Fields

Envelope Fields

The Version 2 envelope wraps every event:

FieldTypeDescription
eventIdstringUnique identifier for this webhook delivery, useful for idempotency checks
dataobjectThe event payload containing the fields described in each event section

Base Fields

All event payloads include these fields in the data object:

FieldTypeDescription
eventTypestringThe type of event (e.g., partner.customer.deposit.created)
timestampstringISO 8601 UTC timestamp of when the event occurred

Partner Customer Event Fields

All partner.customer.* events include in their data object:

FieldTypeDescription
customerIdstringThe unique identifier for the customer
referencestringThe unique reference for the transaction
amountdecimalThe transaction amount
currencystringThe currency code (e.g., EUR, USD)

Optional Fields

Many events include these optional fields when provided in the original request:

FieldTypeDescription
idempotencyKeystring | nullA key to ensure idempotent processing
websiteReferencestring | nullYour reference for this transaction
customFieldsobject | nullAny additional custom JSON data

Testing Webhook Events

You can test your webhook implementation by using the Stable Mint sandbox environment. This allows you to simulate different event types and ensure your application handles them correctly.

For more information on how to set up and handle webhooks, please refer to our Receiving Webhooks guide.

For any questions or assistance with webhook events, please contact us at [email protected].

Copyright © 2025 Stable mint Ltd. All rights reserved.