View Issue Details

IDProjectCategoryView StatusLast Update
0011183Talerspecificationpublic2026-06-08 22:53
ReporterChristian Grothoff Assigned Tosebasjm  
PriorityhighSeverityfeatureReproducibilityN/A
Status confirmedResolutionopen 
Platformi7OSDebian GNU/LinuxOS Versionsqueeze
Product Versiongit (master) 
Target Version1.8 
Summary0011183: swap ToS and KYC Auth steps in UX
DescriptionThe more common UX is that the ToS acceptance comes first, and the KYC AUTH step also takes too long to be a first step.
It would be better if KYC AUTH came last in the UX.
But we cannot change this in the protocol, so the idea is to allow the merchant to *ask* for the ToS acceptance first, and then to have the merchant backend 'fake' the ToS acceptance submission after it learns KYC AUTH is done.

This will be a MAJOR hack and requires both API changes, specification changes, and work in exchange and merchant.
Tagsux

Activities

Christian Grothoff

2026-05-31 14:09

manager   ~0028742

03040266..0a48679b contains the necessary specification changes.

Christian Grothoff

2026-05-31 14:35

manager   ~0028744

exchange support added in protocol v36 / 72c3c3b8df0ea1cd9354aabe4fd13c9e102ca752

Christian Grothoff

2026-06-02 21:36

manager   ~0028756

c77d9adc..357a283a adds the logic to the merchant to signal the SPA to swap ToS acceptance and to allow the
SPA to tell the backend that the user did already accept the ToS.

Missing:
- SPA modifications: if ToS swapping is on, download /terms and make user accept them before going for KYC auth details.
- sending the 'accept' of the ToS to the exchange during taler-merchant-kyccheck when we learn that this
  is what is needed and see that the user did already accept the ToS. Probably requires some minor
  fix-up to the protocol from the exchange to signal to the merchant which ToS version must be accepted.

Christian Grothoff

2026-06-02 21:53

manager   ~0028757

tos_required is now returned in GET /kyc-check/ as per exchange spec. However, there is a FIXME left to actually
determine if the jrules are in the "ToS required" state.

Christian Grothoff

2026-06-08 22:53

manager   ~0028804

cefa2afe..eb86e454 in principle finishes the merchant backend logic for this. taler-merchant-kyccheck now notices IF the
user did accept a ToS early, and if it is the right version (ETag) 'fakes' the POST /kyc-upload/ request to the exchange for that version.

Next: would be good to have some wallet-core test of the logic, and most importantly this now needs SPA support. The SPA must support the protocol v31 changes in a proper onboarding "wizzard":

1) Detect that an exchange is requesting the KYC swap *and* that KYC Auth is required (and that the user didn't yet accept the ToS).
2) Instead of directing the user to do the KYC AUTH transfer, show him the exchange ToS (download via /terms of the exchange!!!), do the acceptance process we usually do in the exchange KYC SPA (require download, accept), and then POST to /private/accept-tos-early the ETag of the accepted terms of service.
3) Then immediately show the wire transfer instructions.

If this is done, after the wire transfer is completed, taler-merchant-kyccheck will do the ToS acceptance and the account should immediately become operational (unless even more KYC/KYB onboarding is required, of course).

@sebasjm: please ask me on MM if you have any questions about the design.

Issue History

Date Modified Username Field Change
2026-03-04 13:57 Christian Grothoff New Issue
2026-03-04 13:57 Christian Grothoff Status new => confirmed
2026-03-04 13:57 Christian Grothoff Tag Attached: ux
2026-05-27 15:14 Christian Grothoff Assigned To => Christian Grothoff
2026-05-27 15:14 Christian Grothoff Status confirmed => assigned
2026-05-27 15:14 Christian Grothoff Status assigned => confirmed
2026-05-28 00:11 Christian Grothoff Status confirmed => assigned
2026-05-28 00:11 Christian Grothoff Target Version post-1.0 => 1.8
2026-05-31 14:09 Christian Grothoff Note Added: 0028742
2026-05-31 14:35 Christian Grothoff Note Added: 0028744
2026-06-02 21:36 Christian Grothoff Note Added: 0028756
2026-06-02 21:53 Christian Grothoff Note Added: 0028757
2026-06-08 22:53 Christian Grothoff Note Added: 0028804
2026-06-08 22:53 Christian Grothoff Assigned To Christian Grothoff => sebasjm
2026-06-08 22:53 Christian Grothoff Priority normal => high
2026-06-08 22:53 Christian Grothoff Status assigned => confirmed