Signslip

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

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