Skip to main content
CoinVoyage invoices turn line items and customer details into a hosted crypto payment request. Publishing an invoice creates a linked SALE order, emails the recipient a PDF invoice, and includes a hosted payment link. Settlement follows your organization’s configured settlement currencies and wallets.

Dashboard invoices

Create and send invoices without writing integration code.

Invoices API

Automate drafts, publishing, retrieval, archiving, and listing.

Before you start

  • Configure your organization profile. Its sender details appear on the invoice and customer email.
  • Configure at least one settlement currency and wallet.
  • For API integrations, keep your API secret on the server.

Invoice lifecycle

Published invoices cannot be deleted. Delete is available only for unpublished drafts.

Required publishing fields

Payment and settlement

An invoice response includes:
  • payment_url, the customer-facing hosted invoice link.
  • order_id, the latest linked order ID.
  • orders, the linked order snapshots.
  • published_at and archived_at, the invoice lifecycle timestamps.
Use the linked order status—not invoice timestamps—to decide whether to fulfill goods or services. Fulfill only after the order reaches COMPLETED.

Partial payments

If a customer underpays through Pay to Address, the linked order enters PARTIAL_PAYMENT. The same flow can accept additional deposits until the required amount is received. Funding progress is available under order.payment.funding:
  • required_amount is the total needed.
  • received_amount is the cumulative amount received.
  • remaining_amount is the amount still due.
  • transactions lists every funding deposit.
Keep the invoice unpaid and fulfillment paused until the linked order reaches COMPLETED.
Additional deposits after PARTIAL_PAYMENT are supported only by Pay to Address. Other payment methods require a separate resolution path.

Reconciliation

Store the CoinVoyage invoice ID and linked order ID with your internal invoice record. Process order webhook deliveries idempotently, and use ORDER_COMPLETED as the fulfillment signal.