Rate-card format
Signslip reads and writes only this format, version 1. It will not import another estimator’s files. Amounts are major currency units such as 12.00, with at most two decimal places. Sizes in band limits are square feet, square metres, or a piece count. Dimensions on a quote are inches or millimetres, matching the shop.
Rules the importer keeps
- One currency for the file, one of USD, GBP, EUR, CAD, AUD, NZD. Numbers are not converted if the shop currency differs. The import is rejected instead.
unitSystemisimperialormetric. A metric file will not load into an imperial shop.- Area bands are chosen from one piece, then the price is multiplied by quantity. Quantity bands use the number of pieces.
- A basis exactly equal to
upTostays in that band. The next amount uses the next band. upTo: nullis the open-ended band. Only one, and it is last after sorting.- The minimum replaces the base charge only. Setup and add-ons are added after it. Rounding is applied once to the line total.
- Add-on kinds:
flat,each,per_area,per_perimeter,grommets. Grommets needspacingin inches or millimetres.
JSON
Top-level format must be signslip.ratecards and version must be 1.
{
"format": "signslip.ratecards",
"version": 1,
"currency": "USD",
"unitSystem": "imperial",
"cards": [
{
"name": "Banners",
"jobType": "banner",
"bandMode": "area",
"minimumCharge": "35.00",
"setupFee": "0.00",
"rounding": {
"mode": "none",
"increment": "0.01"
},
"bands": [
{
"upTo": "10",
"price": "12.00"
},
{
"upTo": "32",
"price": "9.00"
},
{
"upTo": null,
"price": "7.00"
}
],
"addons": [
{
"id": "grommets",
"name": "Grommets",
"kind": "grommets",
"unitPrice": "0.35",
"spacing": "24"
},
{
"id": "hem",
"name": "Hem",
"kind": "per_perimeter",
"unitPrice": "1.50"
},
{
"id": "lamination",
"name": "Lamination",
"kind": "per_area",
"unitPrice": "3.00"
}
]
},
{
"name": "Flat panels",
"jobType": "panel",
"bandMode": "area",
"minimumCharge": "45.00",
"setupFee": "15.00",
"rounding": {
"mode": "none",
"increment": "0.01"
},
"bands": [
{
"upTo": "8",
"price": "18.00"
},
{
"upTo": "24",
"price": "14.00"
},
{
"upTo": null,
"price": "11.00"
}
],
"addons": [
{
"id": "lamination",
"name": "Lamination",
"kind": "per_area",
"unitPrice": "4.00"
},
{
"id": "edge",
"name": "Edge polish",
"kind": "flat",
"unitPrice": "12.00"
}
]
}
]
}
CSV
One header, then a meta row, then for each card a card row, its band rows, and its addon rows. Use * in band_up_to for the open band. Lines starting with # are comments.
record_type,currency,unit_system,card_name,job_type,band_mode,minimum_charge,setup_fee,round_mode,round_increment,band_up_to,price,addon_id,addon_name,addon_kind,addon_unit_price,addon_spacing meta,USD,imperial,,,,,,,,,,,,,, card,,,Banners,banner,area,35.00,0.00,none,0.01,,,,,,, band,,,Banners,,,,,,,,10,12.00,,,,, band,,,Banners,,,,,,,,*,7.00,,,,, addon,,,Banners,,,,,,,,,,grommets,Grommets,grommets,0.35,24
Download the imperial JSON template · CSV template · Metric JSON