- 1. Who we are
- 2. Our role in your data
- 3. Information we collect
- 4. Meta Platform Data
- 5. How we use information
- 6. Lawful basis
- 7. Who we share with
- 8. International transfers
- 9. Security
- 10. How long we keep data
- 11. Deleting your data
- 12. Your rights
- 13. Cookies and local storage
- 14. Children
- 15. Changes
- 16. Contact us
1. Who we are
Flexicode Invoice Pro (“Invoice Pro”, “the Service”, “we”, “us”) is a business management platform operated by Flexicode, based in South Africa. The Service provides invoicing and quoting, point of sale, online storefronts, bookings, stock control, projects, logistics and social media publishing to business customers.
This policy explains what personal information we collect, why we collect it, who we share it with, how long we keep it and how you can have it deleted. It applies to invoice-pro.flexicode.co.za, to the customer portals and storefronts we host on behalf of our business customers, and to our Meta (Facebook, Instagram and WhatsApp Business) integrations.
2. Our role in your data
We handle personal information in two distinct roles, and your rights differ depending on which applies:
- As responsible party / controller — for the account data of the businesses and users who sign up for Invoice Pro. We decide what we collect and why.
- As operator / processor — for the data our business customers put into their workspace about their own clients, shoppers, staff and suppliers. We process it only on that business’s instructions. If you are a customer of a business that uses Invoice Pro, please contact that business first; we will assist them in responding to you.
3. Information we collect
| Category | Examples | Source |
|---|---|---|
| Account and identity | Name, email address, phone number, password hash, profile photo, workspace role and permissions | You, at sign-up and in settings |
| Business profile | Trading name, registration and VAT numbers, addresses, logo, banking details used on documents | You |
| Workspace content | Invoices, quotes, credit notes, clients, suppliers, products, orders, bookings, projects, timesheets, shipments and the documents you generate | You and your team |
| Storefront and portal data | Shopper name, delivery address, contact details, order and payment status, wishlist and basket | Shoppers on a storefront we host for a business customer |
| Location data | Addresses you search or pin using Google Maps address lookup and map pickers | You, when you use those fields |
| Connected accounts | Access tokens and account identifiers for services you choose to connect, including Meta, accounting and courier integrations | You, via the provider’s own authorisation screen |
| Technical and usage | IP address, browser and device type, pages used, feature and activity logs, error diagnostics, API request counts | Automatically, when you use the Service |
| Billing | Subscription plan, add-ons, seat counts, invoices, debit order mandate references, payment status | You and our payment providers |
We do not collect or store full payment card numbers. Card and EFT payments are completed on the systems of our payment providers (PayFast, Ozow, Yoco, PayGate, Peach and Stripe, depending on what the business has enabled), and we receive only a payment reference and result.
4. Meta Platform Data
Connecting a Meta account is entirely optional and is initiated only by an authorised administrator of a workspace. When you connect Facebook, Instagram or WhatsApp Business, you are shown Meta’s own authorisation screen listing exactly what you are granting.
4.1 Permissions we request and why
| Permission | Why we need it |
|---|---|
pages_show_list | To list the Facebook Pages you manage so you can choose which one to link to your workspace. |
pages_manage_posts | To publish, schedule and delete the posts you compose in Invoice Pro to the Page you selected. |
pages_read_engagement | To show you reach, reactions, comments and click counts for those posts on your analytics dashboard. |
instagram_basic | To identify the Instagram Business account linked to your Page and show its handle and profile. |
instagram_content_publish | To publish the images, videos and captions you compose in Invoice Pro to that Instagram Business account. |
ads_read / ads_management | Only where a workspace uses the ad manager: to read campaign performance and to create or pause the campaigns you configure in Invoice Pro. |
| WhatsApp Business Cloud API | To send the transactional messages you trigger — invoice, quote, order and delivery notifications — to the recipients you selected, from your own WhatsApp Business number. |
4.2 What we store
Against your workspace we store: the access token issued by Meta, the connected account or Page identifier, the display name or handle, the connection status and time, the content of the posts you created, their scheduled and published times, and the engagement and ad metrics returned by Meta for those posts. Tokens are stored in Google Cloud Firestore encrypted at rest and are never exposed to the browser or to other workspaces.
4.3 What we never do with Meta Platform Data
- We never sell, rent or licence it, and we never share it with data brokers, ad networks or any other third party for their own purposes.
- We never use it to build advertising or marketing profiles, to enrich third-party datasets, or for any decision about eligibility, credit, insurance or employment.
- We never use it to train machine learning or AI models.
- We never access a Page, account or message beyond what the permissions above allow, and never for any purpose other than delivering the feature you asked for.
- We never make it available to another workspace on the platform. Every workspace’s data is isolated and enforced by server-side security rules.
Our use of information received from Meta APIs adheres to the Meta Platform Terms and Developer Policies, including the Limited Use requirements.
4.4 Disconnecting
You can disconnect a Meta account at any time in Invoice Pro under Social → Accounts → Disconnect. Disconnecting deletes the stored access token from our database immediately, and we stop calling Meta on your behalf. To revoke the grant at Meta’s end as well, remove our app from Facebook Settings → Business Integrations, which revokes our access from Meta’s side. To have the associated data erased as well, see section 11 or our data deletion instructions.
5. How we use information
- To provide the Service: create and send documents, run the till and storefront, take bookings, track stock, publish the posts you write, and deliver the notifications you trigger.
- To authenticate you, apply your role and permissions, and keep workspaces separate and secure.
- To bill your subscription and any add-ons, and to issue you tax invoices.
- To support you: diagnose faults, answer queries and restore data when something goes wrong.
- To keep the Service safe: detect abuse, fraud and unauthorised access, and enforce rate and usage limits.
- To improve the Service using aggregated, non-identifying usage statistics.
- To meet legal duties, including South African tax and record-keeping requirements.
We do not sell personal information, and we do not use your workspace content, your customers’ data or Meta Platform Data for advertising.
6. Lawful basis
Where the Protection of Personal Information Act 4 of 2013 (POPIA) applies, we process personal information because it is necessary to perform our contract with you, to comply with a legal obligation, for our legitimate interests in operating and securing the Service, or with your consent — for example when you connect a Meta account or accept optional cookies. Where the GDPR applies, those same grounds are our Article 6 lawful bases. Consent, once given, can be withdrawn at any time without affecting processing already carried out.
7. Who we share with
We share personal information only with the following categories of recipient, and only as far as needed:
| Recipient | Purpose |
|---|---|
| Google Cloud / Firebase | Hosting, database, authentication, file storage and serverless functions |
| Meta Platforms | Only when you connect Meta: publishing the content you compose and retrieving its metrics |
| Payment providers (PayFast, Ozow, Yoco, PayGate, Peach, Stripe) | Taking and reconciling payments you or your customers make |
| Google Maps Platform | Address lookup, geocoding and maps, when you use those fields |
| Email and messaging providers | Delivering the transactional email and messages the Service sends on your behalf |
| Integrations you switch on | Accounting, e-commerce, courier and other services you choose to connect |
| Professional advisers and authorities | Where we are legally required, or to establish or defend legal claims |
Our providers act on our documented instructions under written agreements and may not use the data for their own purposes. If Flexicode is ever involved in a merger or acquisition, we will notify affected customers before any personal information is transferred, and the acquirer will remain bound by this policy.
8. International transfers
Our infrastructure runs on Google Cloud in the europe-west1 and us-central1 regions, so personal information may be processed outside South Africa. We rely on providers that offer a level of protection substantially similar to POPIA (Standard Contractual Clauses and equivalent safeguards) as required by section 72 of POPIA and Chapter V of the GDPR.
9. Security
- All traffic is encrypted in transit with TLS, and all stored data is encrypted at rest.
- Access is controlled by authentication, per-workspace isolation, and role and permission checks enforced on the server, not only in the browser.
- Third-party access tokens are held server-side only and are never sent to the browser.
- Administrative access is limited to staff who need it, and privileged actions are logged.
- If a security compromise affects your personal information, we will notify you and the Information Regulator as required by section 22 of POPIA.
10. How long we keep data
- Account and workspace data — for as long as your account is active.
- After you close your account — deleted or irreversibly anonymised within 30 days, except where we must keep records longer.
- Meta access tokens — deleted immediately when you disconnect the account, and in any event when the token expires or is revoked.
- Meta post content and metrics — deleted with your workspace, or sooner on request.
- Tax and accounting records — retained for five years as required by South African tax law.
- Backups — rolling backups are overwritten within 90 days, so deleted data disappears from backups within that window.
- Security and activity logs — up to 12 months.
11. Deleting your data
You can ask us to delete your personal information at any time, and we will do so free of charge.
- In the app — delete individual records yourself, disconnect a connected account under Social → Accounts, or export your workspace under Workspace → Privacy → Export my workspace data.
- By email — write to support@flexicode.co.za from your account email address with the subject “Data deletion request”. We acknowledge within 5 business days and complete the deletion within 30 days.
- Meta users — full step-by-step instructions, including how to remove data obtained through Facebook, Instagram or WhatsApp, are on our data deletion page.
12. Your rights
Subject to the conditions in POPIA and, where it applies, the GDPR, you have the right to: be told what personal information we hold about you; obtain a copy of it in a portable format; have it corrected or completed; have it deleted or destroyed; object to processing based on legitimate interests or used for direct marketing; withdraw consent; and not be subject to a decision based solely on automated processing.
To exercise any of these rights, email support@flexicode.co.za. We may ask you to verify your identity before we act. If you are unhappy with our response you may complain to the Information Regulator of South Africa at inforegulator.org.za or, in the EU/UK, to your local supervisory authority.
13. Cookies and local storage
Apart from the optional analytics described below, we use only what the Service needs to work: a session token that keeps you signed in, and browser storage that remembers your basket, wishlist, theme and layout preferences. These are strictly necessary and cannot be switched off without breaking the Service. Our storefronts show a cookie notice with a “Reject all” option of equal prominence, nothing is pre-ticked, and ignoring the notice grants nothing. We do not run advertising pixels or third-party tracking on our storefronts. Where a business enables analytics on its own storefront, that is disclosed in that store’s notice and is switched on only with consent.
Analytics (optional, off unless you accept)
On our marketing site and in the Invoice Pro app we ask whether you accept analytics. Only if you choose “Accept analytics” do we load Google Analytics 4 (through Google Firebase), provided by Google LLC. If you decline, or make no choice, the analytics script is not loaded at all.
- What is collected: which pages are viewed, recorded as page patterns (for example
/invoices/:id, never the record itself), and a few product events such as signing up, signing in, creating an invoice or workflow, saving a store design, enabling an app or starting a plan checkout (the plan name only). Google also receives the usual technical data of a web request: an analytics cookie identifier, browser and device type, approximate location derived from your IP address, and referring site. - What is not collected: your name, email address, user or workspace identifier, business name, invoice, customer, product or payment details. Advertising features, Google signals and ad personalisation are switched off.
- Where it is not used: business storefronts, property explorers, public invoice links and the customer and supplier portals. People who buy from or are billed by a business on Invoice Pro are never tracked by our analytics.
- Why: to understand which features are used and where people get stuck, so we can improve the Service. The lawful basis is your consent.
- Changing your choice: your choice is stored in your browser. To withdraw consent or be asked again, clear this site’s data in your browser settings (or email support@flexicode.co.za and we will help). Withdrawing stops collection from that point.
14. Children
The Service is a business tool and is not directed at children. We do not knowingly collect personal information from anyone under 18. If you believe a child has given us personal information, contact us and we will delete it.
15. Changes to this policy
We will post any change on this page and update the “Last updated” date. If a change materially affects how we use your personal information, we will notify account holders by email or in-app notice before it takes effect. This page is always available, without sign-in, at invoice-pro.flexicode.co.za/privacy.
16. Contact us
Flexicode — Invoice Pro
Information Officer / Data Protection contact
Privacy and data requests: support@flexicode.co.za
General enquiries: andre@flexicode.co.za
Website: https://invoice-pro.flexicode.co.za
South Africa