aboutsummaryrefslogtreecommitdiff
path: root/doc/flows
diff options
context:
space:
mode:
authorChristian Grothoff <grothoff@gnunet.org>2023-06-12 18:08:08 +0200
committerChristian Grothoff <grothoff@gnunet.org>2023-06-12 18:08:08 +0200
commit8be960125fed9860d8c254d1296ef100b548231c (patch)
tree8d3b9f38eae52512e2c7c6691b68400eb92e4b87 /doc/flows
parentd8f8c550bd7ad85f9da9bc5edba619e533eabcc8 (diff)
-reg text work
Diffstat (limited to 'doc/flows')
-rw-r--r--doc/flows/int-deposit.tex5
-rw-r--r--doc/flows/kyc-balance.tex5
-rw-r--r--doc/flows/kyc-deposit.tex8
-rw-r--r--doc/flows/kyc-pull.tex8
-rw-r--r--doc/flows/kyc-push.tex8
-rw-r--r--doc/flows/kyc-withdraw.tex15
-rw-r--r--doc/flows/main.tex47
-rw-r--r--doc/flows/proc-domestic.tex2
8 files changed, 72 insertions, 26 deletions
diff --git a/doc/flows/int-deposit.tex b/doc/flows/int-deposit.tex
index 4b1f657ba..7303f5298 100644
--- a/doc/flows/int-deposit.tex
+++ b/doc/flows/int-deposit.tex
@@ -1,6 +1,7 @@
-\section{Deposit}
-
+\section{Deposit} \label{sec:deposit}
+% FIXME: split up between deposit to merchant
+% and deposit to customer's (own) bank account!
\begin{figure}[h!]
\begin{sequencediagram}
diff --git a/doc/flows/kyc-balance.tex b/doc/flows/kyc-balance.tex
index 1192021b3..de8953665 100644
--- a/doc/flows/kyc-balance.tex
+++ b/doc/flows/kyc-balance.tex
@@ -49,9 +49,10 @@ if required.
\begin{table}[h!]
- \caption{Settings for the balance trigger}
+ \caption{Settings for the balance trigger.}
\begin{tabular}{l|l|r}
{\bf Setting} & {\bf Type} & {\bf Value} \\ \hline \hline
- Default AML threshold & Amount & {\em 1000 CHF} \\
+ KYC threshold & Amount & {\em 5000 CHF} \\
+ Default AML threshold & Amount & {\em 5000 CHF} \\
\end{tabular}
\end{table}
diff --git a/doc/flows/kyc-deposit.tex b/doc/flows/kyc-deposit.tex
index 2423235ab..bac0ead4e 100644
--- a/doc/flows/kyc-deposit.tex
+++ b/doc/flows/kyc-deposit.tex
@@ -61,11 +61,13 @@
\begin{table}[h!]
- \caption{Settings for the deposit trigger}
+ \caption{Settings for the deposit trigger. Note that the operation
+ must satisfy all of the given rules.}
\begin{tabular}{l|l|r}
{\bf Setting} & {\bf Type} & {\bf Value} \\ \hline \hline
Allowed bank accounts & RFC 8905 RegEx & {\em CH*} \\ \hline
- KYC deposit threshold & Amount & {\em 1000 CHF} \\
- Default AML deposit threshold & Amount & {\em 2500 CHF} \\
+ KYC deposit threshold & Amount/month & {\em 5000 CHF} \\
+ KYC deposit threshold & Amount/year & {\em 15000 CHF} \\
+ Default AML deposit threshold & Amount/month & {\em 2500 CHF} \\
\end{tabular}
\end{table}
diff --git a/doc/flows/kyc-pull.tex b/doc/flows/kyc-pull.tex
index b7cd34477..092892ae5 100644
--- a/doc/flows/kyc-pull.tex
+++ b/doc/flows/kyc-pull.tex
@@ -68,11 +68,13 @@
\begin{table}[h!]
- \caption{Settings for the pull payment trigger}
+ \caption{Settings for the pull payment trigger. Note that the operation
+ must satisfy all of the given rules.}
\begin{tabular}{l|l|r}
{\bf Setting} & {\bf Type} & {\bf Value} \\ \hline \hline
Permitted phone numbers & Dialing prefix & {\em +41} \\
- P2P KYC threshold & Amount & {\em 100 CHF} \\
- Default P2P AML threshold & Amount & {\em 1000 CHF} \\
+ P2P KYC threshold & Amount/month & {\em 5000 CHF} \\
+ P2P KYC threshold & Amount/year & {\em 15000 CHF} \\
+ Default P2P AML threshold & Amount/month & {\em 1000 CHF} \\
\end{tabular}
\end{table}
diff --git a/doc/flows/kyc-push.tex b/doc/flows/kyc-push.tex
index 6d25ac7ef..458115462 100644
--- a/doc/flows/kyc-push.tex
+++ b/doc/flows/kyc-push.tex
@@ -69,11 +69,13 @@
\begin{table}[h!]
- \caption{Settings for the push payment trigger}
+ \caption{Settings for the push payment trigger. Note that the operation
+ must satisfy all of the given rules.}
\begin{tabular}{l|l|r}
{\bf Setting} & {\bf Type} & {\bf Value} \\ \hline \hline
Permitted phone numbers & Dialing prefix & {\em +41} \\
- P2P KYC threshold & Amount & {\em 100 CHF} \\
- Default P2P AML threshold & Amount & {\em 1000 CHF} \\
+ P2P KYC threshold & Amount/month & {\em 5000 CHF} \\
+ P2P KYC threshold & Amount/year & {\em 15000 CHF} \\
+ Default P2P AML threshold & Amount & {\em 1000 CHF} \\
\end{tabular}
\end{table}
diff --git a/doc/flows/kyc-withdraw.tex b/doc/flows/kyc-withdraw.tex
index ecdc9a399..341419095 100644
--- a/doc/flows/kyc-withdraw.tex
+++ b/doc/flows/kyc-withdraw.tex
@@ -30,16 +30,21 @@
\end{center}
\caption{Regulatory process when withdrawing digital cash from a
bank account.
- When the transfer is denied the money is (eventually) returned to
+ If the transfer is denied or the user fails to withdraw the
+ funds for any other reason, the money is automatically returned
+ after the bounce period (see Table~\ref{table:kyc:withdraw:settings}) to
the originating bank account.}
\label{fig:kyc:withdraw}
\end{figure}
\begin{table}[h!]
- \caption{Settings for the withdraw trigger}
+ \caption{Settings for the withdraw trigger. Note that the operation
+ must satisfy all of the given rules.} \label{table:kyc:withdraw:settings}
\begin{tabular}{l|l|r}
- {\bf Setting} & {\bf Type} & {\bf Value} \\ \hline \hline
- Allowed bank accounts & RFC 8905 RegEx & {\em CH*} \\ \hline
- Monthly withdraw maximum & Amount & {\em 1000 CHF} \\
+ {\bf Setting} & {\bf Type} & {\bf Value} \\ \hline \hline
+ Allowed bank accounts & RFC 8905 RegEx & {\em CH*} \\ \hline
+ Withdraw maximum & Amount/month & {\em 5000 CHF} \\
+ Withdraw maximum & Amount/year & {\em 15000 CHF} \\
+ Bounce period & Delay & 1 month \\
\end{tabular}
\end{table}
diff --git a/doc/flows/main.tex b/doc/flows/main.tex
index c2aee65ac..2a10578bf 100644
--- a/doc/flows/main.tex
+++ b/doc/flows/main.tex
@@ -37,16 +37,48 @@ The main interactions of the system are:
\item[shutdown] the Taler payment system operator informs the customers that the system is being shut down for good
\end{description}
-Taler has no accounts (this is digital cash) and thus there is no ``opening''
-or ``closing'' of accounts. The equivalent of ``opening'' an account is thus
-to withdraw digital cash. The equivalent of ``closing'' an account is to
-either (1) deposit the funds explicitly into a bank account, or (2) the coins
-will expire if the wallet was lost (including long-term offline or
+{\bf Customers} begin their business relationship with us when they withdraw
+digital cash. Taler has no accounts (this is digital cash) and thus there is
+no ``opening'' or ``closing'' of accounts for consumers. Given digital cash,
+the customers can either (1) deposit the funds explicitly into a bank account
+(see Section~\ref{sec:deposit}), (2) pay a merchant (see
+Section~\ref{sec:deposit}), (3) pay another customer using a peer-to-peer
+transfer (see Sections~\ref{sec:push} and~\ref{sec:pull}), or (4) the coins
+will expire if the wallet was lost (including offline for a long time or
uninstalled). Finally, if a wallet remains (occasionally) online but a user
-does simply not spend the coins will (3) diminish in value from the change
+does simply not spend the coins will (5) diminish in value from the change
fees (see Section~\ref{sec:fees:coin}) that apply to prevent the coins from
expiring outright.
+For customers, we will categorically limit of digital cash withdrawn per month
+to less than CHF 5000 per month and less than CHF 15000 per year, thus
+ensuring that consumers remain below the thresholds where most regulatory
+processes become applicable. We will, however, ensure that customers are Swiss
+(see Section~\ref{sec:proc:domestic}) by requiring them to have a Swiss bank
+account and/or Swiss phone number (+41-prefix). Furthermore, the wallet will
+impose an upper limit of CHF 5000 on its balance at any point in time.
+
+For {\bf merchants}, the Taler equivalent of ``opening'' an account and thus
+establishing an ongoing business relationship is for a business to receive
+payments (see Section~\ref{sec:deposit}) exceeding CHF 5000/month or CHF
+15000/year. We will consider the account ``open'' (and require up-to-date KYB
+information and check sanction lists) as long as the business has made any
+transactions within the last 24 months.
+
+In contrast to normal customers, merchants can in principle {\bf receive}
+payments without limit. However, these transactions must go into the bank
+account of the business: when digital coins are deposited at a business in
+Taler, the business never actually receives usable digital coins but instead
+the amount is always directly credited to their bank account. Depending on
+the transacted amounts, the business will be subject to KYB
+(Section~\ref{sec:proc:kyb}) and AML checks. As we will only transfer money
+into the existing bank accounts of the merchants to compensate them for sales
+made using the Taler payment system, we do not need to check the origin of
+funds for those merchants as they will only receive funds from
+us.\footnote{Should businesses want to use Taler for expenditures, they will
+need to withdraw digital coins from their bank account just like customers,
+and the limits for customers will continue to apply.}
+
The following sections describe the respective processes for each of these
interactions.
@@ -119,7 +151,8 @@ The three main regulatory processes are:
\end{description}
\include{proc-domestic}
-\include{proc-kyc}
+%\include{proc-kyc}
+\include{proc-kyb}
\include{proc-aml}
\chapter{Fees} \label{chap:fees}
diff --git a/doc/flows/proc-domestic.tex b/doc/flows/proc-domestic.tex
index 387b964d5..f3a1b7b18 100644
--- a/doc/flows/proc-domestic.tex
+++ b/doc/flows/proc-domestic.tex
@@ -1,4 +1,4 @@
-\section{Domestic wallet check}
+\section{Domestic wallet check} \label{sec:proc:domestic}
\begin{figure}[h!]
\begin{sequencediagram}