Skip to main content

KYC Events

kyc.phone-validation.changed

Triggered when a user’s phone validation status changes. Event Type: kyc.phone-validation.changed Schema Definition:
{
  eventType: "kyc.phone-validation.changed";
  data: {
    /** Unique user identifier */
    id: string;
    /** User email address */
    email: string;
    /** User phone number */
    phone: string;
    /** User first name */
    firstName: string;
    /** User last name */
    lastName: string;
    /** Primary address line */
    address1: string;
    /** Secondary address line */
    address2: string;
    /** City */
    city: string;
    /** Postal/ZIP code */
    postalCode: string;
    /** State/Province */
    state: string;
    /** Country */
    country: string;
    /** Nationality country */
    nationalityCountry: string;
    /** User's sign-in wallet addresses */
    signInWallets: {
      /** Wallet address */
      address: string;
    }[];
    /** User's safe wallet addresses */
    safeWallets: {
      /** Safe wallet address */
      address: string;
      /** Blockchain chain ID */
      chainId: string;
    }[];
    /** KYC verification status */
    kycStatus: "notStarted" | "documentsRequested" | "pending" | "processing" | "approved" | "resubmissionRequested" | "rejected" | "requiresAction";
    /** Available features for the user */
    availableFeatures: {
      /** Whether Monerium IBAN is available */
      moneriumIban: boolean;
    };
    /** User's cards */
    cards: {
      /** Card ID */
      id: string;
      /** Card token */
      cardToken: string;
      /** Last four digits of card */
      lastFourDigits: string;
      /** Name embossed on card */
      embossedName: string;
      /** Card activation timestamp */
      activatedAt: string;
      /** Whether card is virtual */
      virtual: boolean;
    }[];
    /** User's banking details */
    bankingDetails: {
      /** Monerium IBAN */
      moneriumIban: string;
      /** Monerium BIC */
      moneriumBic: string;
      /** Monerium IBAN status */
      moneriumIbanStatus: string;
      /** Banking address */
      address: string;
    };
    /** Whether source of funds question was answered */
    isSourceOfFundsAnswered: boolean;
    /** Whether phone number is validated */
    isPhoneValidated: boolean;
  };
}
Example:
{
  "eventType": "kyc.phone-validation.changed",
  "data": {
    "id": "user_123",
    "email": "[email protected]",
    "phone": "+1234567890",
    "firstName": "John",
    "lastName": "Doe",
    "address1": "123 Main Street",
    "address2": "Apt 4B",
    "city": "New York",
    "postalCode": "10001",
    "state": "NY",
    "country": "US",
    "nationalityCountry": "US",
    "signInWallets": [
      {
        "address": "0x1234567890abcdef1234567890abcdef12345678"
      }
    ],
    "safeWallets": [
      {
        "address": "0xabcdef1234567890abcdef1234567890abcdef12",
        "chainId": "100"
      }
    ],
    "kycStatus": "approved",
    "availableFeatures": {
      "moneriumIban": true
    },
    "cards": [
      {
        "id": "card_123",
        "cardToken": "card_token_456",
        "lastFourDigits": "1234",
        "embossedName": "John Doe",
        "activatedAt": "2024-01-15T10:30:00Z",
        "virtual": false
      }
    ],
    "bankingDetails": {
      "moneriumIban": "GB82WEST12345698765432",
      "moneriumBic": "WESTGB22",
      "moneriumIbanStatus": "ASSIGNED",
      "address": "123 Main Street, New York, NY 10001"
    },
    "isSourceOfFundsAnswered": true,
    "isPhoneValidated": true
  }
}

kyc.source-of-funds.changed

