Skip to main content

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​

FieldTypeRequiredDescription
fieldTypeIdstringYesMust be set to Paci
civilIdstringYesThe customer's 12-digit Kuwait Civil ID
statusIdstringYesMust be Completed to record a successful verification. Sent as the name, not a number
requestReferencestringYesYour 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:

  1. Call Get Form Fields. Find the PACI field ("fieldType": "Paci"), then follow its parentFieldId upwards to the fields that reveal it. Each conditional field's condition.values holds the parent's optionValue that reveals it; answer the parent with the optionId of that option.
  2. Answer each parent so the PACI field applies (e.g. Residency Status → Resident, "Do you have a PACI account?" → Yes).
  3. Answer the PACI field with statusId: "Completed", the Civil ID, and your PACI request id as requestReference.
  4. 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 Completed for 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 requestReference traceable to the PACI transaction on your side — it is how a verification recorded through the API is followed back to its source.
  • Any statusId other than Completed leaves the field unverified; an unrecognised value is stored as Waiting.
  • The Civil ID is 12 digits, the last being a check digit.
  • azakaw stores your reference as EXT:{appId}:{requestReference}, where appId is 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.