Skip to navigation

Submit or track a signed transaction

Submit or track a signed transaction.

Credential: Customer session or partner secret

Before you call

  • A customer session, or an owning partner server credential without Origin.
  • Use the original preparationId and the customer’s registered wallet.
  • Keep the signed bytes and any known hashes if you need to recover an uncertain submission.
  • Set an Idempotency-Key and reuse it for an identical retry.

Submits a signed transaction, or reports a transaction that your wallet already sent, for a prepared transaction. Send the preparationId, exactly one of signedTransaction or transactionHash, and an Idempotency-Key. Use the owning customer session, or an authorized partner server credential without an Origin header.

Signed transactions. signedTransaction must be a serialized EIP-1559 transaction from the registered wallet. Its chain, destination, calldata and zero value must match the prepared transaction. The wallet fills in the nonce, gas and fees, so use its pending nonce. A signature over a UserOperation is not a serialized transaction. Before it broadcasts, Sinbad checks the nonce and the native balance, then simulates the call. A native gas shortage returns 400 INSUFFICIENT_BALANCE with details.kind: NATIVE_GAS, asset: POL, the chainId, and the required, current and missing amounts in wei and in POL. A stale nonce returns 409 CONFLICT first. A failed simulation or a temporary network failure can return a generic 503 UPSTREAM_ERROR: check the allowance, the balance and the trade state before you retry identical bytes.

Transactions sent elsewhere. For a transaction executed outside Sinbad, including smart-account execution, report the included blockchain transactionHash, not a userOpHash. Partners arrange their own wallet execution and gas funding or sponsorship. An escrow hash report can start tracking before a receipt is available, and returns 202 with PENDING_CONFIRMATION. A hash report for a trade action that is unavailable, or below the required confirmation depth, can return 502 UPSTREAM_ERROR: retry the same report, and do not broadcast again. The evidence must match the prepared escrow or action and its participants.

Idempotency. An Idempotency-Key contains 8 to 128 letters, digits, underscores or hyphens. It binds the prepared transaction and its hash for 30 days. Reusing a bound key with a different prepared transaction or hash returns 409 CONFLICT. Accepted signed transactions, and transactions for other purposes, stay bound to their hash. After a definite failure, request a new prepared transaction if the step is still allowed. Track a pending or uncertain transaction, and never replace one just because it is slow.

Correcting a wrong escrow hash. If you reported the wrong hash for an escrow transaction that your wallet sent, report the correct included transactionHash for the same preparationId with a new key. Sinbad accepts the correction only after a successful receipt at the required confirmation depth proves that exact checkout. Unavailable or unconfirmed evidence returns 502, invalid evidence cannot replace tracking, and confirmed tracking cannot be replaced. Original reports that Sinbad already accepted then return the current result.

After a 202. A 202 means tracking has started, not that funding is confirmed. Poll transaction.status and the breakdown. trade stays null until funding is confirmed. If wallet escrow tracking stays unresolved for 24 hours, it becomes REVIEW_REQUIRED, and the customer’s open trade stays held. Once Sinbad confirms on chain that an unfunded breakdown expired, tracking can end as EXPIRED. Late verified evidence can still reconcile wallet escrow tracking that is not confirmed. Signing expiry does not stop confirmation tracking. Trade action transactions have expiresAt: null, and approvals and escrow transactions keep the breakdown’s deadline.

Confirm with Sinbad that this endpoint is enabled in your environment.

Errors

StatusCodeWhat to do
400VALIDATION_ERRORCorrect the fields reported in details before retrying.
401UNAUTHENTICATEDCreate a new customer session or use a valid server credential.
403FORBIDDENCheck credential ownership, integration and the supplied Origin.
404NOT_FOUNDCheck the resource ID. A resource that belongs to someone else also returns 404.
409CONFLICTRead the current state again before you prepare or retry.
502UPSTREAM_ERRORRetry with backoff and quote requestId if it persists. For transaction reports, retry the same hash without sending another transaction.
503UPSTREAM_ERRORRetry with backoff; preserve the same idempotency key for a repeated mutation.
400INSUFFICIENT_BALANCEAdd POL when details.kind is NATIVE_GAS, then retry the identical signed bytes while the prepared transaction is valid.
409INSUFFICIENT_LIQUIDITYThe BUY merchant no longer has enough liquidity. Recover any transaction you already submitted before you ask for a new offer.
409CONFLICTdetails.reason ACTIVE_TRADE_EXISTS means the customer already has a trade, or a breakdown with a submitted escrow transaction, on that side. Show the existing trade, or wait for it to finish. A breakdown with no submitted escrow transaction does not cause this: a new idempotency key replaces it.

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

OR
AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Headers

Idempotency-KeystringRequiredformat: "^[A-Za-z0-9_-]{8,128}$"

Request

This endpoint expects an object.
objectRequired
OR
objectRequired

Response

Durable submission/tracking result with server-derived or verified hash.

transactionobject
tradeobject or map from strings to any

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
409
Conflict Error
502
Bad Gateway Error
503
Service Unavailable Error