Triggered when a user’s source of funds information changes. Event Type: kyc.source-of-funds.changed Schema Definition:
{
  eventType: "kyc.source-of-funds.changed";
  data: {
    /** Unique user identifier */
    id: string;
    /** User email address */
    email: string;
    /** User phone number */
    phone: string;
    /** User first name */
    firstName: string;
    /** User last name */
    lastName: string;
    /** Primary address line */
    address1: string;
    /** Secondary address line */
    address2: string;
    /** City */
    city: string;
    /** Postal/ZIP code */
    postalCode: string;
    /** State/Province */
    state: string;
    /** Country */
    country: string;
    /** Nationality country */
    nationalityCountry: string;
    /** User's sign-in wallet addresses */
    signInWallets: {
      /** Wallet address */
      address: string;
    }[];
    /** User's safe wallet addresses */
    safeWallets: {
      /** Safe wallet address */
      address: string;
      /** Blockchain chain ID */
      chainId: string;
    }[];
    /** KYC verification status */
    kycStatus: "notStarted" | "documentsRequested" | "pending" | "processing" | "approved" | "resubmissionRequested" | "rejected" | "requiresAction";
    /** Available features for the user */
    availableFeatures: {
      /** Whether Monerium IBAN is available */
      moneriumIban: boolean;
    };
    /** User's cards */
    cards: {
      /** Card ID */
      id: string;
      /** Card token */
      cardToken: string;
      /** Last four digits of card */
      lastFourDigits: string;
      /** Name embossed on card */
      embossedName: string;
      /** Card activation timestamp */
      activatedAt: string;
      /** Whether card is virtual */
      virtual: boolean;
    }[];
    /** User's banking details */
    bankingDetails: {
      /** Monerium IBAN */
      moneriumIban: string;
      /** Monerium BIC */
      moneriumBic: string;
      /** Monerium IBAN status */
      moneriumIbanStatus: string;
      /** Banking address */
      address: string;
    };
    /** Whether source of funds question was answered */
    isSourceOfFundsAnswered: boolean;
    /** Whether phone number is validated */
    isPhoneValidated: boolean;
  };
}
Example:
{
  "eventType": "kyc.source-of-funds.changed",
  "data": {
    "id": "user_123",
    "email": "[email protected]",
    "phone": "+1234567890",
    "firstName": "John",
    "lastName": "Doe",
    "address1": "123 Main Street",
    "address2": "Apt 4B",
    "city": "New York",
    "postalCode": "10001",
    "state": "NY",
    "country": "US",
    "nationalityCountry": "US",
    "signInWallets": [
      {
        "address": "0x1234567890abcdef1234567890abcdef12345678"
      }
    ],
    "safeWallets": [
      {
        "address": "0xabcdef1234567890abcdef1234567890abcdef12",
        "chainId": "100"
      }
    ],
    "kycStatus": "approved",
    "availableFeatures": {
      "moneriumIban": true
    },
    "cards": [
      {
        "id": "card_123",
        "cardToken": "card_token_456",
        "lastFourDigits": "1234",
        "embossedName": "John Doe",
        "activatedAt": "2024-01-15T10:30:00Z",
        "virtual": false
      }
    ],
    "bankingDetails": {
      "moneriumIban": "GB82WEST12345698765432",
      "moneriumBic": "WESTGB22",
      "moneriumIbanStatus": "ASSIGNED",
      "address": "123 Main Street, New York, NY 10001"
    },
    "isSourceOfFundsAnswered": true,
    "isPhoneValidated": true
  }
}

kyc.status.changed

Triggered when a user’s KYC status changes. Event Type: kyc.status.changed Schema Definition:
{
  eventType: "kyc.status.changed";
  data: {
    /** Unique user identifier */
    id: string;
    /** User email address */
    email: string;
    /** User phone number */
    phone: string;
    /** User first name */
    firstName: string;
    /** User last name */
    lastName: string;
    /** Primary address line */
    address1: string;
    /** Secondary address line */
    address2: string;
    /** City */
    city: string;
    /** Postal/ZIP code */
    postalCode: string;
    /** State/Province */
    state: string;
    /** Country */
    country: string;
    /** Nationality country */
    nationalityCountry: string;
    /** User's sign-in wallet addresses */
    signInWallets: {
      /** Wallet address */
      address: string;
    }[];
    /** User's safe wallet addresses */
    safeWallets: {
      /** Safe wallet address */
      address: string;
      /** Blockchain chain ID */
      chainId: string;
    }[];
    /** KYC verification status */
    kycStatus: "notStarted" | "documentsRequested" | "pending" | "processing" | "approved" | "resubmissionRequested" | "rejected" | "requiresAction";
    /** Available features for the user */
    availableFeatures: {
      /** Whether Monerium IBAN is available */
      moneriumIban: boolean;
    };
    /** User's cards */
    cards: {
      /** Card ID */
      id: string;
      /** Card token */
      cardToken: string;
      /** Last four digits of card */
      lastFourDigits: string;
      /** Name embossed on card */
      embossedName: string;
      /** Card activation timestamp */
      activatedAt: string;
      /** Whether card is virtual */
      virtual: boolean;
    }[];
    /** User's banking details */
    bankingDetails: {
      /** Monerium IBAN */
      moneriumIban: string;
      /** Monerium BIC */
      moneriumBic: string;
      /** Monerium IBAN status */
      moneriumIbanStatus: string;
      /** Banking address */
      address: string;
    };
    /** Whether source of funds question was answered */
    isSourceOfFundsAnswered: boolean;
    /** Whether phone number is validated */
    isPhoneValidated: boolean;
  };
}
Example:
{
  "eventType": "kyc.status.changed",
  "data": {
    "id": "user_123",
    "email": "[email protected]",
    "phone": "+1234567890",
    "firstName": "John",
    "lastName": "Doe",
    "address1": "123 Main Street",
    "address2": "Apt 4B",
    "city": "New York",
    "postalCode": "10001",
    "state": "NY",
    "country": "US",
    "nationalityCountry": "US",
    "signInWallets": [
      {
        "address": "0x1234567890abcdef1234567890abcdef12345678"
      }
    ],
    "safeWallets": [
      {
        "address": "0xabcdef1234567890abcdef1234567890abcdef12",
        "chainId": "100"
      }
    ],
    "kycStatus": "approved",
    "availableFeatures": {
      "moneriumIban": true
    },
    "cards": [
      {
        "id": "card_123",
        "cardToken": "card_token_456",
        "lastFourDigits": "1234",
        "embossedName": "John Doe",
        "activatedAt": "2024-01-15T10:30:00Z",
        "virtual": false
      }
    ],
    "bankingDetails": {
      "moneriumIban": "GB82WEST12345698765432",
      "moneriumBic": "WESTGB22",
      "moneriumIbanStatus": "ASSIGNED",
      "address": "123 Main Street, New York, NY 10001"
    },
    "isSourceOfFundsAnswered": true,
    "isPhoneValidated": true
  }
}

