002951
Causes
This error is triggered by KYC/KYB restrictions on pay-ins and transfers.
The error message contains the UserId value or values (up to 5 in the case of pay-in beneficiaries) whose KYC/KYB status is preventing the transaction from being allowed.
Note – Error may be caused by non-renewal or downgrade
In the case of users with UserCategory of OWNER, KYC/KYB restrictions apply to users who are not yet verified for the first time as well as those who were previously verified but have been downgraded.
A KYC/KYB downgrade, where Mangopay changes the KYCLevel from REGULAR to LIGHT, may occur for two reasons:
- The KYC/KYB process was not completed before the
KycRenewalDeadlineas per the periodic KYC/KYB verification renewal - Key identity-related data points were changed in the User object, triggering a downgrade
There are three cases when the transaction can become FAILED with the 002951 ResultCode:
1. Pay-in to unverified Owner without FlowDescriptor.Beneficiaries declared
The error is returned on a pay-in (or recurring pay-in registration, preauthorization, or deposit preauthorization) if:
- The
CreditedWalletIdholder is (UserCategoryof):OWNERwhoseKYCLevelisLIGHT
- AND the
FlowDescriptor.Beneficiariesisnull(because its not sent)
2. Pay-in with Beneficiaries that aren’t verified
The error is also returned on a pay-in (or recurring pay-in registration, preauthorization, or deposit preauthorization) if:
FlowDescriptor.Beneficiariesis sent (notnull)- AND at least one
UserIdlisted is (UserCategoryof):PAYEROWNERwhoseKYCLevelisLIGHT
3. Transfer to unverified Owner
The error is returned on a transfer request if:
- The
CreditedWalletIdholder is (UserCategoryof):PAYEROWNERwhoseKYCLevelisLIGHT
The Beneficiaries property is not available on transfers and does not apply.
Read more about the KYC/KYB restrictions on transfers and pay-ins →
What to do
If this error is triggered:
- Retrieve the
UserIdvalues from the error message - Invite the user to complete their KYC/KYB verification, using the hosted KYC/KYB solution (or the legacy API-based solution)
- Once complete (ensure their
KYCLevelisREGULAR), retry the transaction