For the complete documentation index, see llms.txt. This page is also available as Markdown.

Coda’s Pricing Template

The Bulk SKU Upload template is a CSV file used to create and update multiple SKUs (in‑app purchase items) for a title in a single upload. You can export your title's current SKUs to this format, edit prices, availability, and localized text in a spreadsheet, then re‑upload the file to apply the changes in bulk.

Each row represents one SKU (product). Each column represents one attribute of that SKU. Column names are case‑sensitive and must match exactly.

This reference describes the general template structure. Column availability may vary slightly by title configuration — if a column described here doesn't appear in your export, contact your Coda account manager.

A sample file, sample_bulk_sku_upload_template.csv, is included alongside this page. It uses placeholder SKUs and dummy translations to illustrate each pricing scheme and field combination described below — download it as a starting point for your own upload.


1. How the template works

  1. Export — Download your title's current SKUs as a CSV from the portal. Every existing SKU appears as one row, pre‑filled with its current values.

  2. Edit — Update values directly in the CSV (e.g. change a price, extend a sale window, add a new SKU as a new row).

  3. Re‑upload — Upload the edited CSV back into the portal. Rows are matched to existing SKUs by ProductID; a ProductID not already in the system creates a new SKU.

  4. Review — The portal validates the file and reports any row‑level errors before changes go live.


2. Core SKU fields

These columns appear once per row and control the SKU's identity, pricing model, availability window, and purchase limits.

Column
Required
Type / Format
Description

ProductID

Yes

String

The unique identifier for the SKU. Used to match the row to an existing SKU on upload — do not change this value for an existing SKU, or the upload will create a duplicate instead of updating it.

Pricing_Scheme

Yes

Enum: Real Currency, Freebie, Loyalty Currency, Loyalty Milestone

Determines how the SKU is "paid for." See Section 3 for how this affects the other pricing fields.

Price_US_Default

Yes

Decimal (USD)

The SKU's base/list price in US dollars. Used as the reference price even for non‑cash schemes (set to 0.00 for Freebie, Loyalty Currency, and Loyalty Milestone rows). For Real Currency SKUs this should match the Price_US column.

Price_<COUNTRY>

No

Decimal, one column per country

Per‑country override price in local currency. Only meaningful when Pricing_Scheme = Real Currency. See Section 5.

Main_IconPath

Yes

String (relative file path)

Path/filename of the SKU's storefront icon image, matched against the image assets uploaded for the title (e.g. festivefixtures/Loyalty_Offer.webp).

Start_Time

No

ISO‑8601 datetime, YYYY-MM-DDTHH:MM:SS

When the SKU becomes available for purchase. Leave blank for "available immediately."

End_Time

No

ISO‑8601 datetime, YYYY-MM-DDTHH:MM:SS

When the SKU stops being available. Leave blank, or use the sentinel value 2100-01-01T00:00:00, for "no end date."

Web_Store_Exclusive

Yes

Enum: Yes, No

Whether the SKU is sold only through the web store, as opposed to also being purchasable in‑app.

Sku_Purchase_Limit

No

Integer

Maximum number of times a single player can purchase this SKU within one refresh window (see Refresh_Rate). Leave blank for no limit.

Refresh_Rate

No

Integer (days)

Length, in days, of the purchase‑limit window. E.g. 1 = daily limit, 7 = weekly, 30 = monthly. Very large values (e.g. 100000 or more) are used as a "never refreshes" sentinel — i.e. the limit applies once, for the lifetime of the SKU. Only meaningful together with Sku_Purchase_Limit.

Purchase_Limit_Start_Date

No

ISO‑8601 datetime

The anchor date the purchase‑limit window counts from. Typically set equal to Start_Time.

Loyalty_Currency_Earned

Yes

Decimal

Amount of loyalty currency the player earns from purchasing this SKU. For Real Currency SKUs this is typically ~100× the USD price (e.g. a $0.99 SKU earns ≈99 points); some promotional/bonus SKUs earn at a higher multiplier (e.g. 200×). Set to 0.00 when not applicable.