User Lifecycle Events

user.created

Triggered when a new user account is created in the Gnosis Pay system. Event Type: user.created Schema Definition:
{
  eventType: "user.created";
  data: {
    /** Unique user identifier */
    id: string;
    /** User email address */
    email: string;
    /** User phone number */
    phone: string;
    /** User first name */
    firstName: string;
    /** User last name */
    lastName: string;
    /** Primary address line */
    address1: string;
    /** Secondary address line */
    address2: string;
    /** City */
    city: string;
    /** Postal/ZIP code */
    postalCode: string;
    /** State/Province */
    state: string;
    /** Country */
    country: string;
    /** Nationality country */
    nationalityCountry: string;
    /** User's sign-in wallet addresses */
    signInWallets: {
      /** Wallet address */
      address: string;
    }[];
    /** User's safe wallet addresses */
    safeWallets: {
      /** Safe wallet address */
      address: string;
      /** Blockchain chain ID */
      chainId: string;
    }[];
    /** KYC verification status */
    kycStatus: "notStarted" | "documentsRequested" | "pending" | "processing" | "approved" | "resubmissionRequested" | "rejected" | "requiresAction";
    /** Available features for the user */
    availableFeatures: {
      /** Whether Monerium IBAN is available */
      moneriumIban: boolean;
    };
    /** User's cards */
    cards: {
      /** Card ID */
      id: string;
      /** Card token */
      cardToken: string;
      /** Last four digits of card */
      lastFourDigits: string;
      /** Name embossed on card */
      embossedName: string;
      /** Card activation timestamp */
      activatedAt: string;
      /** Whether card is virtual */
      virtual: boolean;
    }[];
    /** User's banking details */
    bankingDetails: {
      /** Monerium IBAN */
      moneriumIban: string;
      /** Monerium BIC */
      moneriumBic: string;
      /** Monerium IBAN status */
      moneriumIbanStatus: string;
      /** Banking address */
      address: string;
    };
    /** Whether source of funds question was answered */
    isSourceOfFundsAnswered: boolean;
    /** Whether phone number is validated */
    isPhoneValidated: boolean;
  };
}
Example:
{
  "eventType": "user.created",
  "data": {
    "id": "user_123",
    "email": "[email protected]",
    "phone": "+1234567890",
    "firstName": "John",
    "lastName": "Doe",
    "address1": "123 Main Street",
    "address2": "Apt 4B",
    "city": "New York",
    "postalCode": "10001",
    "state": "NY",
    "country": "US",
    "nationalityCountry": "US",
    "signInWallets": [
      {
        "address": "0x1234567890abcdef1234567890abcdef12345678"
      }
    ],
    "safeWallets": [
      {
        "address": "0xabcdef1234567890abcdef1234567890abcdef12",
        "chainId": "100"
      }
    ],
    "kycStatus": "approved",
    "availableFeatures": {
      "moneriumIban": true
    },
    "cards": [
      {
        "id": "card_123",
        "cardToken": "card_token_456",
        "lastFourDigits": "1234",
        "embossedName": "John Doe",
        "activatedAt": "2024-01-15T10:30:00Z",
        "virtual": false
      }
    ],
    "bankingDetails": {
      "moneriumIban": "GB82WEST12345698765432",
      "moneriumBic": "WESTGB22",
      "moneriumIbanStatus": "ASSIGNED",
      "address": "123 Main Street, New York, NY 10001"
    },
    "isSourceOfFundsAnswered": true,
    "isPhoneValidated": true
  }
}

user.tos.accepted

Triggered when a user accepts the Terms of Service. Event Type: user.tos.accepted Schema Definition:
{
  eventType: "user.tos.accepted";
  data: {
    /** Unique user identifier */
    id: string;
    /** User email address */
    email: string;
    /** User phone number */
    phone: string;
    /** User first name */
    firstName: string;
    /** User last name */
    lastName: string;
    /** Primary address line */
    address1: string;
    /** Secondary address line */
    address2: string;
    /** City */
    city: string;
    /** Postal/ZIP code */
    postalCode: string;
    /** State/Province */
    state: string;
    /** Country */
    country: string;
    /** Nationality country */
    nationalityCountry: string;
    /** User's sign-in wallet addresses */
    signInWallets: {
      /** Wallet address */
      address: string;
    }[];
    /** User's safe wallet addresses */
    safeWallets: {
      /** Safe wallet address */
      address: string;
      /** Blockchain chain ID */
      chainId: string;
    }[];
    /** KYC verification status */
    kycStatus: "notStarted" | "documentsRequested" | "pending" | "processing" | "approved" | "resubmissionRequested" | "rejected" | "requiresAction";
    /** Available features for the user */
    availableFeatures: {
      /** Whether Monerium IBAN is available */
      moneriumIban: boolean;
    };
    /** User's cards */
    cards: {
      /** Card ID */
      id: string;
      /** Card token */
      cardToken: string;
      /** Last four digits of card */
      lastFourDigits: string;
      /** Name embossed on card */
      embossedName: string;
      /** Card activation timestamp */
      activatedAt: string;
      /** Whether card is virtual */
      virtual: boolean;
    }[];
    /** User's banking details */
    bankingDetails: {
      /** Monerium IBAN */
      moneriumIban: string;
      /** Monerium BIC */
      moneriumBic: string;
      /** Monerium IBAN status */
      moneriumIbanStatus: string;
      /** Banking address */
      address: string;
    };
    /** Whether source of funds question was answered */
    isSourceOfFundsAnswered: boolean;
    /** Whether phone number is validated */
    isPhoneValidated: boolean;
  };
}
Example:
{
  "eventType": "user.tos.accepted",
  "data": {
    "id": "user_123",
    "email": "[email protected]",
    "phone": "+1234567890",
    "firstName": "John",
    "lastName": "Doe",
    "address1": "123 Main Street",
    "address2": "Apt 4B",
    "city": "New York",
    "postalCode": "10001",
    "state": "NY",
    "country": "US",
    "nationalityCountry": "US",
    "signInWallets": [
      {
        "address": "0x1234567890abcdef1234567890abcdef12345678"
      }
    ],
    "safeWallets": [
      {
        "address": "0xabcdef1234567890abcdef1234567890abcdef12",
        "chainId": "100"
      }
    ],
    "kycStatus": "approved",
    "availableFeatures": {
      "moneriumIban": true
    },
    "cards": [
      {
        "id": "card_123",
        "cardToken": "card_token_456",
        "lastFourDigits": "1234",
        "embossedName": "John Doe",
        "activatedAt": "2024-01-15T10:30:00Z",
        "virtual": false
      }
    ],
    "bankingDetails": {
      "moneriumIban": "GB82WEST12345698765432",
      "moneriumBic": "WESTGB22",
      "moneriumIbanStatus": "ASSIGNED",
      "address": "123 Main Street, New York, NY 10001"
    },
    "isSourceOfFundsAnswered": true,
    "isPhoneValidated": true
  }
}

