Carrier Rate Cards Built
A rate card is one carrier's dated postage price list — a set of weight/zone slabs that says what it costs to send a package through that carrier during a given period.
What a rate card is
Carriers change their postage rates from time to time, and different carriers price by zone as well as by weight. A carrier rate card captures one such price list for one carrier: a name, an effective date range, and a set of slabs — each slab a weight band (optionally scoped to a zone) with a flat charge plus a per-kilogram charge. Because a card is dated, AIR can hold both the current card and a full history of past cards for the same carrier without losing old pricing, and can prepare a future card ahead of the date it takes effect.
Where to find it & who can see it
Open Despatch › Carrier Rate Cards in the left navigation.
Columns
| Column | Shows |
|---|---|
| Carrier | carrier.name — the delivery carrier this price list belongs to. Searchable. |
name | The card's own label (e.g. a season or revision name). Searchable, sortable. |
| Effective From | effective_from as a date. Sortable. This is the list's default sort, newest first. |
| Effective To | effective_to as a date, or "Ongoing" if the card has no end date. Sortable. |
| Active | is_active as a boolean icon — see the overlap rule below for what this controls. |
| Slabs | A live count of the card's weight/zone slabs. |
created_at | Date and time created. Sortable; hidden by default. |
Filters
Select Filters to open two filters: Carrier (a select over every delivery carrier) and Active Status (a yes/no/either toggle on is_active). Combine either with the search box, which matches carrier name and card name.
Before a card is saved, the console checks every other active card belonging to the same carrier for a date-range clash — a card with no end date is treated as running forever for this check. If the new or edited date range overlaps an existing active card, the save is rejected with an error on the Effective From field: "This date range overlaps an active rate card for this carrier." Switching a card's Active toggle off exempts it from this check, so if you need two candidate cards to coexist temporarily (e.g. while drafting a replacement), keep the one still in draft switched off until its dates are final.
Create or edit a rate card
Select New carrier rate card, or row Edit on an existing one. The form has the card's own fields plus an inline repeater of slabs — there is no separate slabs screen.
- Fill in the Rate Card section
Field Type Required Notes carrier_idSelect (searchable) Yes The delivery carrier this price list belongs to. nameText Yes Max 100 characters. effective_fromDate Yes The date this card's pricing starts applying. effective_toDate No Leave blank for an open-ended card ("Ongoing" in the list). On edit, the end date cannot be moved before the start date. is_activeToggle No Defaults on. Only active cards are checked for — and can trigger — the overlap rule above. notesTextarea No Free text, full-width. - Add and arrange slabs
The Add slab repeater builds the card's price table. At least one slab is required; rows can be dragged to reorder, and each row's summary line reads as "zone · min g–max g" as you fill it in.
Field Type Required Notes zoneText No Max 50 characters. Leave blank to mean "all zones." min_weight_gramsNumber Yes Grams, 2 decimal places. The slab's lower weight bound. max_weight_gramsNumber No Grams, 2 decimal places. Leave blank for no upper limit. flat_chargeNumber No ₹, 2 decimal places, defaults to 0. A fixed charge for any package in this slab. per_kg_chargeNumber No ₹, 2 decimal places, defaults to 0. Added on top of the flat charge per kilogram of the package's weight. sort_orderNumber No Integer, defaults to 0. Also settable by dragging the row. - Save
Create or Save submits the card together with its slabs in one go. Both the create and edit forms route through
CarrierRateCardServicerather than saving directly, so the overlap guard below always runs, and on save the service replaces the card's entire slab set with whatever rows are on the form at that moment — there is no way to update one slab without resubmitting the whole list, and the service silently deletes any slab you removed from the repeater.
If a card's effective_to date has already passed, the console still opens its edit form and lets you change fields on screen — but the moment you try to save, the update is refused with "A historical rate card is read-only. Create a new one instead." Nothing about the form visibly warns you beforehand, so if you open an old card expecting to correct it, expect the save to be the point where you're told to use Duplicate or New carrier rate card instead.
Duplicate
Row Duplicate (needs carrier_rate.manage) clones a card's carrier, notes and every slab into a brand-new card on a new date range, without disturbing the source card at all — the fastest way to carry an existing price list forward.
- Select Duplicate on the source card
A small dialog opens asking only for the new card's
name(required),effective_from(required) andeffective_to(optional). - Confirm
The new card is created active by default, with the same carrier and notes as the source, and every one of the source's slabs copied across (zone, weight bounds, flat charge, per-kg charge, sort order) exactly as they stood at the moment you duplicated.
- If the new range overlaps
The same overlap guard as create/edit applies — since the duplicate is always created active, a clashing date range against another active card for the same carrier is rejected. A danger notification titled "Cannot duplicate rate card" reports the overlap message and the dialog stays open so you can adjust the dates and try again.
Deleting a rate card
Row Delete (or the bulk equivalent) needs carrier_rate.manage and removes the card outright — CarrierRateCard does not use soft deletes, so this is permanent. It is not gated by the historical-card lock that applies to edits.
Related pages
See Warehouses & Carriers for the Delivery Carrier master list every rate card belongs to, and Packages for where a package's carrier — and so, indirectly, its applicable rate card — is set.