Klarna has different requirements on received customer data depending on market. This article will describe what is expected by the merchant for every market to be able to place an order.
We care for two reasons really. The first is that we offer credit to consumers, this means that we need to have enough data to do a proper assessment of risk and fraud. This is only possible if we have consumer data of high quality and in a standardized format. The second reason is due to us also being a part of the order management-process.
Note: Please see that you can share the customer data in either create_session
, load
and authorize
if you are using Klarna Payments. Validation will happen for all entered fields at each call step and added details in every step will be combined.
Best Practice: street_address2
should only be used to add extra details to the address, such as floor, apartment number etc. It should not be used to send in e.g. street number separately. This should be included in the regular street_address field.
Our API can handle both billing and shipping addresses separately. If no shipping address has been entered, we will duplicate the billing address and use that as shipping address in our customer data.
Please note that our risk assessment might differ if the billing and shipping are different addresses, as the fraud risk might be seen as higher.
Also note that if the customer of the billing and shipping address is different, this might also be seen as being a larger risk for fraud.
Klarna Payments can receive customer data for a purchase throughout the session. FromĀ create_sessionĀ and up to theĀ authorizeĀ call. Any customer data added throughout the session will be be merged and taken into account for the risk assessments that takes place at both load and authorize.
Any customer data in a later call will take precedence over customer data entered in a previous call. If new customer data is amended in subsequent call, this will be merged to the previously entered data.
If any mandatory customer data field (see section below for mandatory fields per market) is still missing at point ofĀ authorize, Klarna Payments will respond with an error message. You must collect these and attempt a newĀ authorizeĀ to complete the purchase.
Note: There is also a validation being done during Place Order where the consumer data you send in the create_order
call is validated against the customer data you sent in during the session.
Different markets have different standards when it comes to required input. This is mainly due to the internal standards in a country. E.g. are national identification numbers commonly used in Nordics, while not in other countries. In other countries, titles are important.
You need to provide customer details in the fields marked as Mandatory and Optional below for a good customer experience. If you e.g. provide vital aspects of the address in fieldĀ street_address2Ā in markets where not marked as Optional this will not be used in all customer-centric systems.
Symbol | Meaning |
---|---|
* | Mandatory |
- | Optional |
> | Derived |
! | See notes |
? | Depending on payment method. Klarna will collect in purchase-flow if not added. |
Customer details | Comment |
---|---|
Must include @ and domain. Pattern: (?<local>^[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+)*)@(?<domain>(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?<tld>[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$)) | |
* postal_code | Validation according to Universal Postal Union addressing systems. |
? national_identification_number | Necessary for all credit payment methods and Pay Now. |
* given_name | Customers given name in UTF-8 encoding. Allowed special characters: -'".; \* |
* family_name | Customer family name in UTF-8 encoding. Allowed special characters: -'".; \* |
* street_address | Street name and number. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
- care_of | To address the order to another recipient. B2C purchases only. |
* city | The city. |
* phone | Follow the standards defined in https://github.com/googlei18n/libphonenumber |
> gender - from PNO | |
> date_of_birth - from PNO |
Customer details | Comment |
---|---|
Must include @ and domain. Pattern: (?<local>^[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+)*)@(?<domain>(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?<tld>[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$)) | |
* postal_code | Validation according to Universal Postal Union addressing systems. |
- title | Mr, Ms |
? date_of_birth | Necessary for all credit payment methods and Pay Now. |
* given_name | Customers given name in UTF-8 encoding. Allowed special characters: -'".; \* |
* family_name | Customer family name in UTF-8 encoding. Allowed special characters: -'".; \* |
* street_address | Street name and number. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
- street_address2 | Second address line. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
* city | City field according to the market. |
* phone | Follow the standards defined in https://github.com/googlei18n/libphonenumber |
> gender | Derived from title |
Customer details | Comment |
---|---|
Must include @ and domain. Pattern: (?<local>^[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+)*)@(?<domain>(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?<tld>[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$)) | |
- postal_code (eircode) | Validation according to Universal Postal Union addressing systems |
? date_of_birth | Necessary for all credit payment methods and Pay Now. |
* given_name | Customers given name in UTF-8 encoding. Allowed special characters: -'".; \* |
* family_name | Customers family name in UTF-8 encoding. Allowed special characters: -'".; \* |
* street_address | Street name and number. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
- street_address2 | Second address line. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
* city | The city. |
* region | County, E.G "Antrim". |
* phone | Follow the standards defined in https://github.com/googlei18n/libphonenumber |
Customer details | Comment |
---|---|
Must include @ and domain. Pattern: (?<local>^[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+)*)@(?<domain>(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?<tld>[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$)) | |
* postal_code | Validation according to Universal Postal Union addressing systems. |
? date_of_birth | Necessary for all credit payment methods. |
- title | de:āHerrā, āFrauā; de_CH: āHerr, āFrauā; it_CH: āSig.", āSig.raā; fr_CH: āM", āMmeā |
* given_name | Customers given name in UTF-8 encoding. Allowed special characters: -'".; \* |
* family_name | Customers family name in UTF-8 encoding. Allowed special characters: -'".; \* |
* street_address | Street name and number. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
- care_of | To address the order to another recipient. B2C purchases only. |
* city | The city. |
- phone | Follow the standards defined in https://github.com/googlei18n/libphonenumber |
> gender | Derived from title. |
Customer details | Comment |
---|---|
Must include @ and domain. Pattern: (?<local>^[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+)*)@(?<domain>(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?<tld>[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$)) | |
* postal_code | Validation according to Universal Postal Union addressing systems. |
? date_of_birth | Necessary for all credit payment methods. |
- title | nl: āDhr.", āMevr.ā; nl_BE: āDhrā, āMevrā; fr_BE: āM", āMmeā |
* given_name | Customers given name in UTF-8 encoding. Allowed special characters: -'".; \* |
* family_name | Customers family name in UTF-8 encoding. Allowed special characters: -'".; \* |
* street_address | Street name and number. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
- care_of | To address the order to another recipient. B2C purchases only. |
* city | The city. |
- phone | Follow the standards defined in https://github.com/googlei18n/libphonenumber |
> gender | Derived from title. |
Customer details | Comment |
---|---|
Must include @ and domain. Pattern: (?<local>^[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+)*)@(?<domain>(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?<tld>[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$)) | |
* postal_code | Validation according to Universal Postal Union addressing systems. |
? date_of_birth | Necessary for all credit payment methods. |
? place_of_birth | Necessary for all credit payment methods. |
* given_name | Customers given name in UTF-8 encoding. Allowed special characters: -'".; \* |
* family_name | Customers family name in UTF-8 encoding. Allowed special characters: -'".; \* |
* street_address | Street name and number. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
- street_address2 | Second address line. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
* city | The city. |
* phone | Follow the standards defined in https://github.com/googlei18n/libphonenumber |
Customer details | Comment |
---|---|
Must include @ and domain. Pattern: (?<local>^[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+)*)@(?<domain>(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?<tld>[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$)) | |
* postal_code | Validation according to Universal Postal Union addressing systems. |
? date_of_birth | Necessary for all credit payment methods. |
? place_of_birth | Necessary for all credit payment methods. |
* given_name | Customers given name in UTF-8 encoding. Allowed special characters: -'".; \* |
* family_name | Customers family name in UTF-8 encoding. Allowed special characters: -'".; \* |
* street_address | Street name and number. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
- street_address2 | Second address line. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
* city | The city. |
* region | Province in 2 letter format e.g "AG". |
* phone | Follow the standards defined in https://github.com/googlei18n/libphonenumber |
Customer details | Comment |
---|---|
Must include @ and domain. Pattern: (?<local>^[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+)*)@(?<domain>(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?<tld>[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$)) | |
* postal_code | Validation according to Universal Postal Union addressing systems. |
? date_of_birth | Necessary for all credit payment methods. |
? place_of_birth | Necessary for all credit payment methods. |
* given_name | Customers given name in UTF-8 encoding. Allowed special characters: -'".; \* |
* family_name | Customers family name in UTF-8 encoding. Allowed special characters: -'".; \* |
* street_address | Street name and number. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
- street_address2 | Second address line. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
* city | City field according to the market. |
* phone | Follow the standards defined in https://github.com/googlei18n/libphonenumber |
Customer details | Comment |
---|---|
Must include @ and domain. Pattern: (?<local>^[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+)*)@(?<domain>(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?<tld>[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$)) | |
* postal_code | Validation according to Universal Postal Union addressing systems. |
? date_of_birth | Necessary for all credit payment methods. |
* given_name | Customers given name in UTF-8 encoding. Allowed special characters: -'".; \* |
* family_name | Customer family name in UTF-8 encoding. Allowed special characters: -'".; \* |
* street_address | Street name and number. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
- street_address2 | Address line 2, apartment, suite e.g. apt 2. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
* region | Use two-letter format, state for US: e.g. āCAā for California. Follows ISO 3166-1 alpha-2. Use full province for CA: e.g "ON" for Ontario. |
* city | The city. |
* phone | Follow the standards defined inhttps://github.com/googlei18n/libphonenumber |
Customer details | Comment |
---|---|
Must include @ and domain. Pattern: (?<local>^[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+)*)@(?<domain>(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?<tld>[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$)) | |
* postal_code | Validation according to Universal Postal Union addressing systems. |
? date_of_birth | Necessary for all credit payment methods. |
* given_name | Customers given name in UTF-8 encoding. Allowed special characters: -'".; \* |
* family_name | Customers family name in UTF-8 encoding. Allowed special characters: -'".; \* |
* street_address | Street name and number. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
- street_address2 | Second address line. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
* region | State. Use three-letter format e.g. āQLDā for Queensland. |
* city | The Suburb. |
* phone | Follow the standards defined in https://github.com/googlei18n/libphonenumber |
Customer details | Comment |
---|---|
Must include @ and domain. Pattern: (?<local>^[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+)*)@(?<domain>(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?<tld>[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$)) | |
* postal_code | Validation according to Universal Postal Union addressing systems. |
? date_of_birth | Necessary for all credit payment methods. |
* given_name | Customers given name in UTF-8 encoding. Allowed special characters: -'".; \* |
* family_name | Customers family name in UTF-8 encoding. Allowed special characters: -'".; \* |
* street_address | Street name and number. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
- street_address2 | Second address line. Allowed special characters: -'Ā“`",.:;#&/()+@ °ºįµĀŖ_ \ |
* region | Suburb e.g āā"Avondale" |
* city | The city. |
* phone | Follow the standards defined in https://github.com/googlei18n/libphonenumber |