Access Rules, Countries and SMS
$1When your WiFi is open, which passes can be sold when, how your country and currency are set, what SMS credits cost, and what subscribers can do for themselves.$2Contents
- Opening hours
- Event passes
- Country and currency
- SMS balance
- Buy credits
- Credit history
- Sent messages
- How SMS credits are calculated
- SMS pricing by country
- Subscriber self-service: My Subscription
This is the full reference for this part of the dashboard. For everything else, see the main documentation.
Opening hours
Under Network → Opening hours you set, for each weekday, when your WiFi is open (or tick a day as Closed), plus an optional message for guests. Leave the setting off and your WiFi is open all day, every day.
| What happens outside opening hours | Details |
|---|---|
| Refused | Starting new access: watching an ad, a survey unlock, buying a data plan, redeeming a voucher. The guest sees your closing message and the next opening time. |
| Shown | Your login and home pages are replaced by a full "The WiFi is closed right now" page in your own colours and logo, with your closing message, the next opening time and your weekly hours. It refreshes by itself and opens again the moment you are open. Your business (advertise with us) page stays available. You, signed in to your own dashboard, still see your real portal in the preview. |
| Never cut off | Access a guest already has. They paid or earned it and it runs until it ends. |
| Never blocked | A payment already in progress, a balance top-up, a subscription, or a payment confirmation from the payment provider, so nobody is ever charged without being given access. |
A closing time earlier than the opening time means the WiFi stays open past midnight (for example 18:00 to 02:00). Times are South Africa and Namibia time (UTC+2, no daylight saving). The dashboard preview is never blocked.
Security note. The check runs on the server for every request that starts access, so a guest cannot get round it by editing the page. The check never blocks payment confirmations, and if it cannot work out the time it lets the request through rather than refusing it, so a fault in this feature can never turn the WiFi off.
Event passes
A data plan can be sold only between two dates, for a festival, conference, race day or school event. Set it on the plan under Vouchers → Data plans.
- On sale from and On sale until (event ends): outside this window the plan is hidden from the guest list and a purchase is refused ("not on sale yet" or "this pass has ended"). The window is checked again when a guest buys with their balance and on the free-plan path, not only in the list.
- Access ends when the event ends: every grant is capped so it never outlasts the event, whatever the plan's own length. A 24-hour pass bought 3 hours before the end gives about 3 hours of access. The minimum is 1 minute.
- An end date in the past, a start date after the end, or "ends with the event" without an end date are rejected when you save.
- A payment already in flight when the event ends is still settled. The cap then leaves it at least 1 minute of access, so nobody pays and gets nothing.
Event times use South Africa and Namibia time (UTC+2). Event passes work together with Opening hours: opening hours decide whether new access can start right now, the pass window decides whether this plan can be bought at all.
Country and currency
The Country & currency tab in the dashboard sidebar is the quickest way to set up a captive for its country. It controls two things at once: the country your guests' phone numbers belong to, and the currency your guests, subscribers, advertisers and partners see.
| Setting | What it does |
|---|---|
| Country | South Africa (+27) or Namibia (+264). It decides the SMS credit price and where verification codes are sent. Other countries are coming soon and cannot be selected yet. |
| Currency | ZAR or NAD, pegged 1:1, so only the symbol changes. What ISN charges you stays in Rand. Choose NAD only if DPO Pay, the gateway that settles in NAD, is connected. |
| Changing country | Allowed once every 30 days. Your remaining SMS credits are converted at what you actually paid, so switching can never be used to get cheaper credits. |
| Visitors from the other country | Welcome. They register with their own number and sign in with an email address, because a local number like 081 looks the same in both countries. Your account is charged the credits that route needs. |
| Any other country | Refused with a clear message, no SMS is sent and no credit is spent. |
Get the country right from the start. If it does not match where your guests really are, their verification codes will fail to arrive, and you will get an automatic email if a large share start failing. Prices and credits are explained in the SMS sections below.
SMS balance
Your current credit balance, front and center. A banner appears once you hit zero credits, since that's the point OTP codes stop sending to guests trying to sign up or verify a new device — the exact verification step described under Captive Login below.
Daily sending limit. Every tenant sends through the SAME shared SMS provider account, whose own daily quota is a fixed pool — a per-tenant ceiling (200/day by default) stops one tenant's send burst from starving every other tenant's messages for the rest of the day. This never affects sign-up/login/password-reset codes, which always go through regardless of how much of today's limit marketing or notification texts (re-engagement, win-back, low-data nudges) have already used — only those non-urgent sends are capped, since a guest waiting on a real code right now is a much worse thing to block than a delayed reminder text. If you have a genuine need for a higher limit, email ISN Free WiFi to request one raised for your account specifically.
Buy credits
Type either a Rand amount or a number of credits — the other side calculates itself automatically, so you never have to do the conversion by hand. Pay by card (instant) or by EFT (you'll get banking details; credits land once payment is confirmed). Minimum purchase is 200 credits.
Two settings live alongside this, under Notifications: "Alert me at (credits)" sends you a low-balance email once your balance drops to a threshold you set. Auto top-up optionally buys more automatically the moment that threshold is hit — instantly on a saved card if you have one on file (from a trial or subscription payment), or as a pending EFT request if you don't. "Do not exceed this spend per month (R)" is the safety net on auto top-up specifically: once your automatic top-ups for the calendar month reach that Rand figure, auto top-up pauses itself (you still get the low-balance email, and can always top up manually) rather than continuing to spend without limit. That cap resets at midnight South African time on the 1st of every month.
Credit history
Every credit purchase you've made — manual card, manual EFT, or auto top-up — with date, amount, credits, and status. Each settled purchase generates a proper invoice with a PDF receipt emailed to you automatically, the same invoicing your subscription billing uses, so SMS spend is tracked exactly as accountably as everything else you're billed for.
Sent messages
The full send log — every OTP and notification actually sent, filterable by status (delivered, failed, and so on), so you can see exactly where your credits are going and confirm a specific guest's code really did go out. A Credits column shows exactly how many credits each individual send was actually charged — see How SMS credits are calculated just below for why that number isn't always 1.
How SMS credits are calculated
A short message costs 1 credit, same as ever — but a longer one can cost more, because that's genuinely how SMS itself works under the hood: a message beyond a certain length doesn't fit in one real SMS, so it's split into multiple, and each one is billed as its own message by our own SMS provider. This platform now charges your credit balance to match exactly what we're actually billed for your message, rather than a flat 1 credit regardless of length.
Plain-text messages (letters, numbers, and standard punctuation) fit 160 characters in a single credit. Go over that, and the message splits into multiple parts of 153 characters each — so, for example, a 250-character message needs 2 parts (2 credits), and a 400-character one needs 3 (3 credits). Most OTP codes and short notifications comfortably stay under 160 characters and will always cost exactly 1 credit; a longer message — a link-heavy invite, a detailed reminder — is the kind that can cross that line.
Messages using emoji, accented characters, or a non-Latin script (á, ü, —, 😊, or any script outside the basic Latin alphabet) are sent in a different format that fits far fewer characters per part — 70 characters for a single credit, or 67 per part once split. This isn't specific to this platform; it's how SMS itself is encoded worldwide, the same reason a text with a single emoji in it can suddenly "use up" far more of your character count than you'd expect. If you're writing your own custom message templates and want to keep costs predictable, sticking to plain ASCII characters (no emoji, no smart/curly quotes or em dashes, no accented letters) keeps you in the cheaper 160/153-character tier.
This applies uniformly to every SMS this platform sends on your behalf — OTPs, password resets, partner invites, re-engagement and win-back campaigns, low-data nudges — there's no separate pricing for any particular message type; it's always about the actual length and character set of what's being sent.
Maximum length: 3 parts. A message needing more than 3 parts — over 459 plain-text characters, or over 201 with emoji/accented characters/non-Latin script — is rejected outright before anything is sent or any credit is charged, rather than being sent anyway at a higher cost. If you're writing a long custom message (a detailed reminder, a link-heavy invite) and it's close to this limit, shortening it is the only option; there's no way to pay more to send a longer single SMS.
SMS pricing by country
What a credit is worth in Rand depends on which country your guests' phones are actually in — set under Country & currency in your dashboard sidebar. South Africa is R0.50/credit; Namibia is R1.00/credit (R0.65/credit on bulk purchases, see below). Only South Africa and Namibia are available right now, because those are the countries we have researched and priced. Other countries are coming soon: contact us and we will tell you when yours opens. Until then a tenant cannot select another country, buy SMS credits for it, or send SMS to it.
Visitors from the other supported country are welcome. A Namibian visitor at a South African captive (or the other way round) can register with their own number. Because a local number such as 081… looks the same in both countries, these visitors sign in with their email address, so the sign-up form asks them for an email as well. The verification SMS goes to their real country, and your account is charged the credits that route needs: a South African captive texting a Namibian number uses 2 credits per message part, because an SMS to Namibia costs us twice as much (the other way round it is never less than 1). A number from any other country is refused with a clear message, and no SMS is sent and no credit is spent.
Changing country. Use Country & currency in the sidebar. You can change country once every 30 days, and your remaining SMS credits are converted at what you actually paid for them: 1,000 credits bought at R0.50 become 500 credits at Namibia's R1.00, and the other way round they convert back. Switching country can therefore never be used to get cheaper credits, and a negotiated custom rate is left as it is. The R5 card-verification credit is also worth R5 at your own country's price: 10 credits in South Africa, 5 in Namibia. Countries ISN has not approved receive no SMS credits and no SMS sending until the tenant is back on South Africa or Namibia.
This isn't an arbitrary markup — it reflects what sending an SMS to that country genuinely costs under the hood. A text to a South African number and a text to a Namibian number travel over completely different carrier routes with different real costs to us, the same way an international phone call costs more than a local one. Pricing each country at its real cost is what lets us keep South Africa's rate low rather than raising everyone's price to cover the more expensive routes.
Get this setting right from the start. It controls two things at once: what you're charged per credit, and which country your guests' verification codes are actually sent to (and only South Africa and Namibia exist yet). If it doesn't match where your guests really are, their OTP codes will fail to arrive — not just be mispriced. If a large share of your guests' codes start failing to deliver, you'll get an automatic email flagging it, almost always pointing back to this one setting.
Bulk rate (Namibia). Where a country has a bulk rate, buying a large block in one purchase is cheaper per credit. For Namibia, 6,000 credits or more in a single purchase costs R0.65/credit instead of R1.00 (6,000 credits is R3,900). Below 6,000 credits the standard R1.00 applies. If you type a Rand amount instead of credits, the bulk rate applies from R3,900 upward, and the credits are calculated for you. The dashboard shows when the bulk rate has been applied before you confirm, and it works for card and EFT purchases alike. If you have your own negotiated rate with us, that rate applies as it is, with no further discount added.
Auto top-up in a bulk-rate country. For a country with a bulk rate, every auto top-up is bought at least at the bulk size (for Namibia, 6,000 credits) so it always gets the lower rate. The "Top-up amount" field shows that minimum, and your "Do not exceed this spend per month" limit is checked against the real bulk price (R3,900 for one 6,000-credit top-up). Countries without a bulk rate are unaffected and keep the normal 200-credit minimum.
Subscriber self-service: My Subscription
Guests who have a subscription get a My Subscription item in the captive portal's menu, directly below My Usage. It appears for every signed-in guest: a guest with a subscription sees everything below, anyone else sees a short note that they have no subscription yet (or, if the device could not be confirmed, a note to log out and in again). It is the one place for everything about a subscription, so My Usage and My Account no longer repeat any of it.
| Feature | How it works |
|---|---|
| Status and next billing | Plan, status (Active, Payment failed, Paused for non-payment, Paused), next billing date, any plan change waiting for the next renewal, and the date a pause ends. |
| Pay now | Shown when payment failed or access was cut for non-payment. Starts the same secure PayFast checkout as signing up; once it succeeds the subscriber is active and their devices come back online. |
| Change plan | Pick another of the tenant's active plans. The change takes effect at the next renewal (no pro-rating): until then the subscriber keeps the plan they paid for. Choosing the current plan again cancels a waiting change. |
| Pause | 1, 2 or 3 months. Access continues to the end of the period already paid for, then billing stops and access pauses until the chosen date. After that, billing resumes from that day. A subscriber can cancel a scheduled pause, or resume early from the paused state. |
| Payments and invoices | Lists up to the last 36 payments (failed ones are marked). Each successful payment has an Invoice (PDF), and a month picker produces a Monthly statement (PDF). |
Tax invoices. In the ISN Portal, under Subscribers, Invoices and month-end statements holds the registered business name, address, VAT number and VAT rate (default 15%). With a VAT number saved, documents are headed TAX INVOICE and show amount excluding VAT, the VAT amount and the total (prices are treated as VAT-inclusive); without one they are headed RECEIPT. Invoice numbers are unique per payment (date plus a payment code). Check with your accountant whether your jurisdiction requires strictly sequential numbering.
Month-end billing run. The same section can download one PDF containing a statement page for every subscriber who paid in the chosen month (up to 300 subscribers per run).
Security. Every self-service route checks that the caller's session owns the identifier (_sessionOwnsIdentifier) and only ever reads or writes that one subscriber's own row inside the current captive's tenant. Invoice downloads are rate-limited per subscriber and a payment that belongs to someone else, or that did not succeed, returns "not found".
