Skip to main content
An order is the core unit of work in CoinVoyage. Every payment, whether a user deposits funds to a wallet, a merchant collects a sale, or a merchant issues a refund, is represented as an order. You create one before showing the payment UI, and CoinVoyage updates it as payment moves through detection, confirmation, execution, and settlement.

Order modes

CoinVoyage exposes SALE and DEPOSIT as direct create modes. REFUND, SWAP, and FEE_CLAIM are created through dedicated endpoints or platform workflows.
A DEPOSIT order moves funds directly to a wallet address you specify on a target chain. Use this when a user is topping up a wallet, funding an account, or making a transfer where you control the destination address.
DEPOSIT orders do not require an API secret for authorization. You can create them with only your API key.

Order statuses

Your webhook handler and polling logic should account for each lifecycle state.
Webhook subscription event types and delivered payload values use uppercase ORDER_* identifiers, such as ORDER_COMPLETED.
The typical happy-path progression is:
Failure paths branch to EXPIRED, REFUNDED, FAILED, or PARTIAL_PAYMENT depending on where the problem occurs.

Continue a Pay to Address partial payment

For Pay to Address, PARTIAL_PAYMENT is recoverable. Keep fulfillment paused and use order.payment.funding.remaining_amount to show the amount still due. Additional deposits are accumulated in order.payment.funding.transactions; fulfill only after the order reaches COMPLETED.
This behavior applies only to Pay to Address. Wallet, card, and other payment methods do not support additional deposits after PARTIAL_PAYMENT.

Order metadata

You can attach structured metadata when you create an order. Metadata is visible in the dashboard and included in webhook payloads, making it useful for reconciliation, analytics, and displaying order context to the user.

Items

Use the items array to describe what the user is paying for. Each item can include a name, description, image URL, quantity, and unit price.

Refund details

For refunds, populate the refund object to record the reason and amount being refunded:

Custom fields

You can add custom top-level fields to carry your own data, such as customer IDs, order references, or campaign tags.
Use stable internal IDs in metadata so webhook handlers can reconcile CoinVoyage orders back to your own records without an extra lookup.