Legal

Data processing agreement

Till stores and delivers your buyers' purchase data on your behalf. That makes you the controller and us your processor, and Art 28(3) of the UK and EU GDPR requires a written contract between us. This is it — it applies automatically to every seller, with nothing to sign.

Draft of 5 August 2026

Draft — not legal advice

This document was prepared from Till's source code and architecture as a starting point for review. It has not been written or checked by a qualified solicitor, and it must be before Till takes a real payment or onboards a real seller. Highlighted values are unresolved. Nothing here is legal advice.

1. Parties, and how this fits together

This agreement is between you, the seller using Till ("Controller"), and [registered entity name], company number [company number], of [registered address] ("Processor", "Till").

It forms part of the Till terms of service and takes effect when you start using Till. Where it conflicts with the terms of service on a data protection matter, this agreement wins.

"UK GDPR", "EU GDPR", "personal data", "processing", "controller", "processor", "data subject" and "supervisory authority" have the meanings given in the applicable data protection law. "Data Protection Law" means the UK GDPR, the Data Protection Act 2018, the EU GDPR, and the Privacy and Electronic Communications Regulations 2003, as applicable.

Which data this covers

This agreement covers buyer data only — the personal data of the people who buy from your site, which Till processes on your instructions.

It does not cover your own seller account data. For that, Till is the controller in its own right and the privacy policy applies instead. A single agreement cannot cover both, because the two sets of data are held for different people's purposes.

2. Subject matter, duration, nature and purpose

Subject matter

Processing of your buyers' personal data so that purchases made through Till's checkout on your website can be recorded, delivered and re-downloaded, and so that you can administer those orders.

Duration

For as long as you use Till, plus the retention periods in section 11. This agreement stays in force for as long as Till holds any of your buyers' personal data.

Nature of the processing

Collection, recording, storage, retrieval, organisation, transmission by email, restriction, erasure and pseudonymisation, carried out by automated means.

Purpose

  • Creating and recording an entitlement when a buyer pays.
  • Sending the buyer a delivery email with a link to their library.
  • Authenticating a buyer who returns to their library, and minting short-lived signed download links for the files and versions their purchase entitles them to.
  • Notifying buyers once when you publish a new version of a file they are entitled to.
  • Showing you your own orders, and letting you resend a delivery email.
  • Reflecting refunds, disputes and revocations onto the buyer's access.
  • Recording when a buyer opens a link we issued them, and whether it opened or was refused, so you can see that what you sold is reaching the buyer and can spot a link being used by somebody else.
  • Recording the country the buyer was in when they paid, as the place of supply of the sale — the fact you need in order to account for tax on it, and one that cannot be re-derived later.
  • Issuing a VAT invoice for a purchase, where the buyer asks for one — creating or reusing a customer record for that buyer on your Stripe account, naming it on the payment, and having Stripe produce the numbered document off your own invoice sequence. You are the supplier and the invoice is yours; we hold no copy of it.
  • Applying a discount code you created to a purchase, and recording the redemption against a one-way pseudonym of the buyer's email address so that a per-buyer limit can be enforced without a record of who used which code.
  • Inviting a GitHub account a buyer names to a repository you sell access to, using the Till GitHub App you installed.
  • Relaying a message from a buyer to you where they contact you about a purchase or a withdrawal, so that your own address is not published to whoever opens a link.
  • Recording purchases you tell us to record without a payment — a purchase you comp, and a list of buyers you import from another platform so that they keep their access here.
  • Producing an export of your own orders when you ask for one.
  • Repairing failed fulfilment — a reconciliation process that walks payments back from Stripe and delivers anything that was paid for but never sent.

3. Categories of data subject and personal data

Data subjects

The buyers of your digital products — individuals who complete a purchase through a Till checkout on your website, and who may afterwards sign in to a Till buyer library.

Personal data

