Skip to main content
POST
Submit transaction candidate
Submits an untrusted transactionHash for an optionId:
  • Routing methods always use this endpoint for payer source evidence, across EVM, Solana, Movement, Tron and Bitcoin sources. Stableyard sends the candidate to Routing for canonical source verification and independently verifies final destination settlement.
  • Direct Movement requires hash submission and keeps local chain, token, recipient, amount, finality and non-reuse verification.
  • Supported direct EVM escrow also accepts the hash so Stableyard can inspect the receipt and detect reverted transfers. Its confirmationMode remains provider_webhook: the webhook still owns collection detection, and submitting a hash does not credit the Payment.
  • Direct Solana uses provider-webhook detection and does not support 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

Canonical payment_* identifier. Internal execution identifiers are never accepted by Partner Payment routes.

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>

Omitted for legacy destination-escrow submissions; routing_source identifies payer funding evidence sent to Routing for verification.

Available options:
destination_escrow,
routing_source