Explicit vs. Implicit Billing

Last updated: August 28, 2026

Two billing postures

When Housing.Cloud integrates with your student information system, there are two distinct billing postures. Your institution should be on exactly one of them. Which one you are on is determined by how the TRANSACTIONS and OCCUPANCY integration configs are set.

Implicit billing

With implicit billing, the OCCUPANCY sync sends room rates, and your SIS generates the charges from those rates. Housing.Cloud does not send individual transactions.

This posture requires room rates ON (OCCUPANCY.roomRatesRequired = true) and transactions OFF. Billing is implied by the occupancy and rate data.

Explicit billing

With explicit billing, Housing.Cloud sends individual transactions directly to your SIS, and room rates are not used to bill. Billing is stated explicitly, line by line.

This posture requires room rates OFF and transactions ON (both includeHousingAssignmentTransactions and includeMealPlanAssignmentTransactions = true).

Misconfigurations to avoid

Any combination other than the two clean postures is flagged as Possible Misconfiguration in the integrations UI. The specific misconfigurations are:

  • Rates ON + transactions ON — double billing. The student gets charged twice: once from rates, and once from transactions.

  • Rates OFF + transactions OFF — nothing is billed.

  • Transactions hybrid — only one of housing or meal plan transactions is enabled. This is an incomplete setup.

Configuration truth table

Room rates

Transactions

Result

ON

OFF

Implicit Billing

OFF

ON

Explicit Billing

ON

ON

Misconfiguration (double billing)

OFF

OFF

Misconfiguration (nothing billed)

any

HYBRID

Misconfiguration (mixed flags)

Why this matters

The integrations screen surfaces an Implicit Billing, Explicit Billing, or Possible Misconfiguration tag so admins can confirm their billing posture at a glance. If you see the warning tag, your transactions and occupancy configs disagree. Resolve to exactly one posture before charges flow.

The tag only resolves when both TRANSACTIONS and OCCUPANCY configs exist. If either config is missing, no tag is shown because the integration cannot be reasoned about yet.

Fixing a misconfiguration

The tag tells you your posture is wrong; the fix is always to resolve to exactly one clean posture:

  • Seeing double billing (rates ON + transactions ON)? Decide which system should carry billing and turn the other off — set OCCUPANCY.roomRatesRequired = false (to go Explicit) or disable the transaction includes (to go Implicit).

  • Seeing nothing billed (both OFF)? Turn exactly one on.

  • Seeing hybrid transactions? Enable both includeHousingAssignmentTransactions and includeMealPlanAssignmentTransactions, or neither — never just one.