aboutsummaryrefslogtreecommitdiff
path: root/doc/flows/kyc-pull.tex
blob: f647df61e24a226cc99248fb6dd94b6fc1ae1cac (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
91
92
\section{KYC/AML: Pull Payment} \label{sec:kyc:pull}

\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 invoicing};
 \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 KYC thresholds would be passed, the receiving wallet cannot
    generate a valid invoice until it has provided the KYC data.
    When a transfer is denied by AML staff, the money is held in escrow
    until authorities authorize the transfer.}
\end{figure}


\begin{table}[h!]
  \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}       \\
    SMS-Identification        & Amount/month    & {\em     0 CHF} \\
    P2P KYC threshold         & Amount/month    & {\em  5000 CHF} \\
    P2P KYC threshold         & Amount/year     & {\em 25000 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 25'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.