What do users complain about in Indonesian e-wallet apps?

Complaint trends in 201,860 Google Play reviews of GoPay, OVO, DANA and ShopeePay, Jul 1 – Oct 3, 2026.

Live demo coming soon; run it locally with uv run python app/app.py.

Findings

Data: 201,860 Google Play reviews (Jul 1 – Oct 3, 2026). Complaints = PRIMARY (IndoBERT + "star 1–2 OR model"; gold complaint F1 0.922 [0.89, 0.95]). Complete Monday–Sunday weeks Jul 6 – Sep 21 (12 weeks); the Sep 28 week is partial (5.7 days). Dates in UTC (WIB = UTC+7). 95% CIs: Wilson for shares, Newcombe for differences. Numbers: reports/phase7_trends.json.

  1. OVO is the most complained-about app by far: over complete weeks, 78.4% [77.3, 79.4] of OVO reviews are complaints, vs 37.9% [37.6, 38.2] for DANA, 24.9% [24.5, 25.3] for GoPay and 12.5% [12.1, 12.9] for ShopeePay (all reviews, duplicates included; phase7_weekly_complaint_share.png).

  2. The spikes are single-day events, not lasting shifts: DANA's late-September surge is two separate days, Sep 25 (12,023 reviews, 72% of that week, 83.5% [82.9, 84.2] complaints) and Oct 1 (8,707 reviews, 85.9% [85.1, 86.6]), with normal volume (~790–950 reviews/day) on the other days (phase7_spike_daily.png).

  3. DANA's Jul 20 spike was about reward points: "Reward points cannot be redeemed" grew from 1.3% to 14.1% of DANA's complaints that week (+12.8 pp [11.8, 13.8], 724 unique complaint texts), followed by "Cannot pay or transfer" (+10.2 pp [9.2, 11.2]) (phase7_spike_topics.png).

  4. DANA's Sep 25 and Oct 1 spikes were about access and payments: "Network error or lag despite good signal" gained the most in the week of Sep 21 (+7.7 pp [7.1, 8.4], 1,005 texts) and "Cannot pay or transfer" in the partial week of Sep 28 (+7.7 pp [7.0, 8.5], 854 texts) (phase7_spike_topics.png).

  5. GoPay's Jul 28 spike was an outage day: 4,357 reviews in one day with 81.2% [80.0, 82.4] complaints; the broad outage topic grew most (+28.5 pp [26.8, 30.3]), and among specific topics "Cannot pay or transfer" (+5.2 pp [4.3, 6.2]) (phase7_spike_daily.png, phase7_spike_topics.png).

  6. ShopeePay's complaint share doubled without a volume spike for two consecutive weeks (one partial): 23.1% [21.6, 24.7] in the week of Sep 21 (2,703 reviews, normal volume) and 22.1% [20.5, 23.7] in the partial week of Sep 28, vs a median of 11.2% for Jul 6 – Sep 7; two weeks are too few to call it a lasting change (phase7_weekly_complaint_share.png).

  7. Hidden complaints are common for OVO and rose during DANA's spikes: the text model flags 16.9% [15.0, 19.0] of OVO's 4–5★ reviews as complaints vs 1.2% [1.1, 1.3] for ShopeePay, and DANA's rate rose from 4.7% [4.1, 5.3] in the week of Sep 14 to 16.9% [16.0, 17.9] in the week of Sep 21; these are lower bounds, since the model finds about half of 4–5★ complaints on gold (49% [31, 66]) (phase7_hidden_complaints.png).

  8. The main specific complaint differs by app: money lost, missing or taken without consent is the largest specific topic everywhere and is most frequent for OVO (32.8% [31.4, 34.3] of its unique non-short complaint texts), though this broad topic fit only 3 of 8 rows in the fresh fit check (1 partly, 4 no), while DANA Cicil defines DANA (10.2% [9.9, 10.6]) and loans/paylater stand out for ShopeePay (9.9% [8.9, 10.9]) and GoPay (7.9% [7.4, 8.4]) (phase7_topic_trends.png).