Categories of buyer personal data processed
CategoryFields
Contact dataBuyer email address (passed to Stripe as the receipt address where the purchase was a card payment; a comped or imported purchase never reaches Stripe)
Transaction dataAmount, currency, Stripe payment intent reference, whether the purchase included future updates, which version of the product was bought where more than one is sold, how the purchase arose (card sale, comp, or a record you imported), order status (active, comped, refunded, revoked, disputed), purchase date, and the buyer's COUNTRY at the time of payment as a two-letter code
Delivery and usage dataDelivery timestamp, number of downloads, last resend time, a timestamped event log of purchase, download, resend, refund, dispute, revocation, restoration and comp events with the file each relates to, and — where access was withdrawn — the reason and your own note to the buyer
Per-deliverable access dataOne link token per deliverable the buyer bought, its status, and whether and when the buyer claimed it
Repository grant data (where you sell access to a private repository)The GitHub account name the buyer supplies when they claim, stored so they can be told which account was invited
Buyer message data (where a buyer uses the contact route beside a refusal)The buyer's email address as the reply address, and the text they wrote, relayed to you and not retained as a record of the conversation
Notification recordsWhich new-version notification has been sent for which purchase, and when
Invoice data (where a buyer asks for a VAT invoice)A Stripe customer record on YOUR connected account holding the buyer's email address and the two-letter country of the sale, and the invoice document itself, which carries both alongside the amount, currency, product and date of supply. Created only on a buyer's request; issued, numbered and stored by Stripe on your account, and not retained by us
Discount data (where you run a discount code)The code used, the discount, what was charged, and a keyed one-way pseudonym of the buyer's email address. The pseudonym rather than the address is what enforces one use per person without recording who used it, and it is why a discount record does not need to be erased with the purchase
Authentication data (where a buyer signs in to their library)Email address, hashed one-time sign-in codes, session records including IP address and browser user agent
Access log dataFor each time a buyer opens one of the links we issue them: which artefact, when, the outcome (opened, refused because the right had been withdrawn, or refused because the person signed in was not the buyer), whether your partner code was applied, and the buyer's COUNTRY as a two-letter code

Location data is limited to country, by design. Country is recorded in two places here and nowhere else: on the purchase, as the place of supply, and on each access log record. Both are read from our own network edge, which sets the value itself and strips it from incoming requests, so it is not something a buyer's browser can choose. Where a buyer asks for a VAT invoice, the purchase's country is copied onto the customer record and the document on your Stripe account — a third place, on your account rather than in ours, and still a country and nothing finer. No city, region, coordinate or IP address is recorded against a purchase or an access record. In the access log that is enforced by the database, which accepts two letters or nothing at all; on the purchase it is enforced by the single code path that writes it. An unknown country is stored as nothing rather than as a place. Buyer IP addresses appear only in server logs and in a buyer's own sign-in session record, neither of which is joined to either field.

Access log records are kept for 400 days — a little over 13 months — and are then deleted automatically by a scheduled job. That is much shorter than the purchase records they relate to, because they serve monitoring rather than proof of sale. The country on the purchase is part of the purchase record and is kept for as long as it is.

No special category data under Art 9 and no criminal offence data under Art 10 is processed, and none should be placed in free-text fields. Card and payment instrument details are not processed by Till at all: they are collected in the buyer's browser by Stripe and transmitted directly to Stripe.

4. Processing on your instructions

Till processes buyer personal data only on your documented instructions, including on international transfers, unless required otherwise by law — in which case we will tell you before processing, unless the law prohibits us from doing so.

Your instructions are: the terms of service, this agreement, and the actions you take in the Till dashboard, the Framer plugin and the checkout components you place on your site. Configuring your store, publishing a version, resending a delivery email or issuing a refund are all instructions given through the product.

If we consider an instruction to infringe Data Protection Law, we will tell you.

Till does not market to your buyers, does not sell or share their data, and does not use it to train anything. Two narrow uses are Till's own rather than yours, and we are a controller rather than your processor for them: monitoring our own errors, and counting purchases, deliveries and downloads to know whether the service is working. Both identify a buyer by a reference to their order or by a one-way pseudonym of their email address, not by the address, and neither is used to contact them or to profile them.

5. Confidentiality

Till ensures that anyone authorised to process buyer personal data is bound by an appropriate duty of confidentiality, and that access is limited to those who need it to operate and support the service.

6. Security measures (Art 32)

Till implements appropriate technical and organisational measures, having regard to the state of the art, the cost of implementation, and the risk to data subjects. The measures in place are set out in Annex 2. In summary:

  • Payment data is out of scope by design. Direct charges mean card details go from the buyer's browser to Stripe and never touch Till's servers, so the highest-risk category of data in an e-commerce system is one we do not hold.
  • Files are private by default. Product files are stored in private object storage with no public URL. Downloads are served through signed links that expire after five minutes.
  • Access control is enforced at the data layer. A download link is only minted after the request is matched, in the database query itself, against a purchase owned by the signed-in email address, with an active status, and for a version that purchase is entitled to.
  • Passwordless authentication. No passwords are stored; one-time codes are stored hashed and expire in minutes.
  • Encryption. TLS in transit throughout; encryption at rest by our infrastructure providers.
  • Tenant isolation. Every store's products, files and orders are scoped to that store, and file storage paths are namespaced per store.
  • A buyer's link is not a credential. Each deliverable a buyer bought has its own link, and it resolves only after whoever opened it has signed in as the address that bought it. A refusal never distinguishes a link that does not exist from one that belongs to somebody else, so a link cannot be used to discover what a store sells.
  • Monitoring. Structured application logging and error capture, with a reconciliation process that detects and repairs undelivered purchases.

