DOCSUPRA › Trust center › Security
Security · reviewed 18 September 2026
Security and architecture, written to be checked.
Every statement here is either verifiable from your own browser or marked as something we do not yet have. Reviewers may copy the questionnaire table into their own template; we will also complete yours on request.
Architecture
DocVerifyPro is a single static web application served from Cloudflare’s edge, plus a small licence API. The imaging engine — perspective, lighting, sharpness, format and size targeting — runs in the browser’s JavaScript and canvas. There is no server component that receives, stores or transforms a document. The licence API answers one question per download (“is this licence allowed to export?”) and receives no file.
| Step | Where it runs | What leaves the machine |
|---|---|---|
| File opened | Browser, from local disk, camera or clipboard | Nothing |
| Geometry, lighting, legibility correction | Browser (HTML canvas) | Nothing |
| Compliance check against the destination’s published rule | Browser | Nothing |
| Encoding to the exact size, format and resolution | Browser | Nothing |
| Download authorisation | Licence API (api.docsupra.com) | Licence token, seat identifier, department label chosen by your administrator. No file, no file name. |
| File saved | User’s own download folder or share sheet | Nothing |
| Payment | Stripe, directly | Card data to Stripe only |
Network allow-list (Content Security Policy)
The page declares, in a header your browser enforces, the only hosts it may contact. IT teams can allow exactly these and nothing else:
docsupra.com the application and its assets
api.docsupra.com licence checks (JSON only; no file upload endpoint exists)
js.stripe.com, api.stripe.com, checkout.stripe.com, hooks.stripe.com, merchant-ui-api.stripe.com
payment form and checkout, only when you open them
static.cloudflareinsights.com, cloudflareinsights.com
cookie-free page-view counter (path, country, referrer)
Headers served on every response: Content-Security-Policy, Strict-Transport-Security (preload), X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin, Cross-Origin-Opener-Policy: same-origin, Permissions-Policy (camera only for this origin; geolocation, microphone, USB and others denied), frame-ancestors 'none'.
Identity, seats and access
Team and Studio members sign in with their work email through a one-time link (or single sign-on where configured). Seats are counted per person; an administrator can remove a person at any time from the administration console and their access stops immediately. Individual plans need no account: the licence lives in the browser that paid.
Vulnerability management and responsible disclosure
- Report to security@docsupra.com; machine-readable policy at /.well-known/security.txt.
- Acknowledgement within 2 business days; triage within 5; fix or mitigation for high-severity issues targeted within 30 days, with the reporter informed at each step.
- Safe harbour: good-faith testing that does not access other customers’ data, degrade the service or exfiltrate data will not be pursued.
- The single vendored library (PDF.js) is pinned; updates are reviewed and redeployed under a new file name, so cached copies cannot be stale.
Incident response
- Detect. Server errors alert the operator by email within minutes (route and stack trace; no customer data). Edge analytics flag traffic anomalies.
- Contain. Rotate the licence-signing secret and API tokens; revoke affected licences; if needed, take the licence API offline — the application itself keeps working for existing sessions.
- Assess. Determine which data classes could be affected. Because no document is ever held, the assessable classes are billing records (held by Stripe) and licence data.
- Notify. Affected customers within 72 hours of confirmation, by email to the billing contact, stating what happened, what data, what we did and what they should do. Regulators as required by law.
- Review. A written post-incident review, with the fix, published on the updates page.
Business continuity and disaster recovery
- The application is a static file on a global edge; it works offline once loaded. Recovery is a redeploy from source: minutes.
- Licence data is replicated by the platform; billing truth lives in Stripe and can be re-synced to rebuild licences.
- A licence-API outage stops new download authorisations only; audits, previews and processing continue.
- Single-operator risk is real and stated: the source, deployment credentials and procedures are documented so the service can be handed to a successor. Enterprise agreements can include source escrow on request.
Vendor security questionnaire (SIG Lite / CAIQ style)
Answers are current as of 18 September 2026. “No” means we do not have it and say so; “Partial” means a documented limitation.
| Question | Answer | Detail |
|---|---|---|
| Organisation | ||
| Legal entity and location | Yes | DocVerifyPro, a sole proprietorship registered in Puerto Rico, United States. Founder and sole developer: Soelys Muñoz. Contact: security@docsupra.com. |
| Named security contact | Yes | security@docsupra.com, published in /.well-known/security.txt. |
| Background checks on personnel with access to customer data | N/A | There is no customer document data to access. One person operates the service; billing data is accessed only through Stripe's dashboard with two-factor authentication. |
| Security awareness training | Partial | Single-operator organisation; the operator follows written procedures on this page. No formal programme. |
| Data handling | ||
| What customer data do you receive? | Yes | Billing record (email, plan, amount, date) from Stripe; licence token and seat identifiers; a daily-salted hash of the IP for abuse limits (48 h). Never the document. |
| Where is customer data stored and processed? | Yes | Billing: Stripe (US). Licence data: Cloudflare KV, replicated globally, encrypted at rest. Document content: only in the user's browser memory; never stored by us. |
| Data retention and deletion | Yes | Licence data: for the life of the licence plus 400 days for seat records, then expired automatically. Billing records: as required by tax law (Stripe). Deletion requests: privacy@docsupra.com, fulfilled within 30 days. |
| Data residency options | N/A | Document content never leaves the machine it is opened on, in any country. No residency configuration is needed or offered for it. |
| Is customer data used for training models or analytics? | No | No document is ever received, so none can be used. Page-view analytics are cookie-free and count pages, not people. |
| Backups | Yes | Licence data lives in Cloudflare KV with platform replication. There is nothing else to back up; the application is a static file redeployed from source. |
| Access control | ||
| How is access to production controlled? | Yes | Cloudflare and Stripe accounts with two-factor authentication; one operator; deployments from a single workstation with signed API tokens. |
| Do you support SSO? | Yes | OpenID Connect (Entra ID, Okta, Google Workspace, any OIDC issuer), configured by the organisation administrator, restricted to your email domain. |
| Role-based access for customer administrators | Yes | Administrator and member roles; administrators invite, remove and see usage. |
| Can a departing employee be removed immediately? | Yes | Yes, from the administration console; their sign-in stops working at once. |
| Encryption | ||
| Data in transit | Yes | TLS 1.2+ (Cloudflare edge), HSTS max-age one year with preload, HTTP redirected to HTTPS. |
| Data at rest | Yes | Cloudflare KV encrypts at rest; Stripe holds card data (PCI DSS Level 1). No document is at rest anywhere under our control. |
| Key management | Yes | Licence tokens are HMAC-signed with a secret held as a Cloudflare Worker secret; rotated on incident. Stripe webhooks verified by signature. |
| Application security | ||
| Secure development practices | Yes | Every deployment passes an automated gate: JavaScript syntax check, 21 content and behaviour rules, a sharpness/quality gate, pricing consistency between site and server, and a policy check that blocks prohibited claims. Deployments are versioned (service worker cache version). |
| Content Security Policy | Yes | default-src 'self'; scripts only from this origin and js.stripe.com; connect-src limited to api.docsupra.com, Stripe and Cloudflare analytics; frame-ancestors 'none'; object-src 'none'; upgrade-insecure-requests. |
| Third-party libraries | Yes | One vendored library (PDF.js, pinned version, served from this origin) for reading PDFs. No package manager at runtime, no CDN scripts except Stripe's payment form. |
| Input validation | Yes | Files are decoded by the browser's own image decoders; the server accepts no files. API inputs are validated and rate-limited per IP hash. |
| Penetration testing | No | Not yet commissioned. Rules of engagement available; the attack surface is a static site plus a licence API with no file handling. |
| Vulnerability disclosure programme | Yes | security.txt published; acknowledgement within 2 business days; fix or mitigation target 30 days for high severity. |
| Infrastructure | ||
| Hosting provider | Yes | Cloudflare Workers (static assets and licence API), Cloudflare KV. Payment: Stripe. Email: Resend (operator alerts, plus sign-in links and invitations for Team and Studio members). Support inbox: Google (Gmail). Support-reply drafts and the on-site assistant: Cloudflare Workers AI (message text only, never a document). Full list at /subprocessors. |
| Network security / DDoS | Yes | Cloudflare edge with DDoS protection and rate limiting; the licence API limits requests per salted IP hash. |
| Logging and monitoring | Yes | Edge request logs (Cloudflare) without document data; server errors alert the operator by email with route and stack trace only. |
| Separation of environments | Yes | Production only; changes are gated and versioned before deployment. No customer data exists in any non-production system because no customer document exists in any system. |
| Incident response | ||
| Written incident response plan | Yes | See Incident response below: detect, contain, assess, notify customers within 72 hours, post-incident review published. |
| Breach notification commitment | Yes | 72 hours from confirmation to affected customers, by email to the billing contact, with scope and remediation. |
| Business continuity | ||
| Availability design | Yes | The application runs entirely in the browser and works offline once loaded. A licence-service outage delays downloads for new sessions only; existing sessions keep working. Cloudflare's global edge serves the static file. |
| Recovery objectives | Yes | RTO for the static site: minutes (redeploy from source). RPO for licence data: platform replication; billing state is authoritative in Stripe and can be re-synced. |
| Compliance | ||
| SOC 2 / ISO 27001 | No | No audit performed. Stated openly. The scope would be small and we will publish the report and auditor when one exists. |
| GDPR | Yes | Designed for GDPR: no document content is processed by us; controller obligations cover billing and licence data. DPA with SCCs available at /dpa. |
| CCPA / CPRA | Yes | We do not sell or share personal information and collect no sensitive personal information as defined by the CPRA. |
| HIPAA | Partial | We are not a business associate because no PHI is ever transmitted to us. Organisations handling PHI can use the software without a BAA for that reason; we will sign a BAA-equivalent statement on request. |
| PCI DSS | Yes | Out of scope by design: card data goes directly to Stripe (Level 1). |
| Accessibility (WCAG / Section 508) | Partial | Audited against WCAG 2.1 AA; statement and VPAT-style summary at /accessibility. |
| Privacy | ||
| Sub-processor list and change notice | Yes | Published at /subprocessors; changes announced 30 days ahead by email to Team and Studio billing contacts. |
| Data subject requests | Yes | privacy@docsupra.com; fulfilled within 30 days; identity verified against the billing email. |
| Audit | ||
| Customer audit log | Yes | Per batch: file name, SHA-256, dimensions, verdict, person, time. Never the image. Local export and optional organisation log. |
| Usage reporting | Yes | Monthly per member and department from the administration console. |
| Right to audit | Yes | Reasonable on-site or remote review of the controls on this page once a year for Corporate Studio customers, on 30 days' notice. |
Need it in your template? Send the questionnaire to security@docsupra.com. Team and Studio customers get it back within five business days.