Skip to main content

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:
You prefilled name, ID, DOB, and payout method. The user reviews and confirms.
Some fields are prefilled. Missing CIP fields may trigger a data request webhook or a short form.
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:
  1. Partner API (link create)
  2. Partner webhook (PUT /partner/data-requests/:id)
  3. Widget (user input)
Higher-priority data is not overwritten by lower-priority sources. Prefill what you trust; let webhooks and the widget fill gaps.

Next steps

Data requests

Respond to missing CIP fields over webhooks.

M2M flow

Prefill-heavy collect / transfer flow.