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

# How to Top Up Your OTP Balance

This guide shows you how to top up your OTP credit balance. Credits are consumed each time an OTP is sent through Email, WhatsApp, or SMS channels. Top-up payments are processed securely through Stripe — the same flow used for paying subscription invoices.

<Note>
  Required permission:

  * Subscribe
</Note>

***

## OTP Credit Rates

Before topping up, it helps to know how many credits each OTP send costs:

| Channel  | Credits per send |
| -------- | ---------------- |
| Email    | 1                |
| WhatsApp | 2                |
| SMS      | 3                |

Choose a top-up amount that covers your expected sends. The minimum top-up is **1000 credits**.

***

## Topping Up Your Balance

### Step 1: Go to the Balance Page

Open your MileApp dashboard and navigate to **Billing** > **Balance** in the sidebar. You'll see your **Available Credits** at the top of the page, alongside the **Top Up Balance** button.

<div align="center">
  <img src="https://mintcdn.com/mileapp-c1584fbc/if1XHwbCrFiDUFVH/images/billing/OTP%20-%20Balance%20Page.png?fit=max&auto=format&n=if1XHwbCrFiDUFVH&q=85&s=66f199ba07de5e939370797106913b7b" alt="Balance Page" width="600" data-path="images/billing/OTP - Balance Page.png" />

  <p><i>Balance page showing current available credits and the Top Up Balance button</i></p>
</div>

If your balance is **0** or low, you may also see a yellow warning banner at the top of the dashboard reminding you to top up before sending OTPs.

### Step 2: Open the Top Up Dialog

Click the **Top Up Balance** button. A dialog opens with two options:

* **Preset amount** — pick a recommended credit amount (default: 1000 credits)
* **Custom amount** — enter any amount of 1000 or more

The dialog also shows:

* The credit amount selected
* The unit price (IDR per credit)
* The total payment due in IDR

<div align="center">
  <img src="https://mintcdn.com/mileapp-c1584fbc/if1XHwbCrFiDUFVH/images/billing/OTP%20-%20Topup%20Dialog.png?fit=max&auto=format&n=if1XHwbCrFiDUFVH&q=85&s=d34facde1023c39f9d2c71cc10630b3a" alt="Top Up Dialog" width="600" data-path="images/billing/OTP - Topup Dialog.png" />

  <p><i>Top Up dialog with credit options and payment total</i></p>
</div>

### Step 3: Click Pay Now

Once you've chosen an amount, click **Pay Now**. MileApp creates a Stripe invoice and prepares the secure payment page.

<div align="center">
  <img src="https://mintcdn.com/mileapp-c1584fbc/if1XHwbCrFiDUFVH/images/billing/OTP%20-%20Topup%20Dialog%20Pay.png?fit=max&auto=format&n=if1XHwbCrFiDUFVH&q=85&s=a4edb69d88b06a30addf6b35a8f53f5f" alt="Top Up Dialog Pay" width="600" data-path="images/billing/OTP - Topup Dialog Pay.png" />

  <p><i>Pay Now button — click to proceed to Stripe</i></p>
</div>

<Note>
  You can only have **one open top-up invoice at a time**. If you previously created a top-up but haven't paid it yet, you'll see a notification asking you to complete or cancel the existing invoice first.
</Note>

### Step 4: Complete Payment on Stripe

You'll be redirected to the **Stripe-hosted invoice page**. This is the same secure Stripe page used for subscription payments — see [How to Pay Your Invoice](/pages/billing/how-to-pay) for details on each payment method (Virtual Account for IDR, Credit Card for USD).

<div align="center">
  <img src="https://mintcdn.com/mileapp-c1584fbc/if1XHwbCrFiDUFVH/images/billing/OTP%20-%20Stripe%20Hosted%20Invoice.png?fit=max&auto=format&n=if1XHwbCrFiDUFVH&q=85&s=c8c2bacde253d9866436b0c5fabf3ec2" alt="Stripe Hosted Invoice" width="600" data-path="images/billing/OTP - Stripe Hosted Invoice.png" />

  <p><i>Stripe-hosted invoice page with payment details</i></p>
</div>

Select your payment method, enter the required details, and confirm the payment.

### Step 5: Payment Confirmed

Once payment is processed, you'll see a confirmation page from Stripe.

<div align="center">
  <img src="https://mintcdn.com/mileapp-c1584fbc/if1XHwbCrFiDUFVH/images/billing/OTP%20-%20Stripe%20Payment%20Success.png?fit=max&auto=format&n=if1XHwbCrFiDUFVH&q=85&s=e70ab19e455b6788e537bf574ac5a08e" alt="Stripe Payment Success" width="600" data-path="images/billing/OTP - Stripe Payment Success.png" />

  <p><i>Stripe confirmation after successful payment</i></p>
</div>

You'll also receive an email confirmation, and your invoice will be marked as **Paid** in MileApp.

### Step 6: Verify the Credit

Return to the MileApp **Balance** page. Your **Available Credits** will now reflect the new total — typically within a few seconds of the payment confirmation.

<div align="center">
  <img src="https://mintcdn.com/mileapp-c1584fbc/if1XHwbCrFiDUFVH/images/billing/OTP%20-%20Balance%20Credited.png?fit=max&auto=format&n=if1XHwbCrFiDUFVH&q=85&s=8a97a4eff9aa8e5a0d802de78ef84d0c" alt="Balance Credited" width="600" data-path="images/billing/OTP - Balance Credited.png" />

  <p><i>Balance page showing the credited top-up amount</i></p>
</div>

If the new balance is enough to cover your expected sends, the low-balance warning banner will disappear automatically.

### Step 7: View Your Invoice

To see the receipt for this top-up, go to **Billing** > **History**. The new invoice will appear at the top of the list with status **Paid**.

<div align="center">
  <img src="https://mintcdn.com/mileapp-c1584fbc/if1XHwbCrFiDUFVH/images/billing/OTP%20-%20History%20Paid%20Invoice.png?fit=max&auto=format&n=if1XHwbCrFiDUFVH&q=85&s=45cfa830a6f4a0b188318724e91545d6" alt="History Paid Invoice" width="600" data-path="images/billing/OTP - History Paid Invoice.png" />

  <p><i>Billing History page showing the paid top-up invoice</i></p>
</div>

Click the invoice row to download the PDF or view full payment details.

***

## What If Top Up Fails?

Common reasons for top-up failure:

* **Pending invoice exists** — You already have an unpaid OTP top-up invoice. Pay it first.
* **Amount below minimum** — The minimum top-up is 1000 credits.
* **Payment method declined** — Use a different card or contact your bank.
* **Insufficient permission** — You need the **Subscribe** permission. Contact your organization admin.

If the on-screen message doesn't help, contact support at [support@mile.app](mailto:support@mile.app).

***

## Common Questions

### How long until my credit appears?

Typically within a few seconds after the Stripe payment is confirmed. If you don't see it after a minute, refresh the Balance page.

### Can I top up while an OTP send is in progress?

Yes. Top-ups and sends are processed independently. Sends consume credits atomically; top-ups add credits atomically.

### Does the top-up expire?

No. OTP credits do not expire. Whatever you purchase stays in your balance until you use it.

### Can I get a refund?

OTP credit purchases are non-refundable. If you have a billing dispute, contact [support@mile.app](mailto:support@mile.app).
