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

# FAQ

> Common questions about accepting USDC and USDT, receiving local currency payouts, settlement speed, fees, payment link setup, and testing your integration.

<AccordionGroup>
  <Accordion title="What stablecoins and currencies do you support?">
    USDC on 19 chains, USDT on 14 chains. Same deposit address for both.

    Settles to KES, NGN, GHS, UGX via M-Pesa, Buy Goods, Paybill, mobile money, or bank transfer depending on the currency. Configure once in **Settings**.
  </Accordion>

  <Accordion title="What blockchains does Minisend support?">
    **USDC (19):** Base (primary), Arbitrum, Avalanche, Codex, EDGE, Ethereum, HyperEVM, Ink, Linea, Monad, Morph, Optimism, Plume, Polygon, Sei, Sonic, Unichain, World Chain, XDC.

    **USDT (14):** ADI, Arbitrum, Aurora, Avalanche, Bera, BNB Chain, Ethereum, Gnosis, Monad, Optimism, Plasma, Polygon, Scroll, XLayer.

    See [supported networks](/payments/supported-currencies).
  </Accordion>

  <Accordion title="How fast is settlement?">
    * **USDC on Base** — fastest. Settlement starts immediately.
    * **USDC on another chain** — CCTP bridge to Base, then settle. A few minutes.
    * **USDT on any chain** — swap to USDC on Base in **30–50 seconds**, then settle.

    After USDC is on Base, the M-Pesa/bank/mobile money transfer follows provider timing. You receive a `checkout.completed` webhook and see `completed` in the dashboard.
  </Accordion>

  <Accordion title="Do I need to know anything about crypto?">
    No. Customers send stablecoins; you receive local currency. Your only interactions are the Minisend dashboard and your existing bank or mobile money account.
  </Accordion>

  <Accordion title="What if a customer's payment doesn't arrive?">
    Sessions expire after **30 minutes** with no deposit. Expired sessions appear with **Expired** status and are not charged. Minisend also sends a `checkout.expired` webhook.

    <Tip>
      If a customer says they paid but the session expired, ask for the transaction hashand address. They may have sent to the wrong address or on an unsupported chain.
    </Tip>
  </Accordion>

  <Accordion title="What is an external_id?">
    Your own reference passed at session creation (e.g., `order-4821`). Echoed back in every webhook for that session, so you can match payments to orders without maintaining a session-to-order mapping.

    Optional, but strongly recommended for any system with order records.
  </Accordion>

  <Accordion title="What if settlement fails?">
    Rare. Status moves to **Failed** and Minisend sends `checkout.failed`. Contact [support](https://t.me/minisendapp) with the `session_id`.

    <Warning>
      Customer funds are not lost. Minisend will investigate and contact you.
    </Warning>
  </Accordion>

  <Accordion title="Can I use Minisend without writing code?">
    Yes. Set a slug in **Settings** and share your payment link:

    ```text theme={null}
    https://merchant.minisend.xyz/pay/your-slug
    ```

    Customers visit, enter an amount, send USDC or USDT. You receive local currency.
  </Accordion>

  <Accordion title="How do I test my integration?">
    1. Create a session via API with `amount: 1.00`.
    2. Open the `checkout_url`.
    3. Pay from a real wallet.
    4. Confirm your webhook gets `checkout.completed`.
    5. Check the dashboard for **Completed**.
    6. Verify funds in your payout account.

    <Note>
      There is no sandbox; tests use real funds. Use the smallest practical amount.
    </Note>
  </Accordion>

  <Accordion title="How do I get higher rate limits?">
    Default is **60 req/min/IP**. If you're hitting `429`s, contact support.
  </Accordion>
</AccordionGroup>
