Skip to main content
The Kraken integration allows a developer to allow a Krak user to deposit funds from their Krak app to their desired destination wallet address.
Supported Source CurrencySupported Source RailSupported Destination CurrencySupported Destination RailQuote EstimationMinimum Order LimitMaximum Order LimitEstimated Settlement Time (once deposit received)Settlement Configuration (settlment_via)Fee rebalancing capability (rebalance_fee)
ANY ASSET (Read below)KRAKENPYUSDSOLANATBATBATBAONE_TO_ONEtrue / 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.
StepWhat happens
1Your system calls the Create Order API with destination.currency:PYUSD and order_amount: 100.
2The customer opens the payment link in their app. Their account holds 150 USDC and 0.002 BTC — no PYUSD.
3The customer selects USDC as their funding source and confirms.
4The payment provider converts ~100 PYUSD worth of USDC → PYUSD internally, applying a conversion spread.
5You 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
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"
  }
}
'

Kraken Order creation

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"
      }
    }
  }
}
'
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.