Skip to content

Stuck trades ​

Three statuses are transitional and should last seconds:

StatusNormally means
PENDING_ESCROWThe seller's lock transaction is being submitted
RELEASINGThe release transaction is being submitted
REFUNDINGThe refund transaction is being submitted

Why a trade can get stuck ​

If Horizon times out or the server restarts mid-operation, Nexlm doesn't know whether the Stellar transaction landed. It deliberately leaves the trade in its transitional state rather than guessing.

Automatic reconciliation ​

A background job runs every minute and picks up trades that have been in one of these states for more than 2 minutes. Stellar transactions are built with a 60-second timeout, so after that point they can no longer land.

For each trade it reads the escrow account and its transaction history:

StatusOn-chain findingAction
PENDING_ESCROWEscrow exists with a lock transactionMarks the trade ESCROW_LOCKED and starts the payment window
PENDING_ESCROWEscrow account doesn't existCancels with reason ESCROW_FAILED and reopens the order
RELEASINGEscrow merged, release transaction foundCompletes the trade with that hash
REFUNDINGEscrow merged, refund transaction foundCancels the trade with that hash
RELEASING / REFUNDINGEscrow still existsRestores PAID (if the buyer had paid) or ESCROW_LOCKED so it can be retried

When to step in ​

If a trade stays stuck for more than ~5 minutes, check the server logs for Trade reconciliation failed or Escrow closed without a recognised transaction, then inspect the escrow address on Stellar Expert. See the developer page on reconciliation for details.

Nexlm is a peer-to-peer facilitator and never holds customer Naira.