> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rampnow.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Frequently Asked Questions

> Short answers to common integration questions, with links to the full details

## Choosing an integration

<AccordionGroup>
  <Accordion title="Which integration should I pick?">
    Use the **Widget** for the fastest launch with a link or an iframe. Use the **SDK** when you also want browser events, open/close control or a React hook. Use **Intent** when you want to build the pre-checkout screens yourself and create orders from your backend. See [Integrations Overview](/quickstart/integrations/overview).
  </Accordion>

  <Accordion title="What's the difference between the widget and the SDK?">
    The SDK is a JavaScript wrapper around the widget. Both run the same flow and take the same [parameters](/quickstart/ramp-widget/parameters). The SDK adds [events and commands](/quickstart/ramp-sdk/events), overlay and embedded [display modes](/quickstart/ramp-sdk/display-modes), and TypeScript types.
  </Accordion>

  <Accordion title="Do onramp and offramp need separate integrations?">
    No. Every integration covers both. Set `orderType` to `buy` (onramp) or `sell` (offramp) per order.
  </Accordion>
</AccordionGroup>

## Keys and environments

<AccordionGroup>
  <Accordion title="What's the difference between the public key and the API key and secret?">
    The widget and SDK only need your **public partner key**, passed as `apiKey`. It is safe in client-side code. The Intent API uses an **API key and secret** to sign server-to-server requests. Never expose the secret. See [Authentication](/api-reference/authentication).
  </Accordion>

  <Accordion title="Can I use my sandbox key in production?">
    No. Keys are environment-scoped. Use sandbox keys with `*.sandbox.rampnow.io` hosts and production keys with production hosts. See [Authentication](/api-reference/authentication#environments).
  </Accordion>
</AccordionGroup>

## Testing

<AccordionGroup>
  <Accordion title="How do I test without real money?">
    Use the sandbox. It runs the same flow with simulated payments and testnet tokens. See [Sandbox Testing](/api-reference/sandbox-testing) and the [Payment Simulator](/api-reference/payment-simulator).
  </Accordion>

  <Accordion title="How do I test KYC approvals and declines?">
    Sandbox has no self-serve way to force a KYC outcome yet. Email [support@rampnow.io](mailto:support@rampnow.io). See [Sandbox Testing](/api-reference/sandbox-testing#kyc).
  </Accordion>
</AccordionGroup>

## Orders and webhooks

<AccordionGroup>
  <Accordion title="How do I know when an order completes?">
    Use [webhooks](/api-reference/webhook): Rampnow sends one on every status change. Intent integrations can also [poll the order](/api-reference/onramp-&-offramp-intent/get-an-order-by-external-id). SDK events are useful for your UI, but confirm on your backend. See [Order Status](/api-reference/order-status) for which statuses are final.
  </Accordion>

  <Accordion title="Do webhooks retry, and how do I avoid processing one twice?">
    Yes. A failed delivery is retried up to 10 times over roughly 24 hours. De-duplicate on `eventUid`, which stays the same across retries. See [Delivery and retries](/api-reference/webhook#delivery-and-retries).
  </Accordion>

  <Accordion title="Is a `failed` order final?">
    No. Rampnow operations either retries it or blocks and refunds it. Wait for the next webhook. See [Order Status](/api-reference/order-status).
  </Accordion>

  <Accordion title="Does the user returning to my returnUrl mean the order succeeded?">
    No. Confirm the status from a webhook or by polling the order. See [Handling rules](/api-reference/order-status#handling-rules).
  </Accordion>

  <Accordion title="How do I match Rampnow orders to my own records?">
    Pass your own order ID: `externalOrderId` on the widget or SDK, `externalOrderUid` on the Intent API. Either way it comes back as `externalOrderUid` on webhooks.
  </Accordion>

  <Accordion title="Is creating an Intent order idempotent?">
    No. Sending the same Create Order request twice creates two orders. On a timeout or `5xx`, look the order up by `externalOrderUid` first and retry only if none exists. See [Create the Order](/quickstart/ramp-intent/create-order).
  </Accordion>
</AccordionGroup>

## Customising the order

<AccordionGroup>
  <Accordion title="Can I pre-fill the asset, amount or wallet address?">
    Yes. Pass them as widget parameters or SDK config, for example `dstCurrency`, `dstChain`, `srcAmount` and `walletAddress`. Make them read-only with `lockFields`. See [URL parameters](/quickstart/ramp-widget/parameters).
  </Accordion>

  <Accordion title="Can I add my own fee?">
    Your account has a partner fee agreed with Rampnow, applied to every order. With Intent you can also override it per request. See [Partner fee](/quickstart/ramp-intent/get-quote#partner-fee-markup).
  </Accordion>
</AccordionGroup>

## Coverage and compliance

<AccordionGroup>
  <Accordion title="Which countries, chains, tokens and payment methods are supported?">
    See [Supported Crypto Currencies](/quickstart/resources/supported-assets), [Supported Fiat Currencies](/quickstart/resources/supported-fiat), [Blockchain List](/quickstart/resources/blockchain-list), [Payment Methods & Limits](/quickstart/resources/payment-methods) and [Supported Countries](/quickstart/resources/supported-countries). Live data on those pages comes from the Rampnow config API.
  </Accordion>

  <Accordion title="Where can users cash out to?">
    Offramp payouts are currently live for EUR via SEPA. See [Payment Methods & Limits](/quickstart/resources/payment-methods#offramp-payout-timing).
  </Accordion>

  <Accordion title="Who handles KYC?">
    Rampnow does, inside the widget or hosted checkout. Users who are already verified skip it. See [User Flow](/quickstart/ramp/flow).
  </Accordion>
</AccordionGroup>

## Still stuck?

Email [support@rampnow.io](mailto:support@rampnow.io) with your partner account and, for order issues, the order ID.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.