Skip to main content
ChmodKycResult is a Swift enum, so the compiler makes sure you cover every case.
The callback always runs on the main actor, so you can update your UI directly. Every case carries the transaction ID, and result.transactionID reads it without a switch when that is all you need.

.completed does not mean approved

It means the user finished the flow successfully. The actual verdict is produced afterwards and delivered to your backend through a webhook, usually within seconds.
Show something like “We’re reviewing your document” at .completed, and update the user once your backend receives the webhook. A success screen here will be wrong for every user who is later rejected.
ChmodKycResult and ChmodKycFailureCode both conform to Hashable, so you can push the outcome straight onto a NavigationPath:
Or map it onto your own route type when you want to control the destinations:

Error codes

.unrecognized exists so a new code introduced by the SDK never breaks your build or crashes your app. Handle it as a generic failure and log the raw string so you can see what shipped.

Troubleshooting