---
name: cdp-onramp
description: Creates onramp sessions for fiat-to-crypto purchases, checks user purchase limits, and manages headless orders with sandbox testing support.
---

# cdp-onramp

Onramp sessions, limits, and orders.

## Create session (no enrollment needed)

```
cdp onramp sessions destinationAddress=<address> destinationNetwork=base \
  purchaseCurrency=USDC partnerUserRef=<userId>
```
Returns `.session.onrampUrl` — user opens this in browser to complete purchase.

After user completes payment, poll balance:
```
cdp evm token-balances get base <address>
```
Settlement takes 1-5 minutes.

## Check limits

Use a real phone number format (e.g., +12025551234). Test/fictitious numbers like 555-xxx are rejected.

```
cdp onramp limits userIdType=phone_number userId=<phone> paymentMethodType=GUEST_CHECKOUT_APPLE_PAY
```

## Headless order (requires merchant enrollment)

Use `partnerUserRef=sandbox-<id>` to enable sandbox mode:
```
cdp onramp orders destinationAddress=<address> destinationNetwork=base \
  paymentMethod=GUEST_CHECKOUT_APPLE_PAY purchaseCurrency=USDC \
  purchaseAmount=10.000000 paymentCurrency=USD paymentAmount=10.00 \
  email=<email> phoneNumber=<phone> \
  phoneNumberVerifiedAt=<recent_iso> agreementAcceptedAt=<recent_iso> \
  partnerUserRef=sandbox-e2e-<timestamp> 'isQuote:=false'
```

If 403 "not authorized": extract app ID from error → contact onramp team to enroll.

Poll order status:
```
cdp onramp orders get <orderId>
```
Until `ONRAMP_TRANSACTION_STATUS_SUCCESS` or terminal.

Verify funds:
```
cdp evm token-balances get base <address>
```

## Notes

- Sessions and limits work without merchant enrollment.
- Headless orders require enrollment and payment completion (sandbox: Apple Pay always succeeds, card 4242 4242 4242 4242).
