# Sticky billing config — what you need

## Two modes

| Mode | What happens |
|------|----------------|
| `mockMode = true` | Simulated checkout — no Sticky HTTP, fake subscription IDs |
| `mockMode = false` | Live Sticky `new_order` using `$planOffers` (use test card `4111 1111 1111 1111` on Sticky sandbox) |

## `StickyBilling.php` structure

```
planOffers      ← Sticky campaign/offer ids per tier × monthly|annual
aoll_plans (DB) ← display prices/names only
```

Checkout passes `billing_period` (`monthly` or `annual`) from the plan page → payment form → `BillingService`, which picks `$planOffers[$planKey][$period]`.

Promo codes and API credentials are separate from plan mapping.
