Privacy Policy
Effective date: October 2026
1. Who We Are
Zero Loop Labs Ltd ("we", "us", "our") is the data controller for the personal data described in this policy, processed through getpeppr and the getpeppr.dev website — see "Our role" below for where we act as a processor instead. We are registered in England & Wales, Company No. 17035492, and registered with the UK Information Commissioner's Office (ICO), registration reference ZC202770.
Zero Loop Labs Ltd17 Heronsforde
London W13 8JE
United Kingdom
privacy@getpeppr.dev
Our role. For the data described in this policy — your account, billing, website, support, and newsletter data — we act as the data controller. For personal data contained in the invoices our customers send and receive through getpeppr (for example contact names of their counterparties), we act as a processor on the customer's behalf: the customer remains the controller of that data, and data-subject requests concerning invoice content should be addressed to the business that issued or received the invoice.
2. Data We Collect
2.1 Developer Accounts & API Usage
When you create an account and use the getpeppr API, we collect:
- Account credentials (name, email — managed via Clerk)
- API keys (stored as one-way SHA-256 hashes — we cannot recover plaintext keys)
- Invoice data you submit via the API (sender/receiver details, line items, amounts)
- E-invoices you receive through the Peppol network (sender name and identifier, invoice number, amounts, and the invoice document itself)
- Business contacts and payment details you store for invoicing (contact names, emails, phone numbers, postal addresses, and bank account details such as IBAN and BIC)
- Business-representative attestation data (email address, IP address, the identifier of the account user who gave it, and the moment of the attestation together with the version of the Terms agreed) when an identifier attestation is requested. We do not store the name of the person who attests. For a platform's own customer, the attestation is given by that customer rather than by you, and section 2.8 describes it
- Platform production-access and agreement details, when an organisation admin requests production access: the company's legal name, address, VAT and registration numbers, the authorised signatory's name, job title and email address, a billing email address, and an operational and privacy notices email address. The agreement pack prints the company details, the two notice addresses and the signatory's name and job title; we share the pack with our e-signature provider (section 5) and give it the signatory's email address to invite them to sign. When a payment is requested under the agreement, and again before each invoice issued under it, we give our payment provider, Stripe (section 5), the company's legal name and address, its VAT number when the company is established in the European Union, the United Kingdom, Norway or Switzerland, and the email address the payment request is sent to (the billing email address, or a payment contact address getpeppr has recorded for the agreement), so that its invoices name the contracting company and are sent to that address. We use the two notice addresses to send billing, service, security, data-protection and contractual notices under that agreement. The notices contact can be someone other than the person who submits the request, and the form asks that person to let them know. Because the agreement is with the organisation rather than with these individuals, we rely on our legitimate interest in concluding and administering it (Article 6(1)(f) UK GDPR). These details are kept with the account and deleted with it, except the records section 7 lists as surviving account deletion — among them the administrative audit log of the request, which records its country, and the documents sent for signature
- API usage logs (timestamps, document IDs, response codes). For requests to create a legal entity, request logs may also contain the requested country code and predefined codes identifying the first field rejected and the reason for rejection. These diagnostic fields are available to our administrators for support. Apart from the normalised country code, these diagnostic fields do not contain submitted field values or copies of request bodies.
- Billing information (managed via Stripe — we do not store card numbers)
- Acquisition channel — during onboarding we ask “How did you hear about getpeppr?” as a choice from a short list (an AI assistant, a search engine, a recommendation, LinkedIn, a developer community, the Peppol directory, an article, or other), and you may answer “Prefer not to say”. Only if you pick “other” are a few words of free text (at most 120 characters) stored with it. An “article” answer may additionally carry the name of the guide that brought you here (one of our own guides, nothing you typed); text sent with any other answer is discarded. It is used only internally to understand which channels bring developers to getpeppr, and it is deleted with your account.
We also keep internal research notes about the business behind an account, from sources other than you. That is a separate matter with its own legal basis, and section 2.7 sets it out.
2.2 Support Correspondence
We answer support questions by email. When you write to hello@getpeppr.dev or support@getpeppr.dev, we process your email address, the name you sign with, and the content of your message, so that we can answer you and keep a record of what was asked and what we replied. That correspondence is hosted in Proton Mail (section 5).
We no longer run a live chat widget. No chat provider is loaded on this website or in the console, so nothing new is written to your device for one and no new conversation reaches one. We used Crisp (Crisp IM SAS, France) until 19 September 2026.
Two things remain true after that date, and we would rather say them than imply otherwise. Crisp still holds the conversations it received before it, and our internal Slack workspace still holds the copies that were relayed there, until we have both deleted — so section 5 still lists them as recipients of that earlier data. And if you opened the chat before that date, the cookie and browser storage Crisp placed then remain in your browser until you clear them: removing the widget stops anything from writing to or reading them, it does not reach into your browser to erase them. You can clear them yourself through your browser's site-data settings for this site.
2.3 Website Analytics & Monitoring
We use Vercel Web Analytics on the website and in the console — a cookieless service that counts page views without advertising identifiers or cross-site tracking. For each page view it records the page address, the approximate location derived from the network address, and the browser and operating system; the page you arrived from is recorded on the first page view of a visit. In the console, we replace document identifiers with route templates and remove search parameters and fragments before sending page views. The console sends only the origin in HTTP referrers; we omit analytics events when the referring page address contains a path or search information that cannot be removed. We also use Sentry for error and performance monitoring on both the website and the console. We do not use Google Analytics or advertising trackers, and no tracking cookies are placed by the marketing website.
The basis for each of these. Page-view statistics rely on paragraph 5 of Schedule A1 to the Privacy and Electronic Communications Regulations, which permits measurement to improve a service without consent — provided we tell you clearly, do not share the data beyond that purpose, and give you a simple, free way to object. That way is the control below. Error monitoring relies on paragraph 4, which names detecting technical faults. We record no sampled session replays. Sentry captures a replay only around an error, with all text, inputs and media masked in your browser before anything is sent.
Object to usage statistics
Loading your current choice…
Your choice is stored in this browser as a single cookie holding nothing but the choice itself, and it covers both getpeppr.dev and the console. It takes effect on the next page you load. Clearing your browser storage clears it too.
2.4 Peppol Identifier Verification (KYB / Trust Layer)
To comply with our obligations as an OpenPeppol-accredited Integrator (UK EDIRA scheme) and to prevent impersonation on the Peppol e-invoicing network, when you register a Peppol identifier that requires verification we verify it against the relevant verification source:
- UK VAT numbers (scheme
9932, also writtenGB:VAT) → HMRC (HM Revenue & Customs, “Check a UK VAT number” API). We transmit the full VAT number. HMRC returns the registered name and address; we use the name transiently for the verification comparison and store neither field — only a masked VAT number and verification metadata enter our audit record. We previously verified UK companies against Companies House using a company registration number; that check was withdrawn in August 2026 because the identifier it used is not routable on the Peppol network, and no data is sent to Companies House any more. - Belgian enterprise numbers (scheme
0208) → VIES (European Commission VAT Information Exchange System), with fallback to the KBO/BCE (Crossroads Bank for Enterprises, Belgium) - Danish CVR numbers (scheme
0184) → DanskCVRAPI (Denmark). We transmit the full CVR for lookup and use the returned registered name transiently to compare it with the name you declared. getpeppr does not retain that name, address, roles, contacts or the provider's raw payload; only a masked CVR, result and registry status enter our audit record. Under its data-processing agreement, the provider's current Hobby plan records the full request path, including the CVR, for 7 days for service operation, debugging, billing and security. - Dutch KVK numbers (scheme
0106) → Overheid.io OpenKvK, operated by Downsized B.V. We transmit the full KVK for the lookup and use the returned registered name transiently to compare it with the name you declared. getpeppr does not retain that name, any returned address, or the provider's raw payload; only a masked KVK, verdict, and activity status enter our audit record. Overheid.io's public privacy notice and terms apply to its own processing; those public documents do not currently state an API-query-log retention period or hosting location, so we do not claim one here. - Dutch VAT numbers (scheme
9944) → VIES. We transmit the full VAT number. VIES may return a name and address; we use the name transiently for the verification comparison, and store neither field in the default audit record. - German VAT numbers (scheme
9930) → VIES (note: Germany withholds the registered name from VIES responses per member-state privacy policy; we verify only VAT validity) - Irish VAT numbers (scheme
9935) → VIES. We transmit the full VAT number. VIES may return a name and address; we use the name transiently for the verification comparison, and store neither field in the default audit record. - French SIRENE/SIRET identifiers (schemes
0002/0009) → VIES and INSEE Sirene (for SIRET identifiers the INSEE check also runs when VIES matches, to verify the specific establishment) - French CTC identifiers (scheme
0225) → INSEE Sirene only - Swedish organisation numbers (scheme
0007) → Bolagsverket (Swedish Companies Registration Office; for sole traders the organisation number can be a personal identity number) - Norwegian organisation numbers (scheme
0192, also writtenNO:ORG) → Brønnøysund Register Centre (Brønnøysundregistrene, the Central Coordinating Register for Legal Entities, Norway). We transmit the full organisation number; if it is not a registered entity we ask the register's sub-unit list with the same number. The register returns the registered name, address and legal form; we use the name transiently for the verification comparison and store neither the name nor the address. Our audit record keeps a masked organisation number, the verdict, the legal-form code, whether the register reports the entity as active, bankrupt, in liquidation or struck off, and whether it reports the entity in the VAT Register and the Register of Business Enterprises, with the time of the check. For a sole proprietorship (enkeltpersonforetak) the registered name is the owner's own name. When a platform customer registers a Norwegian company through our API, and when the register has verified your own Norwegian organisation number in production, we register the company with our Peppol provider under its organisation number, then ask the register again, with the same organisation number, whether the entity is active and in the VAT Register. Only that answer leads us to also register its MVA number (the organisation number with theNOprefix andMVAsuffix) with that provider; we record the answer, a masked organisation number and the time of the check. For your own organisation number, while the register reports the entity outside the VAT Register, we ask it again about every six hours, so that the MVA number is added once the entity is registered. If adding the number does not succeed — the register cannot answer or does not show an active entity, or our Peppol provider does not accept the number — we try again at most once an hour, which means asking the register again each time. We stop when the number is added, when the organisation number is removed or is no longer verified, or when an MVA number you entered yourself is already on your account, which then follows manual review.
Where the verification source returns a company name, we compare it with the name you declared. Some schemes validate only the identifier, while unavailable or unsupported automatic paths may require review. We retain the resulting verification record — the identifier, your declared company name, the verification status and date — for the lifetime of your account: removing an identifier from your dashboard marks it as removed but keeps its verification record, and the record is removed from our production database with the rest of your account data after account deletion (section 7). The Know-Your-Business evidence we keep alongside it is a minimised audit record — provider, verdict, similarity score, partially masked identifier, and verification metadata; the raw registry name and address are not stored. That evidence is kept for 6 years from the verification date — a period we align with the six-year limit for bringing a claim on a simple contract under the Limitation Act 1980, so we can establish and defend claims about who we admitted to the network. It is then purged by a monthly job, so it may persist for up to a further month (see section 7).
2.5 Newsletter
Our newsletter (the EU e-Invoicing Mandate Tracker, which also carries getpeppr product announcements) has two subscription channels:
- Website signup — legal basis: consent (Article 6(1)(a) UK GDPR), with double opt-in: you must click a confirmation link before any newsletter content is sent to you. We record your email address and the date, IP address, and browser used at signup as evidence of consent. If you unsubscribed earlier and your address is submitted again, nothing changes until you confirm: your opt-out stays recorded, and once you confirm, the IP address and browser we keep are those of your confirmation.
- Console onboarding — when you set up your Peppol identity, a pre-ticked checkbox offers to add your account email to the newsletter under the “soft opt-in” rule for existing customers (PECR regulation 22(3)) and our legitimate interests (Article 6(1)(f) UK GDPR). Clear the checkbox before you submit and nothing is added — you can refuse before we ever send you anything, and every newsletter we do send carries an unsubscribe link. The checkbox is only shown to the holder of the account email address, so nobody can subscribe a colleague. No IP address or browser data is recorded for this channel. An earlier opt-out always prevails: if you have previously unsubscribed, we do not show the checkbox and do not re-subscribe you.
Processor: We use Resend (Plus Five Five, Inc., USA) to deliver emails. Email delivery data is governed by Resend's privacy policy and a Data Processing Agreement we have in place.
Retention: We retain your data while you are subscribed. If you unsubscribe, we keep your email address, your subscription status, and the signup evidence we hold (for website signups: the date, IP address, and browser of your most recent signup, or of its confirmation if you had unsubscribed before). The suppression record ensures we send you no further newsletter. The only email that can still reach that address is a confirmation link, sent if someone submits it on our signup form again; it changes nothing unless you confirm it. The signup evidence documents that consent (Article 7(1) UK GDPR). Both are kept until you request full erasure via privacy@getpeppr.dev.
You can unsubscribe at any time using the link in any newsletter email, or by emailing privacy@getpeppr.dev.
2.6 Business Prospect Contacts
We contact businesses that publish invoicing or business-management software, to introduce getpeppr. Where the details we use identify a person — a named work email address, for example — they are personal data that we did not obtain from that person directly. This section is the information notice required by Article 14 UK GDPR in that situation. We provide it, or a link to it, no later than the earliest of these three moments: one month after we obtain the details, our first message to you, and the first time we pass the details to anyone else — the deadlines set by Article 14(3)(a) to (c).
What we hold. The company name and its registration or VAT number, the name of its software product, the business contact details it publishes (email address, telephone number, website), the functional claims it publishes about that product — for instance whether it declares that it can send or receive electronic invoices — our own assessment of whether getpeppr is relevant to it, and a record of any message we send and any reply we receive.
Where it comes from (Article 14(2)(f)). The company details and the contact details we start from come from publicly accessible sources only: official government registers — such as the list of compliant e-invoicing applications published on the Belgian federal e-invoicing portal operated by the FPS Policy and Support (BOSA) at efacture.belgium.be — the public Peppol participant directory operated by OpenPeppol, and the company's own public communications, chiefly its website. Three things in the record do not come from those sources: our relevance assessment, which we produce ourselves; the messages we send, which we also produce ourselves; and any replies, which come from you directly. We do not buy contact lists, we do not use contact-enrichment services, and we do not collect personal data from private or access-restricted sources.
Why, and on what basis. Business-to-business prospecting, on our legitimate interests (Article 6(1)(f) UK GDPR) in offering a service to companies whose published activity indicates it may be useful to them. We have weighed that interest against the rights of the people concerned: the details are professional rather than private, the business published them so that it could be contacted, each message concerns that business's own stated activity, and every message carries a plain way to stop it.
Who we may write to. Being allowed to hold these details is not the same as being allowed to email them: that is governed by electronic-marketing law, which differs by country, and we apply the rules of the recipient's own country. Two tests matter in practice. Under the UK Privacy and Electronic Communications Regulations, sole traders and some partnerships count as individual rather than corporate subscribers, and we do not send to them without consent. In Belgium, Article XII.13 of the Code of Economic Law requires prior consent as the rule, and exempts only impersonal addresses at legal persons — so for Belgian recipients we write to generic addresses such as info@ or sales@ only, never to a named individual's address, unless we have consent. Publishing an address is not by itself consent to receive marketing, and we do not treat it as such.
Where it is held, and who else sees it. Prospect records are kept in a private version-controlled repository, which is mirrored to two hosts: LeaseWeb in the Netherlands and GitHub in the United States. They are also held in our mailboxes at Proton Mail. Older mailbox copies may remain with our former provider, Fastmail, until their deletion is confirmed (section 5). Because the repository is version-controlled, earlier versions of a record stay readable in its history after the record itself is changed. Deleting a record therefore removes it from the current version, and we purge it from the history as well when you ask us to erase your details — that purge rewrites the repository, so we carry it out as a deliberate operation on request rather than automatically. We say so plainly because a policy that promised instant erasure from a version-controlled store would be promising something the storage cannot do. The research and drafting we do on these records uses Anthropic (Claude), which also reads the public pages of a company's website for us; it therefore processes the details too. Prospect records are not loaded into the getpeppr platform, they are not mixed with customer account data, and they are not shared with anyone beyond the providers named in section 5.
How to stop it. Reply “stop” to any message, or email privacy@getpeppr.dev. We add the business to a suppression list and do not contact it again. You may also object to this processing, or ask for erasure or a copy of what we hold, at any time (section 8). We will not ask you to justify an objection to direct marketing: that right is unconditional under Article 21(2) UK GDPR.
2.7 Research on Account Holders
When a business signs up, we look into who it is. We check whether it already exchanges electronic invoices and through which provider, what its national business registry says about it, and whether the person who registered has a public professional profile. We do this to tell a real business from a throwaway signup, to know before we answer whether getpeppr fits the case at all, and to avoid asking you questions we could answer ourselves.
Where these details identify a person — the name of a director published by a registry, for example — they are personal data that we did not obtain from that person directly. This section is the information notice that Article 14 UK GDPR requires in that situation, and it covers research we have carried out on existing accounts as well as research we carry out from now on.
Where it comes from. Public national business registries (section 2.4 lists the ones we query), the public Peppol directory, the company's own website, and public professional profiles. We do not buy data, we do not use data brokers, and we do not look into anything outside a professional context.
What we write down, and where. A short dated note per piece of research, written in our own words: what the business does, its position on the Peppol network, what the registry says, and whether our product covers its case. Each note is kept alongside the account it concerns, in our own database (section 5 gives its location), and is readable only by us — it is never shown to you in the product and never published, and it is shared with no one other than the assistant named below. A note records facts and our assessment of fit; it is not a judgement about a person. The assistant named in section 5 (Anthropic) helps us research and write these notes, so the details in them are processed by that provider for that purpose.
How long. For as long as the account exists. The notes are erased together with the account and its other data, on the same schedule as section 7 sets out for account data. There is no separate archive of them.
Our basis, and your say. We rely on legitimate interests (Article 6(1)(f) UK GDPR): knowing who our customers are, and whether the service suits them, is a normal part of running it, and the details we use are ones the business or the registry already publishes. You can ask for a copy of what we hold, ask us to correct it, or object to this processing entirely, at privacy@getpeppr.dev (section 8). If you object, we delete the notes and stop keeping them for your account; this has no effect on your account or your access to the service.
2.8 Peppol Authorisation Contacts (Platform Sub-tenants)
Some of our customers are platforms: software providers that register their own customers on the Peppol e-invoicing network through getpeppr. Before we register a business, the person acting for that business has to confirm to us, not to the platform, that they are authorised to use its Peppol identifier. We ask for that confirmation by email, at an address the platform gives us, and the platform cannot give it on its customer's behalf. If you have received such an email from us, this section is the information notice that Article 14 UK GDPR requires when personal data has not been obtained from the person it concerns, and it is addressed to you.
Who we are in this relationship. Zero Loop Labs Ltd, the company in section 1. For this record we are an independent controller — we are not acting as the platform's processor, even though the platform is our customer and sent us your address. The evidence is our own proof that we were entitled to make the registration, so the platform cannot instruct us to alter it, to keep it, or to delete it, and your rights over it are exercised with us directly rather than through the platform.
Where your details come from (Article 14(2)(f)). From the platform, not from you. It gives us the email address to write to, the legal name of the business you act for, and the Peppol identifier it wants registered for that business; we ask the platform to tell its customer that it has done so. We do not buy contact details, we use no contact-enrichment service, and we do not look you up anywhere else for this purpose.
What we record, and when. Your email address is recorded when the request is sent, before you have done anything at all — it has to be, because it is where the email goes. Nothing else about you is recorded unless you press the confirmation button. If you do, we additionally record the IP address the confirmation came from, the moment it happened, the language you confirmed in and a fingerprint (a SHA-256 hash) of the exact wording shown to you. The version and the language of the attestation wording you are asked to agree to, and our internal reference to the Terms between us and the platform, are fixed and stored when the request is sent rather than when you answer it. Confirming ties you to that wording only: our Terms bind us and the platform, and confirming does not make the business you act for a party to them. Alongside it we keep what the confirmation was about: the legal name of the platform, the legal name of the business, and the Peppol identifier registered. Your name is not stored against this evidence — where the platform gives it to us we use it to address the email to you, and nothing keeps it afterwards. We do not record your browser or your device.
Why we do it. Three purposes, and no others: to operate our Peppol access point, which may not put a business on the network unless someone authorised for it has said so; to prevent fraudulent registrations, which is the harm this whole step exists to stop — without it, anyone could ask us to route invoices in a company's name; and to establish or defend legal claims about a registration we made, whether the claim comes from you, from the business, or from the network. We do not use these details to market anything to you, and we do not pass them to anyone beyond the providers in section 5.
Our lawful basis. Legitimate interests (Article 6(1)(f) UK GDPR): running an access point that can show, for every identifier it routes, who authorised it. We have weighed that against your rights. The details are professional rather than private, they are the minimum that the act of confirming requires, we build no profile of you from them, and you are told about the processing in the same message that asks for the confirmation. We do not rely on Article 6(1)(c): the duties that require this check come from our OpenPeppol Integrator agreement, which is contractual rather than statutory.
How long we keep it, and why. Confirmed evidence outlives the platform's own account with us — it has to, because a claim about a registration can arise long after the platform has stopped being our customer — and it is kept for 6 years: We keep the evidence of a Peppol authorisation for as long as the registration it authorises is active, and then for six years — the period in which a claim about that authorisation can still be brought under the Limitation Act 1980. If the platform account is deleted while we still record that registration as active, the period instead runs from the deletion of the account. A request that is never confirmed evidences nothing, and is deleted twelve months after it expires. Your IP address goes sooner than the rest. We erase it 12 months after you confirm, from the live record and from the copy that outlives the platform's account alike. It answers one question — whether the confirmation came from somewhere plausible at the time — and that is a fraud-prevention question with a short useful life; the evidence that you gave the authorisation at all does not depend on it, and one period applied to unlike fields would not be data minimisation.
If you do nothing. Nothing happens: the link stops working on its own and no business is registered on your authority. We send no reminder of our own, although the platform can ask us to send the request again, in which case you receive a fresh email from us. A request you never confirmed never becomes evidence of anything — it is deleted on the schedule set out just above, together with the address we wrote to.
Your rights, and how to object. You may object to this processing at any time, and ask us for a copy of what we hold about you, for it to be corrected, for it to be erased, or for the processing to be restricted, at privacy@getpeppr.dev (section 8). Because we rely on legitimate interests, that right to object is real but not unconditional: we will stop unless we have compelling legitimate grounds to continue, or need the evidence to establish or defend a legal claim. Where the registration you authorised is still live, the second of those will usually apply, and we will say so and explain why rather than leave you to guess. You may also complain to us (section 8) or to the Information Commissioner's Office.
3. Legal Basis for Processing
- Consent (Article 6(1)(a) GDPR) — for product announcements and marketing communications. You may withdraw consent at any time by using the unsubscribe link included in our emails, or by contacting us at privacy@getpeppr.dev.
- Contract (Article 6(1)(b) GDPR) — for account management, customer support, API access, invoice processing, and billing. This data is necessary to provide the service.
- Legitimate interests (Article 6(1)(f) GDPR) — for security monitoring, fraud prevention, improving service reliability, understanding how developers discover getpeppr (the acquisition-channel answer given at onboarding, which may be “Prefer not to say”), and sending service and product updates to existing customers under the PECR regulation 22(3) soft opt-in (every message includes a one-click unsubscribe link).
- Legitimate interests — business prospecting (Article 6(1)(f) GDPR) — for contacting businesses whose publicly declared activity indicates that getpeppr may be relevant to them, using contact details those businesses have themselves published (section 2.6). The right to object to this processing is unconditional, and every message states how to stop.
- Legitimate interests — knowing our customers (Article 6(1)(f) GDPR) — for the account research described in section 2.7: understanding who has signed up, from details the business or a public registry already publishes, so that we can tell a real business from a throwaway signup and know whether the service fits the case. You may object to it at any time, and the notes are then deleted.
- Legitimate interests — Peppol authorisation evidence (Article 6(1)(f) GDPR) — for the confirmation we ask a platform's customer to give before we register its Peppol identifier, and for the evidence of that confirmation described in section 2.8: an access point must be able to show who authorised each identifier it routes, and we keep the proof to prevent fraudulent registrations and to establish or defend claims about a registration we made. We are an independent controller for that record, not the platform's processor. You may object at any time; we will stop unless we have compelling legitimate grounds to continue, or need the evidence to establish or defend a legal claim. We deliberately do not restate the period here: it belongs in section 7.
- Legal obligation (Article 6(1)(c) GDPR) — for retaining the billing records described in section 7, which is where HMRC's obligation and the period we keep them for are set out. We do not rely on this basis for anything else, and we deliberately do not restate the period here: it belongs in one place.
- Multi-angle basis — Peppol identifier verification: We verify business registrations (section 2.4) under the combined authority of Article 6(1)(b) (contract necessity — our Terms of Service require a verified identifier before production sends) and Article 6(1)(f) (legitimate interest in preventing impersonation on the Peppol e-invoicing network). The Know-Your-Business duties that OpenPeppol accreditation places on Integrators are contractual rather than statutory, so we do not rely on Article 6(1)(c) here. You can therefore object to this processing and ask us to erase the record; we will do so unless we have compelling legitimate grounds to continue, or need it to establish or defend a legal claim.
4. How We Use Your Data
- To send product announcements and service updates (consent-based for website newsletter signups, PECR soft opt-in for existing customers — with one-click unsubscribe either way)
- To provide, operate, and improve the getpeppr API service
- To process invoices and transmit them to the Peppol network via our access point provider
- To manage billing and subscriptions via Stripe
- To detect and prevent abuse, fraud, and security incidents
- To comply with legal and regulatory obligations
5. Third-Party Processors and Data Sources
We share data with the service providers below. For each of them, a document setting out its role (our processor, or an independent controller), where it processes data and the safeguard that applies to transfers outside the UK, together with a copy of that safeguard where one applies (for example the Standard Contractual Clauses and the UK Addendum), is available on request at privacy@getpeppr.dev.
- Clerk — identity and authentication management; sign-up is protected against automated abuse with Cloudflare Turnstile, which processes browser and device signals to distinguish humans from bots (US — transfer safeguards in section 6)
- Stripe — payment processing (US/EU — transfer safeguards in section 6; Stripe also acts as an independent controller for some of its own fraud-prevention and regulatory purposes)
- Storecove — Peppol network access point for sending and receiving invoices; we register your legal-entity details (name, address, Peppol identifiers) with them to route documents (Netherlands/EU)
- PandaDoc — electronic signature of contractual documents we sign with you (for example platform Order Forms): we share the signers' names and email addresses on both sides and the content of the document to be signed (PandaDoc, Inc., US — transfer safeguards in section 6)
- Crisp — live chat support widget (Crisp IM SAS, France) until 19 September 2026. We no longer send it anything, and no chat runs on our surfaces; it is listed here because it still holds the conversations it received before that date, until we have them deleted
- Neon — serverless Postgres database hosting (UK region, London)
- LeaseWeb — hosting of a server, in a LeaseWeb data centre in the Netherlands, that holds a copy of the private internal repository in which our prospect research is held. It holds no customer account data
- Resend — transactional email delivery (US, Standard Contractual Clauses)
- Upstash — rate limiting and API response caching (EU region, Ireland)
- Vercel — website, console and API hosting, and Vercel Web Analytics on the website and in the console (US, Standard Contractual Clauses)
- Sentry — error and performance monitoring for the console and the website (Functional Software, Inc., US). Event data is stored in Sentry's EU region (Germany). Error reports are linked to your user ID and to your organisation's ID. Session Replay records only around an error, never as a sample of ordinary sessions, and all text, inputs and media are masked in your browser before anything is transmitted; we apply automated scrubbing of sensitive fields to events before they are sent
- Cloudflare R2 — storage of our daily encrypted database backups (Cloudflare, Inc., US; backups stored under EU jurisdiction with a 30-day retention)
- GitHub — CI infrastructure (GitHub, Inc., US, a Microsoft company) that runs our daily database backup job: the backup is encrypted before upload, and an integrity check restores it transiently inside the isolated job environment. GitHub also hosts a mirror of the private repository holding our prospect research (section 2.6)
- Anthropic — the assistant (Claude) we use to research and draft prospect records and outreach messages (section 2.6), and to research and write the account notes described in section 2.7, including reading public web pages for that research. For section 2.7 that includes the identity of the account being researched — its business name, its domain, and the identifiers it uses on the Peppol network. We use it under its individual subscription terms, under which Anthropic Ireland, Limited (Ireland) decides how it handles what we submit and acts as an independent controller of it, not as our processor. When you ask us for help with a delivery problem, we may use it with the document identifier and its delivery status only — never the invoice number, amount, recipient, or any other content of the invoice. It receives no API keys and no billing data
- OpenAI — the assistant (Codex) we use to write and review our software, under its individual subscription terms, under which OpenAI OpCo, LLC (US) acts as an independent controller of what we submit. We do not give it prospect records, account notes, or any content of your invoices, and it receives no API keys and no billing data
- Slack — internal operational alerts, for example an account deletion notification that includes the organisation name; it also holds the live chat conversations that were relayed from Crisp until 19 September 2026, which remain there until deleted (Slack Technologies / Salesforce, US)
- Proton Mail — hosting of our support and privacy mailboxes, i.e. any correspondence you send us (Proton AG, Switzerland). Mail data is stored encrypted on Proton servers in Switzerland, Germany or Norway
- Proton Drive — storage of our company documents, including copies of the contractual documents we send to you or sign with you, which carry the names, job titles and email addresses of the people named in them (Proton AG, Switzerland). It holds no invoice data
For Peppol identifier verification (section 2.4) and Peppol directory lookups we additionally query business registries and directories operated by public authorities and independent providers. We transmit the identifier being verified (or, for directory searches, the name or identifier you search for); for sole traders these values can themselves be personal data:
- HMRC — HM Revenue & Customs, the UK tax authority, via its “Check a UK VAT number” API (public service, UK)
- European Commission VIES — EU VAT Information Exchange System (public service, EU)
- INSEE Sirene — French national business registry (public service, France)
- KBO/BCE (Crossroads Bank for Enterprises) — Belgian federal business registry (public service, Belgium)
- Bolagsverket — Swedish Companies Registration Office (public service, Sweden)
- Brønnøysund Register Centre — Brønnøysundregistrene, Norway's Central Coordinating Register for Legal Entities, queried through its open-data API without an account (public service, Norway)
- DanskCVRAPI — our processor for the CVR string sent in a Danish lookup, under its Article 28 data-processing agreement; it separately acts as an independent controller for the Central Business Register data it re-publishes (Denmark)
- Overheid.io OpenKvK — operated by Downsized B.V.; an independent source of Dutch Chamber of Commerce data. The full KVK is sent as the lookup query; see section 2.4 for the data getpeppr retains. The provider's public documents do not currently specify API-query-log retention or hosting location
- Peppol Directory — the public Peppol participant directory (operated by OpenPeppol AISBL, Belgium); when you search the directory through getpeppr or we look up a participant, the searched company name or participant identifier is sent as the query
- Peppol SML — the network's lookup service that senders follow to find a participant (operated by OpenPeppol AISBL, Belgium), read through the public DNS; to check whether an identifier is registered, and with which provider, we send a SHA-256 hash of the scheme and identifier, as the Peppol specification requires, never the identifier itself
The prospect data described in section 2.6 is held in a private repository mirrored to LeaseWeb and GitHub, researched and drafted with Anthropic, which also reads public web pages for us, delivered by Resend, and stored as correspondence in Proton Mail — all listed above. We do not use contact-enrichment or list-broking services, and we do not buy contact data.
The account notes described in section 2.7 are held somewhere else and are a different thing: they sit in our own database at Neon, alongside the account they concern, and they are covered by the same backups and the same deletion as the rest of that account. They are researched and written with the assistant named above (Anthropic), which also reads public pages for us, and they are not copied into the prospect repository above.
Former mail provider: we stopped using Fastmail for incoming mail in September 2026. We have not yet confirmed deletion of older mailbox copies and backups held by Fastmail Pty Ltd (Australia, with US infrastructure). Its DPA provides EU Standard Contractual Clauses; a UK Addendum was not in place. Our switch to Proton Mail does not resolve that historical gap.
We do not sell your personal data to third parties.
6. International Transfers
Some providers are located outside the UK/EEA (for example Clerk, Stripe, PandaDoc, Resend, Vercel, Sentry, Cloudflare, GitHub, Slack, Proton AG and OpenAI). The safeguards we use for these transfers are UK adequacy regulations (which cover, for example, the EEA and Switzerland), the UK Extension to the EU-US Data Privacy Framework where the provider is certified, the UK International Data Transfer Agreement (IDTA), and the EU Standard Contractual Clauses with the UK Addendum. Which one applies to each provider, and where a safeguard is still being put in place, is set out in the document described in section 5, which we send on request together with a copy of the safeguard concerned. For Proton Mail storage in Switzerland, Germany and Norway, we rely on UK adequacy regulations. Part of our data stays in the UK or the EU: our database is hosted in London, our cache in Ireland, Sentry event data in Germany, and database backups under EU jurisdiction. Other processing takes place in the United States, including our API and console functions, which run on Vercel in Washington, D.C.
7. Data Retention
- Account data: for the duration of your account, plus 30 days after account deletion to allow recovery — and up to 30 days more while a signed contract is still being secured with our e-signature provider (Signed contracts, below); after which your data is removed from our production database. A platform customer can delete its account only once its platform contract has ended and its final billing is settled: the final invoice for the documents received during the contract's 30-day exit window has been issued, or there was nothing to bill because no document was received. Some records survive account deletion: encrypted database backups until they are removed (Encrypted database backups, below), newsletter suppression records (section 2.5), legacy waitlist entries (below), administrative audit logs (below), operational records (below), the billing records described below, the confirmed Peppol authorisation evidence described below (section 2.8), the contractual documents held with our e-signature provider — every version created there, from drafts never sent to you to every version sent to you for signature, whether you signed it, declined it, or it expired unsigned (Signed contracts, below) — and, in our own database, the sealed PDF that PandaDoc issues when a version is completed (Signed contracts, below); every other version of those documents held in our own database is deleted with your account
- Invoice data: the records of invoices you send and e-invoices you receive through getpeppr — sender and recipient, invoice number, dates, amounts and delivery status — are retained for the duration of your account. The full document of an e-invoice you receive is kept for 90 days after it reaches us, or until the exit window of a terminated Platform contract closes if that comes first, and is then deleted; its record stays. An account export you request in the console before an original's retention period ends reserves that original for 7 days from the moment the export is complete, so that you can retrieve it. This happens once per original: later exports do not extend it, and an export marked incomplete reserves nothing. getpeppr is not an archive of your invoices: keep the original yourself, from the webhook that delivers it or by downloading it in the console or through the API before then. A deleted document can remain in our encrypted database backups until those backups are removed (Encrypted database backups, below). When a document addressed to you cannot be delivered to you (for example because it is larger than our storage limit), we keep a record of it — the sender, the invoice number and the document reference, never the document itself — for 90 days after we notify you, and delete it sooner if your account is deleted first. Our access point provider retains delivery data in accordance with its retention policy; financial records are kept for the billing-records period below
- API usage logs: retained for 90 days, then automatically purged in accordance with GDPR Article 5(1)(c) (data minimisation)
- API response cache: up to 24 hours for idempotency and performance (automatically purged)
- Rate limiting data: IP addresses are pseudonymised with a keyed hash (HMAC-SHA256) before being used as rate-limit counters; counters expire on short rolling windows (from 60 seconds up to one hour), and aggregate rate-limit analytics may retain the pseudonymised counter beyond the window. Raw IP addresses are not stored for rate limiting
- Public Peppol lookup usage measurement: the free lookup tool at getpeppr.dev/peppol-lookup needs no account and stores none of your searches. To count how many distinct people use it, your IP address is turned into a daily token with a keyed hash (HMAC-SHA256) and added to a probabilistic set — a structure that holds an approximate count and from which no token or address can be read back. The daily sets and the daily volume counters expire after 90 days; the running totals across all days are plain integers and are kept indefinitely. Raw IP addresses are not stored
- Encrypted database backups: a daily encrypted backup of our database is kept in immutable storage for 30 days, after which it becomes eligible for automatic deletion. Our storage provider carries the deletion out asynchronously, so a backup may persist for a few days past that point before it is physically removed; we monitor this and treat anything beyond 35 days as a fault
- Billing records: 7 years — HMRC requires company records to be kept for six years from the end of the accounting period they fall in, and VAT records for at least six years — longer if a return was filed late, if a compliance check is open, or if the record still bears on an open period. Because the company-records clock starts at our 28 February year end rather than at the document, we keep each billing record for seven years from its own date, and longer where that obligation runs longer. The accounting substance of these records — the figures and the facts that make them accounts — is kept under Article 6(1)(c) (legal obligation) for as long as that obligation runs, so for that part you cannot ask us to erase it, object to it, or receive it in portable form. That reservation covers the accounting substance only, not every field on the row: the references described below are erased with your account. These are the records of what we billed you for: one entry per chargeable document, holding whether it was sent or received, the environment, an opaque provider reference for the document, the moment it happened, the billing period it fell in, your plan at that moment and its position against your included quota. They are legal accounting records, so they survive account deletion. When your account is deleted we erase the payment-provider customer reference and any sub-account reference you supplied; what remains is the internal account identifier and the accounting figures, which is what makes the record usable as one. They never contain the contents of a document, nor the identity of the other party to it. While your account is live, a billing record may carry the internal reference of the legal entity that sent or received the document and, for platform customers, the reference you yourself chose for your own client — both are erased when your account is deleted
- Signed contracts (electronic signature): contractual documents signed electronically via PandaDoc (for example platform Order Forms) are legal records: we keep a sealed copy in our own database for as long as your account exists and for 7 years after you ask us to delete it, and our e-signature provider keeps its own copy under its terms with us (see below). Throughout, we rely on our legitimate interest in evidencing and defending contractual claims (Article 6(1)(f)): a claim on a simple contract can be brought for six years after it arises under the Limitation Act 1980, and a claim can arise after the relationship has already ended, so we allow one further year. We do not rely on Article 6(1)(c): a limitation period sets a deadline for bringing a claim, not a duty to keep records. Nor do we rely on Article 6(1)(b), because the contract is with your company rather than with the person who signs it. You can therefore object to this retention and ask us to erase the document; we will do so unless we have compelling legitimate grounds to continue, or need it to establish or defend a legal claim. We do not have PandaDoc delete any version when your account is deleted: every version created there stays with PandaDoc under its terms with us — drafts that were never sent to you, and everything that was sent to you, whether you signed it, declined it, it was cancelled, or it expired unsigned 60 days after it was sent. A sent version may already carry your signature, and its PandaDoc copy may be the only copy of that signature. In our own database, the sealed PDF that PandaDoc issues when a version is completed before your account is deleted survives the deletion of your account, whether or not we then accepted that version as a valid agreement, because it is the evidence of what was signed. If that PDF has not reached us when your account is due to be deleted, we fetch it from PandaDoc first: the deletion of your account can wait up to 30 days for it, after which — or at once, if PandaDoc no longer has the document — we delete your account without it. Before deleting your account we also check every version with PandaDoc itself: we fetch the sealed PDF of any version it reports as completed, and we close any version still waiting for signature so that it can no longer be signed. This step can delay the deletion in the same way; if PandaDoc still cannot be reached at the end of that period, your account is deleted anyway, and a version still open there may remain signable. We keep only that PDF and the references needed to identify it, and every version for which PandaDoc issued no sealed PDF is deleted with your account, together with the other contract details we held. We count the 7 years from the day the deletion of your account was requested. That day is never earlier than the end of our relationship, but it can be later if you keep your account after the relationship ends, so these documents can outlast 7 years counted from the relationship's end. When that period ends, we delete our copy automatically. We do not have PandaDoc delete its copy automatically at that point: you can ask us to have it deleted, as for any personal data we hold about you. We do not promise you continued access to the provider's copy — that depends on PandaDoc, not on us — so ask us for a copy before you delete your account if you want one
- Copies of contractual documents in our document store: a copy of a contractual document or offer we send to you, or sign with you, may also be kept in our document store (Proton Drive, section 5), as a record of what was sent or signed. A copy of a signed document is kept for the same period as the signed contracts described above; a copy of a document that was not signed is kept for 24 months from the date we sent it. We record each copy, with the date it was sent, in our internal legal register, and delete it when its period ends; a document that was never sent is not kept
- Legacy waitlist: our closed pre-launch waitlist (email address, source, signup date) is an opt-in list retained for launch announcements; entries are erased on request
- Business prospect records (section 2.6): kept for up to 24 months from our most recent contact with the business, then deleted. If the business tells us to stop, we delete the rest of the record and keep only what is needed to honour that instruction — the business identity, its domain, and the date — on a suppression list, so that we do not contact it again. That suppression entry is kept for as long as we need it to honour the objection, and a general erasure request does not remove it: deleting it would allow us to source the same details again and contact you, which is the opposite of what you asked. It is never used for any other purpose
- Peppol identifier verification records (Trust Layer): the minimised Know-Your-Business evidence record (provider, verdict, similarity score, partially masked identifier, verification metadata — never the raw registry name or address) is kept for 6 years from the verification date — a period we align with the six-year Limitation Act 1980 limit for bringing a claim on a simple contract, so we can establish and defend claims about who we admitted to the network — then purged by a monthly job (so it may persist for up to a further month), or earlier if you delete your account. The verification record itself (identifier, declared company name, verification status and date) is retained for the lifetime of your account — including for identifiers you have removed — and is deleted with your account
- Peppol authorisation evidence (platform sub-tenants): 6 years: We keep the evidence of a Peppol authorisation for as long as the registration it authorises is active, and then for six years — the period in which a claim about that authorisation can still be brought under the Limitation Act 1980. If the platform account is deleted while we still record that registration as active, the period instead runs from the deletion of the account. A request that is never confirmed evidences nothing, and is deleted twelve months after it expires. This is the confirmation described in section 2.8, given by a platform customer's own customer: the email address the request was sent to, the IP address the confirmation came from, the moment it happened, the version and language of the attestation wording, the language it was confirmed in and a fingerprint of that exact wording, and our internal reference to the Terms between us and the platform, and what was authorised — the legal name of the platform, the legal name of the business, and the Peppol identifier registered. It survives the deletion of the platform account: when that account is deleted we copy the evidence into a separate record, because it is the proof that we were entitled to make the registration, and a claim about that registration can be brought after the account has gone. That copy carries no contact name — we never store one against this evidence — no platform branding, no authorisation token, and none of the references the platform used inside its own systems, including the one it used for its own customer. It does keep two internal identifiers: the identifier of the deleted account, which is how every read of this evidence, and its own eventual deletion, stay confined to the right one; and the identifier of the authorisation the copy was taken from, which is what stops the same confirmation being copied twice. Neither is a name and neither is published anywhere, but both are stable, so we do not describe the copy as anonymous: whatever else we still hold under the same account identifier — the billing records above, for instance — can be matched to it. An authorisation nobody ever confirmed evidences nothing and is never copied: it is deleted with the account, or on the schedule stated at the head of this row for a request that is never confirmed, whichever comes first. The IP address goes sooner than the rest of the record. We erase it 12 months after the confirmation, from the live record and from the copied one alike: it answers a fraud-prevention question with a short useful life — whether the confirmation came from somewhere plausible at the time — and the proof that the authorisation was given does not depend on it
- Attestation and audit records: the attestation an organisation admin gives for its own account's Peppol identifier (email address, IP address, user ID, the moment it happened and the Terms version agreed) is kept for the lifetime of your account and deleted with it; administrative audit logs are accountability records retained without a fixed expiry, until erasure is requested and no overriding legal ground applies
- Operational records: when something fails — a webhook we could not attribute, a scheduled job that errored — we keep a minimised record so we can investigate it. We keep the same kind of record for a small number of situations that did not fail but that we need an operator to see. Today there is one: when a company is registered in a country we do not serve yet, we record the two-letter country code, whether the account is in sandbox or production, and the account it belongs to — nothing else about the company or the person — so that we know where our customers are asking us to go next. Such a record is redacted at the moment it is written, never at display, and it holds no document content; it is purged after 90 days. Some of these records concern an event with no account attached at all, and those that do name an account are not removed when that account is deleted: they are what we would rely on to explain an incident, or to decide where to extend our coverage, and both of those questions outlive the account. They are deleted when that 90-day window expires
8. Your Rights
Under UK GDPR, you have the right to:
- Access — request a copy of data we hold about you
- Rectification — ask us to correct inaccurate data
- Erasure — ask us to delete your data ("right to be forgotten"), subject to legal retention obligations
- Portability — receive your data in a machine-readable format, except for the accounting substance of the billing records in section 7, which we hold to meet a legal obligation and which the UK GDPR therefore places outside this right. The exception is that substance, not every field on those records
- Restriction — ask us to limit how we process your data
- Object — object to processing based on legitimate interests
- Withdraw consent — at any time, without affecting lawfulness of prior processing
If we have contacted you as a business prospect (section 2.6), your right to object is unconditional: we stop on request, without asking for a reason, because the processing is direct marketing (Article 21(2) UK GDPR). You may also ask us to confirm where we obtained your details; section 2.6 sets out the sources we use.
To exercise any right, email privacy@getpeppr.dev. We will respond within 30 days.
Complaining to us. You have the right to complain directly to us if you believe we have infringed your data protection rights (section 164A of the Data Protection Act 2018, in force since 19 June 2026). Write to privacy@getpeppr.dev with “complaint” in the subject line, or by post to the address in section 1. We will acknowledge your complaint within 30 days of receiving it, look into it, and tell you the outcome. You do not have to complain to us first: you may go straight to the ICO.
You also have the right to lodge a complaint with the Information Commissioner's Office (ICO), the UK supervisory authority.
9. Security
We implement appropriate technical and organisational measures including TLS encryption in transit, SHA-256 hashing of API keys, rate limiting keyed on pseudonymised IP addresses, encrypted off-site backups, and access controls. No method of transmission over the internet is 100% secure.
10. Changes to This Policy
We may update this policy from time to time. Material changes will be communicated via email (to registered users) or a notice on this page. Continued use of the service after changes constitutes acceptance.
11. Contact
Questions about this policy? Email us at privacy@getpeppr.dev.