The trade-off
When you create a magic link, you choose how much end-user data to send up front. More data means less typing in the widget — and usually higher conversion.Prefills and
user.data_request matter most for m2m and request-style configs. Flows like smart and send are designed for minimal create payloads — users complete corridor and payment details in the widget. See M2M flow.What “friction” means
Friction is every step the user must complete before they can confirm a transfer:Low friction
Low friction
You prefilled name, ID, DOB, and payout method. The user reviews and confirms.
Medium friction
Medium friction
Some fields are prefilled. Missing CIP fields may trigger a data request webhook or a short form.
High friction
High friction
Only
referenceId is known. The user enters identity and payment data in the widget and completes CIP.Prefill shape (config.userData)
Typical CIP-related fields (flow-dependent):
Example (m2m):
Progressive enhancement
Start thin, then add data as your systems allow:1
MVP
Mint links with
referenceId only (or use smart). Accept higher friction while you ship.2
Add profile fields
Pass name (and DOB/ID when available) in
config.userData for m2m/request.3
Handle data requests
Implement
user.data_request so you can fill gaps without blocking the user. See Data requests.4
Full prefills
Send complete CIP + payment method when you have trusted KYC data.
Precedence
When the same field arrives from multiple sources, RaaS Widgets keeps the highest-priority value:- Partner API (link create)
- Partner webhook (
PUT /partner/data-requests/:id) - Widget (user input)
Next steps
Data requests
Respond to missing CIP fields over webhooks.
M2M flow
Prefill-heavy collect / transfer flow.