> ## 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.

# Kraken (Coming Soon - Mid April)

The Kraken integration allows a developer to allow a [Krak](https://www.kraken.com/krak/payments) user to deposit funds from their [Krak](https://www.kraken.com/krak/payments) app to their desired destination wallet address.

| **Supported Source Currency** | **Supported Source Rail** | **Supported Destination Currency** | **Supported Destination Rail** | **Quote Estimation** | **Minimum Order Limit** | **Maximum Order Limit** | **Estimated Settlement Time (once deposit received)** | **Settlement Configuration (**`settlment_via`**)** | Fee rebalancing capability (`rebalance_fee`) |
| :---------------------------- | :------------------------ | :--------------------------------- | :----------------------------- | :------------------- | :---------------------- | :---------------------- | :---------------------------------------------------- | :------------------------------------------------- | :------------------------------------------- |
| ANY ASSET (Read below)        | KRAKEN                    | PYUSD                              | SOLANA                         | ✅                    | TBA                     | TBA                     | TBA                                                   | `ONE_TO_ONE`                                       | `true` / `false`                             |

### Payment settlement with automatic asset conversion

When you create a payment request, you specify the destination asset and amount you want to receive. The paying customer does not need to hold that exact asset in their account.

If the customer's account contains a different asset, the payment provider automatically converts it at the point of payment and settles the exact amount you requested in your chosen destination asset. The conversion spread is borne by the customer, not by you.

This means you always receive exactly what you asked for, regardless of what the customer holds.

### Example

You create a payment request for **100 PYUSD**.

| Step | What happens                                                                                                     |
| :--- | :--------------------------------------------------------------------------------------------------------------- |
| 1    | Your system calls the Create Order API with `destination.currency:PYUSD` and `order_amount: 100`.                |
| 2    | The customer opens the payment link in their app. Their account holds **150 USDC** and **0.002 BTC** — no PYUSD. |
| 3    | The customer selects USDC as their funding source and confirms.                                                  |
| 4    | The payment provider converts \~100 PYUSD worth of USDC → PYUSD internally, applying a conversion spread.        |
| 5    | You receive **100 USDC**. The customer's USDC balance is debited for the equivalent amount plus the spread.      |

### What this means for your integration

* You do not need to know or care what assets your customers hold.
* Always request in your preferred settlement asset. The conversion layer sits entirely on the payment provider's side.
* Conversion fees are the customer's responsibility and are shown to them before they confirm.

Note: The customer can fund the payment from any supported asset in their account, including fiat currencies, stablecoins, and cryptocurrencies. The full list of supported assets depends on the payment provider's availability in the customer's region.

## Kraken Quote creation

For Kraken the quote creation body should look like this

<Tabs>
  <Tab title="ONE_TO_ONE">
    ```json highlight={6,13-16} focus={6,13-16} theme={null}
    curl --request GET \
      --url https://sandbox.api.fin.com/v1/transit/quote \
      --header 'Authorization: Bearer <token>' \
      --header 'Content-Type: application/json' \
      --data '
    {
      "order_amount": "100.00",
      "integration_type": "KRAKEN",
      "settlement_config": {
        "settlement_via": "ONE_TO_ONE",
        "rebalance_fee": false,
        "destination_details": {
          "wallet_address": "....",
          "currency": "USDC",
          "rail": "SOLANA"
        }
      },
      "developer_fee": {
        "fixed": "0.15",
        "percentage": "2.5"
      }
    }
    '
    ```
  </Tab>
</Tabs>

## Kraken Order creation

<Tabs>
  <Tab title="Without Quote ID">
    ```json theme={null}
    curl --request POST \
      --url https://sandbox.api.fin.com/v1/transit/payment \
      --header 'Authorization: Bearer <token>' \
      --header 'Content-Type: application/json' \
      --data '
    {
      "integration_type": "KRAKEN",
      "order_info": {
        "merchant_trade_no": "841e4ba2-...-a2a45de7bd00",
        "order_amount": "100.00",
        "currency": "PYUSD",
    	"rail": "SOLANA",
        "currency_type": "crypto"
      },
      "fin": {
        "settlement_config": {
          "settlement_via": "ONE_TO_ONE",
          "destination_details": {
            "wallet_address": "....",
            "currency": "PYUSD",
            "rail": "SOLANA"
          },
          "developer_fee": {
            "fixed": "0.15",
            "percentage": "2.5"
          }
        }
      }
    }
    '
    ```
  </Tab>

  <Tab title="With Quote ID">
    ```json theme={null}
    curl --request POST \
      --url https://sandbox.api.fin.com/v1/transit/payment \
      --header 'Authorization: Bearer <token>' \
      --header 'Content-Type: application/json' \
      --data '
    {
      "integration_type": "KRAKEN",
      "order_info": {
        "merchant_trade_no": "841e4ba2-...-a2a45de7bd00",
        "quote_id": "76e8bcc0-a6b4-41f7-...-76cfbe910fe3",
        "currency": "PYUSD",
        "rail": "SOLANA",
        "currency_type": "crypto"
      }
    }
    '
    ```
  </Tab>
</Tabs>

<Info>
  `order_info.currency & rail` has to be the same as `destination_detail.currency & rail` this is done to keep the requests symmetric. As mentioned under the above "Payment settlement with automatic conversion" headline, the user is not required to hold the `order_info.currency` . This is just a Fin API convention.
</Info>
