About payment

December 16, 2020 ยท View on GitHub

The payment object indicates whether payment is required and stores information that can be used to calculate the fee required for a given time and stay, and how the payment may be made. CurbLR does not, at this time, store information sufficient to facilitate dynamic pricing.

Fees for parking or other street usage can be sorted into three categories, borrowed from the Alliance for Parking Data Standards' Release 2.0:

Rate typeDescriptionExample
Flat-rateA fixed amount is charged for a period of time, irrespective of the day, time, or actual length of stay.The fee is $1 per hour, for any part of that hour
Flat-rate tierA fixed amount is charged for an initial period of time. The amount changes for successive periods. The fee schedule may vary based on duration of stay, time of day, or bothIn the first hour of a parking session, the fee is $1 for any part of that hour; in the second hour of a parking session, the fee is $2 for any part of that hour.
IncrementingSame as flat-rate tier, but intended to be used for smaller amounts of time, such as 5-minute periodsThe fee is 5 cents for the first 5 mins, 10 cents for the next 5 mins, 25 cents for the next 10 mins, 50 cents for the next 15 mins

These fields are stored as key:value pairs in a pricing object in the spec.

Fees may also vary based on time of day. To address this, users can include a TimeSpan object within the payment object.

Definition

Each GeoJSON feature may have the following Payment properties:

Field nameImportanceTypeDescriptionExample
ratesOptionalarrayThe fee amounts and durations. If the fee amount varies depending on time of day, then optional TimeSpan object(s) can be included here. Each rates field can include a single or multiple values, so for consistency, rates fields are always arrays.
rate.feesOptionalarray of floatThe amounts charged for the duration of stay, expressed as whole units of currency. Currency units can be specified in the manifest for the CurbLR feed.[1]; [0.25, 0.5]
rate.durationsOptionalarray of intDuration of stay, in mins, for which this fee applies. Consecutive periods (for incrementing or other tiered parking rates) can be stored in an array. The final fee and duration in the arrays are assumed to repeat until the maxStay, defined in the rule.[60]; [30, 15, 15]
rate.timeSpansOptionalarray of timeSpansTime spans for which this fee applies.See timeSpans examples
methodsOptionalarray of string Well-known values: meter, pay station, digital, phoneHow the fee is collected at the street-level, including through digital payment.["pay station", "digital"]
formsOptionalarray of string Well-known values: coins, bills, Visa, ApplePay, Mastercard, American Express, Discover, AndroidPay. These are not exhaustive. Additional, locally-specific values exist.What type of payment is accepted. Expressed as an array.["coins", "SFMARTA card", "ParkingApp"]
operatorOptionalstringThe ID or name of the company that operates the payment method. If the payment operator is the same for most/all of the area, then this could be set as a property of the GeoJSON Feature Collection and used here only as an overrideAcme Paystation
phoneOptionalstring (E.164 format: + + country code + local area code + phone number)The phone number, including country and area code, for the company or service that operates and may be contacted about the payment. If the payment operator is the same for most/all of the area, then this could be set as a property of the GeoJSON Feature Collection and used here only as an override+15551231234
deviceIdsOptionalarray of stringA unique device ID that corresponds to the parking payment device (e.g. meter) for this regulation. Feature geometries can encompass multiple payment devices, so these are listed as an array["1234nmfl", "0249sndn"]

Data fields should generally be considered case insensitive since they are used programmatically; we use lower-case in our examples, except for fields that would be used for display purposes (such as a street name or agency name).

Examples

The links below show real world curb regulations translated into CurbLR.

LinkDescription
Examples of simple regulationsSimple regulatory scenarios typically involving one or two basic restrictions
Examples of complex regulationsComplex regulatory scenarios typically involving several restrictions
Sample of downtown Portland's parking regulationsContains data for about 3 miles of parking regulations, surveyed in November 2019. This can also be viewed at demo.curblr.org

Flat-rate

Describes a parking meter. The fee is $1 for any part of an hour.

{
  "payment": {
    "rates": [
      {
        "fees": [1],
        "durations": [60]
      }
    ],
    "methods": ["meter"],
    "forms": ["coins"],
    "operator": "LADOT",
    "phone": "+15552225039",
    "deviceIds": ["MB-2038"]
  }
}

Flat-rate tier, based on duration

Describes a parking meter. In the first hour of a parking session, the fee is $1 for any part of that hour; in the second hour of a parking session, the fee is $2 for any part of that hour.

{
  "payment": {
    "rates": [
      {
        "fees": [1, 2],
        "durations": [60, 60]
      }
    ],
    "methods": ["meter", "digital"],
    "forms": ["coins", "Mastercard", "Visa", "American Express", "Discover", "ApplePay", "AndroidPay"],
    "operator": "LADOT",
    "phone": "+15552225039",
    "deviceIds": ["MB-2494"]
  }
}

Incrementing

Describes a parking meter. The fee is 5 cents for the first 5 mins, 10 cents for the next 5 mins, 25 cents for the next 10 mins, 50 cents for the next 15 mins.

{
  "payment": {
    "rates": {
      "fees": [0.05, 0.1, 0.25, 0.5],
      "durations": [5, 5, 10, 15]
    },
    "methods": ["meter"],
    "forms": ["coins", "MasterCard", "Visa", "American Express", "Discover", "ApplePay", "AndroidPay"],
    "operator": "LADOT",
    "phone": "+15552225039",
    "deviceIds": ["MB-2494"]
  }
}