Loyalty_Currency_Burned

Yes

Decimal

Amount of loyalty currency a player must redeem to acquire this SKU. Only meaningful when Pricing_Scheme = Loyalty Currency; set to 0.00 otherwise.


Pricing_Scheme determines which of the pricing columns actually apply to a given row:

Pricing_Scheme

What it means

Fields that apply

Real Currency

Standard paid purchase, charged in real money.

Price_US_Default, Price_<COUNTRY> columns. Loyalty_Currency_Earned is typically populated (points earned per purchase); Loyalty_Currency_Burned = 0.00.

Freebie

Free item, no charge.

Price_US_Default = 0.00, all Price_<COUNTRY> blank. Loyalty_Currency_Earned/Burned = 0.00. Commonly paired with a Sku_Purchase_Limit of 1 and a large Refresh_Rate (one‑time claim).

Loyalty Currency

Redeemed using the player's loyalty/points balance instead of cash.

Loyalty_Currency_Burned is populated with the redemption cost. Price_US_Default = 0.00.

Loyalty Milestone

Reward automatically granted at a loyalty milestone (not directly purchased).

Pricing fields are typically all 0.00; availability is controlled by Sku_Purchase_Limit / Refresh_Rate rather than price.


4. Localized text columns

Five text fields — Title, Description, Category, Item_Main_Title, and Item_Sub_Title — each repeat once per supported language, using the pattern:

For example: Title_en, Title_fr, Title_ja, Description_en, Category_en, Item_Main_Title_en, Item_Sub_Title_en, etc.

Field prefix
Required
Description

Title_<lang>

_en required; others recommended

The SKU's display name shown in storefront listings.

Description_<lang>

No

Longer descriptive text for the SKU. Optional and frequently left blank — not all storefront surfaces display it.

Category_<lang>

Recommended

The category/grouping label the SKU is shown under in the storefront (e.g. "FC Point Offer Permanent").

Item_Main_Title_<lang>

_en required; others recommended

The primary title shown on the item itself (as opposed to the storefront listing) — commonly the same value as Title_<lang>.

Item_Sub_Title_<lang>

No

A secondary line of text shown under Item_Main_Title_<lang> on the item.

Leave a language's column blank to fall back to the default/English text on that surface (behavior may vary by title configuration).

Supported language codes

Code
Language
Code
Language

en

English

ru

Russian

zh

Chinese

da

Danish

ar

Arabic

fi

Finnish

ro

Romanian

lo

Lao

tr

Turkish

pt

Portuguese

pl

Polish

km

Khmer

th

Thai

es

Spanish

sv

Swedish

de

German

nl

Dutch

sk

Slovak

ms

Malay

el

Greek

mn

Mongolian

id

Indonesian

ja

Japanese

it

Italian

my

Burmese

cs

Czech

no

Norwegian

hu

Hungarian

fr

French


5. Per‑country pricing columns

For SKUs using Pricing_Scheme = Real Currency, price can be overridden per country using columns named:

using the country's ISO 3166‑1 alpha‑2 code. If a country's column is left blank, the storefront falls back to a computed/default price derived from Price_US_Default.

Full list of supported country codes
Code
Country
Code
Country
Code
Country

US

United States

IE

Ireland

KZ

Kazakhstan

DE

Germany

EC

Ecuador

TH

Thailand

HK

Hong Kong

MM

Myanmar

LA

Laos

TW

Taiwan

MN

Mongolia

PE

Peru

PT

Portugal

EG

Egypt

CZ

Czech Republic

DK

Denmark

AE

United Arab Emirates

PH

Philippines

PY

Paraguay

UY

Uruguay

TL

Timor‑Leste

HU

Hungary

IN

India

PK

Pakistan

QA

Qatar

ZA

South Africa

PL

Poland

MA

Morocco

IQ

Iraq

TR

Turkey

ID

Indonesia