One measure Till cannot provide, named here rather than left to be discovered: where you sell access to a private repository, withdrawing a buyer's access in Till does not remove the GitHub account we invited from the repository. Only you can, in GitHub.

7. Sub-processors

You give Till general written authorisation to engage the sub-processors listed in Annex 3. Till imposes on each of them data protection obligations no less protective than those in this agreement, and remains fully liable to you for their performance.

Till will give you at least 30 days' notice by email before adding or replacing a sub-processor. If you reasonably object on data protection grounds within that period, we will work with you to find an alternative; if we cannot, you may terminate your use of Till without penalty, and section 11 applies.

Annex 3 — authorised sub-processors
Sub-processorPurposeProcessing location
StripePayment processing and Stripe Connect. Receives the buyer's email address as the receipt address, plus the amount, currency and references to the product and store.EU / US
ResendTransactional email delivery — delivery emails, sign-in codes, new-version notifications, and a buyer's relayed message to you.US
PostHogError monitoring, and Till's own product analytics. Receives a reference to the order, or a keyed one-way pseudonym of the buyer's email address before an order exists — never the address itself. No session recording, no cookies.EU
VercelApplication hosting and private file storage for the products you sell.EU / US
GitHubRepository invitations, and only for a seller who sells access to a private repository. Receives the GitHub account name the buyer types and the repository you nominated; never the buyer's email address.US
NeonManaged Postgres database.EU

Stripe also acts as an independent controller in its own right for payment processing and fraud prevention, under its own terms with you as a Stripe connected account holder. That processing is outside this agreement.

8. International transfers

Where Till or a sub-processor transfers buyer personal data outside the UK or the EEA, the transfer is made under the European Commission's Standard Contractual Clauses, the UK International Data Transfer Addendum, or another mechanism permitted under Chapter V of the applicable GDPR. Till will make the relevant transfer documentation available on request.

9. Assisting you with data subject rights

Buyers should address requests to you, as their controller. If a buyer contacts Till directly, we will not respond substantively on your behalf — we will tell them to contact you, and pass the request to you without undue delay.

Taking into account the nature of the processing, Till will assist you by appropriate technical and organisational measures in responding to requests under Chapter III, including access, rectification, erasure, restriction, portability and objection.

How erasure is carried out

A purchase record is simultaneously the buyer's personal data, your proof of sale, and the buyer's own key to the files they bought. Deleting the row outright would destroy records you need for tax and for defending a chargeback.

So Till erases by pseudonymisation: the buyer's email address is replaced with a one-way hash and the identifying detail in the event log is cleared, while the amount, currency, Stripe payment reference and date are retained. Those retained fields no longer identify the buyer, and their retention is grounded in Art 17(3)(b) and Art 17(3)(e). The consequence — which the buyer must be told — is that they permanently lose library access to that purchase.

The access log described in section 3 is deleted on erasure rather than pseudonymised. It is not a record of the sale and nothing depends on it, so there is no Art 17(3) ground to keep it — and unlike the purchase record, deleting it costs the buyer nothing. The buyer's country on the purchase is retained: on its own it does not identify anybody, and it is part of what you need to account for the sale.

One limit on erasure and on restriction that you should know before you promise a buyer anything: where a buyer claimed a repository grant, Till can delete the record of the GitHub account it invited, but it cannot remove that account from the repository. Only you can, in GitHub. The same limit applies when you withdraw access rather than erase.

Requests are handled manually today. Send them to [privacy contact address] and we will act within a period that lets you meet your own one-month deadline under Art 12(3).

10. Personal data breaches, DPIAs and consultation

Till will notify you without undue delay after becoming aware of a personal data breach affecting your buyers' personal data, with the information Art 33(3) requires as far as we have it: the nature of the breach, the categories and approximate number of data subjects and records, the likely consequences, and the measures taken. Where we do not have all of it at once, we will provide it in phases.

Till will provide reasonable assistance with your data protection impact assessments and with any prior consultation with a supervisory authority, in each case limited to the processing carried out by Till and to information we actually hold.

