🛡 PDPA § 40 · GDPR Art. 28
Sub-processors
The complete list of third parties that touch user data.
Last updated: · Operator: บริษัท เบสท์ อินเวสติเกชั่น จำกัด · Tax ID 0-4055-38000-09-1
DPA status is the literal contract status — not marketing copy. "signed" means we have a counter-signed Data Processing Agreement on file. "pending" means we use the service but haven't signed the standard DPA yet (working through it). "N/A — public infra" means the service is opt-in / not yet enabled.
Per Rule 6 — "aligned" is not "certified", "pending" is not "signed". Whatever this page says is what's actually true today.
Payments
Process user payments + issue tax invoices. Card numbers never reach our servers.
Stripe Thailand ↗
✓ DPA signedPCI DSS Level 1 — our scope is SAQ-A merchant (cards never touch our DB)
OpenNode ↗
⏳ DPA pendingTransactional email
Send receipts, password resets, cancellation confirmations.
Resend ↗
⏳ DPA pendingMarketing emails are NOT sent through this — there are none today.
Compute + storage
Where the app runs + where the database lives.
Google Cloud Run ↗
✓ DPA signedGoogle Cloud SQL (PostgreSQL) ↗
✓ DPA signedEncryption at rest (Google-managed keys). CMEK option for Enterprise.
Contabo VPS ↗
⏳ DPA pendingEngine credentials encrypted at rest (AES-256-GCM, lib/crypto.ts).
Backblaze B2 ↗
⏳ DPA pendingApplication-side encrypted before upload — see docs/dr-restore.md.
Identity providers (OAuth)
Only the providers you actively use are queried. Each is enabled per-deployment via env vars.
Google ↗
✓ DPA signedLINE Login ↗
⏳ DPA pendingGitHub ↗
⏳ DPA pendingApple / Facebook / Microsoft (Azure AD) ↗
⏳ DPA pendingDisabled on the public deployment unless explicitly enabled.
Operational telemetry
Uptime + errors. PII is stripped at the source — these never see user data.
BetterStack (Better Uptime) ↗
⏳ DPA pendingNot enabled in production yet — listed for transparency when it lands.
Cookie-free by design — does not require a consent banner.
Network + edge
DNS, TLS, DDoS protection. Sees request headers + IPs.
Cloudflare ↗
✓ DPA signedYour rights regarding sub-processors
Under PDPA § 30 you can request a complete list of who has accessed your data. The narrowest answer is your own audit log; the broadest answer is this page.
You can request data deletion (PDPA § 32) via Settings → Account — we honor the 7-day grace window then anonymize all rows (we don't hard-delete because foreign-key references in invoices must survive for 7-year tax retention).
If you object to a specific sub-processor (e.g. Stripe in the US), the only honest answer today is "you'd need to stop using NirvaDeploy" — we don't have alternate processors per region in Stage 0-1. Enterprise customers (Phase 5 BYOC) get the option to run on their own GCP / Azure / on-prem.
Change log
Every addition or removal of a sub-processor lands here. By signing up you agree to be on the list of users notified by email at least 30 days before a material change (e.g. a new processor added, region change for an existing one).
- 2026-05-23 — initial publication of this page. Inventory matches the state of
process.env.*as of this date.
Questions
Privacy + sub-processor questions: [email protected]
Security disclosure (vulnerabilities): [email protected] — see /security for disclosure timeline.