Skip to main content
The pass-through use case is when a developer just want to allow their customers to deposit an asset from one source and receive in a destination wallet address. The developer also has the option to collect revenue within the flow as well.
Check the use cases that it can serve here.
The supported sources and destinations can be found below along with important integration information.
Supported Source CurrencySupported Source RailSupported Destination CurrencySupported Destination RailQuote EstimationMinimum Order LimitMaximum Order LimitEstimated Settlement Time (once deposit received)Settlement Configuration (settlment_via)Rebalance Configuration (rebalance_fee)Default Order Expiry Time
BTCBITCOINBTCBITCOIN0.00005Not applicable yet~ 1 hourFEE_RETENTIONHas to be always false(in roadmap for full support)1 hour
USDTTRONUSDTTRON2Not applicable yet~ 3-5 minsFEE_RETENTIONHas to be always false (in roadmap for full support)1 hour
ETHETHEREUMETHETHEREUM0.001Not applicable yet~ 3-5 minsFEE_RETENTIONHas to be always false (in roadmap for full support)1 hour
For routes where “Fee rebalancing capability” & “Quote estimation” is limited. Fin can enable both upon request of the Developer or Fin will enable themselves if it is in the roadmap.Please send request in your dedicated communication group.

Pass through quote creation:

curl --request POST \
  --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": "PASS_THROUGH",
  "settlement_config": {
    "settlement_via": "FEE_RETENTION",
    "rebalance_fee": false,
    "destination_details": {
      "wallet_address": "SOLANA_WALLET_ADDRESS",
      "currency": "ETH",
      "rail": "ETHEREUM"
    },
    "developer_fee": {
      "fixed": "0.5",
      "percentage": "1"
    }
  }
}
'
For PASS_THROUGH, rebalance_fee has to be always false .

Pass through 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": "PASS_THROUGH",
  "order_info": {
	"external_customer_id": "dcfed3f9-46ad-407b-87ff-3bac7c9c4c38",
    "merchant_trade_no": "841e4ba2-1234-5678-9abc-a2a45de7bd00",
    "order_amount": "100.00",
    "currency": "USDT",
    "rail": "SOLANA",
    "currency_type": "crypto"
  },
  "fin": {
    "settlement_config": {
      "settlement_via": "MARKET_ORDER",
      "destination_details": {
        "wallet_address": "Ox....",
        "currency": "PYUSD",
        "rail": "SOLANA"
      },
      "developer_fee": {
        "fixed": "0.5",
        "percentage": "1"
      }
    }
  }
}
'
order_expiry_time for PASS_THROUGH is configurable per developer but it has to be requested by the developer to Fin and Fin will configure it in their backend.

Important Considerations

About External Customer ID

The external customer ID is required for the pass-through use case. When the same external customer ID is passed in multiple requests, the same deposit wallet address is issued for that customer. For each external customer ID, one wallet address is issued per currency and rail combination. If a wallet address doesn’t exist for an external customer ID, Fin creates a new one and issues it for the order and keeps using it for future orders.

Limits to order creation

For a particular customer there can be only 1 order per currency & rail combination. For example: Customer 1 has an open order of 0.5 BTC.BITCOIN, the customer cannot create another BTC.BITCOIN order until the existing order expires / fails / processed The default order expiry can be found above.

Response Difference for Integration Type

Integration TypeResponse Field
PASS_THROUGHdata.deposit_instruction