← All legal documents

Balance — Data Retention and Deletion Policy

Effective date: 28 June 2026 Last updated: 28 June 2026

Reviewed annually: next scheduled review by 9 June 2027. Applies to: every personal-data category Balance processes.

This is the written data-retention and deletion policy required by the U.S. Children's Online Privacy Protection Act ("COPPA") under 16 CFR § 312.10. It also satisfies the storage-limitation and data-minimisation duties under GDPR Articles 5(1)(c) and 5(1)(e) and UK GDPR Articles 5(1)(c) and 5(1)(e) Article 14 of Chile's Law 21.719, the retention rules under Colombia's Law 1581 and its regulatory framework, and the equivalent rule in every other country.

This document is published at retention.html as a Layer-A companion to our Privacy Policy (Section 8 of which contains the user-facing summary) and our Children's Privacy Notice (Section 8 of which contains the COPPA-specific written schedule for kid data).

If the user-facing wording in the Privacy Policy or the Children's Privacy Notice ever appears inconsistent with this Retention Policy, this Retention Policy governs the operational retention period (the Privacy Policy and Children's Privacy Notice are the public-facing summaries, and we may need to clarify them; if there is a conflict, please write to and we will reconcile).


1. Principles

Balance retention is governed by four principles. Every retention period in this Policy must satisfy each:

  1. Purpose limitation (GDPR Art 5(1)(b), COPPA § 312.7). We retain personal data only for as long as necessary to perform the parental-control service the parent contracted for, to comply with our legal obligations, or to defend a legitimate claim. We do not "round up" retention periods to convenient numbers.
  2. Storage limitation (GDPR Art 5(1)(e), COPPA § 312.10). Retention periods stated below are maximums, not minimums. Where the parent initiates deletion sooner — or where the operational purpose ends sooner — the data is deleted sooner.
  3. Data minimisation (GDPR Art 5(1)(c)). We hold the smallest dataset that the purpose requires. We never retain a category we do not need.
  4. Default to deletion (UK Children's Code, OECD privacy principles). For each new feature, the design choice is deletion-by-default unless retention has a specific stated purpose.

Every retention rule in Section 3 below is mapped to one or more of these principles in the "Why this period" column.


2. Roles


3. Master retention table — by category

This is the source-of-truth retention table. The Privacy Policy (§ 8) and Children's Privacy Notice (§ 8) display the user-friendly summary derived from this table.

3.1 Account-side categories

Category Maximum retention Deletion trigger Lawful-basis duration limit Why this period
Parent account record (parent's email AES-256-GCM ciphertext + SHA-256 lookup hash; bcrypt password hash; settings; auth metadata; region; family link) Until the parent self-deletes; then within 1 hour of the in-app confirmation. Email/manual requests to are honoured under the statutory deadlines in § 5. Triggered by the in-app Delete account action with a 1-hour cool-off, or by an email request to under the statutory deadlines in § 5 Contract (GDPR Art 6(1)(b)) Necessary to provide the service; ends with the parent's withdrawal
Family record (parent + kid links; family-PIN hash; PIN-update timestamp) Same lifecycle as the parent account Cascade-delete on parent self-deletion Contract Family logically exists only while the parent account exists
Kid account record (name; age; optional birthday; optional avatar; settings; ledger; status; device identifier; device name; device history) Until the parent deletes the kid (or the entire account); then within 1 hour of the in-app confirmation. Email/manual requests are honoured under the statutory deadlines in § 5. Triggered by parent's "Delete kid" or "Delete account" flow (1-hour in-app cool-off; statutory deadlines for email requests) COPPA Verifiable Parental Consent + GDPR Art 6(1)(b) contract Necessary to provide the parental-control service for that kid; ends with the parent's instruction
Subscription / billing records (Google Play purchase tokens, subscription state) As required by Kazakhstan tax and accounting law (typically 5 years for invoices) Cold-storage archival; deleted at 5y anniversary Legal obligation (GDPR Art 6(1)(c)) Tax/accounting retention mandates exceed the parent's deletion right for this narrow category — disclosed in Privacy Policy § 8
Authentication metadata (last login, failed-login counter, password-change/reset timestamps) Until parent self-deletion (cascade) Cascade Legitimate interest (security) Required to detect and slow credential-stuffing

3.2 Kid-device-derived categories

Category Maximum retention Deletion trigger Lawful-basis duration limit Why this period
Per-app daily usage totals 90 days Automatically deleted after 90 days Contract 90 days covers the longest realistic parent-reporting window without retaining more than needed
Installed-apps catalogue (package names, icons, install dates) Refreshed continuously by the kid device; deleted when the kid is deleted Cascade Contract The list is volatile; we don't retain stale entries
Per-kid settings (limits, schedules, blocked apps) Cascade with kid deletion Cascade Contract Configuration only matters while the kid exists
Task definitions, instances, ledger, settlements, streaks Cascade with kid (or family) deletion Cascade Contract Operational history needed only while the family exists
Notifications (parent + kid alerts) 30 days Automatically deleted after 30 days Contract + legitimate interest 30 days exceeds typical user need; we don't archive
Health-check pings (latest pairing/health status) Rolling latest value only — no history retained Overwritten on each ping Contract Status is point-in-time; history is unnecessary
FCM push tokens Until the kid (or parent) is deleted Cascade Contract Required only to deliver pushes to a live device

3.3 End-to-end-encrypted proof media and keys

Category Maximum retention Deletion trigger Lawful-basis duration limit Why this period
Encrypted proof media stored in our Google Cloud storage location, with associated metadata and thumbnail ciphertext 30 days after the linked task reaches terminal state (APPROVED_FINAL / DECLINED_FINAL / REVOKED / MISSED / CANCELLED) (a) automatic nightly purge once the window elapses; (b) a storage lifecycle rule in our Google Cloud storage location backstops deletion at 180 days for any orphaned object; (c) parent-initiated immediate delete bypasses the 30-day window Contract 30 days gives the parent a deliberate window to review and re-decide; beyond that the proof is operationally stale
Encrypted device keys Same lifecycle as the owner (parent or kid) they protect Cascade-deleted when the owner (parent or kid) they protect is deleted Contract Keys are useless after the owner is deleted; retention would be a liability
Parent media-key material Cascade with the parent-kid pair they belong to Cascade Contract The media-key material is bound to the parent-kid pair
Optional Google Drive AppData encrypted media-key backup (held in the parent's own Drive, not in our infrastructure) Lifecycle controlled by the parent in their Google Drive N/A — outside our retention boundary Parent's control We never see the AppData blob; the parent decides when to remove it

3.4 Ephemeral verification and pairing tokens

Category Maximum retention Deletion trigger Why this period
One-time codes (signup / password-reset codes stored as peppered SHA-256 hashes) 1 hour Automatically deleted after 1 hour Covers the 10-minute live window + the 50-minute post-expiry rate-limit window
Family invite codes 24 hours Automatically deleted after 24 hours One-shot pairing window
Reconnect codes 15 minutes Automatically deleted after 15 minutes Same-day device-change recovery

3.5 Operational data

Category Maximum retention Deletion trigger Why this period
Application server logs (HTTP method, route, response status, error codes, request timings, transient IP at authentication-sensitive endpoints) Retained by our hosting provider Emergent Labs Inc. according to Emergent's published content-deletion and log-retention policy. We minimise what we send to those logs — see the controller-side logging-discipline rule below. Rotated by hosting layer Operational + security (legitimate interest) — defers to our hosting provider's published policy; compensated for by controller-side logging discipline (no media keys, encryption keys, plaintext credentials, one-time codes, or raw pairing codes in logs).
Operational database backups Two layers: (a) our hosting provider's own operational database snapshots, retained per their published backup-retention policy; (b) our own periodic (daily) backup copies of the operational database stored with Google Cloud (United States) — the same provider and region we use for proof media — retained on a 30-day rolling window and then automatically deleted. When a backup rotates out, deleted personal data becomes unrecoverable. (a) rotated by the hosting layer; (b) 30-day rolling window, auto-pruned daily Disaster-recovery legitimate interest; our Google Cloud backups are bounded at a 30-day rolling window
Public legal-documents website access logs (Cloudflare Pages) Governed by Cloudflare's published retention for free-tier Pages Outside our infrastructure Cloudflare's standard; site has no cookies, no analytics

4. Deletion mechanics

4.1 Parent-initiated deletion of a kid (per-kid delete)

When the parent uses the in-app "Delete kid" action (under the privacy settings) and confirms, or writes to requesting deletion of a specific kid, the backend:

  1. Stops further collection from the kid's device immediately (the foreground service on the kid device receives a kill signal at next health-check; the device's pairing is invalidated so future uploads are rejected at the API gateway).
  2. Marks the kid record for deletion and schedules the cascade to run after a 1-hour in-app cool-off. Requests submitted by email to are honoured under the statutory deadlines in § 5 (GDPR 30 days; COPPA 10 business days; CCPA 45 days), not the 1-hour cool-off.
  3. Runs the deletion cascade once the cool-off window elapses: - delete the kid's usage records, installed-apps catalogue, per-kid settings, notifications, task definitions and instances, earned-time ledger and settlements, streaks, recovery envelopes, and family-generation flags; - delete every encrypted device key belonging to that kid; - delete the parent media-key material tied to that kid; - delete every proof-media object stored for that kid in our Google Cloud storage location — using direct object deletion, not lifecycle, so the deletion is immediate; - delete every media metadata record referencing that kid; - delete the kid record itself.
  4. Send a confirmation email to the parent on the account.

4.2 Parent-initiated deletion of the parent account (account delete)

When the parent uses the in-app "Delete account" action (under the privacy settings) and confirms, or writes to :

The in-app "Delete account" action applies a 1-hour cool-off (same mechanism as § 4.1): the account is marked for deletion and the cascade runs once the cool-off elapses. Email/manual requests sent to are honoured under the statutory deadlines in § 5, not the 1-hour cool-off.

  1. Runs the per-kid cascade in § 4.1 for every kid attached to the family.
  2. Deletes the family record.
  3. Deletes every encrypted device key belonging to the parent.
  4. Deletes the parent account record.
  5. Sends a confirmation email to the address that was on file at the moment of the request.
  6. Subscription state: any active Google Play subscription is not auto-cancelled by us — we instruct the parent to cancel in Google Play → Subscriptions (we cannot cancel a Google Play subscription on the parent's behalf without an OAuth-scoped action the parent does not grant us). The parent is reminded of this at the deletion-confirmation step.

4.3 Account dormancy (discretionary)

We may close and delete accounts that have been inactive for a long period. If we decide to do so for a particular account, we will email the parent a notice before any deletion and give a reasonable opportunity to log in and keep the account active. There is no fixed dormancy period — this is a discretionary clause to give us a path to clean up obviously-abandoned data while protecting parents who simply use Balance infrequently. (This mirrors Privacy Policy § 8 word-for-word and is part of the same softened position adopted on 9 June 2026.)

The parent may withdraw consent to ongoing collection from a kid's device at any time. The most direct route is to delete the kid (§ 4.1). Removing the kid stops further collection immediately and triggers the deletion cascade once the 1-hour in-app cool-off elapses (or under the statutory deadlines in § 5 for email/manual requests). The lawfulness of past processing carried out before withdrawal is not affected.

4.5 Deletion of specific categories without deleting the kid

A parent who wants to keep the kid but delete one category (for example, "delete every proof video older than 7 days") can: - in-app: open the kid's media tab and tap "Delete" on each item, or use the bulk-select action in the in-app media tab; - by email: write to with the request. We will reply within the deadline in § 5 below.

4.6 Backups

Operational backups continue to hold a deletion-protected snapshot for the rolling backup window described in § 3.5. Our own periodic backups with Google Cloud are retained on a 30-day rolling window; once a backup rotates out, the deleted data is no longer recoverable. The hosting provider's own operational snapshots rotate under their published backup-retention policy. The Privacy Policy discloses this exception (§ 8). It is the only lawful exception to the "deletion is immediate" promise.


5. Subject-rights timelines

We honour every statutory deadline applicable to a parent who exercises a right (access, rectification, erasure, restriction, portability, objection):

The Privacy Officer () tracks every request in the internal DSAR log under . Each request is closed with a written disposition.


We may retain a specific record longer than § 3 indicates only in the following circumstances, and only for as long as the circumstance requires:

  1. Tax and accounting retention under Kazakhstan law (subscription records — see § 3.1).
  2. Legal-hold orders from a competent authority (a court order, a regulator's preservation notice, a lawful production demand) — duration set by the order.
  3. Child-safety preservation under 18 U.S.C. § 2258A(h) (90 days, extendable by 90 days on agency request) for matters classified under § 7 of the Child Safety Standards.
  4. Active legal dispute in which we are a party — duration: until the matter is closed plus the limitation period for appeals under the applicable procedural law.

Any retention beyond § 3 must be approved in writing by the Privacy Officer and logged in the retention-exception register held under . The register is reviewed at every annual review (§ 12).


7. Cascade verification — backend testing

For each release of the backend, we maintain a regression test that exercises the deletion cascade end-to-end. Our automated deletion tests verify:

We run the cascade test on every CI run on the deletion-relevant code paths. A failed cascade test blocks the release.


8. Sub-processor retention alignment

Each sub-processor (Section 6 of the Privacy Policy) is bound by a written data-processing agreement that obliges them to:

Specifically:

Sub-processor Their retention bearing on Balance data Action item
Emergent Labs Inc. (backend hosting and production database) Application logs retained per Emergent's published content-deletion and log-retention policy; the hosting provider's own database snapshots retained per their published backup-retention policy CLOSED — Policy defers to the provider's published timelines; no tighter per-customer commitment is available, mitigated by controller-side compensating controls (strict logging discipline)
Google Cloud Storage (encrypted media) Per-object lifecycle controlled by our storage lifecycle rule (≤180-day orphan backstop) + immediate per-object delete on cascade Lifecycle rule in place
Google Cloud (operational database backups) Our daily backup copies of the operational database, stored in the United States, retained on a 30-day rolling window and then automatically deleted Transfer under Google's Data Privacy Framework certification with EU SCCs (and UK IDTA) as fallback
Firebase Cloud Messaging Per-message ephemeral; no archival of message content No action
Resend Email-delivery records per Resend's published DPA No action
Google LLC (Google Sign-In, Google Drive AppData, Google Play Billing) Per Google's published retention; AppData blob is in the parent's own Drive No action
Prighter Group (Prighter EU Rep GmbH for EU; Prighter Ltd (UK) for UK Art 27 representative) DSAR correspondence retained for the period required by EU/UK law Per Prighter's DPA

9. Encryption-key rotation

Encryption keys themselves are also subject to a lifecycle. Our key-rotation runbook documents:

The runbook lives under control.


10. Continuous improvement

We periodically review and improve our automated retention and deletion jobs to keep them aligned with this Policy. Where an implemented retention window or deletion job is being brought into alignment, the interim operational behaviour is governed by our existing automatic-deletion schedules and cascade logic, and any deviation is logged in the retention-exception register (§ 6) and reconciled at the annual review (§ 12).


11. How a parent can verify retention

A parent can verify our retention end-to-end at any time:

  1. Export the family's data using the in-app data-export action (under the privacy settings). The export delivers a downloadable JSON archive of every category we hold, with the recorded / created / last-seen timestamp on each row. Anything older than the retention window for its category indicates a retention failure — please report it to .
  2. Delete the kid or the account, then re-export 30 days later. The export should be empty (or, for the parent account, contain only the post-deletion confirmation record).
  3. Ask us directly. Email and ask "show me everything you hold about my family". We will deliver, within the deadlines in § 5, the same export with a written confirmation that nothing else exists.

We invite parents who find a discrepancy to report it to us without retaliation risk — we treat retention errors as bugs and we credit the reporter.


12. Annual review

The Privacy Officer reviews this Policy at least once a year, by 9 June each year. The review covers:

A material change to any retention period requires:


13. Country annexes

Country-specific retention nuances (for example, a longer mandatory tax-document retention in a specific country, or a shorter mandatory deletion-cascade deadline) are published in the country-annex set that travels with this Policy at retention.html. Inherited territories follow the parent-country annex, consistent with Section 18 of the Privacy Policy.


14. Quick-reference contacts


End of Data Retention and Deletion Policy.