Additional Customer Verification
Sometimes, additional customer verification are required to ensure we’re compliant with the regulations.
If a Wise partner has customers that meet all the criteria below, they must implement the verification APIs and webhooks mentioned on this page to avoid any disruptions.
- connected customer model (we onboard and create a Wise account for every customer of the partner) and
- customer’s address is in an EEA country and
- customer creates a quote with source currency being an EEA currency
This is applicable for new customers being onboarded and also the existing customers.
Process
For new customers
During onboarding, customers would need to answer additional questions using account-purpose endpoint. This will trigger the process on our end. If any additional documents or explanations are required for any customer, it will be communicated to the partners via webhooks. You can subscribe to the associated webhook by using our guide here.
Depending on the information in the webhook, customers might need to send us documents or explanations via upload-document or upload-explanation endpoint respectively. Any updates to the verification process will still be communicated through the same webhook as above.
For existing customers registered before 1/1/2023
See [repapering] process here.
Sequence Diagram
Subscribe to webhook
Subscribe to profiles#cdd-check-state-change event webhook to receive information about additional verification checks for a profile.
curl -X POST https://api.sandbox.transferwise.tech/v3/applications/{{clientKey}}/subscriptions \-H 'Authorization: Bearer <client credential token>' \-H 'Content-Type: application/json' \-d '{"name":"Webhook Subscription #1","trigger_on":"profiles#cdd-check-state-change","delivery":{"version":"2.0.0","url":"https://your.webhook.url/12345"}}'
Provide account purpose
POST /v3/profiles/{{profileId}}/verification-status/account-purpose
Submits purpose of opening this account. We will use this information to perform additional verification checks on our end.
Payloads requirements are different for consumer and business profiles.
Possible values include:
MOVING_SAVINGS
SENDING_MONEY_TO_FRIENDS_OR_FAMILY
GENERAL_LIVING_EXPENSES
BUYING_GOODS_OR_SERVICES_ABROAD
PAYING_FOR_MORTGAGE_OR_LOAN
PAYING_BILLS
RECEIVING_SALARY_OR_PENSION
INVESTING
list of iso3 country codes
Values are in euros. Possible values include:
0_2350
2351_6000
6001_11500
11501_60000
60001_175000
175001_+
Values are in euros. Possible values include:
SALARY
INVESTMENTS
PENSION
INHERITANCE
LOAN
OTHER
Values are in euros. Possible values include:
0_11500
11501_19000
19001_28500
28501_47500
47501_75000
75001_+
Possible values include:
INVESTING_IN_FUNDS_STOCKS_BONDS_OR_SIMILAR
DISTRIBUTING_COMPANY_PROFITS_OR_PAYING_DIVIDENDS
PAYING_MORTGAGE_BANK_LOAN_INSURANCE_OR_CREDIT
PAYING_FOR_GOODS_PROPERTIES_OR_SERVICES_ABROAD
PAYING_RENT_OR_UTILITIES
PAYING_SUPPLIERS_CONTRACTORS_OR_EMPLOYEES
PAYING_TAX_ON_PROFIT_OR_PROPERTY
TRANSFER_WITHIN_COMPANY_OR_GROUP
RECEIVE_INVESTMENTS_OR_FUNDS
RECEIVE_PAYMENTS_FROM_CLIENTS
DONATION
OTHER
Possible values include:
BUSINESS_ACTIVITIES
INVESTMENTS
LOAN_OR_OTHER_FINANCING
DONATION
GRANTS
OTHER
Values are in euros. Possible values include:
0_1200
1201_6000
6001_12000
12001_60000
60001_120000
120001_235000
235001_600000
600001_1200000
1200001_6000000
6000001_12000000
12000001_+
Returns a 204 response - No Content
{"accountPurpose" : "MOVING_SAVINGS","intendedCountries" : ["deu", "esp"],"yearlyAnticipatedVolume" : "0_2350","mainSourceOfIncome" : "SALARY","annualIncome": "0_11500"}
{"businessUse" : ["PAYING_SUPPLIERS_CONTRACTORS_OR_EMPLOYEES", "PAYING_RENT_OR_UTILITIES"],"intendedCountries" : ["deu", "esp"],"monthlyAnticipatedVolume" : "0_1200","mainSourceOfFunding": "BUSINESS_ACTIVITIES"}
curl -L -X POST 'https://api.sandbox.transferwise.tech/v3/profiles/{{profileId}}/verification-status/account-purpose' \-H 'Authorization: Bearer <user access token>' \-H 'Content-Type: application/json' \-d '{"accountPurpose": "MOVING_SAVINGS","intendedCountries": ["deu","esp"],"yearlyAnticipatedVolume": "0_1200","mainSourceOfIncome": "SALARY","annualIncome": "0_11500"}'
Upload document
POST /v3/profiles/{{profileId}}/verification-status/upload-document
Uploads the required documents (e.g. source of wealth document) for a particular profile.
- The document must be clear and high quality.
- The document needs to be a .jpg, .png., or .pdf file type up to 10MB in size.
Source of Wealth document
If SOURCE_OF_WEALTH is mentioned in the 'required_evidences' field of the [webhook]((/features/webhooks-notifications/event-types#cdd-check-state-change), then the consumer must provide a valid document depending on the source_of_income they provided in the account-purpose endpoint.
Here is a list of acceptable documents for each valid source_of_income.
Source of Income | Acceptable documents |
---|---|
SALARY | PaySlip (3 months worth) 3 months of Bank statements/transaction details confirming salary deposits Statements from Payoneer/Paysera/PayAlly/PayPal etc Tax return Employment contract Proof of employment Unemployment allocation Maternity/Paternity allowance/benefit W2 Earnings Summary Bolt courier report / Wolt, Uber or Bolt driver report or other similar UpWork statement E-commerce platform statement Invoice (contractors only) |
INVESTMENTS | Employee stock plan exercise confirmation Investment/portfolio account statement Dividend voucher Share sale confirmation Crypto wallet statement Bank statement confirming income from investments |
PENSION | Pension statement Bank statement confirming pension income |
INHERITANCE | Grant of Probate Will Trust Deed Death certificate (as supporting doc) Bank statement, confirming income from inheritance |
LOAN | Loan Agreement with supporting bank statement showing the amount being received |
OTHER | For example documents that proves: Gift Sold property Receive money from family Scholarship Dividends Renting out property Lottery winnings Divorce Child support Savings Freelancing/Self-employed/Contractor |
curl -L -X POST 'https://api.sandbox.transferwise.tech/v3/profiles/{{profileId}}/verification-status/upload-document' \-H 'Authorization: Bearer <user access token>' \-H 'Content-Type: multipart/form-data' \-F 'files=@sow_document.png'
Upload explanation
POST /v3/profiles/{{profileId}}/verification-status/upload-explanation
Uploads the required explanations (e.g. if we find that your usage does not match your income, we'd ask you for additional explanation of your use case).
Payload
Explanation for income
Explanation for account purpose
curl -L -X POST 'https://api.sandbox.transferwise.tech/v3/profiles/{{profileId}}/verification-status/upload-explanation' \-H 'Authorization: Bearer <user access token>' \-H 'Content-Type: multipart/form-data' \-d '{"incomeExplanation":"I have additional income coming from my shares","accountPurposeExplanation":"I intend to use Wise to send money to my Grandpa"}'
Repapering
Repapering is performing additional verification for existing customers who had registered before 1/1/2023. Only a few selected partners would need to repaper their existing customers.
The process starts by calling an endpoint to get required evidences. This returns required evidences for a customer and should be called before a transfer is created.
- If no evidence is required, then proceed to transfer as usual.
- Otherwise, if one or more evidences required, then the customer should submit account purpose and the process will be similar to the flow above. Once verified, the customer may attempt to create a transfer again.
Sequence Diagram
Get Required Evidences
POST /v3/profiles/{{profileId}}/verification-status/required-evidences
Fetches the required evidences for a profile to complete additional customer verification.
curl -X GET 'https://api.sandbox.transferwise.tech/v3/profiles/{{profileId}}/verification-status/required-evidences' \-H 'Authorization: Bearer <user access token>'
{"required_evidences": []}