11. Return and deletion at the end

On termination, and at your choice, Till will delete or return your buyers' personal data and delete existing copies — unless Data Protection Law or another law requires us to keep it.

Three qualifications, stated plainly because they are real:

  • Buyers keep what they paid for. Deleting purchase records would strip buyers of access to files they already bought, which would put you in breach of your own contracts with them. Till's default is therefore to retain purchase records for six years — the tax and accounting period — and then pseudonymise them, rather than to delete on termination. Tell us if you want deletion instead, and take your own view on your buyers' rights before you do.
  • The access log goes. Unlike purchase records it is not proof of anything you need, so it is deleted on termination and, in the ordinary course, 400 days after each record is written.
  • Backups. Data may persist in routine encrypted backups after deletion from the live system, and is deleted as those backups age out. It remains subject to this agreement until it is.

12. Audits and information (Art 28(3)(h))

Till will make available to you the information necessary to demonstrate compliance with Art 28, and will allow for and contribute to audits, including inspections, conducted by you or an auditor you appoint.

In practice:

  • First, Till will answer reasonable written questions and provide the documentation it holds — this agreement, the sub-processor list, security documentation, and any certifications or reports our sub-processors publish.
  • If that does not answer your question, you may audit on 30 days' written notice, no more than once in any 12-month period unless required by a supervisory authority or following a personal data breach.
  • Audits happen during business hours, must not disrupt the service or compromise other sellers' or buyers' data, and the auditor must be bound by confidentiality and must not be a competitor of Till.
  • You bear your own audit costs.

13. Liability, changes and governing law

The liability provisions of the terms of service apply to this agreement. Nothing here limits either party's liability to a data subject or to a supervisory authority under Data Protection Law.

Till may update this agreement where Data Protection Law changes or where the processing changes, on at least 30 days' notice to sellers by email. This agreement is governed by the laws of England and Wales.

Annex 1 — Details of processing

Controller: the seller using Till. Processor: [registered entity name].

Subject matter, duration, nature and purpose: as set out in section 2.

Categories of data subject and personal data: as set out in section 3.

Frequency: continuous, for the duration of the service.

Retention: as set out in section 11 and in the privacy policy.

Annex 2 — Technical and organisational measures

Annex 2 — technical and organisational security measures
MeasureImplementation
Pseudonymisation and encryptionTLS in transit throughout. Encryption at rest by the database and object-storage providers. One-time sign-in codes stored hashed. Buyer email addresses replaced with a keyed, non-reversible pseudonym before any monitoring or analytics data leaves Till. Erasure is carried out as pseudonymisation of the buyer identifier, by hand today (see section 9).
Data minimisationLocation is limited to country. In the access log the field itself accepts a two-letter code or nothing, so nothing finer can be recorded there however our software changes; on a purchase the country is written by one code path and no IP address, city or region is stored against it. Access log records are deleted automatically after 400 days by a scheduled job. Rate-limiting and abuse counters are keyed on a non-reversible pseudonym rather than on an email address, and are swept once their window has passed.
ConfidentialityPer-store scoping of all seller-facing data. Buyer downloads authorised in the database query against the signed-in email address, order status, per-deliverable grant and version entitlement. Private object storage with no public URLs; short-lived signed download links. A buyer's per-deliverable link is a lookup key and not a credential: it is resolved only after the person opening it has signed in, and it is refused for any address but the buyer's, so a forwarded link grants nothing.
IntegrityPurchase fulfilment is idempotent and keyed on the source of the purchase together with that source's own reference — a Stripe payment intent, a comp, or a row in an imported file — so no two sources can collide into one record and no purchase can be recorded twice. An atomic claim means a delivery email is sent exactly once. File versions are append-only and never overwritten, and each buyer's per-deliverable grants are written once at purchase, so a buyer's entitlement to what they paid for cannot be altered after the fact.
Availability and resilienceManaged, redundant infrastructure. A reconciliation process walks payments back from Stripe and repairs any purchase that was paid for but not delivered.
Restoring availabilityPoint-in-time recovery on the managed database provider.
Testing and evaluationAutomated test suite, type checking and linting; error monitoring in production with structured logging.
Access controlPasswordless authentication with short-lived hashed one-time codes. No standing password credentials. Administrative access limited to personnel who need it.
Payment dataOut of scope by architecture — card details are collected by Stripe in the buyer's browser and never reach Till.

Annex 3 — Authorised sub-processors

The list in section 7 is Annex 3 to this agreement.