Privacy policy
What PDFMint stores, for how long, and who else touches it. This was written from the database schema and the code that deletes things, not from a template.
1. Controller
The controller for the processing described here is:
| Company | productivity-boost.com Betriebs UG (haftungsbeschränkt) & Co. KG |
|---|---|
| Address | Reichenbergerstr. 2, 94036 Passau, Germany |
| Represented by | Florian Standhartinger |
| info@productivity-boost.com | |
| Telephone | +49 178 1981631 |
See also the imprint.
2. What is stored, and for how long
Everything below is in one PostgreSQL database. There is no analytics product, no advertising network, no tracking pixel and no third-party script on this site other than the Google Fonts stylesheet used for typography.
| Data | Why | Kept for |
|---|---|---|
| Email address, password hash | To let you sign in and to identify your account. The password is stored only as a bcrypt hash; the password itself is never written down. | Until you ask for the account to be deleted. |
| API keys | Stored only as a SHA-256 hash plus the first 16 characters, so a key can be recognised and listed but never read back — not by support, not by the operator. | Until revoked; revoked keys keep a timestamp. |
| The content you send to be rendered (HTML, Markdown, a URL, or a template) | For a normal synchronous request it is held in memory only for the render and is never written to the database. For an asynchronous request ("async": true) the whole request body is stored, because the job has to survive a restart. |
Synchronous: not stored. Asynchronous: deleted 7 days after the job finishes. |
| Generated files (PDFs, images) | Only when you ask for a hosted link instead of the bytes. The file itself is stored so the link works. | 60 minutes by default, at most 7 days, whichever you set. A reaper deletes expired files continuously. |
| Saved templates | The HTML you chose to store under a name. | Until you delete the template. |
| Usage records | One row per request: what kind, page count, duration, whether it succeeded, and the error code if not. No document content and no request body. | Kept, so quota and the status page are accurate. |
| Login sessions | A random session id in a cookie so the dashboard knows who you are. | 30 days, or until you sign out. |
| Stripe customer and subscription ids | To connect your account to your subscription. | Until the account is deleted. |
The application does not log your IP address or user agent. The hosting provider keeps its own HTTP request logs, which do contain IP addresses; that is described under processors below.
3. Card details
Card numbers never reach this service. Payment is handled entirely by Stripe on Stripe's own pages. PDFMint stores only the Stripe identifiers, the plan, and whether the subscription is active.
4. Email
PDFMint does not send email at all. There is no newsletter, no marketing mail, and no transactional mail. One consequence is stated plainly on the signup page: there is no password reset and no confirmation email.
5. Processors
Three companies process data on behalf of this service:
| Processor | What they do | Where |
|---|---|---|
| Render Services, Inc. | Runs the application and keeps HTTP request logs (which include IP addresses). | Frankfurt, Germany |
| Neon, Inc. | Hosts the PostgreSQL database in which everything in section 2 is stored. | EU region |
| Stripe, Inc. | Takes payments and stores card details. Stripe is the controller for the card data itself. | Ireland / United States |
Google Fonts is loaded from Google's servers for typography on this website, which means your browser contacts Google when you view these pages. No fonts are fetched during PDF rendering unless your own document asks for them.
6. Rendering a URL you supply
If you ask PDFMint to render a URL, this service fetches that URL from its own server in Frankfurt. The operator of that URL will see a request from this service, not from you. Private, loopback and link-local addresses are refused.
7. Your rights
Under the GDPR you may request access to your data, correction, deletion, restriction of processing, portability, and you may object to processing. Write to info@productivity-boost.com. You may also complain to a supervisory authority; for this controller that is the Bayerisches Landesamt für Datenschutzaufsicht (BayLDA), Ansbach.
Being straight about deletion: there is currently no self-service account deletion in the dashboard. A deletion request has to be handled by hand by the operator. That is a gap, and it is named here rather than implied away.
8. Legal basis
- Art. 6(1)(b) — performing the contract: your account, your API keys, rendering your documents, quota accounting.
- Art. 6(1)(c) — legal obligation: records connected to payments.
- Art. 6(1)(f) — legitimate interest: rate limiting and the operational logs needed to keep the service standing and to stop abuse.
9. Changes
If this policy changes materially, the change will be visible in this page's git history — the repository is public at github.com/fstandhartinger/pdfmint.