Re-KYC » History » Revision 2
« Previous |
Revision 2/4
(diff)
| Next »
prin methirattanasophon, 03/25/2026 04:07 AM
Re-KYC (Foreign)¶
1. Objective
To enable users to update their personal information in order to maintain compliance with ongoing regulatory requirements.
2. Environment & Routing
- Environment: UAT
- Page Route: https://uat.finansiaportal.com/authentication/re-kyc/foreign
3. Data Source
User identification and authorization data are securely extracted from the Bearer Token.
Token (Decoded):
| key | type | description | value |
|---|---|---|---|
| CustomerType | int | Identifies the classification of the customer based on the system enumeration | 1 |
4.Customer Type Enumeration
The CustomerType integer maps to the following defined constants:
const (
CustomerTypeIndividual CustomerType = iota + 1 // Value: 1
CustomerTypeForeigner // Value: 2
CustomerTypeCorporate // Value: 3
)
5. API Specification
This section defines the API endpoints used in the Re-KYC process. The process is divided into two main steps: Initialization and Submission.
5.1 Initialize Re-KYC Information (Init):
Used to retrieve or initialize the customer's current KYC information before they make updates.
- Method: POST
- Path: /api/v1/rekyc/foreign/info
- payload: {}
Headers:
| key | value | description |
|---|---|---|
| Authorization | Bearer {token} | Access token extracted from the user's session. |
5.2 Submit Re-KYC Information (Submit):
Used to submit the user's updated KYC information to the system.
- Method: POST
- Path: /api/v1/rekyc/foreign/update
Headers:
| key | value | description |
|---|---|---|
| Authorization | Bearer {token} | Access token extracted from the user's session. |
Payload:
| key | type | description |
|---|---|---|
| info | object | |
| info.fullname | string | |
| info.registerId | string | |
| info.customerCode | number | |
| info.birthdate | string | |
| info.age | number | |
| info.marriageStatus | string | |
| info.countryOfIncome | string | |
| info.education | string | |
| info.occupation | string | |
| info.office | string | |
| info.businessType | string | |
| info.position | string | |
| info.salary | string | |
| info.sourceOfIncome | string | |
| info.passportNumber | string | |
| investmentObjectives | object | |
| investmentObjectives.registerId | string | |
| investmentObjectives.shortTermInvestment | boolean | |
| investmentObjectives.longTermInvestment | boolean | |
| investmentObjectives.taxesInvestment | boolean | |
| investmentObjectives.retireInvestment | boolean | |
| fatca | object | |
| fatca.form | object | |
| fatca.form.registerId | string | |
| fatca.form.isFatca | boolean | |
| fatca.form.fatcaInfo | string | |
| fatca.form.isKnowLedgeDone | boolean | |
| fatca.form.knowLedgeTestResult | number | |
| fatca.w8 | object / null | |
| fatca.w9 | object / null | |
| suiteTest | object | |
| suiteTest.answers | array[string] | |
| suiteTest.result | object | |
| suiteTest.result.id | string | |
| suiteTest.result.registerId | string | |
| suiteTest.result.totalScore | number | |
| suiteTest.result.level | number | |
| suiteTest.result.investorTypeRisk | string | |
| suiteTest.result.additional | string | |
| suiteTest.result.answers | array[string] / null | |
| investorType | object | |
| investorType.investorType | number | |
| investorType.investorDocumentType | string | |
| investorType.investorTypeKnowledge | string | |
| investorType.filePath | string | |
| selfIdentification | object | |
| selfIdentification.passportNumber | string |
5.3 Initialize Appman (Init Appman):
Used to initialize the Appman verification process.
- Endpoint: /api/v1/rekyc/foreign/appman/init
- Method: GET
Headers:
| key | value | description |
|---|---|---|
| Content-Type | application/json | |
| Authorization | Bearer {token} |
Query Parameters:
| key | type | description |
|---|---|---|
| registerId | string |
5.4 Appman Result:
- Endpoint: /api/v1/rekyc/foreign/appman/result
- Method: POST
Headers:
| key | value | description |
|---|---|---|
| Content-Type | application/json |
Payload:
| key | type | description |
|---|---|---|
| verifyid | string | |
| verified | boolean | |
| isMobile | boolean |
Response (200 OK):
| key | type | description |
|---|---|---|
| response | object | |
| response.registerId | string |
Workflow:

@startuml rekyc_sequence
actor "Foreign Citizen" as u
participant "ReKYC Page" as f
participant "Backend API" as b
database "Database" as d
database "Session Storage" as s
participant "Appman" as a
activate u
activate f
group "User info and income"
u -> f: access reKYC page
f -> b: POST: api/v1/customer/info/rekyc/info
activate b
b->d: get user data
activate d
d --> b:
deactivate d
b --> f: user data
deactivate b
f->s: store user data in session
f --> u: display user data and reKYC form
end
group "Suitability test"
u -> f: click "do suitability test"
f --> u: redirect to suitability test page
u-> f: submit suitability test
f->s: update session store
f --> u: redirect to reKYC page
end
group "Verification"
u->f: click "do verification"
f -> b: init appman session
activate b
b -> a: create appman session
activate a
a --> b:
deactivate a
b --> f: appman session id
deactivate b
f -> a: user do verification on appman page
activate a
a --> f:
deactivate a
f -> b: sent appman result
activate b
b -> a: check appman result
activate a
a --> b:
deactivate a
b -> d: store verification result
activate d
d --> b:
deactivate d
b --> f: verification result
deactivate b
f -> s: update session store
f --> u: redirect to reKYC page with verification result
end
group "Form Submission"
u -> f: fill passport number
u -> f: select investor type and upload document
u -> f: submit form
f->s: update session store with form data
f -> b: POST: /api/v1/customer/info/rekyc/update
activate b
b -> d: store reKYC form data
activate d
d --> b:
deactivate d
b --> f: submission result
deactivate b
f --> u: display submission result
end
deactivate f
deactivate u
@enduml
Updated by prin methirattanasophon 24 days ago · 4 revisions