Compliance Flow
Compliance runs on every LIVE transaction before funds move. This page describes what runs, when, and how outcomes surface to you — at the product level your integration needs to care about.
What runs
For a typical payment, Thiqwave runs:
| Check | Applies to | When |
|---|---|---|
| KYB (Know-Your-Business) | The customer (sender) | At customer creation, before a transaction can move money |
| Sanctions / PEP / adverse media | Customers and beneficiaries | During the compliance stage of the transaction |
| Wallet screening / KYT | Stablecoin legs and wallet beneficiaries | Before any stablecoin movement required by the corridor |
The exact checks vary by corridor, currency, amount, customer type, and product — Thiqwave applies the right policy for the route.
How outcomes surface
Compliance results drive the transaction state (see Transaction lifecycle):
| Outcome | Transaction state | Webhook |
|---|---|---|
| Passed | COMPLIANCE_APPROVED → continues | customer.kyb_approved (KYB leg) |
| Failed | COMPLIANCE_REJECTED — no money moves | customer.kyb_rejected (KYB leg) |
| Needs a human | REQUIRES_MANUAL_REVIEW | — |
A failed check is surfaced explicitly — never hidden as a generic "pending". Your integration should treat COMPLIANCE_REJECTED and REQUIRES_MANUAL_REVIEW as terminal-for-now and stop the flow.
TEST vs LIVE
- On
TEST, compliance providers are mocked: KYB approves instantly and no real screening runs. This lets you build and validate end-to-end without real checks. - On
LIVE, real compliance vendors run. Timing and decisioning are theirs; the platform records the decision and provider reference in an auditable trail.
What we do not expose
To protect the integrity of the checks and your end-users' privacy, Thiqwave does not return:
- Raw compliance vendor payloads or scores.
- The internal rules that triggered a decision.
- End-user PII beyond what your own customer/beneficiary records contain.
If a transaction is in REQUIRES_MANUAL_REVIEW, contact support@thiqwave.com (quote the correlation_id / transaction id) rather than retrying.
Next
- Transaction lifecycle
- Webhooks — react to KYB and settlement events.