<!-- ZenPays documentation · https://docs.zenpayz.com/docs/api-reference/checkout -->

# On-Ramp (Buy)

Buy crypto with fiat — checkout sessions, provider selection, quotes, rates, and configuration. Access via `zenpays.checkout`.

## Widget Integration

### generateWidgetUrl

Generate a signed widget URL for embedding on-ramp in your site.

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

```typescript
const { url } = await zenpays.checkout.generateWidgetUrl({
  mode: 'buy',
  defaultFiat: 'usd',
  defaultCrypto: 'btc_bitcoin',
  defaultAmount: 100,
  networkWallets: 'ethereum:0x123...',
  successRedirectUrl: 'https://yoursite.com/success',
  failureRedirectUrl: 'https://yoursite.com/cancel',
  email: 'user@example.com',
})
// Embed url in iframe or redirect user
```

  </TabItem>
  <TabItem value="python" label="Python">

```python
result = zenpays.checkout.generate_widget_url({
    "mode": "buy",
    "defaultFiat": "usd",
    "defaultCrypto": "btc_bitcoin",
    "defaultAmount": 100,
    "networkWallets": "ethereum:0x123...",
    "successRedirectUrl": "https://yoursite.com/success",
    "failureRedirectUrl": "https://yoursite.com/cancel",
})
```

  </TabItem>
</Tabs>

---

### selectProvider

Select the optimal provider for an on-ramp transaction.

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

```typescript
const result = await zenpays.checkout.selectProvider({
  sessionId: 'cs_xxx',
  amount: 100,
  sourceCurrency: 'USD',
  destinationCurrency: 'USDT',
  country: 'US',
})
```

  </TabItem>
  <TabItem value="python" label="Python">

```python
result = zenpays.checkout.select_provider({
    "sessionId": "cs_xxx",
    "amount": 100,
    "sourceCurrency": "USD",
    "destinationCurrency": "USDT",
    "country": "US",
})
```

  </TabItem>
</Tabs>

---

### getProviderWidget

Get the provider widget URL for embedding.

```typescript
const widget = await zenpays.checkout.getProviderWidget('transak', 'cs_xxx')
```

---

### getTransactionStatus

```typescript
const status = await zenpays.checkout.getTransactionStatus('txn_xxx')
```

---

## Checkout Sessions

### createSession

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

```typescript
const session = await zenpays.checkout.createSession({
  amount: 100,
  currency: 'USD',
  type: 'on_ramp',
  destinationCurrency: 'USDT',
  customerEmail: 'user@example.com',
})
```

  </TabItem>
  <TabItem value="python" label="Python">

```python
session = zenpays.checkout.create_session({
    "amount": 100,
    "currency": "USD",
    "type": "on_ramp",
    "destinationCurrency": "USDT",
})
```

  </TabItem>
</Tabs>

---

### getSession

```typescript
const session = await zenpays.checkout.getSession('cs_xxx')
```

---

### cancelSession

```typescript
const session = await zenpays.checkout.cancelSession('cs_xxx')
```

---

## Ramp Orders

### getRampOrder

```typescript
const order = await zenpays.checkout.getRampOrder('ro_xxx')
```

---

### getRampOrderStatus

```typescript
const status = await zenpays.checkout.getRampOrderStatus('ro_xxx')
// Returns: { orderId, status, updatedAt }
```

---

### updateRampOrder

```typescript
const updated = await zenpays.checkout.updateRampOrder('ro_xxx', {
  walletAddress: '0x123...',
  network: 'ethereum',
})
```

---

## Buy Quotes & Rates

### getBuyQuotes

Get buy quotes for fiat-to-crypto conversion.

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

```typescript
const quotes = await zenpays.checkout.getBuyQuotes({
  source: 'USD',
  destination: 'USDT',
  amount: 100,
  paymentMethod: 'card',
  country: 'US',
})
```

  </TabItem>
  <TabItem value="python" label="Python">

```python
quotes = zenpays.checkout.get_buy_quotes({
    "source": "USD",
    "destination": "USDT",
    "amount": 100,
    "paymentMethod": "card",
    "country": "US",
})
```

  </TabItem>
</Tabs>

---

### getBuyRates

Get exchange rates for multiple crypto destinations.

```typescript
const rates = await zenpays.checkout.getBuyRates({
  source: 'USD',
  destinations: 'USDT,BTC,ETH',
  amount: 100,
})
```

---

### getBuyPrices

Get current crypto prices in fiat.

```typescript
const prices = await zenpays.checkout.getBuyPrices({
  assets: 'BTC,ETH,USDT',
  fiat: 'USD',
  country: 'US',
})
```

---

### createBuyCheckout

Create a buy checkout (fiat to crypto).

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

```typescript
const checkout = await zenpays.checkout.createBuyCheckout({
  intentId: 'ri_1710345678000_a1b2c3d4e5f6g7h8',
  cryptoCurrency: 'USDT',
  chain: 'tron',
  fiatCurrency: 'USD',
  fiatAmount: 100,
  cryptoAmount: 98.5,
  rate: 1.0,
  totalFee: 1.5,
})
// Returns: { intentId, paymentIntentId, checkoutUrl, fiatAmount, fiatCurrency, cryptoAmount, cryptoCurrency, chain, rate, expiresAt }
```

  </TabItem>
  <TabItem value="python" label="Python">

```python
checkout = zenpays.checkout.create_buy_checkout({
    "intentId": "ri_1710345678000_a1b2c3d4e5f6g7h8",
    "cryptoCurrency": "USDT",
    "chain": "tron",
    "fiatCurrency": "USD",
    "fiatAmount": 100,
    "cryptoAmount": 98.5,
    "rate": 1.0,
    "totalFee": 1.5,
})
```

  </TabItem>
</Tabs>

---

## Configuration

### getConfig

Get ramp provider configuration.

```typescript
const config = await zenpays.checkout.getConfig()
```

---

### getSupportedAssets

Get supported crypto and fiat currencies.

```typescript
const assets = await zenpays.checkout.getSupportedAssets({ type: 'buy', country: 'US' })
```

---

### getPaymentMethods

Get payment methods for a source currency.

```typescript
const methods = await zenpays.checkout.getPaymentMethods('USD', {
  destination: 'USDT',
  country: 'US',
})
```

---

### getDefaults

Get default currencies and amounts per country.

```typescript
const defaults = await zenpays.checkout.getDefaults({ type: 'buy', country: 'US' })
```

---

## Geo & Currency

### detectGeo

```typescript
const geo = await zenpays.checkout.detectGeo()
// Returns: { country, currency, timezone, ... }
```

---

### getBanks

```typescript
const banks = await zenpays.checkout.getBanks('INR')
```

---

### searchBanks

```typescript
const results = await zenpays.checkout.searchBanks('INR', 'HDFC')
```

---

### getCurrencies

```typescript
const currencies = await zenpays.checkout.getCurrencies()
```