Card Events

card.status.changed

Triggered when a card’s status changes. Event Type: card.status.changed Schema Definition:
{
  eventType: "card.status.changed";
  data: {
    /** User ID */
    userId: string;
    /** Card token */
    cardToken: string;
    /** Previous card status */
    oldStatus: string;
    /** New card status */
    newStatus: string;
  };
}
Example:
{
  "eventType": "card.status.changed",
  "data": {
    "userId": "user_123",
    "cardToken": "card_123",
    "oldStatus": "inactive",
    "newStatus": "active"
  }
}

card.transaction.cleared

Triggered when a new card transaction is cleared. Event Type: card.transaction.cleared Schema Definition:
{
  eventType: "card.transaction.cleared";
  data: {
    /** User ID */
    userId: string;
    /** Card transaction event */
    event: {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Payment";
      status: "Approved" | "IncorrectPin" | "InsufficientFunds" | "ExceedsApprovalAmountLimit" | "InvalidAmount" | "PinEntryTriesExceeded" | "IncorrectSecurityCode" | "Reversal" | "PartialReversal" | "Other";
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Refund";
      refundAmount: string;
      refundCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Reversal";
      reversalAmount: string;
      reversalCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    };
  };
}
Example:
{
  "eventType": "card.transaction.cleared",
  "data": {
    "userId": "user_123",
    "event": {
      "kind": "Payment",
      "threadId": "thread_123456789",
      "createdAt": "2024-01-15T10:30:00.000Z",
      "clearedAt": "2024-01-15T10:35:00.000Z",
      "isPending": false,
      "country": {
        "name": "United States",
        "numeric": "840",
        "alpha2": "US",
        "alpha3": "USA"
      },
      "mcc": "5411",
      "merchant": {
        "name": "Grocery Store Inc",
        "city": "New York",
        "country": {
          "name": "United States",
          "numeric": "840",
          "alpha2": "US",
          "alpha3": "USA"
        }
      },
      "billingAmount": "5000",
      "billingCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionAmount": "5000",
      "transactionCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionType": "purchase",
      "cardToken": "card_token_abc123",
      "impactsCashback": true,
      "status": "Approved",
      "transactions": [
        {
          "status": "ExecSuccess",
          "to": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6",
          "value": "5000000000000000000",
          "data": "0x",
          "hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
        }
      ]
    }
  }
}

card.transaction.created

Triggered when a new card transaction is created. Event Type: card.transaction.created Schema Definition:
{
  eventType: "card.transaction.created";
  data: {
    /** User ID */
    userId: string;
    /** Card transaction event */
    event: {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Payment";
      status: "Approved" | "IncorrectPin" | "InsufficientFunds" | "ExceedsApprovalAmountLimit" | "InvalidAmount" | "PinEntryTriesExceeded" | "IncorrectSecurityCode" | "Reversal" | "PartialReversal" | "Other";
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Refund";
      refundAmount: string;
      refundCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Reversal";
      reversalAmount: string;
      reversalCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    };
  };
}
Example:
{
  "eventType": "card.transaction.created",
  "data": {
    "userId": "user_123",
    "event": {
      "kind": "Payment",
      "threadId": "thread_123456789",
      "createdAt": "2024-01-15T10:30:00.000Z",
      "clearedAt": "2024-01-15T10:35:00.000Z",
      "isPending": false,
      "country": {
        "name": "United States",
        "numeric": "840",
        "alpha2": "US",
        "alpha3": "USA"
      },
      "mcc": "5411",
      "merchant": {
        "name": "Grocery Store Inc",
        "city": "New York",
        "country": {
          "name": "United States",
          "numeric": "840",
          "alpha2": "US",
          "alpha3": "USA"
        }
      },
      "billingAmount": "5000",
      "billingCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionAmount": "5000",
      "transactionCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionType": "purchase",
      "cardToken": "card_token_abc123",
      "impactsCashback": true,
      "status": "Approved",
      "transactions": [
        {
          "status": "ExecSuccess",
          "to": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6",
          "value": "5000000000000000000",
          "data": "0x",
          "hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
        }
      ]
    }
  }
}