Secondary (versions): DANA v2.145 shows 68.8% [68.0, 69.7] complaints, but 72% of its reviews were posted on the three spike days; excluding those days it is 30.3% [28.8, 31.9] vs 20.8% [19.9, 21.6] for v2.139, so the version gap is mostly spike timing, not a version effect (phase7_versions.png).

External corroboration

News reports matched to the spike days (each source checked by hand). A match only shows that the spike coincides with a reported event; it does not show that the event caused the reviews.

Figures

OVO is the most complained-about app: 78.4% [77.3, 79.4] of OVO reviews are complaints, vs 12.5% [12.1, 12.9] for ShopeePay.
phase7_weekly_complaint_share.png — OVO is the most complained-about app: 78.4% [77.3, 79.4] of OVO reviews are complaints, vs 12.5% [12.1, 12.9] for ShopeePay.
Spikes are single days: DANA on Jul 20, Sep 25 and Oct 1, GoPay on Jul 28 (each about 80–86% complaints).
phase7_spike_daily.png — Spikes are single days: DANA on Jul 20, Sep 25 and Oct 1, GoPay on Jul 28 (each about 80–86% complaints).
DANA's Jul 20 spike was about reward points (+12.8 pp [11.8, 13.8]); Sep 25 and Oct 1 about network errors and payments.
phase7_spike_topics.png — DANA's Jul 20 spike was about reward points (+12.8 pp [11.8, 13.8]); Sep 25 and Oct 1 about network errors and payments.
Hidden complaints: the text model flags 16.9% [15.0, 19.0] of OVO's 4–5★ reviews as complaints (a lower bound).
phase7_hidden_complaints.png — Hidden complaints: the text model flags 16.9% [15.0, 19.0] of OVO's 4–5★ reviews as complaints (a lower bound).
Secondary: complaint share by installed app version. DANA v2.145's high share is mostly spike timing (30% outside spike days).
phase7_versions.png — Secondary: complaint share by installed app version. DANA v2.145's high share is mostly spike timing (30% outside spike days).

Limitations

Known failure modes of the model

Observed when testing the demo (scores are softmax outputs, not calibrated probabilities):

Input Star Text model scores (neg / neu / pos) Demo output
aplikasinya bagus banget, makasih 1 0.003 / 0.005 / 0.992 Complaint, from the star rule only (the text reads positive; possibly a mis-tap). No topic.
bintang 5 deh, tapi kenapa transfer saya gagal terus 5 0.006 / 0.009 / 0.985 Not a complaint: a real complaint is missed.
worst app ever – 0.004 / 0.003 / 0.993 Not a complaint: English is misread (English warning shown).

The second case is a complaint written with 4–5 stars, the group where the model is weakest: on the gold set it caught only 49% [31, 66] of complaints written with 4–5★ (reweighted).

A friendly opener before "tapi" (but) hides the complaint. A small check (report only; the model was not changed) scored five short complaints written for the test, with and without an opener (CPU, same preprocessing):

Variant Predicted negative Mean negative score
complaint only (e.g. kenapa transfer saya gagal terus) 5 of 5 0.637
bintang 5 deh, tapi + complaint 0 of 5 0.007
oke deh, tapi + complaint (control: same words, no rating) 0 of 5 0.062
bintang 1 deh, + complaint 5 of 5 0.952

So the flip comes mainly from the positive opener followed by "tapi", not from the rating alone; rating talk in the text pushes the scores further in its direction ("bintang 5" toward positive, "bintang 1" toward negative). A likely cause is the weak training labels: reviews that praise first and complain after "tapi" often carry 4–5 stars, so they were labeled positive. Five constructed examples are not a measurement of how often this happens in real reviews.

English is out of scope. About 0.5% of the training reviews are English; English text can be misread completely (see worst app ever). The demo shows a warning when it detects English (lingua restricted to Indonesian, Malay and English).