Interactive proof
Four things you can check yourself, instead of taking our word for it.
Everything below runs the platform's own code. The QR is minted in your browser by the package the merchant app calls; the settlement comparison uses the discount rate the ledger books; the advance is priced by the credit gateway and disclosed by the merchant app's own disclosure builder; the catalogue is read straight out of the VAS SDK. Where something is illustrative — a hypothetical shop's turnover, a hypothetical sale — it is the input that is hypothetical. None of the arithmetic is.
Nothing here talks to a live system, and there is nothing to sign in to. These are pure functions from the platform's shared packages, executed at build time or in your browser.
EMVCo merchant-presented QR
Mint a real payment QR, and watch it expire.
This is not a picture of a QR code. Choose an amount and the payload is assembled in your browser against your own clock — TLV-encoded, CRC-16 sealed, and valid for the ninety seconds the platform allows a dynamic code to live. Scan it with any QR reader and you will read the merchant name, the city, the amount and the reference; scan it with a South African bank app and it resolves as a payable merchant QR, because everything WynkPay-specific is confined to tag 26, which other schemes are required to ignore.
Computed by @wynkpay/qr — buildDynamicQr, decodeTlv, crc16Hex, parseQr
Without JavaScript this stays the static counter QR, which is a complete and scannable payload. With JavaScript, the amount selector mints a fresh dynamic code in your browser and counts down its expiry.
EMVCo payload 129 characters
00020101021126570013ZA.CO.WYNKPAY01364d7f1b02-9c3a-4d18-8f61-0a2e5b7c91d45204541153037105802ZA5913Nomsa's Spaza6006Soweto63048048The merchant is fictional and the id is a fixed demo value, so nothing here is payable. A merchant-presented QR carries no secret in any case: it is designed to be printed and stuck to a counter.
Where a card fee goes
The same sale, on a card rail and on the closed loop.
Most of what a South African merchant pays to accept a card is not the acquirer's margin — it is interchange, the toll the scheme charges to move money between two banks. When the person paying and the shop being paid are both WynkPay accounts, that leg does not exist: the payment is a double-entry posting inside one database transaction, and there is no bank to pay for crossing between. This is the platform's own discount rate, per rail, applied to the sale you choose.
Computed by @wynkpay/types — Money · MDR_BY_RAIL from the API accept service
Card present
2.75%
The scheme's interchange and the acquirer's cost, withheld before the merchant is credited.
Closed loop
0.00%
Both parties are WynkPay accounts. There is no interbank leg, so there is no interchange to withhold.
This is the interchange leg only, not your bill. WynkPay's own published acceptance fee on this sale is R0.75 (0.75%, capped at R7.50 — see the fee schedule). What the closed loop removes is the scheme's cut, not ours.
Rounding is half-up on the absolute value, in integer cents, which is what makes a fee and its refund exact mirrors.
Merchant cash advance
A priced offer, with the disclosure the Act requires.
Move the slider to a monthly turnover and the platform's credit gateway prices an offer against it: the eligibility rules, the Regulation 42 initiation fee, the Regulation 43 service fee, the Regulation 44 short-term interest cap, and an annual cost rate solved as an internal rate of return from the actual daily repayments. The table below is the merchant app's own disclosure block, in the app's order, with the app's labels.
Computed by @wynkpay/credit-ports — getOffer · @wynkpay/merchant-sdk — buildAdvanceDisclosure
The offer is sized on settlement we can already see — no application form, no bank statement, no guarantor.
The annual cost rate is high and is meant to be visible. A 90-day advance carries a fixed initiation fee and three months of service fee, and it is repaid a little every day rather than at the end — so the same rand cost annualises to a large percentage. The figure a shopkeeper decides on is the rand cost; the figure the National Credit Act insists they also see is the rate. Both are above.
| You receive | R48 000.00 |
|---|---|
| Term | 90 days |
| Daily deduction | 16% of daily takings |
| Initiation fee | R1 265.00 |
| Service fee | R207.00 |
| Interest | R7 200.00 |
| Cost of credit | R8 672.00 |
| Total repayable | R56 672.00 |
| Annual cost rate (NACR) | 293.70% a year |
| Effective from | 2026-08-03 |
Outstanding balance, day by day
Repaid at 16% of each day's settlement — about R629.69 on an average trading day, clearing on day 90. A quiet day is a smaller instalment; nothing accrues and nothing bounces.
The rules the engine applied
- Qualifying turnover
- R5 000.00 settled over the trailing 30 days
- Advance range
- R500.00 to R150 000.00, and never more than 40% of trailing turnover
- Affordability ceiling
- The daily deduction may not exceed 25% of an average day’s settlement
- Term
- 90 days
- Also required
- 3 months trading, 20 trading days in the window, no arrears, and FICA tier T2
- Offer validity
- 72 hours
The turnover is hypothetical and the merchant profile is a fixture — three months' trading, 26 trading days in the window, no arrears, FICA tier 2. Every number derived from it is computed by the production credit path, not estimated.
Value-added services
The catalogue the tills actually sell from.
There is one VAS catalogue for the whole platform, and this is it — eight tiers, every product, the denominations each one accepts, the aggregator that carries it and the commission the merchant earns on it. The merchant app's vend screen and the consumer app's buy screen read this same structure, which is why the price at the counter and the price in the app cannot disagree.
Computed by @wynkpay/vas-sdk — VAS_CATEGORIES, VAS_PRODUCTS, cacheableProducts
| Product | Denominations | You earn | On a typical sale |
|---|---|---|---|
| Vodacom Airtime offlineflash · Cellphone number | R5.00 · R10.00 · R20.00 · R29.00 · R50.00 · R100.00 · R250.00 | 3.50% | R1.02on a R29.00 sale |
| MTN Airtime offlineflash · Cellphone number | R5.00 · R10.00 · R20.00 · R29.00 · R50.00 · R100.00 · R250.00 | 3.50% | R1.02on a R29.00 sale |
| Cell C Airtime offlinekazang · Cellphone number | R5.00 · R10.00 · R20.00 · R50.00 · R100.00 | 4.00% | R0.80on a R20.00 sale |
| Telkom Airtime offlinekazang · Cellphone number | R5.00 · R10.00 · R20.00 · R50.00 · R100.00 | 4.00% | R0.80on a R20.00 sale |
| Product | Denominations | You earn | On a typical sale |
|---|---|---|---|
| Vodacom Data Bundle offlineflash · Cellphone number | R29.00 · R49.00 · R99.00 · R199.00 · R349.00 · R599.00 | 3.00% | R2.97on a R99.00 sale |
| MTN Data Bundle offlineflash · Cellphone number | R29.00 · R49.00 · R99.00 · R199.00 · R349.00 · R599.00 | 3.00% | R2.97on a R99.00 sale |
| Telkom Data Bundle offlineprepaid24 · Cellphone number | R29.00 · R49.00 · R99.00 · R199.00 · R349.00 · R599.00 | 3.00% | R2.97on a R99.00 sale |
| Product | Denominations | You earn | On a typical sale |
|---|---|---|---|
| Eskom Prepaid Electricitykazang · Meter number | Any amount R10.00–R5 000.00 | 1.20% | R30.06on a R2 505.00 sale |
| Municipal Prepaid Electricityflash · Meter number | Any amount R10.00–R5 000.00 | 1.20% | R30.06on a R2 505.00 sale |
| Product | Denominations | You earn | On a typical sale |
|---|---|---|---|
| Municipal Prepaid Waterkazang · Meter number | Any amount R20.00–R2 000.00 | 1.00% | R10.10on a R1 010.00 sale |
| Municipal Account Paymentflash · Account number | Any amount R50.00–R10 000.00 | 1.00% | R50.25on a R5 025.00 sale |
| Product | Denominations | You earn | On a typical sale |
|---|---|---|---|
| DStv Easy Viewkazang · Smartcard number | R35.00 | 1.50% | R0.53on a R35.00 sale |
| DStv Subscriptionkazang · Smartcard number | Any amount R29.00–R2 500.00 | 1.50% | R18.98on a R1 265.00 sale |
| Showmax Voucher offlineprepaid24 · Nothing — it is a voucher | R39.00 · R69.00 · R99.00 | 5.00% | R3.45on a R69.00 sale |
| Netflix Gift Card offlineprepaid24 · Nothing — it is a voucher | R150.00 · R250.00 · R500.00 | 5.00% | R12.50on a R250.00 sale |
| Product | Denominations | You earn | On a typical sale |
|---|---|---|---|
| Funeral Cover Premiumprepaid24 · Policy number | Any amount R50.00–R600.00 | 8.00% | R26.00on a R325.00 sale |
| Device Insurance Micro-premiumprepaid24 · Policy number | Any amount R29.00–R199.00 | 8.00% | R9.12on a R114.00 sale |
| Product | Denominations | You earn | On a typical sale |
|---|---|---|---|
| Traffic Fine (eNaTIS)flash · Notice number | Any amount R100.00–R20 000.00 | 0.80% | R80.40on a R10 050.00 sale |
| Gautrain Card Top-upkazang · Account number | Any amount R20.00–R1 000.00 | 2.00% | R10.20on a R510.00 sale |
| Taxi Association Fare Voucher offlinekazang · Nothing — it is a voucher | R15.00 · R30.00 · R50.00 · R100.00 · R300.00 | 2.50% | R1.25on a R50.00 sale |
| Product | Denominations | You earn | On a typical sale |
|---|---|---|---|
| Steam Wallet Voucher offlineprepaid24 · Nothing — it is a voucher | R100.00 · R250.00 · R500.00 · R1 000.00 | 6.00% | R15.00on a R250.00 sale |
| Roblox Gift Card offlineprepaid24 · Nothing — it is a voucher | R100.00 · R200.00 · R400.00 | 6.00% | R12.00on a R200.00 sale |
| WhatsApp Business Bundle offlineflash · Cellphone number | R10.00 · R25.00 · R50.00 · R100.00 | 3.00% | R0.75on a R25.00 sale |
Catalogue version 2026-07-27.1 · 23 products · 13 available offline · commission 0.80% to 8.00%
Commission is the rate carried by that specific product. The fee schedule quotes category bands; where a band and a product differ, the product is what gets sold and the product is what is shown here.
Next
The rest of the platform is built the same way.
Every figure on this site traces to a package, a constant or a test. Where something is not yet live — a licence, a certification, a bank relationship — the trust register says so plainly rather than implying otherwise.
See what is live and what is not