PACI Authentication
The PACI Answer records a customer's identity verification with PACI (the Public Authority for Civil Information, Kuwait) through the Kuwait Mobile ID app.
Use it through the API when your own application has already verified the customer with PACI and the customer should not be asked to verify again on the azakaw form. Saving this answer does not call PACI: azakaw stores the result you report.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
fieldTypeId | string | Yes | Must be set to Paci |
civilId | string | Yes | The customer's 12-digit Kuwait Civil ID |
statusId | string | Yes | Must be Completed to record a successful verification. Sent as the name, not a number |
requestReference | string | Yes | Your reference for the PACI verification — the request id your application received from PACI. Must not be empty: a PACI answer without a reference is not treated as verified |
Example Usage
{
"fieldId": "d9e06d0d-8f66-47b8-ad17-d467ed60a7e4",
"answer": {
"fieldTypeId": "Paci",
"civilId": "123456789012",
"statusId": "Completed",
"requestReference": "ecf58ced-f037-4c1e-9d2a-6f1b0c7e5a31"
}
}
Skipping PACI when your application already verified the customer
On most forms the PACI field is a conditional field: it only applies after earlier answers — for example Residency Status = Resident and "Do you have a PACI account?" = Yes. To record a verification your application already performed, answer that whole chain in the same Save Submission request:
- Call Get Form Fields. Find the PACI field (
"fieldType": "Paci"), then follow itsparentFieldIdupwards to the fields that reveal it. Each conditional field'scondition.valuesholds the parent'soptionValuethat reveals it; answer the parent with theoptionIdof that option. - Answer each parent so the PACI field applies (e.g. Residency Status → Resident, "Do you have a PACI account?" → Yes).
- Answer the PACI field with
statusId: "Completed", the Civil ID, and your PACI request id asrequestReference. - Send the identity details your application received from PACI (name, date of birth, nationality, …) as answers to the form's own fields. Because azakaw does not call PACI here, it does not fill those fields for you.
{
"submissionId": "a1b2c3d4-5e6f-4a8b-9c0d-e1f2a3b4c5d6",
"answers": [
{
"fieldId": "a2b08a44-b69d-47ac-9256-a4b003ff3109",
"answer": { "fieldTypeId": "SingleOptionSelect", "optionId": "f65add9d-5106-48a8-a368-8c6a5f3b3b31" }
},
{
"fieldId": "83104fd9-09a5-4c81-9895-4fd66a57dee0",
"answer": { "fieldTypeId": "SingleOptionRadio", "optionId": "a577d113-fe16-493e-8ff7-a193cd363817" }
},
{
"fieldId": "d9e06d0d-8f66-47b8-ad17-d467ed60a7e4",
"answer": {
"fieldTypeId": "Paci",
"civilId": "123456789012",
"statusId": "Completed",
"requestReference": "ecf58ced-f037-4c1e-9d2a-6f1b0c7e5a31"
}
}
]
}
The customer then sees PACI as verified on the form, and so does the compliance officer on the customer profile.
Notes
- Only report
Completedfor a verification that actually succeeded. Whether to accept a verification performed by your own application instead of on the azakaw form is a decision for your compliance team; you are responsible for the result you report. - Keep
requestReferencetraceable to the PACI transaction on your side — it is how a verification recorded through the API is followed back to its source. - Any
statusIdother thanCompletedleaves the field unverified; an unrecognised value is stored asWaiting. - The Civil ID is 12 digits, the last being a check digit.
- azakaw stores your reference as
EXT:{appId}:{requestReference}, whereappIdis the app key that saved it. This marks the verification as reported through the API (rather than performed on the azakaw form) and records which key reported it. Get Submission returns the stamped value; sending it back unchanged in a later save does not stamp it twice. The same applies to a PACI answer saved inside a repeatable group.