Skip to main content
POST
Submit transaction candidate
Submits an untrusted transactionHash for an optionId:
  • Routing methods always use this endpoint for the payer’s source transaction, across EVM, Solana, Movement, Tron and Bitcoin sources. Stableyard verifies the source transaction and the final settlement.
  • Direct Movement payments require hash submission.
  • Supported direct EVM escrow also accepts the hash. Detection stays automatic (confirmationMode: provider_webhook): submitting the hash only lets Stableyard catch a reverted transfer sooner, and does not credit the Payment.
  • Direct Solana payments are detected automatically and do not use this endpoint. Tron and Bitcoin cannot be direct Payment destinations.
A 202 response means the candidate was accepted for verification.

Authorizations

Authorization
string
header
required

Short-lived browser capability for exactly one payment_* resource. Never place it in a URL.

Path Parameters

paymentId
string
required

The payment_* ID returned when the Payment was created.

Pattern: ^payment_[A-Za-z0-9_-]+$
Example:

"payment_123"

Body

application/json
optionId
string
required
Required string length: 1 - 128
transactionHash
string
required
Required string length: 1 - 256

Response

Transaction accepted for verification

transactionHash
string
required

Canonical EVM/Movement transaction hash, Bitcoin/Tron transaction id, or Solana transaction signature.

Pattern: ^(0x[0-9a-fA-F]{64}|[0-9a-fA-F]{64}|[1-9A-HJ-NP-Za-km-z]{80,90})$
status
enum<string>
required
Available options:
submitted,
verifying,
verified,
rejected,
requires_intervention
failureCode
enum<string> | null
required
Available options:
invalid_payment_binding,
invalid_transaction_hash,
transaction_failed,
invalid_transaction_type,
transaction_hash_mismatch,
invalid_transfer_function,
invalid_transfer_arguments,
asset_mismatch,
destination_mismatch,
transaction_already_used,
transaction_not_confirmed,
transaction_verification_unavailable,
payment_option_missing,
routing_transaction_rejected,
null
submittedAt
string<date-time>
required
verifiedAt
string<date-time> | null
required
purpose
enum<string>

destination_escrow: a direct transfer to the Payment escrow. routing_source: the payer's source transaction for a Routing option. May be omitted on older submissions.

Available options:
destination_escrow,
routing_source