Skip to main content
EQX emits 17 event types across four groups. Events marked Active are currently dispatched in production. Events marked Planned are documented for forward-compatibility and will be enabled in a future release.

Retail Payout

retail.transaction.committed — Active

Fired when a retail payout transaction is successfully committed from an accepted quote.
{
  "quote_id": "qt_01J5K2M3N4P5Q6R7S8T9",
  "status": "PROCESSING",
  "processing_mode": "AUTO",
  "policy_reason_codes": []
}
FieldTypeDescription
quote_idstringThe quote converted into this transaction
statusstringTransaction status; typically PROCESSING
processing_modestringAUTO, REVIEW_REQUIRED, or MANUAL_ONLY
policy_reason_codesstring[]Policy rule codes that influenced the mode

retail.payout.dispatched — Active

Fired when the payout has been submitted to the external payout provider.
{
  "execution_id": "exec_01J5K2M3N4P5Q6R7S8T9",
  "provider_reference": "MPESA_ABC123",
  "provider_status": "PENDING"
}
FieldTypeDescription
execution_idstringInternal execution record ID
provider_referencestring | nullProvider-assigned transaction reference
provider_statusstringStatus string from the provider at dispatch

retail.payout.completed — Active

Fired when the payout provider confirms successful delivery to the beneficiary.
{
  "execution_id": "exec_01J5K2M3N4P5Q6R7S8T9",
  "provider_reference": "MPESA_ABC123",
  "actual_consumed_amount": "100.00"
}
FieldTypeDescription
execution_idstringInternal execution record ID
provider_referencestringProvider-assigned transaction reference
actual_consumed_amountstringActual source amount consumed (decimal)

retail.payout.failed — Active

Fired when the payout reaches a terminal failure state.
{
  "execution_id": "exec_01J5K2M3N4P5Q6R7S8T9",
  "reason_code": "BENEFICIARY_ACCOUNT_INVALID",
  "provider_status": "FAILED"
}
FieldTypeDescription
execution_idstringInternal execution record ID
reason_codestringEQX-normalised failure reason code
provider_statusstringRaw status string from the provider

retail.payout.reconciliation_required — Active

Fired when the payout outcome is ambiguous and requires manual reconciliation.
{
  "execution_id": "exec_01J5K2M3N4P5Q6R7S8T9",
  "provider_status": "TIMEOUT"
}
FieldTypeDescription
execution_idstringInternal execution record ID
provider_statusstringLast known provider status

Settlement

settlement.request.created — Active

Fired when a new settlement request is created for the integrator workspace.
{
  "settlement_rail": "MPESA",
  "asset": "USDC",
  "requested_amount": "100.00",
  "status": "PENDING",
  "processing_mode": "AUTO",
  "policy_reason_codes": []
}
FieldTypeDescription
settlement_railstringPayment rail (e.g. MPESA, BANK_TRANSFER)
assetstringSource asset being settled
requested_amountstringAmount requested (decimal)
statusstringInitial status; typically PENDING
processing_modestringAUTO, REVIEW_REQUIRED, or MANUAL_ONLY
policy_reason_codesstring[]Policy rule codes

settlement.request.funded — Planned

Fired when the liquidity pool allocates funds to cover the settlement.
FieldTypeDescription
settlement_request_idstringSettlement request ID
funded_amountstringAmount allocated (decimal)
liquidity_pool_idstringLP pool that funded this request

settlement.request.executed — Planned

Fired when the settlement instruction is submitted to the rail.
FieldTypeDescription
settlement_request_idstringSettlement request ID
provider_referencestring | nullProvider or rail reference

settlement.request.completed — Planned

Fired when the settlement rail confirms final delivery.
FieldTypeDescription
settlement_request_idstringSettlement request ID
completed_atstringISO 8601 timestamp of confirmation
actual_settled_amountstringFinal settled amount (decimal)

settlement.request.failed — Planned

Fired when the settlement instruction fails terminally.
FieldTypeDescription
settlement_request_idstringSettlement request ID
reason_codestringEQX-normalised failure reason code

Deposit

deposit.received — Planned

Fired when an on-chain deposit is first detected (unconfirmed).
FieldTypeDescription
tx_hashstringOn-chain transaction hash
assetstringDeposited asset (e.g. USDC)
amountstringGross deposited amount (decimal)
networkstringBlockchain network (e.g. POLYGON, TRON)

deposit.confirmed — Planned

Fired when the deposit reaches required block confirmations.
FieldTypeDescription
tx_hashstringOn-chain transaction hash
confirmationsnumberBlock confirmations at event time

deposit.credited — Active

Fired when the deposit is processed and the net amount is credited to the user’s balance. This is the primary event for confirming funds are available.
{
  "flow": "AUTOCONVERT",
  "currency": "KES",
  "net_amount": "13050.00",
  "source": "ONCHAIN",
  "external_reference": "0xabc123..."
}
FieldTypeDescription
flowstringAUTOCONVERT, HOLD, or DIRECT_CREDIT
currencystringCurrency of credited amount (e.g. KES)
net_amountstringNet amount after fees (decimal)
sourcestringSource type; ONCHAIN
external_referencestring | nullOn-chain transaction hash

deposit.failed — Planned

Fired when deposit processing fails terminally.
FieldTypeDescription
tx_hashstringOn-chain transaction hash
reason_codestringEQX-normalised failure reason code

Customer Verification

customer.verification.approved — Planned

Fired when a customer’s KYC/KYB is approved.
FieldTypeDescription
user_idstringEQX user ID
verification_levelstringTier achieved (e.g. BASIC, ENHANCED)
approved_atstringISO 8601 approval timestamp

customer.verification.rejected — Planned

Fired when a customer’s KYC/KYB is rejected.
FieldTypeDescription
user_idstringEQX user ID
reason_codestringEQX-normalised rejection reason code

customer.verification.review_required — Planned

Fired when a customer’s verification requires manual review.
FieldTypeDescription
user_idstringEQX user ID
review_reasonstringReason the case was escalated