card.transaction.confirmed

Triggered when a blockchain transaction is confirmed. Event Type: card.transaction.confirmed Schema Definition:
{
  eventType: "card.transaction.confirmed";
  data: {
    /** User ID */
    userId: string;
    /** Card transaction event */
    event: {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Payment";
      status: "Approved" | "IncorrectPin" | "InsufficientFunds" | "ExceedsApprovalAmountLimit" | "InvalidAmount" | "PinEntryTriesExceeded" | "IncorrectSecurityCode" | "Reversal" | "PartialReversal" | "Other";
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Refund";
      refundAmount: string;
      refundCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Reversal";
      reversalAmount: string;
      reversalCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    };
  };
}
Example:
{
  "eventType": "card.transaction.confirmed",
  "data": {
    "userId": "user_123",
    "event": {
      "kind": "Payment",
      "threadId": "thread_123456789",
      "createdAt": "2024-01-15T10:30:00.000Z",
      "clearedAt": "2024-01-15T10:35:00.000Z",
      "isPending": false,
      "country": {
        "name": "United States",
        "numeric": "840",
        "alpha2": "US",
        "alpha3": "USA"
      },
      "mcc": "5411",
      "merchant": {
        "name": "Grocery Store Inc",
        "city": "New York",
        "country": {
          "name": "United States",
          "numeric": "840",
          "alpha2": "US",
          "alpha3": "USA"
        }
      },
      "billingAmount": "5000",
      "billingCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionAmount": "5000",
      "transactionCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionType": "purchase",
      "cardToken": "card_token_abc123",
      "impactsCashback": true,
      "status": "Approved",
      "transactions": [
        {
          "status": "ExecSuccess",
          "to": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6",
          "value": "5000000000000000000",
          "data": "0x",
          "hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
        }
      ]
    }
  }
}

card.transaction.failed

Triggered when a blockchain transaction fails. Event Type: card.transaction.failed Schema Definition:
{
  eventType: "card.transaction.failed";
  data: {
    /** User ID */
    userId: string;
    /** Card transaction event */
    event: {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Payment";
      status: "Approved" | "IncorrectPin" | "InsufficientFunds" | "ExceedsApprovalAmountLimit" | "InvalidAmount" | "PinEntryTriesExceeded" | "IncorrectSecurityCode" | "Reversal" | "PartialReversal" | "Other";
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Refund";
      refundAmount: string;
      refundCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Reversal";
      reversalAmount: string;
      reversalCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    };
  };
}
Example:
{
  "eventType": "card.transaction.failed",
  "data": {
    "userId": "user_123",
    "event": {
      "kind": "Payment",
      "threadId": "thread_123456789",
      "createdAt": "2024-01-15T10:30:00.000Z",
      "clearedAt": "2024-01-15T10:35:00.000Z",
      "isPending": false,
      "country": {
        "name": "United States",
        "numeric": "840",
        "alpha2": "US",
        "alpha3": "USA"
      },
      "mcc": "5411",
      "merchant": {
        "name": "Grocery Store Inc",
        "city": "New York",
        "country": {
          "name": "United States",
          "numeric": "840",
          "alpha2": "US",
          "alpha3": "USA"
        }
      },
      "billingAmount": "5000",
      "billingCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionAmount": "5000",
      "transactionCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionType": "purchase",
      "cardToken": "card_token_abc123",
      "impactsCashback": true,
      "status": "Approved",
      "transactions": [
        {
          "status": "ExecSuccess",
          "to": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6",
          "value": "5000000000000000000",
          "data": "0x",
          "hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
        }
      ]
    }
  }
}

card.transaction.reversed

Triggered when a reversal event is detected during clearing. Event Type: card.transaction.reversed Schema Definition:
{
  eventType: "card.transaction.reversed";
  data: {
    /** User ID */
    userId: string;
    /** Card transaction event */
    event: {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Payment";
      status: "Approved" | "IncorrectPin" | "InsufficientFunds" | "ExceedsApprovalAmountLimit" | "InvalidAmount" | "PinEntryTriesExceeded" | "IncorrectSecurityCode" | "Reversal" | "PartialReversal" | "Other";
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Refund";
      refundAmount: string;
      refundCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Reversal";
      reversalAmount: string;
      reversalCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    };
  };
}
Example:
{
  "eventType": "card.transaction.reversed",
  "data": {
    "userId": "user_123",
    "event": {
      "kind": "Payment",
      "threadId": "thread_123456789",
      "createdAt": "2024-01-15T10:30:00.000Z",
      "clearedAt": "2024-01-15T10:35:00.000Z",
      "isPending": false,
      "country": {
        "name": "United States",
        "numeric": "840",
        "alpha2": "US",
        "alpha3": "USA"
      },
      "mcc": "5411",
      "merchant": {
        "name": "Grocery Store Inc",
        "city": "New York",
        "country": {
          "name": "United States",
          "numeric": "840",
          "alpha2": "US",
          "alpha3": "USA"
        }
      },
      "billingAmount": "5000",
      "billingCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionAmount": "5000",
      "transactionCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionType": "purchase",
      "cardToken": "card_token_abc123",
      "impactsCashback": true,
      "status": "Approved",
      "transactions": [
        {
          "status": "ExecSuccess",
          "to": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6",
          "value": "5000000000000000000",
          "data": "0x",
          "hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
        }
      ]
    }
  }
}

