summaryrefslogtreecommitdiff
path: root/doc/flows/kyc-push.tex
blob: c74b3ce16d175bc6ce946b252b0d4169f0c47e69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
\section{KYC/AML: Push Payment} \label{sec:kyc:push}

\begin{figure}[h!]
  \begin{center}
\begin{tikzpicture}[node distance=0.9cm,font=\sffamily,
    start/.style={rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=yellow!30},
    end/.style={rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=red!30},
    process/.style={rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=orange!30},
    failed/.style={rectangle, rounded corners, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=red!30},
    io/.style={trapezium, trapezium left angle=70, trapezium right angle=110, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=blue!30},
    decision/.style={diamond, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=green!30},
    arr/.style={very thick,-latex},
    every edge quotes/.style = {auto, font=\footnotesize, sloped}
    ]
 \node (start) [start] {Start};
 \node (wallet) [decision,below=of start,text width=2.5cm] {Wallet linked to (domestic) phone number?};
 \node (domestic) [process, right=of wallet] {Validate phone number};
 \node (amount) [decision, below=of wallet,text width=2.5cm] {Wallet received less than KYC threshold from other wallets?};
 \node (kyc) [process, right=of amount] {KYC process};
 \node (high) [decision, below=of amount,text width=2.5cm] {Wallet received more than its AML threshold?};
 \node (aml) [process, right=of high] {AML process};
 \node (dummy) [below right=of aml] {};
 \node (allow) [end, below right=of dummy] {Allow};
 \node (deny) [failed, right=of kyc] {Deny};
 \draw[arr] (start) -> (wallet) {};

 \draw[arr] (wallet) -> (amount);
 \draw (wallet) edge["Yes"] (amount);

 \draw[arr] (wallet.east) -> (domestic);
 \draw (wallet.east) edge["No"] (domestic);

 \draw[arr] (domestic) -> (amount);
 \draw (domestic) edge["Confirmed"] (amount);

 \draw[arr] (domestic) -> (deny);
 \draw (domestic) edge["Failed"] (deny);

 \draw[arr] (amount) -> (high);
 \draw (amount) edge["Yes"] (high);

 \draw[arr] (amount.east) -> (kyc);
 \draw (amount.east) edge["No"] (kyc);

 \draw[arr] (kyc) -> (deny);
 \draw (kyc) edge["Failed"] (deny);

 \draw[arr] (kyc) -> (high);
 \draw (kyc) edge["Succeeded"] (high);

 \draw[arr] (high.south) -> (allow);
 \draw (high.south) edge["Yes"] (allow);

 \draw[arr] (high.east) -> (aml);
 \draw (high.east) edge["No"] (aml);

 \draw[arr] (aml) -> (deny);
 \draw (aml) edge["Violation"] (deny);

 \draw[arr] (aml) -> (allow);
 \draw (aml) edge["Ok"] (allow);
\end{tikzpicture}
  \end{center}
  \caption{Regulatory process when receiving payments from another wallet.
    The threshold depends on the risk profile from the KYC process.
    When the transfer is denied, the money is held in escrow
    until authorities authorize the transfer.}
\end{figure}


\begin{table}[h!]
  \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}       \\
    SMS-Identification        & Amount/month   & {\em     0 CHF} \\
    P2P KYC threshold         & Amount/month   & {\em  5000 CHF} \\
    P2P KYC threshold         & Amount/year    & {\em 15000 CHF} \\
    Default P2P AML threshold & Amount/month   & {\em  5000 CHF} \\
  \end{tabular}
\end{table}

%The P2P KYC thresholds of 5'000 \CURRENCY{} per month and than 15'000
%\CURRENCY{} per year ensure compliance. % with article 49-2c.

SMS-Identification is done by in-house software. KYC data is initially
obtained and vetted by one of several external KYC providers before
being passed for manual validation by our own staff who can then
determine appropriate AML thresholds and set review criteria.