Skip to main content
Onramp lets your customers convert fiat currency into cryptocurrency. This guide covers the full implementation from customer creation to crypto settlement.

What is Onramp?

Onramp lets your customers convert fiat currency (AUD, EUR, GBP, SGD ,USD and Other currencies) into cryptocurrency (USDT, USDC ). The flow works like this:
  1. Customer sends fiat to a virtual account
  2. Coinut detects the deposit
  3. Coinut executes the trade
  4. Crypto arrives at the customer’s wallet or your designated wallet address

Architecture

Step-by-Step Implementation

1

Create Customer

Call POST /customer/create with name, email, type="DEPOSITOR", and isIndividual=true.
Store the returned customerId. The customer receives a KYC link via email to complete identity verification.
2

Wait for KYC Approval

Listen for the CUSTOMER_APPROVED webhook event. You can also poll GET /customer/detail to check status.Customer status transitions: CREATEDPENDINGAPPROVED | REJECTED
3

Create Virtual Account

Call POST /virtual-account/create with customerId and currency (AUD, EUR, GBP).For AUD accounts, optionally include a whitelist to pre-register allowed senders.Store all returned VA banking details (PayID, BSB, account number, IBAN, etc.).
4

Add Crypto Address

Call POST /crypto-address/add with:
  • customerId
  • currency="USDT"
  • address — the customer’s wallet address
  • label — a display label
  • networkETH for ERC-20 or TRX for TRC-20
Store the returned crypto address ID. You’ll need it for the autoramp flow.
5

Create Autoramp Flow

Call POST /autoramp-flow/onramp with the fiat source and crypto destination:
This links the virtual account deposits to automatic crypto conversion.
6

Display VA to Customer

Show the virtual account details in your UI:
  • AUD: Display PayID (e.g., john.doe@example.com) and BSB + Account Number
  • EUR: Display IBAN and SWIFT/BIC
  • GBP: Display IBAN and Sort Code
  • USD: Display IBAN and Sort Code
  • SGD: Display IBAN and Sort Code
  • other currencies : Contact Coinut support for the exact banking fields
Generate a QR code for PayID to simplify mobile banking transfers.
7

Monitor Deposits

Listen for webhooks:
  • DEPOSIT_RECEIVED — funds detected
  • DEPOSIT_APPROVED — funds cleared
Or poll GET /deposit/list with the customer ID.
8

Track Trade

After deposit approval, listen for:
  • TRADE_CREATED — trade initiated
  • TRADE_SETTLED — trade complete, crypto sent
Or poll GET /trade/list.
9

Confirm Settlement

The TRADE_SETTLED webhook includes txHash. Use it to verify the crypto transaction on-chain:
10

Confirm Settlement

The TRADE_SETTLED webhook includes txHash. Use it to verify the crypto transaction on-chain:

Complete Code Example

Use the externalId field when creating customers to link Coinut records with your internal user system. This makes reconciliation and webhook handling much simpler.

Environment

Use small amounts for testing (e.g., 10-50 AUD equivalent). Set up webhook testing with a local tunnel:

Go-Live Checklist

  • KYC flow tested end-to-end
  • All webhook events handled (CUSTOMER_APPROVED, DEPOSIT_RECEIVED, DEPOSIT_APPROVED, TRADE_SETTLED)
  • Error handling implemented for API failures and timeouts
  • Retry logic with exponential backoff for idempotent requests
  • Monitoring dashboards set up for deposit and trade volumes
  • IP whitelist configured in Partner Dashboard
  • Webhook signature verification implemented
  • Sandbox testing completed with multiple currencies