The catalogue is everything you sell and the prices you sell it at. It lives under the Settings gear: Currencies (and exchange rates) under Payments, and Products/Services, Configurable Options, Product Add-ons, Product Bundles and Domain Pricing under Products and Services, with Promotions back under Payments. Every price in CoreInto is a row for one thing, one currency and one billing term; where there is no row, that term is not offered in that currency. This chapter goes through each page, every field on it, and what each choice does in the store and on invoices. The store itself, the cart and what happens when an order is placed are in Orders; invoices and payments are in Billing.
How prices work
- A product, add-on or configurable option choice has a price table: one row per currency and per billing term, each with a setup fee and a price. Terms are Monthly, Quarterly, Semi-annually, Annually, Biennially and Triennially for recurring items, or a single "One payment" term for one-off items.
- A domain extension has prices per year (1 to 10 years, or only the years you allow) for registering, transferring and renewing, in each currency.
- Domain extras (DNS management, email forwarding, ID protection) have one yearly price per currency.
- A box left empty, or a term left unticked, means "not offered". The store only shows terms that have a price in the visitor's currency, and a product with no price at all in that currency is not listed.
- Amounts are kept exactly (two decimal places); nothing is ever rounded with floating point.
- Things in use are never deleted: a product with services is retired, an add-on on a client's account is retired, an option choice a service uses is hidden, an extension with domains stays.
Settings > Currencies
Prices are set in each currency. The first currency (chosen at installation) is the default. Every other currency has a rate: how many of that currency make one unit of the default currency (for example, if the default is USD and 1 USD = 280.5 PKR, the rate of PKR is 280.5). Rates are used to work out prices in other currencies and to total income across currencies.
The currency table
Each row can be edited in place and saved with its own Save button.
| Column | What it does |
|---|---|
| Code | Three letters, such as USD, EUR or PKR. Each code can be set up once. |
| Before | Text printed before the amount, such as $ or €. |
| After | Text printed after the amount, such as EUR. |
| Format | How numbers are written: 1234.56, 1,234.56, 1.234,56 or 1,234 (no decimals). |
| Rate | How many of this currency make one of the default currency. The default currency's rate is always 1 and cannot be changed. |
| Looks like | A sample amount in that format. |
Buttons on a row:
- Save: saves that row.
- Make Default: shown on non-default currencies, and only while no invoice exists yet. The chosen currency becomes the default and every other rate is restated against it. Once invoices exist the default cannot change.
- Delete: shown on a currency that is not the default and that no client and no invoice uses. Deleting a currency deletes its prices too.
Add a currency with the "Add a currency" form (code, before, after, format, rate).
Exchange rates
The Currencies card says whether automatic updates (twice a day) are on, with the time of the last update and of the next one, and has a button to turn them on or off. The Exchange rates card and has the button "Update Rates Now". The button fetches today's rates for every non-default currency from open.er-api.com against the default currency, writes them to the table, and tells you which rates changed. If "Recalculate prices in other currencies" is on, it then recalculates every stored price in the other currencies from the default currency's prices (see below).
The automation does the same every day in the task exchange-rates when the setting is on. The two settings are on Settings > Automation Settings, tab Currency:
| Setting | What it does |
|---|---|
| Update exchange rates automatically | The rates are fetched twice a day, at the daily automation hour and 12 hours later (for example 09:00 and 21:00). Off: rates change only when you edit them or press Update Rates Now. |
| Recalculate prices in other currencies | After rates are fetched (daily, or by the button), every price list that has prices in the default currency is worked out again for every other currency at the new rates. Prices you typed by hand in other currencies are replaced. Leave this off if you set prices in each currency yourself. |
The task needs cURL on the server. If the rate service cannot be reached, the button shows why and nothing changes.
Currency by country
This card appears when you have more than one currency. It lets clients in your own country pay in your local currency while clients everywhere else pay in another currency (for example, Pakistani clients pay in PKR and everyone else pays in USD). It applies to everything sold: products, add-ons, domains and domain extras.
| Field | Setting | What it does |
|---|---|---|
| Home country | HomeCountry | The country whose clients pay the local currency. "None" turns the feature off. |
| Local currency | HomeCurrency | The currency for clients in the home country. "The default currency" uses the default. |
| Currency for other countries | WorldCurrency | The currency for clients in every other country. "Off" means every new client pays in the default currency, whatever their country. |
Rules:
- To charge other countries in another currency you must choose a home country, and the world currency must differ from the local one; otherwise the page refuses the change.
- A client's currency is set once, when they sign up or order for the first time, and stays with them. Existing clients keep their currency when you change these settings. Staff adding a client can choose "Automatic, by country" to apply the same rule, and the API does the same when it creates clients.
- Visitors who are not signed in see the store in the currency of their country. CoreInto works out the country from the "Prices for" switch in the store if they used it, else from where their connection comes from (Cloudflare's header when the site is behind Cloudflare, otherwise the lookup service chosen by "Find a visitor's country from their address" in General Settings, Localisation), else from the default country. The switch itself is described in Orders.
- A signed-in client sees and pays in their account's currency. While currencies follow the country and the account has not been billed yet (no invoice, no transaction, no credit), that currency follows the country on the account: a client who moves their country on Account Details, or whose profile staff change, is moved to the currency for the new country. After the first invoice the currency stays, whatever the country.
- At checkout, if a new client's country means another currency than the cart was priced in, the order is not placed; the checkout shows the prices in the right currency and asks the client to place the order again.
Domain extensions have no separate "international" price list. A client in the home country pays the extension's prices in the local currency; everyone else pays its prices in the world currency, so the two price lists per extension are the two currencies. The extension's page points this out and links back here.
Fill prices from exchange rates
Also shown when you have more than one currency. Use it when you have priced everything in one currency and want the other currencies filled in at today's rates, for the parts of the catalogue you choose.
| Field | What it does |
|---|---|
| Work from the prices in | The currency whose prices are the source. The list shows how many prices each currency has. |
| Fill these currencies | Which currencies to fill (all non-default currencies are ticked to start with). |
| Apply to | Scopes: Domain extensions (register, transfer, renew); Products in each product group, one box per group; Product add-ons; Configurable options; Domain add-ons (DNS, email forwarding, ID protection). Only the ticked scopes change. |
| Only fill empty boxes | Keeps every price already set in the target currencies and fills only the missing ones. |
| Replace the prices in those currencies | Overwrites the target currencies' prices for the chosen scopes. |
Terms the source currency does not offer are left as they are. Rates are stated against the default currency, so a conversion from one non-default currency to another goes through the default. The result message says how many price lists were filled. Nothing outside the chosen scopes changes.
Settings > Products/Services
Products are listed in groups. The page shows each group with its products: name, type, the "From" price (the cheapest term in the default currency, or "no price"), stock and the number of services using the product. Badges mark hidden, retired and featured products. Buttons: Add Group, Add Product, and per group Edit Group and Add Product Here.
Permissions: settings.products to see the page, settings.product_groups for groups, settings.products_create, settings.products_edit and settings.products_delete for products.
Product groups
A group is a page in the store at /store/{name-in-the-address}, for example /store/shared-hosting.
| Field | What it does |
|---|---|
| Name | Shown in the store and the admin area. |
| Name in the address | The last part of the store address. Made from the name if left empty. Must be unique. |
| Headline | Shown under the group's name on its store page and on the store front. |
| Tagline | Shown under the headline on the group page. |
| Features shown on the store page (one per line) | Listed under the products as "Every plan includes". |
| Order | Groups are sorted by this number, lowest first. |
| Hidden from the store | The group and its products are not listed, but products can still be ordered by their direct link. |
Buttons: Save, Cancel, Duplicate Group (makes a hidden copy with the same features; products are not copied), Delete Group (only when the group holds no products; move or delete them first).
Adding a product
Add Product asks for the group, the type and the name, then opens the full form. A new product is hidden until you untick "Hidden". Types: Shared hosting, Reseller hosting, VPS or server, Software licence, Other. The type sets the defaults: shared and reseller products ask for a domain when ordered, and the welcome email is hosting_welcome for shared and reseller, server_welcome for servers, license_welcome for software licences and service_welcome for other. A software licence is set up with the Licensing module and asks for no domain (see Licensing); a software seller's Add Product offers that type first. The admin Services menu lists them under Software Licences.
The product form
The form has seven tabs. Save Changes saves all of them at once. Duplicate (needs settings.products_create) makes a hidden copy with the prices, option groups, upgrade targets, recommendations and custom fields; Delete (needs settings.products_delete) deletes a product that no service uses; if services use it you are told to retire it instead.
Details
| Field | What it does |
|---|---|
| Name | The product's name. |
| Group | The group it is listed in. |
| Type | Shared hosting, Reseller hosting, VPS or server, Other. Server products ask for a host name and two nameserver prefixes when ordered. |
| Name in the address | The last part of the product's store address, /store/{group}/{product}. Made from the name if empty; made unique within the group. |
| Tagline | Shown at the top of the product's order page and in cart recommendations. |
| Short description (lists and cards) | Shown on the order page under the tagline. |
| Description (one feature per line, or HTML) | Each line becomes a feature in the store's plan card (tags are stripped there). |
| Colour | A colour for the product. |
| Order in the group | Sort order within the group, lowest first. |
| Featured (highlighted in the store) | The plan card is marked "Most popular". |
| Hidden (not listed; can be ordered by direct link) | Not in the store lists, but the order page still works. |
| Retired (cannot be ordered; existing services carry on) | The order page answers "not sold"; a cart holding it says the product is no longer sold. Clients' existing services keep running. |
| Ask for a domain name when ordering | The order page asks how the domain is provided (register, transfer, own domain or a free subdomain). The store's "Need a domain name?" search is shown on a group's page only when one of its plans has this on, and on the store's overview only when some plan for sale has it on. |
| Quantities | One at a time; Several, each a separate service (the client picks up to 10 and each becomes its own service, the domain going with the first); One service with a quantity (for example licences: one service, the price multiplied by the quantity). |
| Stock | "Limit the number that can be ordered" with the number in stock. The store shows how many are left and "Out of stock" at zero; each order takes from the stock and an order that would take more than is left is refused. |
Pricing
Everything that decides what is charged and when, in this order:
| Field | What it does |
|---|---|
| Payment type | Free (no price table), One Time (a single payment) or Recurring (the six recurring terms). |
| Price table | One row per currency, the default first, with a column per term: One Time/Monthly, Quarterly, Semi-Annually, Annually, Biennially, Triennially. Each cell has a Setup Fee, a Price and an Enable tick box; a term that is not enabled is not offered in that currency. For a One Time product only the first column is used. |
| Work out the other currencies from (default) at today's rates when saving | Shown with more than one currency. Converts the default currency's prices into every other currency at the current rates when you save, replacing what was there. |
| Allow multiple quantities | No; Yes, each unit is its own service (the client picks a quantity and that many services are created); Yes, one service with a quantity (the price is multiplied by the number ordered). |
| Recurring cycles limit | Bill the product this many times and then stop (0 = unlimited). |
| Auto terminate / fixed term | Days after activation when the service is terminated automatically, for trials and time-limited products (0 = never), and the Termination email sent when that happens. |
| Prorata billing | With Prorata date (the day of the month to charge on) and Charge next month (the day after which the following month is also included in the first invoice). |
| On-demand renewals | Use system default (the setting in General Settings) or Use product-specific setting: whether clients may place renewal orders early, and how many days before the due date per term (defaults 31, 92, 183, 366, 731, 1096). A client who may renew early sees "Renew Early" on the service page. |
A product that is not free needs at least one price in the default currency.
Setup
| Field | What it does |
|---|---|
| Module | None (staff set it up by hand), intoPanel, cPanel & WHM, or Licensing Manager (licence keys). With no module, setting up marks the service active and adds a to-do item for staff. The server modules have not yet been tried against a real intoPanel or cPanel server. |
| Server group | Which group of servers new accounts go on; "The default server of the module" uses the module's default server. Server groups are set up under Settings > Servers. |
| Package on the server | Shown for server modules: the package (plan) new accounts get. Type its name, or follow "Read the packages from the server" to read the list from a server of that kind. |
| Licensing fields | Shown for the Licensing Manager: key prefix, server addresses (IPs) one licence may use, lock to the domain of the first check, lock to the folder of the first check, clients may reissue, reissue limit, and days the software may run between checks. |
| Set up automatically | Do not set up automatically; As soon as the order is placed; When the first payment arrives; When staff accept the order. With a module the account is made on the server at that moment; without one staff get a to-do item. See Orders for how each choice plays out. |
| Welcome email | The product email template sent when the service is set up (hosting account details, server details, new service, or any custom product template), or None. |
| Free subdomains offered instead of a domain | A list such as .example-host.com, .example-cloud.net. The order page then offers "Use a free subdomain": the client types a name and picks one of these. Names on the "Subdomain names clients may not take" list (General Settings, Ordering) and names already in use are refused. |
The settings "Random usernames for new services", "No fraud check for clients with an active order" and "Automatic setup only for clients with an active order" exist on the Ordering tab of General Settings but are not yet used by the code.
Options and upgrades
Four cards of tick boxes: Configurable option groups (each with its number of options and an edit link), Add-ons offered with this product, Upgrades and downgrades (the products this one may move to, grouped by product group, with whether the billing term and the options may change and the upgrade email), and Recommend with this product (cross-sells shown in the cart).
Free domain
| Field | What it does |
|---|---|
| Include a free domain | No; Free the first time only (the registration is free, renewals cost the normal price); Free for as long as the service runs (registration and renewals are free). |
| For these billing terms | The product terms the free domain comes with, for example only Annually and longer. |
| For these extensions | The extensions the free domain can have. |
In the cart the domain line shows "free with hosting" and costs nothing when the product's term and the domain's extension both match. The setting "A free domain renews free only while its product is active" (General Settings, Domains) belongs to the renewal side.
Other
| Field | What it does |
|---|---|
| Bill every service of this product on the same day of the month | Pro rata billing. With the day of the month set, the first invoice covers the days from the order to that day (worked out from the price for a whole period) and the service is then due on that day every period. |
| Day of the month | The billing day, 1 to 28. |
| Orders after this day also pay the next month | When an order is placed after this day of the month, the first invoice also includes one whole period, so the client is not invoiced again a few days later. 0 turns this off. |
| Stop after this many renewals (0 = never) | A fixed-term product: the service ends after this many renewals. |
| Close automatically after this many days (0 = never) | A fixed-term product by days after setup. |
| Tax is charged on this product | Whether the product's lines are taxed when the client is taxable. |
| Affiliate commission | The default rate; A percentage; A fixed amount; None. |
| Commission amount or percentage | The number for the choice above. |
| Paid once, not on every renewal | The commission is earned on the first payment only. |
Links
Shown once the product is saved: the address of the product's order page, one address per offered term with ?term= filled in, an address with ?domain=example.com to prefill a domain, and the address of the whole group. Use them on your website or in emails.
Custom fields
Below the form, "Manage Custom Fields" opens Settings > Custom Client Fields scoped to this product (/settings/custom-fields?product=ID). These are questions asked when the product is ordered, such as a preferred username. Each field has a name, a type (Text, Link, Password, Dropdown, Tick box, Text area), help text (also shown when the pattern fails), an optional pattern the value must match, choices for a dropdown, an order, and the switches Required, Staff only (clients do not see it; a staff-only field cannot be required), Ask at sign-up and checkout (the field appears on the order page) and Print on invoices. Answers are stored with the service when the order is placed. Deleting a field deletes every stored answer.
Settings > Configurable Options
Configurable options are choices clients make when ordering, each with its own price: extra memory, more IP addresses, an operating system, a control panel licence. They are organised in option groups; a group is attached to one or more products.
Permission: settings.config_options.
Option groups
| Field | What it does |
|---|---|
| Group name (seen by staff) | Not shown to clients. |
| Description | For staff. |
| Products that offer these options | Tick the products. |
The group page lists its options (name, type, number of choices, order) with Add Option. Delete Group is refused while any service uses one of its options; hide the options instead.
An option
| Field | What it does | ||
|---|---|---|---|
| Name shown to clients | Write `key | Name to give server modules a fixed key, for example ram | Memory`; clients see only the part after the bar. |
| Type | Dropdown; Radio buttons; Yes or no; Quantity. | ||
| Smallest quantity (quantity type) | The lowest number a client may choose. | ||
| Largest quantity (0 = no limit) | The highest number; must not be below the smallest. | ||
| Order | Sort order within the group. | ||
| Hidden from new orders | The option is not shown on order pages; existing services keep it. |
Choices and prices
Each choice is a block with a name, an order, Hidden and (for saved choices) Remove, followed by a price table like a product's (setup fee and price per currency and term, with "One payment" as well as the recurring terms, since one-payment products use it). The last, empty block adds a new choice; save to get another.
- A dropdown or radio option has as many choices as you like. When the client picks nothing, the first visible choice applies.
- A yes/no option has exactly one choice: its price when ticked.
- A quantity option has exactly one choice: its price per unit. The cart multiplies it by the quantity.
- The price added to the product is the choice's price for the product's billing term; a choice without a price for that term adds nothing.
- Removing a choice a service uses hides it instead of deleting it.
- "Work out the other currencies from (default) at today's rates when saving" applies to every choice on the page.
Delete Option is refused while a service uses it; hide it instead.
Settings > Product Add-ons
Add-ons are extras sold with a product and billed alongside it, such as SSL certificates, backups or extra IP addresses. The list shows each add-on's payment type, how many products it can be added to and how many clients have it.
Permission: settings.addons.
| Field | What it does |
|---|---|
| Name | Shown to clients. |
| Payment | Free, One payment or Recurring. Save to see the matching price table. |
| Description | Shown under the add-on on the order page. |
| Set up automatically | The same four choices as a product. |
| Order | Sort order. |
| Offer it when ordering | Shown on the order page of the products it belongs to. Untick to keep it for staff to add. |
| Tax is charged | The add-on's lines are taxed when the client is taxable. |
| Clients may order several | Allows a quantity. |
| Suspend and close with its service | The add-on follows its service when that is suspended, unsuspended or terminated. |
| Bill it up to the service's next due date | Prorate the add-on to the service's due date. |
| Hidden | Not offered to new orders. |
| Retired | Cannot be ordered; existing add-ons on client accounts carry on. |
| Prices | A product-style price table, or "This add-on is free". |
| Products it can be added to | Tick the products. |
In the cart a recurring add-on takes the same billing term as its product when it has a price for that term; otherwise its first priced term. A one-payment add-on uses its one-payment price.
Below the form, "Manage Custom Fields" (/settings/custom-fields?addon=ID) defines fields kept with each add-on a client has, such as a licence key or a setting, with the same field form as products. Nothing fills these fields in yet: they can be defined, but no page asks for or shows their values.
Delete Add-on is refused while clients have it; retire it instead.
Settings > Product Bundles
A bundle sells several products together at set terms and prices through one link. The list shows each bundle's items, uses (and the limit) and validity dates; a bundle past its end date is marked "ended".
Permission: settings.bundles.
| Field | What it does |
|---|---|
| Name | The bundle's name. |
| Price shown in the store (default currency) | The headline price shown for the bundle. |
| Description | Text for the bundle. |
| Valid from, Valid until | The dates the bundle can be used; empty means always. The end must not be before the start. |
| Most uses (0 = no limit) | How many times it can be bought; the count so far is shown. |
| Show in the store group | The product group whose page lists the bundle, or "Nowhere (link only)". |
| Order | Sort order. |
| Promotion codes may be used too | Whether a promotion code can be combined with the bundle. |
| Featured | Highlights the bundle. |
| Products in the bundle | For each row: the product, its billing term, a price (empty means the product's normal price) and whether it comes with a domain. Three empty rows are offered; save to get more. |
A bundle needs a name and at least one product.
Settings > Promotions
Promotion codes give a discount in the cart. The list has two tabs, Current and "Ended or used up", and shows each code's discount, whether it repeats, uses and end date. Orders that used a deleted code keep their discount.
Permissions: settings.promotions to see, settings.promotions_edit to add and change, settings.promotions_delete to delete.
| Field | What it does |
|---|---|
| Code | 2 to 64 letters, digits, dashes or underscores; stored in capitals; must be unique. A new promotion gets a random code you can replace. |
| Type | Percentage off; Fixed amount off; Price override (a set price); Free setup. |
| Value | The percentage (0 to 100), or an amount in the default currency, converted at the rate for carts in other currencies. |
| Also on renewals | The discount applies to renewal amounts too, not only the first payment. |
| for this many renewals (0 = always) | Limits how many renewals keep the discount. |
| Starts, Ends | The dates the code works; empty means no limit. The end must not be before the start. |
| Most uses (0 = no limit) | How many orders may use it; the count so far is shown. |
| New clients only | Refused for clients who already have an order that is not cancelled or fraud. |
| Existing clients only | Refused for clients with no such order. The two cannot both be ticked. |
| Once per client | Refused when the client already has an order with this code. |
| Once per order (the first item only) | The discount applies to the first matching line only. |
| Keep the discount after upgrades | Marks the promotion as lifetime. |
| Can be used on upgrades | Marks the promotion as usable on upgrades. |
| Applies to | Products, add-ons and domain extensions the code discounts; nothing ticked means everything. Billing terms limit it to chosen terms (the product terms, and 1 to 10 years for domains). |
| Only when the order also has | Products, add-ons or extensions that must be in the same order; "or the client already has one of them" also accepts an active service of one of those products or an active domain with one of those extensions. |
| Notes for staff | Free text, shown in the list. |
How the discount is worked out on a matching line: Percentage off takes the percentage of the first payment including the setup fee (and of the renewal when it repeats); Fixed amount off takes that amount, never more than the line; Price override makes the line cost the set amount; Free setup removes the setup fee. The discount appears as a separate negative line on the invoice ("Promotion CODE: item"). The cart tells the client why a code cannot be used (not valid yet, expired, used up, new or existing clients only, already used, needs something else in the order, or applies to nothing in the cart). Each use counts when the order is placed.
Settings > Domain Pricing
Domain Pricing holds the extensions (TLDs) you sell, how each is registered, its registry rules, and its prices per year. The list shows each extension's register, transfer and renew price for its shortest term in the default currency, who registers it, its rules (documents needed, staff task, allowed years) and how many domains clients have with it.
Permission: settings.domain_pricing.
Adding extensions
The page has the extension table on the left and two cards on the right. In the table the Order column has a grip and up/down arrows: the order here is the order clients see in the domain search, the price table and the home page (drag rows, or use the arrows). The Premium Domains card turns premium names on with a markup percentage: when a registrar module reports a premium price for a name, the client is offered it at that price plus the markup; with the switch off, premium names count as taken. The Lookup Provider card says how availability is checked today (the registrar module, or the WHOIS/RDAP lookup) with a link to the Domains tab of General Settings.
Type extensions separated by spaces or commas (.com .net .org .co.uk) and press Add. The leading dot is optional; international extensions are converted to punycode. Extensions already set up are skipped. Set the prices next.
An extension
The extension itself cannot be renamed. The form has these fields:
| Field | What it does |
|---|---|
| Registrar | Staff register it by hand, or one of the registrar modules: ResellerClub / LogicBoxes, Namecheap, Spaceship, PKNIC (regional module), Porkbun, Dynadot. A module must also be set up under Settings > Domain Registrars. No registrar module has been tried against a real registrar account yet. |
| Years it can be registered for | A comma list of years from 1 to 10, for example 2,4,6,8,10 for .pk. Empty means 1 to 10. Save to update the price table; the store offers only these periods. |
| Register automatically once paid | On: a paid registration or transfer is sent to the registrar module. Off: it becomes a staff task even when a module is set. |
| The registry needs documents (always a staff task) | The client is told at ordering that documents are needed; the domain waits as pending registration for staff. |
| Transfers need an EPP code | The transfer form asks for the code. |
| Offer DNS management, Offer email forwarding, Offer ID protection | Which domain extras can be bought with this extension (their prices are set on the Domain Pricing page). |
| Local and international prices | A note: with Currency by country on, it names which clients pay which currency's prices; otherwise every client pays in the default currency. Links to Settings > Currencies. |
| Label in the store | None, Hot, New or Sale, shown as a badge. |
| Categories (comma separated) | Up to 40 characters each, for grouping extensions. |
| Order | Sort order. |
| Spotlight in domain search | Shows the extension (up to eight) with its lowest price under the domain search box, and offers the typed name with that extension. |
| Grace period (days, empty = registry default) and fee | Days after expiry in which the domain can still be renewed, and the fee added. |
| Redemption period (days, empty = registry default) and fee (empty = not offered) | Days of redemption after the grace period, and the fee; an empty fee means redemption is not offered. |
Prices
Under "Prices" there is one table per currency with a row for Register, Transfer and Renew and a column per allowed year. Leave a box empty where that term is not offered. "Work out the other currencies from (default) at today's rates when saving" converts the default currency's prices into the others.
Buttons: Save Changes, Back, "Copy to a new extension" (type the new extension and press Duplicate: the new extension gets this one's settings and all its prices) and Delete Extension (shown only when no client has a domain with it).
Presets from a registrar module
When a registrar module is set up under Settings > Domain Registrars, its page can list "Extensions with their registry rules": the extensions the module knows, each with its home country, years, automatic registration and documents rule. Tick the ones to sell and press "Use the ticked extensions". New extensions are added pointing at that registrar with those rules; existing ones are pointed at it and given the rules, keeping their prices. Then set the prices here. The PKNIC module brings the .pk extensions this way.
Domain extras (price per year)
At the bottom of the Domain Pricing page, "Domain extras" sets one yearly price per currency for DNS management, Email forwarding and ID protection. 0.00 means free; empty means not offered. Each extension chooses which of the three it supports. In the cart an extra costs its yearly price times the years of the registration and renews with the domain.
