Skip to main content

Documentation Index

Fetch the complete documentation index at: https://companyname-a7d5b98e-feature-fumodocs.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Onramp in AppKit covers external flows that bring value into a TON wallet through fiat payment providers or crypto bridge aggregators.

Two external flows

FlowWhat starts in AppKitWhat finishes outside AppKit
Fiat onrampA provider quote and hosted payment URL.Fiat payment, KYC, provider settlement, and delivery to the TON address.
Crypto onrampA bridge quote and source-chain deposit instructions.Source-chain deposit, bridge processing, status updates, and TON delivery.
Both flows use the same manager and provider idea as other AppKit integrations. The manager gives the app one surface to ask for quotes; the provider owns payment pages, bridge routes, fees, limits, and completion status.

Fiat onramp

A fiat onramp sends the user to a hosted provider page. AppKit can collect quotes and produce the URL for Mercuryo, MoonPay, TON Pay, or another registered provider, but it does not process card payments or perform KYC. The redirect is the beginning of an external process. The selected wallet address may be the destination, but wallet state alone is not the completion source for the provider flow.
import { buildOnrampUrl, getOnrampQuote } from '@ton/appkit';

const quote = await getOnrampQuote(appKit, {
  fiatCurrency: 'USD',
  cryptoCurrency: 'TON',
  fiatAmount: '100',
  destinationAddress: wallet.getAddress().toString(),
});

const url = await buildOnrampUrl(appKit, { quote });
window.location.assign(url);

Crypto onramp

A crypto onramp starts with bridge intent: a source chain, a source asset, and a TON destination. AppKit asks the provider for a quote, creates a deposit, and exposes the chain-specific instructions needed to fund it. Deposit addresses, memos, source-chain confirmations, bridge timing, and refunds are provider concerns. AppKit surfaces status so the app can track progress without pretending to move funds itself.
import { createCryptoOnrampDeposit, getCryptoOnrampQuote, getCryptoOnrampStatus } from '@ton/appkit';

const quote = await getCryptoOnrampQuote(appKit, {
  fromChain: 'ethereum',
  fromToken: 'USDT',
  toToken: 'TON',
  amount: '50',
  destinationAddress: wallet.getAddress().toString(),
});

const deposit = await createCryptoOnrampDeposit(appKit, { quote });
const status = await getCryptoOnrampStatus(appKit, { depositId: deposit.id });

Tips

  • Treat a hosted URL or deposit instruction as the start of a long-running provider process.
  • Verify completion through provider status, not wallet state alone.
  • Surface provider fees, limits, and timing as provider data rather than guaranteed outcomes.