card.transaction.refunded

Triggered when a refund event is detected during clearing. Event Type: card.transaction.refunded Schema Definition:
{
  eventType: "card.transaction.refunded";
  data: {
    /** User ID */
    userId: string;
    /** Card transaction event */
    event: {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Payment";
      status: "Approved" | "IncorrectPin" | "InsufficientFunds" | "ExceedsApprovalAmountLimit" | "InvalidAmount" | "PinEntryTriesExceeded" | "IncorrectSecurityCode" | "Reversal" | "PartialReversal" | "Other";
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Refund";
      refundAmount: string;
      refundCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Reversal";
      reversalAmount: string;
      reversalCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    };
  };
}
Example:
{
  "eventType": "card.transaction.refunded",
  "data": {
    "userId": "user_123",
    "event": {
      "kind": "Payment",
      "threadId": "thread_123456789",
      "createdAt": "2024-01-15T10:30:00.000Z",
      "clearedAt": "2024-01-15T10:35:00.000Z",
      "isPending": false,
      "country": {
        "name": "United States",
        "numeric": "840",
        "alpha2": "US",
        "alpha3": "USA"
      },
      "mcc": "5411",
      "merchant": {
        "name": "Grocery Store Inc",
        "city": "New York",
        "country": {
          "name": "United States",
          "numeric": "840",
          "alpha2": "US",
          "alpha3": "USA"
        }
      },
      "billingAmount": "5000",
      "billingCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionAmount": "5000",
      "transactionCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionType": "purchase",
      "cardToken": "card_token_abc123",
      "impactsCashback": true,
      "status": "Approved",
      "transactions": [
        {
          "status": "ExecSuccess",
          "to": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6",
          "value": "5000000000000000000",
          "data": "0x",
          "hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
        }
      ]
    }
  }
}

card.transaction.declined

Triggered when an authorization record is created with a declined response. Event Type: card.transaction.declined Schema Definition:
{
  eventType: "card.transaction.declined";
  data: {
    /** User ID */
    userId: string;
    /** Card transaction event */
    event: {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Payment";
      status: "Approved" | "IncorrectPin" | "InsufficientFunds" | "ExceedsApprovalAmountLimit" | "InvalidAmount" | "PinEntryTriesExceeded" | "IncorrectSecurityCode" | "Reversal" | "PartialReversal" | "Other";
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Refund";
      refundAmount: string;
      refundCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    } | {
      threadId: string;
      createdAt: string;
      clearedAt: string;
      isPending: boolean;
      country: {
        name: string;
        numeric: string;
        alpha2: string;
        alpha3: string;
      };
      mcc: string;
      merchant: {
        name: string;
        city: string;
        country?: {
          name: string;
          numeric: string;
          alpha2: string;
          alpha3: string;
        };
      };
      billingAmount: string;
      billingCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionAmount: string;
      transactionCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
      transactionType: string;
      cardToken: string;
      impactsCashback: boolean | null;
      transactions: {
        status: "Unsubmitted" | "Unconfirmed" | "ExecReverted" | "ExecSuccess";
        to: string;
        value: string;
        data: string;
        hash: string | null;
      }[];
      kind: "Reversal";
      reversalAmount: string;
      reversalCurrency: {
        symbol: string;
        code: string;
        decimals: number;
        name: string;
      };
    };
  };
}
Example:
{
  "eventType": "card.transaction.declined",
  "data": {
    "userId": "user_123",
    "event": {
      "kind": "Payment",
      "threadId": "thread_123456789",
      "createdAt": "2024-01-15T10:30:00.000Z",
      "clearedAt": "2024-01-15T10:35:00.000Z",
      "isPending": false,
      "country": {
        "name": "United States",
        "numeric": "840",
        "alpha2": "US",
        "alpha3": "USA"
      },
      "mcc": "5411",
      "merchant": {
        "name": "Grocery Store Inc",
        "city": "New York",
        "country": {
          "name": "United States",
          "numeric": "840",
          "alpha2": "US",
          "alpha3": "USA"
        }
      },
      "billingAmount": "5000",
      "billingCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionAmount": "5000",
      "transactionCurrency": {
        "symbol": "$",
        "code": "840",
        "decimals": 2,
        "name": "US Dollar"
      },
      "transactionType": "purchase",
      "cardToken": "card_token_abc123",
      "impactsCashback": true,
      "status": "Approved",
      "transactions": [
        {
          "status": "ExecSuccess",
          "to": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6",
          "value": "5000000000000000000",
          "data": "0x",
          "hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
        }
      ]
    }
  }
}

physical.card.activated

