14.22. DD 023: Taler KYC

14.22.1. Summary

This document discusses the KYC processes supported by Taler.

14.22.2. Motivation

14.22.3. Requirements

Taler needs to run KYC checks in the following circumstances:

  • Customer withdraws money over a monthly threshold
    • exchange triggers KYC
    • key: IBAN
  • Wallet receives (via refunds) money over a monthly threshold
    • this is a client-side restriction
    • key: reserve public key (generated, long-term)
  • Wallet receives money via P2P payments
    • key: reserve (=KYC account) public key
  • Merchant receives money above a monthly threshold
    • key: IBAN

14.22.4. Proposed Solution

The new taler-kyc-ledger component keeps track of a mapping between an identifier (as a payto URI?) and a KYC status (yes-merchant, yes-customer, no, progress (with resume link)). Different identifiers might be mapped by the bank’s KYC provider to the same legal user entity.


  • IBAN
  • reserve / account

What info do we look at to determine if threshold is crossed / being crossed?

[ … ]

FIXME: Who keeps track of the threshold? * since the kyc-ledger might be run by the bank and

not the exchange, the thresholds could/should be kept by the exchange
  • kyc-ledger vs kyc-provider

14.22.5. Alternatives

None unless we want regulatory compliance?

14.22.6. Drawbacks

14.22.7. Discussion / Q&A

(This should be filled in with results from discussions on mailing lists / personal communication.)