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

# Off-Ramp for Resellers

If you run your own platform, you can offer off-ramp to your own users and add
your own markup on top. Your users pay the off-ramp amount plus your markup, and
you earn that markup as settled dalasi. Modem Pay takes care of the stablecoin,
the conversion, and the payout, you never touch the crypto or the cash.

<Note>
  This page builds on the regular [Off-Ramp](/documentation/defi/offramp) flow.
  Everything there still applies; this page only covers the one extra field,
  `markup_config`.
</Note>

## How the markup works

When you add a `markup_config`, the amount your user pays becomes
**base + markup**:

* **Base** — the stablecoin needed to cover the `gmd_amount` (plus the standard
  fee), exactly like a regular off-ramp.
* **Markup** — your cut, added on top. Your user pays it; you keep it.

The markup is locked in when the off-ramp is created and stored as
**`markup_share_usd`** (in USD). As the payment comes in, your markup is added
to your balance bit by bit alongside the base, and is fully settled once the
payment is complete.

## markup\_config

<ParamField body="markup_config" type="object">
  Your cut. Added to what the user pays, and settled to you.

  <Expandable title="markup_config">
    <ParamField body="type" type="string" required>
      Either `fixed` (a flat USD amount) or `percentage` (a percent of the
      base).
    </ParamField>

    <ParamField body="value" type="number" required>
      The markup. For `fixed`, a USD amount (e.g. `4` = \$4). For `percentage`, a
      percent of the base (e.g. `5` = 5%).
    </ParamField>
  </Expandable>
</ParamField>

<Warning>
  There's a limit on how big your markup can be compared to the base amount. If
  the markup goes over the allowed maximum, the request is rejected when you
  create it. Keep your cut reasonable.
</Warning>

## Example

A `fixed` markup of `4` on a 1000 GMD off-ramp: the base might be about 13.62
USDT, and your user pays about 17.62 USDT (base + 4). You earn the 4 (handed to
you as dalasi) once the payment is complete.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.modempay.com/v1/minting/offramp \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "gmd_amount": 1000,
      "destination": "mobile_money",
      "payout_method": {
        "network": "wave",
        "account_number": "7000000",
        "account_name": "Account Holder"
      },
      "markup_config": {
        "type": "fixed",
        "value": 4
      }
    }'
  ```

  ```typescript nodejs theme={null}
  const offramp = await modempay.offramp.create({
    gmd_amount: 1000,
    destination: "mobile_money",
    payout_method: {
      network: "wave",
      account_number: "7000000",
      account_name: "Account Holder",
    },
    markup_config: {
      type: "fixed",
      value: 4,
    },
  });
  ```
</CodeGroup>

**What you get back (markup fields)**

```json json theme={null}
{
  "id": "c4a8e1d7-6b2f-4a90-8e3c-5f1b9d2a7c44",
  "gmd_amount": 1000,
  "gmd_rate": 74.2297,
  "fee": 0.14,
  "pay_amount": 17.62,
  "pay_currency": "USDT",
  "pay_address": "TXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "status": "pending",
  "markup_share_usd": 4,
  "markup_config": {
    "type": "fixed",
    "value": 4
  },
  "destination": "mobile_money",
  "payout_method": {
    "network": "wave",
    "account_name": "Account Holder",
    "account_number": "7000000"
  },
  "reference": "MP-XXXXXXXX-XXXXXX-XXXXXXXX"
}
```

Compared to a regular off-ramp: **`pay_amount`** now includes your markup, and
**`markup_share_usd`** shows the markup you'll earn (in USD).

## How the money is settled

* The **base** covers the `gmd_amount`, going to your balance, or to the mobile
  money wallet in `payout_method`, exactly like a regular off-ramp.
* Your **markup** goes to your Modem Pay balance, kept as a separate credit from
  the base so it's easy to tell apart.
* Both are settled bit by bit as partial payments come in, and finish together
  once the full amount is paid.

<Note>
  Even when the base goes straight to a mobile money wallet, your markup still
  lands in your Modem Pay balance (not the wallet). This keeps your earnings
  separate from your user's payout.
</Note>

## Good to know

* `markup_share_usd` is locked in at creation and won't change if the rate moves
  later.
* The markup is your revenue; the standard Modem Pay fee still applies to the
  base.
* For payment, status values, and notifications, see the regular
  [Off-Ramp](/documentation/defi/offramp) page.