Triggered when a physical card is activated. Event Type: physical.card.activated Schema Definition:
{
  eventType: "physical.card.activated";
  data: {
    /** User ID */
    userId: string;
    /** Unique card token identifier */
    cardToken: string;
  };
}
Example:
{
  "eventType": "physical.card.activated",
  "data": {
    "userId": "user_123",
    "cardToken": "card_123456789"
  }
}

physical.card.order.status.changed

Triggered when the status of a physical card order changes. Event Type: physical.card.order.status.changed Schema Definition:
{
  eventType: "physical.card.order.status.changed";
  data: {
    /** User ID */
    userId: string;
    /** Card token */
    cardToken: string;
    /** Card order ID */
    cardOrderId: string;
    /** Previous order status */
    oldStatus: string;
    /** New order status */
    newStatus: string;
  };
}
Example:
{
  "eventType": "physical.card.order.status.changed",
  "data": {
    "userId": "user_123",
    "cardToken": "card_123",
    "cardOrderId": "order_456",
    "oldStatus": "ordered",
    "newStatus": "shipped"
  }
}

physical.card.ordered

Triggered when a physical card is ordered. Event Type: physical.card.ordered Schema Definition:
{
  eventType: "physical.card.ordered";
  data: {
    /** User ID */
    userId: string;
    /** Card token */
    cardToken: string;
    /** Card order ID */
    id: string;
    /** Order status */
    status: string;
    /** Name to emboss on card */
    embossedName: string;
    /** Primary address */
    address1: string;
    /** Secondary address */
    address2: string;
    /** City */
    city: string;
    /** Postal code */
    postalCode: string;
    /** State */
    state: string;
    /** Country */
    country: string;
    /** Phone number */
    phone: string;
  };
}
Example:
{
  "eventType": "physical.card.ordered",
  "data": {
    "userId": "user_123",
    "cardToken": "card_123",
    "id": "order_456",
    "status": "ordered",
    "embossedName": "John Doe",
    "address1": "123 Main Street",
    "address2": "Apt 4B",
    "city": "New York",
    "postalCode": "10001",
    "state": "NY",
    "country": "US",
    "phone": "+1234567890"
  }
}

physical.card.pin.changed

Triggered when a physical card’s PIN is changed. Event Type: physical.card.pin.changed Schema Definition:
{
  eventType: "physical.card.pin.changed";
  data: {
    /** User ID */
    userId: string;
    /** Unique card token identifier */
    cardToken: string;
  };
}
Example:
{
  "eventType": "physical.card.pin.changed",
  "data": {
    "userId": "user_123",
    "cardToken": "card_123456789"
  }
}

virtual.card.issued

Triggered when a virtual card is issued. Event Type: virtual.card.issued Schema Definition:
{
  eventType: "virtual.card.issued";
  data: {
    /** User ID */
    userId: string;
    /** Unique card token identifier */
    cardToken: string;
  };
}
Example:
{
  "eventType": "virtual.card.issued",
  "data": {
    "userId": "user_123",
    "cardToken": "card_123456789"
  }
}

Account Events

account.balance.changed

Triggered when an account’s balance changes. Event Type: account.balance.changed Schema Definition:
{
  eventType: "account.balance.changed";
  data: {
    /** User ID */
    userId: string;
    /** Total balance in wei */
    total: number;
    /** Spendable balance in wei */
    spendable: number;
    /** Pending balance in wei */
    pending: number;
  };
}
Example:
{
  "eventType": "account.balance.changed",
  "data": {
    "userId": "user_123",
    "total": 1000000000000000000,
    "spendable": 800000000000000000,
    "pending": 200000000000000000
  }
}

account.limit.changed

Triggered when an account’s limit changes. Event Type: account.limit.changed Schema Definition:
{
  eventType: "account.limit.changed";
  data: {
    /** User ID */
    userId: string;
    /** Previous account limit */
    oldLimit: number;
    /** New account limit */
    newLimit: number;
  };
}
Example:
{
  "eventType": "account.limit.changed",
  "data": {
    "userId": "user_123",
    "oldLimit": 1000,
    "newLimit": 2000
  }
}

account.withdrawal.completed

Triggered when an account withdrawal is completed. Event Type: account.withdrawal.completed Schema Definition:
{
  eventType: "account.withdrawal.completed";
  data: {
    /** Transaction ID */
    id: string;
    /** Safe address */
    safeAddress: string;
    /** Transaction data */
    transactionData: string;
    /** Enqueue task ID */
    enqueueTaskId: string;
    /** Dispatch task ID */
    dispatchTaskId: string;
    /** Ready timestamp */
    readyAt: string;
    /** Operation type for delay transaction */
    operationType: "CALL" | "DELEGATECALL";
    /** User ID */
    userId: string;
    /** Delay transaction status */
    status: "QUEUING" | "WAITING" | "EXECUTING" | "EXECUTED" | "FAILED";
    /** Creation timestamp */
    createdAt: string;
  };
}
Example:
{
  "eventType": "account.withdrawal.completed",
  "data": {
    "id": "tx_123",
    "safeAddress": "0x123...",
    "transactionData": "0x456...",
    "enqueueTaskId": "task_789",
    "dispatchTaskId": "task_101",
    "readyAt": "2025-10-15T08:00:24.194Z",
    "operationType": "CALL",
    "userId": "user_123",
    "status": "EXECUTED",
    "createdAt": "2025-10-15T08:00:24.194Z"
  }
}

