Rate Plans
A rate plan is the commercial condition attached to a price: whether the rate is public or opaque, refundable or not, restricted to an audience, or part of a package. It is reported per room, not per option, so two rooms in the same option can carry different rate plans.
{
"ratePlan": {
"code": "NOREEMBOLSABLE",
"name": "Non-refundable",
"providerCode": "388795977"
}
}
| Field | Meaning |
|---|---|
code | The normalized classification, from the catalog below. |
name | The description, when the connection provides one. |
providerCode | The supplier's own rate identifier, exactly as we received it. |
Read code, not providerCode
This is the important difference from board codes, where both
sides are vocabularies you can enumerate. On the rate plan, only code is a vocabulary.
providerCode is an identifier: one connection sends 9-digit contract ids (388795977), another
sends opaque tokens (C05, H01, 34*, CG-OPACO 10). There is no supplier-published list of them
and there cannot be, because a new commercial agreement creates a new one.
So group, filter and display on code. Treat providerCode as an opaque reference to quote back to
the supplier when you need to ask about a specific rate, not as something to interpret.
NOTARIFA appears as a providerCode on almost every connection. It is the sentinel for no rate
plan supplied, and it normalizes to PUBLICA.
Catalog
The codes are Spanish, because the normalized vocabulary predates the English API. The Spanish column is included so they are readable, not because the API returns Spanish text.
| Code | Name | Spanish |
|---|---|---|
PUBLICA | Public rate | Tarifa pública |
OPACA | Opaque rate | Tarifa opaca |
OPACANRF | Opaque rate, non-refundable | Opaca no reembolsable |
NOREEMBOLSABLE | Non-refundable | No reembolsable |
PARCIALMREEMBOLSABLE | Partially refundable | Parcialmente reembolsable |
MAYORES55 | Seniors 55 and over | Mayores de 55 |
MAYORES60 | Seniors 60 and over | Mayores de 60 |
MAYORES65 | Seniors 65 and over | Mayores de 65 |
RESIDENTE | Resident | Residente |
PKG | Package | Paquete |
SERVICIOSESENCIALES | Essential services | Servicios esenciales |
TICKETING | Ticketing | Ticketing |
NOMOSTRAR | Not displayed | No mostrar |
A handful of codes reach the catalog before anyone can name them, harvested from a connection we had
no mapping for yet: DIS, HNO, LUX, NOR, OPACAPD, PRU, RFE and one chain-specific code.
Each is reached from a single connection. Treat them as opaque and read name for display.
It is a classification, not a product catalog
Unlike a board code, which answers one question, code squeezes four unrelated dimensions into one
field:
| Dimension | Codes |
|---|---|
| Visibility | PUBLICA, OPACA, NOMOSTRAR |
| Refundability | NOREEMBOLSABLE, PARCIALMREEMBOLSABLE |
| Audience | MAYORES55, MAYORES60, MAYORES65, RESIDENTE |
| Packaging | PKG, SERVICIOSESENCIALES, TICKETING |
A rate can be opaque and non-refundable, and only one value fits — which is why OPACANRF exists.
Two consequences worth planning for:
- Do not infer refundability from
code. A rate that readsOPACAorMAYORES65may still be non-refundable. The authoritative source is thecancellationPolicyon the option, not the rate plan, and Quote revalidates it before booking. - The distribution is heavily skewed.
PUBLICAaccounts for roughly half of all mappings and reaches every connection, followed byNOREEMBOLSABLEandOPACA. If you branch on rate plan, those three plus a default is realistic; the rest are long tail.
NOMOSTRAR is not a commercial condition but an instruction: a connection uses it to mark rates that
should not be shown. It reaches the catalog from two connections only.
Next Steps
- Board Codes - The meal plan vocabulary
- Search Hotels - Where rate plans are returned on each room
- Quote - Revalidates cancellation before booking