> ## 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.

# Supported Fiat Currencies

> Fiat currencies your users can pay with (onramp) and receive (offramp)

export const FiatExplorer = ({mode, configUrl}) => {
  const hasActivePaymentMode = (assetConfig, paymentModeConfigs, orderType) => {
    const candidateModes = (orderType === "buy" ? assetConfig.payinModes : assetConfig.payoutModes) || [];
    return candidateModes.some(modeKey => {
      const modeConfig = paymentModeConfigs[modeKey];
      if (!modeConfig || modeConfig.status !== "active") return false;
      const sideConfig = orderType === "buy" ? modeConfig.payinConfig : modeConfig.payoutConfig;
      return sideConfig?.status === "active" && (sideConfig.orderTypes || []).includes(orderType);
    });
  };
  const currencyName = code => {
    try {
      return new Intl.DisplayNames(["en"], {
        type: "currency"
      }).of(code) || code;
    } catch (e) {
      return code;
    }
  };
  const [currencies, setCurrencies] = useState([]);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);
  const [searchQuery, setSearchQuery] = useState("");
  useEffect(() => {
    fetch(configUrl).then(res => {
      if (!res.ok) throw new Error("Failed to load config");
      return res.json();
    }).then(json => {
      const assetConfigs = json?.data?.assetConfigs || ({});
      const paymentModeConfigs = json?.data?.paymentModeConfigs || ({});
      const rows = Object.entries(assetConfigs).filter(([assetKey, assetConfig]) => {
        if (!assetKey.endsWith(":fiat") || assetConfig?.status !== "active") return false;
        if (assetConfig.orderTypeConfigs?.[mode]?.status !== "active") return false;
        return hasActivePaymentMode(assetConfig, paymentModeConfigs, mode);
      }).map(([assetKey]) => {
        const code = assetKey.split(":")[0];
        return {
          code,
          name: currencyName(code)
        };
      }).sort((a, b) => a.code.localeCompare(b.code));
      setCurrencies(rows);
      setLoading(false);
    }).catch(() => {
      setError("Unable to load supported fiat currencies.");
      setLoading(false);
    });
  }, [configUrl, mode]);
  const filtered = useMemo(() => {
    const query = searchQuery.trim().toLowerCase();
    return currencies.filter(c => !query || c.code.toLowerCase().includes(query) || c.name.toLowerCase().includes(query));
  }, [currencies, searchQuery]);
  if (loading) return <div className="flex items-center justify-center p-10"><div className="text-sm text-zinc-950/70 dark:text-white/70">Loading...</div></div>;
  if (error) return <div className="p-4 text-sm text-red-700 bg-red-50 dark:bg-red-900/20 rounded-xl border border-red-200 dark:border-red-800">{error}</div>;
  return <div className="space-y-6 not-prose">
      <div className="text-sm text-zinc-950/70 dark:text-white/70">
        <div className="font-semibold text-zinc-950 dark:text-white mb-1">{currencies.length} currencies</div>
        <p>Search by code or name.</p>
      </div>

      <input type="text" placeholder="Search by code or name..." value={searchQuery} onChange={e => setSearchQuery(e.target.value)} className="w-full px-4 py-2.5 rounded-xl border border-zinc-950/10 dark:border-white/10 bg-white dark:bg-zinc-900 text-sm text-zinc-950 dark:text-white placeholder:text-zinc-950/50 dark:placeholder:text-white/50 focus:outline-none focus:ring-2 focus:ring-zinc-950/20 dark:focus:ring-white/20" />

      <div className="flex justify-between text-xs text-zinc-950/70 dark:text-white/70">
        <span>Showing {filtered.length} of {currencies.length}</span>
        {searchQuery && <button onClick={() => setSearchQuery("")} className="font-medium text-zinc-950 dark:text-white hover:underline">Reset</button>}
      </div>

      <div className="overflow-x-auto">
        <table className="w-full text-sm">
          <thead>
            <tr className="border-b border-zinc-950/10 dark:border-white/10">
              <th className="text-left py-3 px-4 font-semibold text-zinc-950 dark:text-white">Code</th>
              <th className="text-left py-3 px-4 font-semibold text-zinc-950 dark:text-white">Currency</th>
            </tr>
          </thead>
          <tbody>
            {filtered.map(c => <tr key={c.code} className="border-b border-zinc-950/5 dark:border-white/5 hover:bg-zinc-950/5 dark:hover:bg-white/5 transition-colors">
                <td className="py-3 px-4 text-zinc-950 dark:text-white">{c.code}</td>
                <td className="py-3 px-4 text-zinc-950/70 dark:text-white/70">{c.name}</td>
              </tr>)}
            {filtered.length === 0 && <tr>
                <td colSpan={2} className="py-6 text-center text-sm text-zinc-950/50 dark:text-white/50">
                  No currencies match your search.
                </td>
              </tr>}
          </tbody>
        </table>
      </div>
    </div>;
};

export const CONFIG_URL = "https://api.rampnow.io/api/ramp/v1/ramp_order/quote/config?apiKey=pk_live_zXuMmMzFAbfnMPQnwfEaMkabwPfKsVsg";

This page lists the fiat currencies available on Rampnow, per direction. For how users pay or get paid in each currency, and the limits that apply, see [Payment Methods & Limits](/quickstart/resources/payment-methods); for crypto tokens see [Supported Crypto Currencies](/quickstart/resources/supported-assets).

<Note>
  **Real-time data** — This list is generated directly from the live Rampnow configuration API and updates automatically as currencies are added or removed.
</Note>

<Tabs>
  <Tab title="Onramp (buy)">
    Currencies your users can pay with.

    <FiatExplorer mode="buy" configUrl={CONFIG_URL} />
  </Tab>

  <Tab title="Offramp (sell)">
    Currencies your users can receive.

    <FiatExplorer mode="sell" configUrl={CONFIG_URL} />
  </Tab>
</Tabs>

## Reading the list

<AccordionGroup>
  <Accordion title="Onramp and offramp are listed separately" icon="arrow-right-arrow-left">
    A currency can be available to pay with, to receive, or both. The **Onramp** tab lists what users can pay with; the **Offramp** tab lists what they can receive.
  </Accordion>

  <Accordion title="Using the codes in your integration" icon="code">
    Pass the ISO 4217 **Code** as the fiat currency (for example `srcCurrency=EUR` on a buy order, `dstCurrency=EUR` on a sell order) with the chain `fiat`. Codes are case-sensitive. Intent API partners can check availability programmatically: read `assetConfigs` from [`GET /ext/ramp_order/config`](/api-reference/configuration/get-order-config), where fiat entries are keyed `<CODE>:fiat`.
  </Accordion>
</AccordionGroup>

<Info>
  A currency is listed only while it has at least one active payment method in that direction. Which methods are available also depends on the user's country; see [Payment Methods & Limits](/quickstart/resources/payment-methods).
</Info>

## Missing a currency?

Email `admin@rampnow.io` with the currency, the countries your users are in, and your expected volume. Requests are reviewed based on demand and payment-partner coverage.


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