Re-KYC » History » Revision 2
Revision 1 (prin methirattanasophon, 03/25/2026 03:36 AM) → Revision 2/4 (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 /api/v1/customer/info/rekyc/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 /api/v1/customer/info/rekyc/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: <img style="width: 608px;" src="clipboard-202603250954-ladcm.png"><br> ``` @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 ```