---
title: Upload your rate deck (tariff CSV)
url: https://help.telecomsxchange.com/sellers/upload-your-rate-deck/
audience: For Sellers
summary: "In Routes \u2192 My Routes, open Edit Route, click Download current rates\
  \ (CSV), edit it in a spreadsheet, choose it under Upload Tariff and click Update\
  \ Settings. Voice rate increases take effect 6 days after upload; buyers get the\
  \ changes by email. SMS routes can also take an MCCMNC price file."
updated: '2026-10-21'
verified_commit: 83b4ebc96d0081a25213776d5a8871bd04941125
---

# Upload your rate deck (tariff CSV)

> In Routes → My Routes, open Edit Route, click Download current rates (CSV), edit it in a spreadsheet, choose it under Upload Tariff and click Update Settings. Voice rate increases take effect 6 days after upload; buyers get the changes by email. SMS routes can also take an MCCMNC price file.

## How a rate change reaches buyers

1. **Tariff CSV**: Downloaded, edited and uploaded in Edit Route
2. **TelecomsXchange** (via Update Settings): Validates rows; errors return upload_errors.csv
3. **Effective date** (via `ASAP` or a date): Voice increases wait 6 days; others apply at once
4. **Buyers' inboxes** (via rate update email): Zipped CSV with Change Status per row

Your rate deck (tariff) is what buyers see in Market View: one price per destination prefix. You manage it as a CSV file that you download, edit in a spreadsheet and upload again.

## Before you start

