Project

General

Profile

Re-KYC » History » Version 1

prin methirattanasophon, 03/25/2026 03:36 AM

1 1 prin methirattanasophon
# Re-KYC (Foreign)
2
3
**1. Objective**
4
To enable users to update their personal information in order to maintain compliance with ongoing regulatory requirements.
5
6
**2. Environment & Routing**
7
 - Environment: UAT
8
 - Page Route: https://uat.finansiaportal.com/authentication/re-kyc/foreign
9
10
11
**3. Data Source**
12
User identification and authorization data are securely extracted from the Bearer Token.
13
14
Token (Decoded):
15
|key|type|description|value|
16
|--|--|--|--|
17
|CustomerType|int|Identifies the classification of the customer based on the system enumeration|1|
18
19
**4.Customer Type Enumeration**
20
The CustomerType integer maps to the following defined constants:
21
```
22
const (
23
	CustomerTypeIndividual CustomerType = iota + 1 // Value: 1
24
	CustomerTypeForeigner                          // Value: 2
25
	CustomerTypeCorporate                          // Value: 3
26
)
27
```
28
29
**5. API Specification**
30
This section defines the API endpoints used in the Re-KYC process. The process is divided into two main steps: Initialization and Submission.
31
32
***5.1 Initialize Re-KYC Information (Init)***:
33
Used to retrieve or initialize the customer's current KYC information before they make updates.
34
- Method: POST
35
- Path: /api/v1/customer/info/rekyc/info
36
- payload: {}
37
38
Headers:
39
|key|value|description|
40
|--|--|--|
41
|Authorization|Bearer {token}|Access token extracted from the user's session.|
42
43
***5.2 Submit Re-KYC Information (Submit)***:
44
Used to submit the user's updated KYC information to the system.
45
- Method: POST
46
- Path: /api/v1/customer/info/rekyc/update
47
48
Headers:
49
|key|value|description|
50
|--|--|--|
51
|Authorization|Bearer {token}|Access token extracted from the user's session.|
52
53
Payload:
54
|key|type|description|
55
|--|--|--|
56
|info|object||
57
|info.fullname|string||
58
|info.registerId|string||
59
|info.customerCode|number||
60
|info.birthdate|string||
61
|info.age|number||
62
|info.marriageStatus|string||
63
|info.countryOfIncome|string||
64
|info.education|string||
65
|info.occupation|string||
66
|info.office|string||
67
|info.businessType|string||
68
|info.position|string||
69
|info.salary|string||
70
|info.sourceOfIncome|string||
71
|info.passportNumber|string||
72
|investmentObjectives|object||
73
|investmentObjectives.registerId|string||
74
|investmentObjectives.shortTermInvestment|boolean||
75
|investmentObjectives.longTermInvestment|boolean||
76
|investmentObjectives.taxesInvestment|boolean||
77
|investmentObjectives.retireInvestment|boolean||
78
|fatca|object||
79
|fatca.form|object||
80
|fatca.form.registerId|string||
81
|fatca.form.isFatca|boolean||
82
|fatca.form.fatcaInfo|string||
83
|fatca.form.isKnowLedgeDone|boolean||
84
|fatca.form.knowLedgeTestResult|number||
85
|fatca.w8|object / null||
86
|fatca.w9|object / null||
87
|suiteTest|object||
88
|suiteTest.answers|array[string]||
89
|suiteTest.result|object||
90
|suiteTest.result.id|string||
91
|suiteTest.result.registerId|string||
92
|suiteTest.result.totalScore|number||
93
|suiteTest.result.level|number||
94
|suiteTest.result.investorTypeRisk|string||
95
|suiteTest.result.additional|string||
96
|suiteTest.result.answers|array[string] / null||
97
|investorType|object||
98
|investorType.investorType|number||
99
|investorType.investorDocumentType|string||
100
|investorType.investorTypeKnowledge|string||
101
|investorType.filePath|string||
102
|selfIdentification|object||
103
|selfIdentification.passportNumber|string||
104
105
106
Workflow:
107
<img style="width: 608px;" src="clipboard-202603250954-ladcm.png"><br>
108
109
```
110
@startuml rekyc_sequence
111
112
actor "Foreign Citizen" as u
113
participant "ReKYC Page" as f
114
participant "Backend API" as b
115
database "Database" as d
116
database "Session Storage" as s
117
participant "Appman" as a
118
119
activate u
120
activate f
121
122
group "User info and income"
123
u -> f: access reKYC page
124
f -> b: POST: api/v1/customer/info/rekyc/info
125
activate b
126
b->d: get user data
127
activate d
128
d --> b: 
129
deactivate d
130
b --> f: user data
131
deactivate b
132
f->s: store user data in session
133
f --> u: display user data and reKYC form
134
end
135
136
group "Suitability test"
137
u -> f: click "do suitability test"
138
f --> u: redirect to suitability test page
139
u-> f: submit suitability test
140
f->s: update session store
141
f --> u: redirect to reKYC page
142
end
143
144
group "Verification"
145
u->f: click "do verification"
146
f -> b: init appman session
147
activate b
148
b -> a: create appman session
149
activate a
150
a --> b:
151
deactivate a
152
b --> f: appman session id
153
deactivate b
154
f -> a: user do verification on appman page
155
activate a
156
a --> f: 
157
deactivate a
158
f -> b: sent appman result
159
activate b
160
b -> a: check appman result
161
activate a
162
a --> b:
163
deactivate a
164
b -> d: store verification result
165
activate d
166
d --> b:
167
deactivate d
168
b --> f: verification result
169
deactivate b
170
f -> s: update session store
171
f --> u: redirect to reKYC page with verification result
172
end
173
174
group "Form Submission"
175
u -> f: fill passport number
176
u -> f: select investor type and upload document
177
u -> f: submit form
178
f->s: update session store with form data
179
f -> b: POST: /api/v1/customer/info/rekyc/update
180
activate b
181
b -> d: store reKYC form data
182
activate d
183
d --> b:
184
deactivate d
185
b --> f: submission result
186
deactivate b
187
f --> u: display submission result
188
end
189
190
deactivate f
191
deactivate u
192
193
@enduml
194
```