Profile sharing
Ensure that you comply with our privacy terms.
Request and retrieve customer profile information (such as name, address, email, or phone number) securely during the payment process, with explicit user consent.
Profile sharing is used in various payment flows:
- Required for Express - customers must share name, address, phone, and email for shipping
- Optional for standard payments - request specific profile details as needed
User consent flowโ
When you request profile information, a consent screen is displayed in the user's Vipps
or MobilePay
app before the payment screen.
- Vipps
- MobilePay


The user must complete both the consent screen and the payment screen before you get access to their profile information. If the user doesn't consent, the payment will fail.
Use as few scopes as possible to reduce the risk that the user cancels the payment.
Requesting profile informationโ
To request access to user profile information, include the profile.scope property in your POST:/epayment/v1/payments request.
Available scope valuesโ
Specify which profile details you need by including them in profile.scope, separated by spaces:
address- User's registered address(es)birthDate- User's date of birthemail- User's email addressname- User's full name (first and last)phoneNumber- User's phone numbernin- National identity number (special cases only)
See Userinfo API guide: scope for complete details.
Example requestโ
curl -X POST https://apitest.vipps.no/epayment/v1/payments \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR-ACCESS-TOKEN" \
-H "Ocp-Apim-Subscription-Key: YOUR-SUBSCRIPTION-KEY" \
-H "Merchant-Serial-Number: YOUR-MSN" \
-H "Idempotency-Key: YOUR-IDEMPOTENCY-KEY" \
-H "Vipps-System-Name: acme" \
-H "Vipps-System-Version: 3.1.2" \
-H "Vipps-System-Plugin-Name: acme-webshop" \
-H "Vipps-System-Plugin-Version: 4.5.6" \
-d '{
"amount": {
"value": 49900,
"currency": "NOK"
},
"paymentMethod": {
"type": "WALLET"
},
"customer": {
"phoneNumber": 4712345678
},
"reference": UNIQUE-PAYMENT-REFERENCE,
"userFlow": "WEB_REDIRECT",
"returnUrl": "https://example.com/redirect?reference=UNIQUE-PAYMENT-REFERENCE",
"paymentDescription": "Purchase of socks",
"profile": {
"scope": "name phoneNumber address birthDate"
}
}'
The user will see a consent screen in their app for any profile information they haven't previously shared with your sales unit. The consent must be accepted before they can complete the payment.
Retrieving profile dataโ
After the payment is approved, retrieve the profile information using GET:/epayment/v1/payments/{reference}.
The response includes:
userDetails- The profile information you requestedprofile.sub- A unique user identifier for this sales unit
Example responseโ
{
"profile": {
"sub": "126684df-c056-4625-821d-f2905febe3f9"
},
"userDetails": {
"email": "test.user@example.com",
"firstName": "Test",
"lastName": "User",
"mobileNumber": "4712345678",
"dateOfBirth": "1955-05-18",
"addresses": [
{
"addressLine1": "BOKS 6300, ETTERSTAD",
"addressLine2": "",
"city": "OSLO",
"country": "NO",
"postCode": "0603"
},
{
"addressLine1": "Robert Levins gate 5",
"addressLine2": "",
"city": "Oslo",
"country": "NO",
"postCode": "0152"
}
]
},
// ... other items here....
}
userDetails objectโ
The userDetails object contains the profile information you requested via scope:
email- User's email addressfirstName- User's first namelastName- User's last namemobileNumber- User's phone numberdateOfBirth- User's date of birthaddresses- Array of user's addresses
The sub identifierโ
The profile.sub is a unique identifier for a Vipps MobilePay user, tied to their consent with your specific sales unit.
Use the sub to retrieve additional verified information via the Userinfo API, such as:
- Verified email and phone number status
- Alternative addresses
- National identity number (
nin) in special cases
Getting additional profile details (optional)โ
For more detailed or verified profile information, call GET:/vipps-userinfo-api/userinfo/{sub} using the sub from the payment response.
Example Userinfo API responseโ
{
"address": {
"address_type": "home",
"country": "NO",
"formatted": "BOKS 6300, ETTERSTAD\n0603\nOSLO\nNO",
"postal_code": "0603",
"region": "OSLO",
"street_address": "BOKS 6300, ETTERSTAD"
},
"birthdate": "1955-05-18",
"email": "test.user@example.com",
"email_verified": false,
"family_name": "User",
"given_name": "Test",
"name": "Test User",
"other_addresses": [
{
"address_type": "work",
"country": "NO",
"formatted": "Robert Levins gate 5\n0152\nOslo\nNO",
"postal_code": "0152",
"region": "Oslo",
"street_address": "Robert Levins gate 5"
}
],
"phone_number": "4748571123",
"phone_number_verified": true,
"sid": "57bccee36b19600c",
"sub": "126684df-c056-4625-821d-f2905febe3f9"
}
Consent validityโ
User consents remain valid for 7 days. Fetch the user's information as soon as consent is given to ensure data accuracy.
See alsoโ
- Userinfo API guide - Complete documentation for retrieving and managing user profile data
- Express feature - Express checkout uses profile sharing for shipping address