Skip to main content

Event Types

Daya Pro sends webhooks for the following trading events:
EventTerminal?Description
order.createdNoOrder accepted by matching engine
order.filledYesOrder completely filled
order.partially_filledNoOrder partially filled, still open
order.cancelledYesOrder cancelled
order.rejectedYesOrder rejected
trade.executedN/ATrade executed for your order
deposit.completedN/AA deposit settled to your Daya Pro balance

Order Events

All order events share these common fields in the data object:
id
string
required
Unique order identifier (UUID)
symbol
string
required
Trading pair (e.g., USD-NGN)
side
string
required
Order side: buy or sell
type
string
required
Order type: market or limit
status
string
required
Order status
price
string
Limit price (omitted for market orders)
quantity
string
required
Total order quantity
filled_quantity
string
required
Quantity filled so far
executed_price
string
Volume-weighted average execution price (present when partially or fully filled)
base_asset
string
required
Base asset of the trading pair (e.g., USD)
quote_asset
string
required
Quote asset of the trading pair (e.g., NGN)
created_at
string
required
ISO 8601 timestamp when order was created
updated_at
string
required
ISO 8601 timestamp when order was last updated

order.created

Sent when a new order is accepted by the matching engine. Status: open

order.filled

Sent when an order is completely filled. Status: filled Additional field:
  • executed_price - Volume-weighted average execution price

order.partially_filled

Sent when an order is partially filled but still has remaining quantity. Status: partially_filled Additional field:
  • executed_price - Average execution price so far

order.cancelled

Sent when an order is cancelled. Status: cancelled Additional field:
cancelled_at
string
ISO 8601 timestamp when cancelled

order.rejected

Sent when an order is rejected. Status: rejected Additional field:
rejection_reason
string
Reason for rejectionValues:
  • insufficient_balance - Not enough funds
  • invalid_price - Price outside allowed range
  • invalid_quantity - Quantity below minimum or above maximum
  • market_closed - Market not accepting orders
  • rate_limit_exceeded - Too many orders

Trade Events

trade.executed

Sent when a trade is executed involving your order.
You may receive multiple trade.executed events for a single order if it fills across multiple price levels or counterparties.
id
string
required
Unique trade identifier (UUID)
order_id
string
required
Your order ID that was filled
symbol
string
required
Trading pair
side
string
required
Your side in this trade: buy or sell
is_maker
boolean
required
Whether you were the maker in this trade
  • true - Your order was resting on the order book (maker)
  • false - Your order matched against resting orders (taker)
price
string
required
Execution price
quantity
string
required
Trade quantity
total_value
string
required
Total value in quote currency
fee
string
required
Trading fee charged
base_asset
string
required
Base asset of the trading pair
quote_asset
string
required
Quote asset of the trading pair
counterparty_order_id
string
required
The order ID of the counterparty in this trade
executed_at
string
required
ISO 8601 timestamp of execution

Deposit Events

deposit.completed

Sent when a deposit settles to your Daya Pro balance. Useful for triggering downstream ledger updates without polling.
Deposit events fire only on the terminal completed state. There is no deposit.created or deposit.failed for this category in v1 — failures and pending events are not delivered to webhooks.
id
string
required
Deposit transaction identifier
type
string
required
Always deposit
method
string
required
Funding rail used. Examples: bank_transfer, onchain
status
string
required
Always completed for this event
amount_ngn
string
required
Settled amount in NGN as a decimal string
fee_amount_ngn
string
Fee charged in NGN, if any
currency
string
required
Currency code of the original deposit (e.g. NGN, USDT)
payment_provider
string
Underlying provider that settled the deposit (e.g. flutterwave)
provider_transaction_id
string
Provider-side reference for reconciliation
tx_ref
string
Transaction reference (when provider supplies one)
originator_name
string
Name on the source bank account, when available
matching_reference
string
Internal reference used to attribute the deposit to your account
reference
string
User-supplied or generated reference shown on statements
narration
string
Free-form narration from the source institution
description
string
Human-readable summary
created_at
string
required
ISO 8601 timestamp when the deposit was first observed
completed_at
string
ISO 8601 timestamp when the deposit finished settling

Order Status Flow

                    +---> rejected
                    |
placed ---> created +---> filled
                    |
                    +---> partially_filled ---> filled
                    |                      |
                    |                      +---> cancelled
                    |
                    +---> cancelled

Next Steps

Webhook Overview

Delivery guarantees and implementation

Signature Verification

Verify webhook authenticity