Express [v1.4.5] (Prod)

Custom Gas Fee Control added to Create transaction requests API

The Create transaction requests API (/wallet/send-many-transaction) now supports the following optional parameters for gas fee estimation when processing a transaction for EVM chains. This improves transaction confirmation rate and prioritises block inclusion speed over default cost savings by proving more control over gas fee price estimates.

Object/ ParameterDescriptionTypeAccepted Values
feeLevelThe fee level setting used to pay gas fee when processing a transaction for EVM chains. It is configured based on the blockchain network’s traffic. Stringmarket, custom, slow, aggressive
evmCustomFeeUser defined custom fee per transaction. Applicable for EVM chains when feeLevel is  custom. String-
evmCustomFee.maxPriorityFeePerGasEnter fee value in Wei.StringPositive number, example:
“3000000000”
evmCustomFee.maxFeePerGasThe maximum fee (Wei) per unit of gas in a transaction.StringPositive number, example: “20000000000”
📘

Note

  • maxPriorityFeePerGas cannot be greater than maxFeePerGas.
  • The parameter values must be a positive number.

Refer to the Retrieve estimated gas fees and rates API (/get-approx-fees) to get the latest fee rates.

Transaction Lifecycle Timestamp and Metrics added to Transaction API References

The transaction APIs as part of the Express SDK now return additional timeline logs for withdrawal and deposit transactions. The system-level alerts provide insight into the timestamps of a transaction lifecycle to help users keep track of the real-time transaction progress.
The following API references return the timestamps and metrics objects when a transaction is processed in 200 OK responses.

The following table explains the object values:

FieldDescriptionData TypeApplicable Transaction
timestamps.initiatedAtIndicates the time when a transaction is initiated.StringSend transactions
timestamps.signedAtIndicates the time when a transaction is fully approved, i.e., final signature.StringSend transactions
timestamps.broadcastedAtIndicates the time when a transaction is broadcasted on the network.StringSend transactions
timestamps.blockTimestampIndicates the time of a transaction’s on-chain block confirmation. StringSend transactions
timestamps.completedAtIndicates the time when a transaction is fully processed by the Liminal system. StringSend and Receive transactions
timestamps.detectedAtIndicates the time when a transaction is detected by the Liminal system. StringSend and Receive transactions
timestamps.webhookFirstAttemptAtIndicates the time when the final webhook is attempted for the first time.StringSend and Receive transactions
timestamps.webhookDeliveredAtIndicates the time when the final webhook is attempted for the first time. StringSend and Receive transactions
metrics.timeToConfirmInSecIndicates the time (seconds) taken to confirm a transaction on chain. StringSend transactions
metrics.detectionLatencyInSecIndicates the time (seconds) between on-chain confirmation and system detection.StringReceive and Internal transactions
metrics.totalProcessingTimeInSecIndicates the total time taken  (seconds) to process the transaction from when it was initiated to on-chain confirmation.
Send transaction processes the time from when transaction is initated to completed (completedAt - initiatedAt). Receive transaction reports trsnaction from it is completed (completedAt - blockTimestamp)
StringSend and Receive transactions

Response example of a Send transaction:

{
  "timestamps": {
    "initiatedAt": "2026-06-01T10:00:00.000Z",
    "signedAt": "2026-06-01T10:00:05.000Z",
    "broadcastedAt": "2026-06-01T10:00:06.000Z",
    "blockTimestamp": "2026-06-01T10:00:18.000Z",
    "completedAt": "2026-06-01T10:00:18.500Z",
    "detectedAt": "2026-06-01T10:00:01.000Z",
    "webhookFirstAttemptAt": "2026-06-01T10:00:19.000Z",
    "webhookDeliveredAt": "2026-06-01T10:00:19.200Z"
  },
  "metrics": {
    "timeToConfirmInSec": "10",
    "detectionLatencyInSec": null,
    "totalProcessingTimeInSec": "15"
  }
}