IT

Italy

LK

Sri Lanka

MX

Mexico

MY

Malaysia

ES

Spain

AR

Argentina

AT

Austria

AU

Australia

NG

Nigeria

RO

Romania

NL

Netherlands

NO

Norway

BD

Bangladesh

NP

Nepal

BE

Belgium

FI

Finland

BH

Bahrain

JP

Japan

FR

France

NZ

New Zealand

BO

Bolivia

SA

Saudi Arabia

BR

Brazil

SE

Sweden

SG

Singapore

SK

Slovakia

KE

Kenya

GB

United Kingdom

KH

Cambodia

CA

Canada

CH

Switzerland

CL

Chile

GR

Greece

CO

Colombia

KW

Kuwait

GT

Guatemala


6. Reserved / internal columns

The following columns may appear in your export but are reserved for specific configurations and are typically left blank:

Column
Notes

EventPackage

Links a SKU to a specific promotional event/package grouping. Only used for titles running event‑based bundles — leave blank unless your Coda account manager has instructed you to set a specific package ID for a campaign.

Active_Cogs

Internal cost‑of‑goods‑sold tracking flag. Leave blank; contact your Coda account manager if you need COGS tracking enabled for a SKU.

Cogs_Currency

Currency code paired with Active_Cogs. Leave blank unless directed otherwise.


7. Sample rows

The included sample CSV covers the following illustrative SKUs:

ProductID
Pricing Scheme
What it demonstrates

GEMPACK_100

Real Currency

A basic, always-available currency pack with no purchase limit.

GEMPACK_2500_BONUS

Real Currency

A limited-time promo with a bonus loyalty multiplier (earns 200× instead of the usual ~100×).

FOUNDERS_BUNDLE

Real Currency

A web-store-exclusive, one-time-only bundle (Sku_Purchase_Limit = 1, sentinel Refresh_Rate).

WELCOME_GIFT

Freebie

A one-time free gift for new players, capped for the SKU's lifetime.

DAILY_LOGIN_REWARD

Freebie

A free reward that resets daily (Refresh_Rate = 1).

LOYALTY_SKIN_COMMON

Loyalty Currency

A low-cost item redeemed with loyalty points, no purchase limit.

LOYALTY_SKIN_LEGENDARY

Loyalty Currency

A higher-cost redemption capped at 3 per month.

MILESTONE_REWARD_TIER5

Loyalty Milestone

A reward auto-granted at a loyalty milestone rather than purchased.

SEASON_PASS_PREMIUM

Real Currency

A seasonal pass limited to one purchase per season window.

GEMPACK_50

Real Currency

A minimal row with only the required fields populated.

To keep the file readable, only en, fr, es, de, ja, and zh are filled in for the localized text columns, and only US, GB, SG, JP, BR, and DE are filled in for per‑country pricing — every other language/country column is present (per the full template) but left blank, exactly as most real exports leave the majority of these optional columns blank.


8. Tips and common errors

  • Don't change ProductID for existing SKUs — this is the match key. Changing it creates a duplicate SKU rather than updating the original.

  • Keep the sentinel end date (2100-01-01T00:00:00) or leave End_Time blank for SKUs that shouldn't expire.

  • Real Currency SKUs should always have Price_US populated — it's used as the fallback reference price alongside Price_US_Default.

  • Sku_Purchase_Limit and Refresh_Rate work as a pair — setting one without the other may produce unexpected results.

  • Column headers are case‑sensitive — don't rename them when editing in Excel/Sheets.

Here’s the Sample Google Sheet (Pricing template). Download and create a copy to submit the pricing information. Convert the Price & SKU info tab in the sheet in CSV format and upload it to the Coda Portal.

You can also download and view the sample or from the Coda Portal.

Coda Product (SKU) Price Template

The sample file contains an example product. Your import file probably contains many more products and variants. If you use the sample file to create your own import file, then make sure that you create a copy of the file and remove all the example products.

Last updated

Was this helpful?