account.withdrawal.failed

Triggered when an account withdrawal fails. Event Type: account.withdrawal.failed Schema Definition:
{
  eventType: "account.withdrawal.failed";
  data: {
    /** User ID */
    userId: string;
    /** Error message */
    error: string;
  };
}
Example:
{
  "eventType": "account.withdrawal.failed",
  "data": {
    "userId": "user_123",
    "error": "Transaction failed"
  }
}

Banking Events

iban.created

Triggered when an IBAN is created for a user. Event Type: iban.created Schema Definition:
{
  eventType: "iban.created";
  data: {
    /** User ID */
    userId: string;
    /** International Bank Account Number */
    iban: string;
    /** Bank Identifier Code */
    bic: string;
  };
}
Example:
{
  "eventType": "iban.created",
  "data": {
    "userId": "user_123",
    "iban": "GB82WEST12345698765432",
    "bic": "WESTGB22"
  }
}

iban.status.changed

Triggered when an IBAN’s status changes. Event Type: iban.status.changed Schema Definition:
{
  eventType: "iban.status.changed";
  data: {
    /** User ID */
    userId: string;
    /** IBAN status */
    previousStatus: "NOTSTARTED" | "PENDING" | "PENDING_OAUTH" | "ASSIGNED";
    /** IBAN status */
    currentStatus: "NOTSTARTED" | "PENDING" | "PENDING_OAUTH" | "ASSIGNED";
  };
}
Example:
{
  "eventType": "iban.status.changed",
  "data": {
    "userId": "user_123",
    "previousStatus": "PENDING",
    "currentStatus": "ASSIGNED"
  }
}

Safe Wallet Events

safe.created

Triggered when a Safe wallet is created. Event Type: safe.created Schema Definition:
{
  eventType: "safe.created";
  data: {
    /** Safe account ID */
    id: string;
    /** Safe account address */
    address: string;
    /** Account salt */
    salt: string;
    /** Blockchain chain ID */
    chainId: string;
    /** User ID */
    userId: string;
    /** Token symbol */
    tokenSymbol: "GBPe" | "EURe" | "USDCe";
    /** Creation timestamp */
    createdAt: string;
  };
}
Example:
{
  "eventType": "safe.created",
  "data": {
    "id": "safe_123",
    "address": "0x456...",
    "salt": "salt_123",
    "chainId": "100",
    "userId": "user_123",
    "tokenSymbol": "EURe",
    "createdAt": "2025-10-15T08:00:24.193Z"
  }
}

safe.currency.updated

Triggered when a Safe’s currency is updated. Event Type: safe.currency.updated Schema Definition:
{
  eventType: "safe.currency.updated";
  data: {
    /** Safe account ID */
    id: string;
    /** Safe account address */
    address: string;
    /** Account salt */
    salt: string;
    /** Blockchain chain ID */
    chainId: string;
    /** User ID */
    userId: string;
    /** Token symbol */
    tokenSymbol: "GBPe" | "EURe" | "USDCe";
    /** Creation timestamp */
    createdAt: string;
  };
}
Example:
{
  "eventType": "safe.currency.updated",
  "data": {
    "id": "safe_123",
    "address": "0x456...",
    "salt": "salt_123",
    "chainId": "100",
    "userId": "user_123",
    "tokenSymbol": "EURe",
    "createdAt": "2025-10-15T08:00:24.193Z"
  }
}

safe.modules.deployed

Triggered when Safe modules are deployed. Event Type: safe.modules.deployed Schema Definition:
{
  eventType: "safe.modules.deployed";
  data: {
    /** Safe account ID */
    id: string;
    /** Safe account address */
    address: string;
    /** Account salt */
    salt: string;
    /** Blockchain chain ID */
    chainId: string;
    /** User ID */
    userId: string;
    /** Token symbol */
    tokenSymbol: "GBPe" | "EURe" | "USDCe";
    /** Creation timestamp */
    createdAt: string;
  };
}
Example:
{
  "eventType": "safe.modules.deployed",
  "data": {
    "id": "safe_123",
    "address": "0x456...",
    "salt": "salt_123",
    "chainId": "100",
    "userId": "user_123",
    "tokenSymbol": "EURe",
    "createdAt": "2025-10-15T08:00:24.193Z"
  }
}

safe.owner.added

Triggered when an owner is added to a Safe. Event Type: safe.owner.added Schema Definition:
{
  eventType: "safe.owner.added";
  data: {
    /** User ID */
    userId: string;
    /** Current owner address */
    owner: string;
    /** Safe address */
    safeAddress: string;
    /** Newly added owner address */
    addedOwner: string;
  };
}
Example:
{
  "eventType": "safe.owner.added",
  "data": {
    "userId": "user_123",
    "owner": "0x123...",
    "safeAddress": "0x456...",
    "addedOwner": "0x789..."
  }
}

safe.owner.removed

Triggered when an owner is removed from a Safe. Event Type: safe.owner.removed Schema Definition:
{
  eventType: "safe.owner.removed";
  data: {
    /** User ID */
    userId: string;
    safeAddress: string;
    removedOwner: string;
  };
}
Example:
{
  "eventType": "safe.owner.removed",
  "data": {
    "userId": "user_123",
    "safeAddress": "0x456...",
    "removedOwner": "0x789..."
  }
}