Transaction Types & Statuses

Mercuryo transactions are composed of multiple linked operations. Each operation type has its own lifecycle. This page describes all transaction types, their statuses, and how they relate to each other.


How Transactions Are Identified

In Callbacks

Transactions are identified by the combination of type + payment_method fields.

type payment_method Description
buy card Purchase with a payment card
buy mobile_pay Purchase with Apple Pay or Google Pay
buy invoice Invoice Payment (APM, e.g., Revolut Pay)
sell card Sell to external card
withdraw Crypto sent to user's wallet
deposit Crypto received by Mercuryo

In API Polling

When using GET /v1.6/sdk-partner/transactions, transactions are returned as objects where the key is the type:

{
  "data": [
    {
      "buy": {
        "id": "0de85a1545a175145",
        "transaction_id": "0de85a15474d42563"
      }
    }
  ]
}

API polling type names:

Type Description
buy Purchase with card
mobile_pay Purchase with Apple Pay / Google Pay
buy_acquirer Invoice Payment (APM)
sell Sell crypto for fiat
withdraw Send crypto to user wallet
deposit Receive crypto to Mercuryo wallet

Card Payment (Buy with Card)

Triggered when a user purchases crypto with a bank card.
On success, automatically creates a withdraw transaction to send crypto to the user.

Identify: Callback: type=buy, payment_method=card | API: type=buy

Status Type Description
new Intermediate Payment data entered, awaiting processing
pending Intermediate Card verification and 3D Secure in progress
order_scheduled Intermediate Payment authorized, awaiting KYC verification
descriptor_failed Intermediate Card verification check failed
failed_exchange Intermediate Exchange request failed
paid Final Transaction successfully completed
order_failed Final Declined by card issuer / acquirer
cancelled Final Cancelled (funds returned if charged)

State transitions:

From To Trigger
new pending card verification started
new order_failed bank system error
pending order_scheduled payment authorized, KYC required
pending descriptor_failed card verification check failed
pending failed_exchange exchange error
pending order_failed payment rejected
pending cancelled system cancelled
order_scheduled paid KYC passed or not required
order_scheduled failed_exchange exchange error
order_scheduled cancelled system cancelled
descriptor_failed cancelled system cancelled
failed_exchange cancelled system cancelled

Mobile Payment (Apple Pay / Google Pay)

Streamlined purchase flow using mobile payment systems.
On success, automatically creates a withdraw transaction.

Identify: Callback: type=buy, payment_method=mobile_pay | API: type=mobile_pay

Status Type Description
new Intermediate Payment data entered, awaiting processing
pending Intermediate Payment verification and processing
order_scheduled Intermediate Payment authorized, awaiting KYC
failed_exchange Intermediate Exchange request failed
paid Final Successfully completed
order_failed Final Declined by payment provider
cancelled Final Cancelled (funds returned if charged)

State transitions:

From To Trigger
new pending payment processing started
new order_failed bank system error
pending order_scheduled order queued
pending failed_exchange exchange error
pending order_failed payment rejected
pending cancelled system cancelled
order_scheduled paid KYC passed or not required
order_scheduled failed_exchange exchange error
order_scheduled cancelled system cancelled
failed_exchange cancelled system cancelled

Invoice Payment (APM)

Alternative payment methods (e.g., Revolut Pay, bank transfer).
On success, automatically creates a withdraw transaction.

Note: Status names differ between Callbacks and API Polling for this type.

Identify: Callback: type=buy, payment_method=invoice | API: type=buy_acquirer

Callback Statuses

Status Type Description
payment_initiated Intermediate Payment request created, redirect URL sent to user
refund_in_progress Intermediate Refund being processed
completed Final Successfully completed
failed Final Processing error
cancelled Final Cancelled (usually due to timeout)
refunded Final Money successfully refunded

State transitions (callbacks):

From To Trigger
payment_initiated completed successfully processed
payment_initiated failed processing error
payment_initiated cancelled system cancelled
payment_initiated refund_in_progress refund initiated
refund_in_progress refunded refund completed

API Polling Statuses

Status Type Description
new Intermediate Transaction created
payment_received Intermediate Provider received user's payment
refund_in_progress Intermediate Refund being processed
completed Final Successfully completed
failed Final Processing error
cancelled Final Cancelled
refunded Final Refunded

State transitions (API polling):

From To Trigger
new payment_received user completed payment
new failed processing error
new cancelled system cancelled
payment_received completed successfully processed
payment_received refund_in_progress refund initiated
payment_received cancelled system cancelled
refund_in_progress refunded refund completed

Sell

User sells crypto to receive fiat to their payment card.

Identify: Callback: type=sell | API: type=sell

Creates sell → user sends crypto → creates deposit → updates sell for payout. On failure: creates withdraw to return crypto.

Status Type Description
new Intermediate Sell request created (Phase 1: payout address shown; Phase 2: crypto received, preparing payout)
pending Intermediate Payout processing started
succeeded Final Payout completed
failed Final Payout failed (crypto returned to user)
cancelled Final Cancelled (crypto returned to user)

State transitions:

From To Trigger
new pending processing started
pending succeeded payout completed
pending failed processing error
pending cancelled system cancelled

Deposit

Service transaction created automatically when a user sends crypto for a sell operation.

Identify: Callback: type=deposit | API: type=deposit

Status Type Description
pending Intermediate Awaiting blockchain confirmations
completed Final Deposit confirmed

State transitions:

From To Trigger
pending completed deposit verified

Withdraw

Service transaction created automatically in two cases:

  1. After a successful buy (including buy+spend) — to send purchased crypto to the user's wallet.
  2. After a failed sell (any variant) — to return crypto to the user.

Identify: Callback: type=withdraw | API: type=withdraw

Status Type Description
new Intermediate Withdrawal created, awaiting processing
pending Intermediate Verification in progress
completed Final Crypto successfully sent to blockchain
failed Final Withdrawal failed
cancelled Final Cancelled by system

State transitions:

From To Trigger
new pending processing started
pending completed successfully processed
pending failed processing error
pending cancelled system cancelled

Transaction Relationships

On-Ramp (buy / mobile_pay / buy_acquirer)
  └─ On success → creates withdraw (send crypto to user)

Off-Ramp (sell, payment_method=card)
  ├─ Phase 1: sell created (payout address shown)
  ├─ Phase 2: deposit created (user sends crypto)
  ├─ Phase 3: sell updated for payout
  └─ On failure → creates withdraw (return crypto to user)

For Spend Card transaction types (buy+spend, fiat_deposit+spend_card_topup, sell+spend_card_topup, sell+spend_card_open), see Spend Card → Transaction Types.