- [Add a route](https://help.telecomsxchange.com/sellers/add-your-first-route/). A new route starts with an empty tariff.

## How do I upload rates?

1. Go to **Routes → My Routes**, open the route's action menu and click **Edit Route**.
2. Under **Upload Tariff**, click **Download current rates (CSV)**. The file is named `<your login>_route_<route name>.csv` and holds every rate row in your tariff, including past, scheduled and discontinued ones, or an empty template if the route has no rates yet.
3. Open the file in Excel or any spreadsheet and edit the rows (see the column table below). Keep the header row and the column order, and delete the rows you aren't changing.
4. Under **Upload Tariff**, choose the edited CSV file (up to 50 MB).
5. Click **Update Settings**. The file is applied when you save.

![The Upload Tariff section of Edit Route, with Download current rates (CSV) and the file picker](https://help.telecomsxchange.com/assets/screenshots/seller-edit-route.jpg)

You'll see "Tariff has been uploaded. N Rows processed." The number is the position of the last line read, not a count of changed rates. If the file raised any voice rates, the message adds "Increased rates will be effective in 6 days."; otherwise it adds "Check Market View." For a reminder of the columns, open **Upload Tariff Help** at the top of the page or click **Column guide**.

!!! tip
    You don't need to upload the whole deck. Every row is applied as an update, so a file with only the prefixes you're changing is enough. Empty rows are skipped, and a negative price is read as positive.

!!! warning
    **Upload Tariff Help** says rates "can only be updated after 48 hours". The rule the platform actually applies to voice rate increases is 6 days, as described below.

## What's in the CSV?

The upload reads columns by position, so keep them in this order:

| Column | What to put in it |
|---|---|
| Country, Description | For reference only. Ignored on upload. |
| **Prefix** | The destination prefix in E.164 format, for example `4477`. Required. |
| **Effective from** | `YYYY-MM-DD hh:mm:ss`, for example `2026-11-01 00:00:00`, or `ASAP` |
| Rate Id | For reference only. Ignored on upload. |
| **Forbidden** | `1` to block traffic to this prefix, `0` to allow it |
| **Discontinued** | `1` to stop selling this prefix, `0` to keep it |
| **Price 1** | Price per minute for the first billing interval, for example `0.0523` |
| **Price N** | Price per minute for the following intervals |
| **Interval 1** | Length of the first billing interval in whole seconds, from 1 to 60 |
| **Interval N** | Length of the following intervals in whole seconds. Use 1 to 60 like **Interval 1**; the upload checks only that it's a whole number. |

The download also has statistics columns (Last Day ASR, Last Week ASR, Last Day ACD, Last Week ACD, Last Day Minutes, Last Week Minutes, Statistics Time). They are for your information and ignored on upload.

## How do I upload SMS prices by operator (MCCMNC)?

On an SMS route, **Edit Route** has a second file picker, **Upload Tariff MCCMNC**, for pricing by mobile operator code.

1. Prepare a CSV with no header row and three columns per line: **MCCMNC**, **Price** and **Effective_from** (a date or `ASAP`).
2. Choose the file under **Upload Tariff MCCMNC**. Tick **Force MCCMNC Update** ("Update even if errors are found") if you want the valid rows applied even when some rows fail.
3. Click **Update Settings**.

Each MCCMNC is expanded to all of its prefixes, with the price used for both **Price 1** and **Price N** and 1-second intervals. There is no 6-day wait for SMS. You'll see "Tariff has been uploaded. N rates updated." Without **Force MCCMNC Update**, any error stops the whole upload and your browser downloads `upload_errors_mccmnc.csv`; with it, the message adds "M errors detected. Download Error File".

## How do I price by the caller's origin (OBR)?

With **OBR Enabled** switched on for a voice route (see [Add your first route](https://help.telecomsxchange.com/sellers/add-your-first-route/)), the route gets a second tariff whose price depends on both the destination and the caller's number. **Edit Route** then shows **Upload OBR Tariff** below **Upload Tariff**, and **Upload Tariff Help** gains a **download OBR** link and a **CLI Prefix** column.

1. Under **Upload OBR Tariff**, click **Download current rates (CSV)**. The file is named `<your login>_route_<route name>_obr.csv`.
2. Edit it as you would the main deck. The columns are the same, plus **CLI Prefix** after **Prefix**: the prefix the caller's number must start with. Three special values cover callers no prefix matches: `OBR_INVALID_CLI_RATE` for a caller ID that isn't a valid number, `OBR_UNKNOWN_COUNTRY_RATE` for a number whose country isn't recognised, and `OBR_GLOBAL_DEFAULT_RATE` for everything else.
3. Choose the file under **Upload OBR Tariff** and click **Update Settings**.

The same rules apply as for the main deck: `ASAP` or a date in **Effective from**, the 6-day wait for increases, and `upload_errors.csv` when a row is invalid. A row is identified by its prefix, CLI prefix and date together, so the same pair can't appear twice with one date. Buyers of the route receive the OBR changes by email as `<seller>_<route>_rates_update_obr.csv`, with the **CLI Prefix** column included.

## When do new prices take effect?

A row counts as an increase when **Price 1**, **Price N**, **Interval 1** or **Interval N** is higher than the rate in effect now. A prefix whose current rate is forbidden or discontinued counts as new.

| Change | Takes effect |
|---|---|
| New prefix, decrease, unchanged rate | At once with `ASAP`, or on your date |
| Forbidden or discontinued prefix | At once with `ASAP`, or on your date |
| Voice rate increase with `ASAP` | 6 days after upload |
| Voice rate increase with a date | On your date, which must be at least 6 days after upload |
| Any SMS rate change | At once with `ASAP`, or on your date |

To see scheduled changes, go to **Routes → Future Rate Changes**. The **Future Rates** page lists **Route**, **Prefix**, **Country [Description]**, **Price 1/N**, **Interval 1/N** and **Effective From**. Filter by **Prefix**, **Route**, **Country** and **Description**, choose **Results Per Page**, and click **Search**; **Clear** empties the filters. Click **Download Results** to save the list as `future_rates.csv`.

## What if something goes wrong?

If any row is invalid, nothing is saved. Your browser downloads `upload_errors.csv`: your file with an **Error** column added. Fix the rows it marks and upload again.

| You see | What to do |
|---|---|
| 'Prefix' value should be not be empty. | Give every row a prefix. |
| 'Interval 1' value should be integer from 1 to 60. | Use whole seconds from 1 to 60. |
| 'Interval N' value should be integer from 1 to 60. | Use whole seconds in **Interval N**. |
| 'Price 1' value should be floating point number. | Use plain numbers such as `0.0082`, with no currency symbol. The same applies to 'Price N'. |
| Effective from value can be either date/time 'YYYY-MM-DD hh:mm:ss' or special value 'ASAP' | Use a date such as `2026-11-01 00:00:00`, or `ASAP`. |
| Duplicate prefix-effective_from pairs are not allowed in single tariff | The same prefix and date appear twice in the file, or already exist in your tariff (the download includes every existing row). Remove the row, or change its date. |
| Duplicate prefix-cliprefix-effective_from triplets are not allowed in single tariff | The same prefix, CLI prefix and date appear twice in the OBR file, or already exist. Remove the row, or change its date. |
| 'CLI Prefix' value should be not be empty. | Give every OBR row a CLI prefix, or one of the special values. |
| 'CLI Prefix' value should be only digits or special values: OBR_INVALID_CLI_RATE OBR_UNKNOWN_COUNTRY_RATE OBR_GLOBAL_DEFAULT_RATE | Use digits only, or one of those three values exactly. |
| Rate increase only allowed effective 6 or more days after upload | Move the increase's date at least 6 days out, or use `ASAP`. |
| 'MCCMNC' value should be not be empty. | Give every row in the MCCMNC file an operator code. |
| 'MCC' value should be not be empty. | Give every row in the MCCMNC file a price. |
| No matching MCC MCN prefixes found | TelecomsXchange has no prefixes for that MCCMNC. Check the code, or contact support. |

## How are buyers notified?

Every buyer with a purchase of the route automatically receives a rate update email. It goes to their main email and their rates email. Buyers who have blocked the route themselves don't receive it; buyers you have blocked still do.

- The changes are attached as a zipped CSV named `<seller>_<route>_rates_update.csv.zip` with Country, Description, Prefix, Effective From, Forbidden, Discontinued, Price 1, Price N, Interval 1, Interval N and Change Status (new, increase, decrease or unchanged).
- For SMS routes, the CSV has Country, Description, Prefix, Effective From, MCCMNC, Price and Change Status.
- If the route is anonymous, the email shows "Anonymous" instead of your name.

## Frequently asked questions

**Q: How much notice do buyers get for a rate increase?**

A: On voice routes, an increase takes effect at least 6 days after upload. New prefixes, decreases and unchanged rates can take effect at once, and SMS rate changes have no waiting period. The help text on the page still says 48 hours; the 6-day rule is what applies.

**Q: What does ASAP mean in Effective from?**

A: Apply the rate as soon as possible. A voice rate increase marked ASAP takes effect 6 days after upload; everything else takes effect at once.

**Q: What happens if some rows have errors?**

A: Nothing is saved. Your browser downloads upload_errors.csv, with an Error column explaining each problem. Fix the rows and upload the file again.

**Q: Do I have to upload my whole deck every time?**

A: No. Each row is applied as an update to your tariff, so you can upload only the prefixes you're changing. Remove the rows you're not changing: re-uploading an unchanged row with the same date gives a duplicate error.

**Q: Can I upload SMS prices by operator instead of by prefix?**

A: Yes. On an SMS route, Upload Tariff MCCMNC takes a file with MCCMNC, Price and Effective_from per row and expands each operator code to its prefixes.

**Q: Are buyers told about my rate changes?**

A: Yes. Every buyer with a purchase of the route receives an email with the changed rates attached, at their main and rates email addresses.
