> ## Documentation Index
> Fetch the complete documentation index at: https://developer.fin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction - Fin Crypto Orchestration

Fin provides payment infrastructure that lets platforms accept crypto deposits from multiple sources — exchange wallets, external wallets, and more — with built-in fee handling, token conversion, and multi-chain delivery.

Three APIs power the entire flow: **Quote Estimation**, **Create Order**, and **Get Payment Details**.

***

## Payment Sources

Fin currently supports three deposit sources, with more on the way.

| Source              | How It Works                                                                                                                                    | Status      |
| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------- | :---------- |
| **Bybit Pay**       | User scans a QR code from their Bybit account. Funds are deducted and routed through Fin to the destination wallet.                             | Live        |
| **Kraken Pay**      | User pays from their Kraken account. Same flow as Bybit Pay — funds route through Fin to the destination.                                       | Integrating |
| **External Wallet** | User sends from any wallet — exchange, dApp, hardware, mobile. Fin receives the deposit, deducts a fee, and forwards to the destination wallet. | Live        |
| **Clipper**         | Additional exchange payment source.                                                                                                             | Coming Soon |

***

## Use Cases

### 1. Prediction Market Deposits

A prediction market platform wants to let users deposit funds directly from their exchange accounts or external wallets.

**What the user does:**

* Opens the deposit flow on the platform
* Selects Bybit Pay, Kraken Pay, or pays from an external wallet
* Confirms the transaction

**What happens under the hood:**

1. Platform calls the **Quote Estimation API** to get the conversion rate and fees for the deposit amount.
2. User confirms. Platform calls the **Create Order API** to initiate the transaction.
3. For exchange pay (Bybit/Kraken): user scans a QR code to authorize payment from their exchange account. For external wallets: user sends to a provided deposit address.
4. Fin receives the funds, deducts the platform fee, and credits the destination wallet.
5. Platform calls **Get Payment Details API** to confirm settlement and update the user's balance.

**Supported tokens and chains:**

* Pay with USDC → receive USDC on Solana, Base, or Ethereum
* Pay with USDC → receive USDC on Polygon
* Additional tokens and chains can be added based on platform requirements

***

### 2. Multi-Chain Wallet Top-Ups

A platform wants to let users top up their account balance with a range of tokens across different chains.

**What the user does:**

* Initiates a deposit on the platform
* Chooses their preferred token and payment method
* Sends funds from any external wallet

**What happens under the hood:**

1. **Quote Estimation API** returns the rate, fee, and expected delivery amount for the selected token pair.
2. **Create Order API** generates the deposit address or QR code.
3. User sends funds. Fin receives the deposit, handles any conversion, deducts the fee, and delivers to the destination wallet.
4. **Get Payment Details API** confirms the transaction status.

**Supported tokens and chains:**

* Bitcoin on the Bitcoin network
* ETH on Ethereum
* USDT on Tron
* USDC on Solana, Base, Ethereum

***

### 3. Cross-Token Deposits

A platform accepts a specific token (e.g., PYUSD), but users hold a different token (e.g., USDT on Bybit).

**What the user does:**

* Initiates a deposit
* Pays with USDT from Bybit Pay
* Receives PYUSD in their platform wallet

**What happens under the hood:**

1. **Quote Estimation API** returns the USDT → PYUSD conversion rate and fees.
2. **Create Order API** initiates the order and generates the Bybit Pay QR code.
3. User scans the QR code. USDT is deducted from their Bybit Pay account.
4. Fin converts USDT to PYUSD, deducts the fee, and deposits PYUSD into the user's platform wallet.
5. **Get Payment Details API** confirms delivery.

**Key point:** The user pays in whatever token they hold. The platform receives exactly the token it needs. Fin handles the conversion in between.

***

## API Overview

| API                     | Purpose                                                                                                              |
| :---------------------- | :------------------------------------------------------------------------------------------------------------------- |
| **Quote Estimation**    | Returns the conversion rate, fees, and estimated delivery amount for a given token pair and amount.                  |
| **Create Order**        | Initiates the deposit transaction. Returns a QR code (for exchange pay) or a deposit address (for external wallets). |
| **Get Payment Details** | Returns the current status of an order — pending, completed, or failed — along with transaction details.             |

***

## Supported Assets

| Token | Chains                          |
| :---- | :------------------------------ |
| USDC  | Solana, Base, Ethereum, Polygon |
| USDT  | Tron                            |
| ETH   | Ethereum                        |
| BTC   | Bitcoin                         |
| PYUSD | Solana                          |

This is not an exhaustive list. Fin can add support for additional tokens and chains based on platform requirements.

***

## How Fees Work

Fin deducts a platform-defined fee from each transaction before delivering funds to the destination wallet. The fee is surfaced to the user upfront via the Quote Estimation API — no hidden costs.

***

## Integration Flow for receiving payments

```text theme={null}
1. User initiates deposit on your platform
2. Your backend calls Quote Estimation API → show rate + fees to user
3. User confirms → your backend calls Create Order API
4. User pays (QR scan or wallet transfer)
5. Fin receives funds → deducts fee → delivers to destination wallet
6. Your backend polls Get Payment Details API → updates user balance
```

***

## Flow of APIs for Crypto transfer to external wallets:

<Frame>
  <img src="https://mintcdn.com/fincom/WtfYSMdXM5Bi2aka/images/Fin_crypto_transfer_flow.png?fit=max&auto=format&n=WtfYSMdXM5Bi2aka&q=85&s=892406d858de6c98c9128191a81f5eb4" alt="Fin Crypto Transfer Flow" width="1440" height="1532" data-path="images/Fin_crypto_transfer_flow.png" />
</Frame>

\
**Step 1: Get crypto wallets for a given customer**

* Call the [Get Customer Details](https://developer.fin.com/api-reference/customers/get-customer-wallets) API to get the wallet addresses assigned to the customer along with their balances.
* Fin provisions wallets for the following chains: Polygon, Ethereum, and Solana. (Save wallet IDs to use in quote later)
* You will receive crypto in these wallets from the external sources.

\
**Step 2: Create an external crypto wallet to withdraw crypto from Fin wallets**

* Call the [Create beneficiary V3](https://developer.fin.com/api-reference/beneficiaries/create-beneficiary-v3) endpoint with the fields required for external crypto. (Save beneficiary ID to use in quote later)
* Follow the exact payload structure given in the request example.
* Monitor webhook for beneficiary approval ([beneficiary.created](https://developer.fin.com/api-reference/webhooks/beneficiary-created), [beneficiary.status](https://developer.fin.com/api-reference/webhooks/beneficiary-status)). It's almost instant.
* You can check beneficiary details using [Fetch beneficiary details V2](https://developer.fin.com/api-reference/beneficiaries/fetch-beneficiary-details-v2)

\
**Step 3: Monitor crypto deposit in the Fin issues wallet**

* Webhook event to monitor: `transaction.status`
  * TransactionType: `CRYPTO_DEPOSIT`
  * Status: `FUND_RECEIVED`

\
**Step 4: Create a quote to get a quote estimation**

* Call the [Create quote](https://developer.fin.com/api-reference/transactions/create-quote) with `beneficiary_id` and `crypto_wallet_id` .
* You will get a quote estimation and expiry time

\
**Step 5: Execute the quote before it expires**

* Call [Execute quote](https://developer.fin.com/api-reference/transactions/execute-quote) with the `quote_id` from the former response

\
**Step 6: Monitor the webhook for withdrawal confirmation**

* Webhook event to monitor: `transaction.status`
  * TransactionType: `CRYPTO_WITHDRAWAL`
  * Status: `FUND_REQUEST_SUCCESS`
