The checkout process is the final step in the buying experience, involving payment and order confirmation. This process is governed by business rules defined in Norce Commerce. Your solution must comply with these rules to ensure a successful purchase.
To use the checkout process, you must have:
- A basket with items
- At least one payment method configured
- At least one delivery method configured
References:
Example: Checkout Object (JSON and XML)
{
"Basket": {
"Id": 6600304,
"CustomerId": null,
"CompanyId": null,
"SalesContactId": null,
"StatusId": 3,
"CurrencyId": 2,
"CurrencyCode": "SEK",
"Comment": null,
"OrderReference": null,
"DiscountCode": null,
"ReferId": null,
"ReferUrl": null,
"ValidTo": null,
"IsEditable": true,
"Items": [
{
"Id": 16030464,
"LineNo": 1,
"ParentLineNo": null,
"ProductId": 31234584,
"PartNo": "PRD0001270",
"ManufacturerPartNo": "T540XP",
"Name": "T540XP",
"SubHeader": "<p>Detta är en kort beskrivning.</p>",
"ThumbnailImage": "2/thumb_p31234584.jpg",
"FlagIdSeed": "915,1884",
"Type": 1,
"PriceDisplay": 5743.20,
"Price": 0.00,
"PriceOriginal": 5743.20,
"Cost": 5734.34,
"VatRate": 1.2500,
"Quantity": 1.000,
"UOM": "st",
"UOMCount": 1.000,
"Comment": null,
"PriceListId": 4654,
"ReferId": null,
"ReferUrl": null,
"IsEditable": true,
"IsDiscountable": true,
"Info": [
{
"TypeId": 209,
"Value": "",
"Code": "bit_size"
},
{
"TypeId": 241,
"Value": "",
"Code": "bit_del_time"
},
{
"TypeId": 95,
"Value": "",
"Code": "bit_additionalinformation"
}
],
"OptionalItems": [],
"OnHandValue": 0.000,
"IncomingValue": 0.000,
"NextDeliveryDate": null,
"LeadtimeDayCount": null,
"PromotionIdSeed": "",
"ImageKey": "39e4b7ec-12d8-4f6e-b9c1-cbd7334190e1",
"ManufacturerName": "Husqvarna",
"CategoryId": 41722,
"OnHand": {
"Value": 0.000,
"IncomingValue": 0.000,
"NextDeliveryDate": null,
"LeadtimeDayCount": null,
"LastChecked": null,
"IsActive": false,
"IsReturnable": true,
"Info": null
},
"OnHandSupplier": {
"Value": 200.000,
"IncomingValue": 0.000,
"NextDeliveryDate": null,
"LeadtimeDayCount": 7,
"LastChecked": null,
"IsActive": true,
"IsReturnable": true,
"Info": null
},
"PriceRecommended": 7000.00,
"ManufacturerId": 1685,
"UniqueName": "t540xp",
"StatusId": 1,
"StockDisplayBreakPoint": null,
"PriceCatalog": null,
"IsBuyable": true,
"SubDescription": null,
"CategoryIdSeed": "41722",
"RecommendedQuantity": 4.000,
"IsRecommendedQuantityFixed": false,
"AppliedPromotions": [],
"RequirementPromotionIdSeed": "5093",
"IsSubscribable": false,
"DescriptionHeader": "Husqvarna T540XP",
"IsPriceManual": false,
"PriceStandard": 6375.20,
"EanCode": "123123123123123",
"CostUnit": 0.00,
"PriceDisplayIncVat": 7179.00
},
{
"Id": 16030465,
"LineNo": 2,
"ParentLineNo": null,
"ProductId": 24706222,
"PartNo": "PRD0001212",
"ManufacturerPartNo": "FREIGHT01",
"Name": "Freight",
"SubHeader": null,
"ThumbnailImage": null,
"FlagIdSeed": "915",
"Type": 3,
"PriceDisplay": 0.00,
"Price": 0.00,
"PriceOriginal": 0.00,
"Cost": 0.00,
"VatRate": 1.25,
"Quantity": 1.000,
"UOM": "st",
"UOMCount": 1.000,
"Comment": null,
"PriceListId": 1,
"ReferId": null,
"ReferUrl": null,
"IsEditable": true,
"IsDiscountable": true,
"Info": [
{
"TypeId": 209,
"Value": "",
"Code": "bit_size"
},
{
"TypeId": 241,
"Value": "",
"Code": "bit_del_time"
},
{
"TypeId": 95,
"Value": "",
"Code": "bit_additionalinformation"
}
],
"OptionalItems": [],
"OnHandValue": 0.000,
"IncomingValue": 0.000,
"NextDeliveryDate": null,
"LeadtimeDayCount": 0,
"PromotionIdSeed": null,
"ImageKey": null,
"ManufacturerName": "Miscellaneous",
"CategoryId": null,
"OnHand": {
"Value": 0.000,
"IncomingValue": 0.000,
"NextDeliveryDate": null,
"LeadtimeDayCount": 0,
"LastChecked": "/Date(1325504774807+0100)/",
"IsActive": true,
"IsReturnable": true,
"Info": null
},
"OnHandSupplier": {
"Value": 0.000,
"IncomingValue": 0.000,
"NextDeliveryDate": null,
"LeadtimeDayCount": null,
"LastChecked": null,
"IsActive": false,
"IsReturnable": true,
"Info": null
},
"PriceRecommended": null,
"ManufacturerId": 4335,
"UniqueName": "freight",
"StatusId": 1,
"StockDisplayBreakPoint": null,
"PriceCatalog": null,
"IsBuyable": true,
"SubDescription": null,
"CategoryIdSeed": "",
"RecommendedQuantity": 1.000,
"IsRecommendedQuantityFixed": false,
"AppliedPromotions": [],
"RequirementPromotionIdSeed": null,
"IsSubscribable": false,
"DescriptionHeader": null,
"IsPriceManual": false,
"PriceStandard": 0.00,
"EanCode": "",
"CostUnit": 0.00,
"PriceDisplayIncVat": 0.00
},
{
"Id": 0,
"LineNo": 3,
"ParentLineNo": 1,
"ProductId": 31234588,
"PartNo": "PRD0001274",
"ManufacturerPartNo": "Underhållskit",
"Name": "Underhållskit Motorsåg",
"SubHeader": null,
"ThumbnailImage": "2/thumb_p31234588.png",
"FlagIdSeed": "915",
"Type": 1,
"PriceDisplay": 111.20,
"Price": 0.00,
"PriceOriginal": 111.20,
"Cost": 100.25,
"VatRate": 1.25,
"Quantity": 1,
"UOM": "st",
"UOMCount": 1.000,
"Comment": null,
"PriceListId": 1,
"ReferId": null,
"ReferUrl": null,
"IsEditable": false,
"IsDiscountable": true,
"Info": [
{
"TypeId": 209,
"Value": "",
"Code": "bit_size"
},
{
"TypeId": 241,
"Value": "",
"Code": "bit_del_time"
},
{
"TypeId": 95,
"Value": "",
"Code": "bit_additionalinformation"
}
],
"OptionalItems": [],
"OnHandValue": 12.000,
"IncomingValue": 0.000,
"NextDeliveryDate": null,
"LeadtimeDayCount": 0,
"PromotionIdSeed": "",
"ImageKey": null,
"ManufacturerName": "Husqvarna",
"CategoryId": 41722,
"OnHand": {
"Value": 12.000,
"IncomingValue": 0.000,
"NextDeliveryDate": null,
"LeadtimeDayCount": 0,
"LastChecked": null,
"IsActive": true,
"IsReturnable": true,
"Info": null
},
"OnHandSupplier": {
"Value": 133.000,
"IncomingValue": 0.000,
"NextDeliveryDate": null,
"LeadtimeDayCount": 5,
"LastChecked": "/Date(1487085555163+0100)/",
"IsActive": true,
"IsReturnable": true,
"Info": null
},
"PriceRecommended": null,
"ManufacturerId": 1685,
"UniqueName": "underhallskit-motorsag",
"StatusId": 1,
"StockDisplayBreakPoint": null,
"PriceCatalog": null,
"IsBuyable": true,
"SubDescription": null,
"CategoryIdSeed": "41722",
"RecommendedQuantity": 1.000,
"IsRecommendedQuantityFixed": false,
"AppliedPromotions": [],
"RequirementPromotionIdSeed": "",
"IsSubscribable": false,
"DescriptionHeader": null,
"IsPriceManual": false,
"PriceStandard": 0.00,
"EanCode": "345345345345345",
"CostUnit": 0.00,
"PriceDisplayIncVat": 139.00
}
],
"Info": [
{
"TypeId": 169,
"Value": "",
"Code": "bit_expecteddeliverydate"
},
{
"TypeId": 293,
"Value": "",
"Code": "bit_additionalorderinfo"
},
{
"TypeId": 445,
"Value": "",
"Code": "Norce_Gender"
},
{
"TypeId": 493,
"Value": "",
"Code": "recurring"
}
],
"Summary": {
"Items": {
"Amount": 5854.40,
"Vat": 1463.60,
"AmountIncVat": 7318.00
},
"Freigt": {
"Amount": 0.00,
"Vat": 0.00,
"AmountIncVat": 0.00
},
"Fees": {
"Amount": 0.00,
"Vat": 0.00,
"AmountIncVat": 0.00
},
"Total": {
"Amount": 5854.40,
"Vat": 1463.60,
"AmountIncVat": 7318.00
}
},
"AppliedPromotions": [
{
"Id": 5093,
"Name": "Add service",
"Header": "",
"ShortDescription": "",
"Description1": "",
"Description2": "",
"StartDate": null,
"EndDate": null,
"ImageKey": null,
"RequirementSeed": "3",
"DiscountCode": null,
"IsExcludedFromPriceCalculation": false,
"AllowProductListing": false,
"Images": [],
"ProductFilters": [
{
"ManufacturerId": null,
"CategorySeed": null,
"TypeId": null,
"ProductId": null,
"VariantProductId": null,
"PartNo": "PRD0001274",
"PricelistId": 1,
"FlagId": null
},
{
"ManufacturerId": null,
"CategorySeed": null,
"TypeId": null,
"ProductId": null,
"VariantProductId": null,
"PartNo": null,
"PricelistId": null,
"FlagId": 1884
}
],
"AppliedAmount": 0.00,
"EffectSeed": "5",
"FreightDiscountPct": null,
"IsStackable": true,
"AppliedAmountIncVat": 0.00
}
],
"IpAddress": "151.236.200.213",
"AttestedBy": null,
"TypeId": 1,
"DoHold": false,
"IsBuyable": true,
"InvoiceReference": null,
"PaymentMethodId": 14,
"DeliveryMethodId": 1,
"SalesAreaId": 1
},
"Buyer": {
"Id": null,
"Key": "86830286-d988-442d-b741-30e637da1880",
"Code": null,
"Email": "test@test.se",
"SSN": null,
"FirstName": "TestBuyerName",
"LastName": "TestBuyerLastname",
"Phone": null,
"CellPhone": null,
"ReferId": null,
"ReferUrl": null,
"Account": {
"Id": null,
"Key": "86830286-d988-442d-b741-30e637da1880",
"LoginName": null,
"Name": null,
"Roles": null,
"Authorizations": null,
"IsActive": false
},
"Companies": [],
"DeliveryAddresses": [],
"InvoiceAddress": null,
"Flags": null,
"UseInvoiceAddressAsDeliveryAddress": false,
"Info": null,
"PricelistIds": null,
"CrmId": null,
"IsActive": null,
"Created": null,
"Updated": null
},
"Payer": {
"Id": null,
"Key": "99a312c9-003a-4063-8310-b745e7e27f1e",
"Code": null,
"Email": "test@test.se",
"SSN": null,
"FirstName": "TestBuyerName",
"LastName": "TestBuyerLastname",
"Phone": null,
"CellPhone": null,
"ReferId": null,
"ReferUrl": null,
"Account": {
"Id": null,
"Key": "99a312c9-003a-4063-8310-b745e7e27f1e",
"LoginName": null,
"Name": null,
"Roles": null,
"Authorizations": null,
"IsActive": false
},
"Companies": [],
"DeliveryAddresses": [],
"InvoiceAddress": {
"Id": 12055560,
"CareOf": null,
"Line1": "TestInvoicestreet 1",
"Line2": null,
"Zip": "12345",
"City": "TestCity",
"CountryId": 1,
"Country": "Sverige",
"Region": null,
"IsValidated": false,
"GlobalLocationNo": null,
"ShippingPhoneNumber": null
},
"Flags": null,
"UseInvoiceAddressAsDeliveryAddress": false,
"Info": null,
"PricelistIds": null,
"CrmId": null,
"IsActive": null,
"Created": null,
"Updated": null
},
"ShipTo": {
"Id": null,
"Key": "3466a97f-f1fa-4ff1-8ae9-ea641467f584",
"Code": null,
"Email": "test@test.se",
"SSN": null,
"FirstName": "TestBuyerName",
"LastName": "TestBuyerLastname",
"Phone": null,
"CellPhone": null,
"ReferId": null,
"ReferUrl": null,
"Account": {
"Id": null,
"Key": "3466a97f-f1fa-4ff1-8ae9-ea641467f584",
"LoginName": null,
"Name": null,
"Roles": null,
"Authorizations": null,
"IsActive": false
},
"Companies": [],
"DeliveryAddresses": [
{
"Id": 12055561,
"CareOf": null,
"Line1": "TestInvoicestreet 1",
"Line2": null,
"Zip": "12345",
"City": "TestCity",
"CountryId": 1,
"Country": "Sverige",
"Region": null,
"IsValidated": false,
"GlobalLocationNo": null,
"ShippingPhoneNumber": null
}
],
"InvoiceAddress": null,
"Flags": null,
"UseInvoiceAddressAsDeliveryAddress": false,
"Info": null,
"PricelistIds": null,
"CrmId": null,
"IsActive": null,
"Created": null,
"Updated": null
},
"PaymentMethods": [
{
"Id": 14,
"Name": "Faktura",
"TypeId": 7,
"TypeName": "ErpInvoice",
"Description": "30 dagars faktura",
"PartNo": null,
"Price": 0.00,
"VatRate": 1.00,
"ImagePath": null,
"IsSelected": true,
"Service": {
"Id": 3,
"Name": "No service",
"Description": null,
"ImagePath": null,
"ImageKey": null
},
"ImageKey": null,
"IsForCompanyOnly": false,
"IsForPersonOnly": false
},
{
"Id": 18,
"Name": "Presentkort",
"TypeId": 9,
"TypeName": "GiftCertificate",
"Description": "Used for giftcards handeled by an ERP or other source outside of Norce Commerce",
"PartNo": null,
"Price": 0.00,
"VatRate": 1.00,
"ImagePath": null,
"IsSelected": false,
"Service": {
"Id": 3,
"Name": "No service",
"Description": null,
"ImagePath": null,
"ImageKey": null
},
"ImageKey": null,
"IsForCompanyOnly": false,
"IsForPersonOnly": false
},
{
"Id": 157,
"Name": "Svea Ekonomi",
"TypeId": 19,
"TypeName": "Checkout",
"Description": "Form checkout payment.",
"PartNo": null,
"Price": 0.00,
"VatRate": 1.00,
"ImagePath": null,
"IsSelected": false,
"Service": {
"Id": 19,
"Name": "SveaEkonomi",
"Description": null,
"ImagePath": null,
"ImageKey": null
},
"ImageKey": null,
"IsForCompanyOnly": false,
"IsForPersonOnly": false
},
{
"Id": 162,
"Name": "Adyen checkout",
"TypeId": 19,
"TypeName": "Checkout",
"Description": "Form checkout payment.",
"PartNo": null,
"Price": 0.00,
"VatRate": 1.00,
"ImagePath": null,
"IsSelected": false,
"Service": {
"Id": 27,
"Name": "AdyenV67",
"Description": null,
"ImagePath": null,
"ImageKey": null
},
"ImageKey": null,
"IsForCompanyOnly": false,
"IsForPersonOnly": false
},
{
"Id": 156,
"Name": "Klarna Checkout v3 (Recurrable)",
"TypeId": 19,
"TypeName": "Checkout",
"Description": "Form checkout payment.",
"PartNo": null,
"Price": 0.00,
"VatRate": 1.00,
"ImagePath": null,
"IsSelected": false,
"Service": {
"Id": 18,
"Name": "KlarnaCheckoutV3",
"Description": null,
"ImagePath": null,
"ImageKey": null
},
"ImageKey": null,
"IsForCompanyOnly": false,
"IsForPersonOnly": false
},
{
"Id": 160,
"Name": "Dibs Easy Pay",
"TypeId": 19,
"TypeName": "Checkout",
"Description": "Form checkout payment.",
"PartNo": null,
"Price": 0.00,
"VatRate": 1.00,
"ImagePath": null,
"IsSelected": false,
"Service": {
"Id": 22,
"Name": "DibsEasyCheckout",
"Description": null,
"ImagePath": null,
"ImageKey": null
},
"ImageKey": null,
"IsForCompanyOnly": false,
"IsForPersonOnly": false
},
{
"Id": 166,
"Name": "Walley B2B",
"TypeId": 19,
"TypeName": "Checkout",
"Description": "",
"PartNo": null,
"Price": 0.00,
"VatRate": 1.00,
"ImagePath": null,
"IsSelected": false,
"Service": {
"Id": 24,
"Name": "Collector",
"Description": null,
"ImagePath": null,
"ImageKey": null
},
"ImageKey": null,
"IsForCompanyOnly": false,
"IsForPersonOnly": false
}
],
"DeliveryMethods": [
{
"Id": 1,
"Name": "DB Schenker Utlämningsställe",
"TypeId": 6,
"TypeName": "Utlämning",
"Description": "DB Schenker leverans till vald utlämningsställe",
"PartNo": "PRD0001212",
"Price": 0.0000,
"VatRate": 1.25,
"IsNotifiable": false,
"ImagePath": null,
"IsSelected": true,
"ImageKey": null,
"IsForCompanyOnly": false,
"IsForPersonOnly": false,
"Cost": 0.0000,
"StoreId": null,
"WarehouseId": null,
"LocationId": null,
"DropPoints": [],
"Code": "DBS-UTL",
"Carrier": null
},
{
"Id": 7,
"Name": "Hempaket kväll",
"TypeId": 1,
"TypeName": "Hemleverans",
"Description": "Leverans sker hem mellan 17:00 och 22:00.",
"PartNo": "PRD0001212",
"Price": 49.0000,
"VatRate": 1.2500,
"IsNotifiable": false,
"ImagePath": null,
"IsSelected": false,
"ImageKey": null,
"IsForCompanyOnly": false,
"IsForPersonOnly": true,
"Cost": 0.0000,
"StoreId": null,
"WarehouseId": null,
"LocationId": null,
"DropPoints": [],
"Code": "HEMPK",
"Carrier": null
}
],
"Payments": []
}
<Checkout xmlns="Enferno.Services.Contracts.Expose.Shopping" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Basket>
<Id>6600304</Id>
<CustomerId i:nil="true"/>
<CompanyId i:nil="true"/>
<SalesContactId i:nil="true"/>
<StatusId>3</StatusId>
<CurrencyId>2</CurrencyId>
<CurrencyCode>SEK</CurrencyCode>
<Comment i:nil="true"/>
<OrderReference i:nil="true"/>
<DiscountCode i:nil="true"/>
<ReferId i:nil="true"/>
<ReferUrl i:nil="true"/>
<ValidTo i:nil="true"/>
<IsEditable>true</IsEditable>
<Items>
<BasketItem>
<Id>16030464</Id>
<LineNo>1</LineNo>
<ParentLineNo i:nil="true"/>
<ProductId>31234584</ProductId>
<PartNo>PRD0001270</PartNo>
<ManufacturerPartNo>T540XP</ManufacturerPartNo>
<Name>T540XP</Name>
<SubHeader><p>Detta är en kort beskrivning.</p></SubHeader>
<ThumbnailImage>2/thumb_p31234584.jpg</ThumbnailImage>
<FlagIdSeed>915,1884</FlagIdSeed>
<Type>1</Type>
<PriceDisplay>5743.20</PriceDisplay>
<Price>0.00</Price>
<PriceOriginal>5743.20</PriceOriginal>
<Cost>5734.34</Cost>
<VatRate>1.2500</VatRate>
<Quantity>1.000</Quantity>
<UOM>st</UOM>
<UOMCount>1.000</UOMCount>
<Comment i:nil="true"/>
<PriceListId>4654</PriceListId>
<ReferId i:nil="true"/>
<ReferUrl i:nil="true"/>
<IsEditable>true</IsEditable>
<IsDiscountable>true</IsDiscountable>
<Info>
<Info>
<TypeId>209</TypeId>
<Value/>
<Code>bit_size</Code>
</Info>
<Info>
<TypeId>241</TypeId>
<Value/>
<Code>bit_del_time</Code>
</Info>
<Info>
<TypeId>95</TypeId>
<Value/>
<Code>bit_additionalinformation</Code>
</Info>
</Info>
<OptionalItems/>
<OnHandValue>0.000</OnHandValue>
<IncomingValue>0.000</IncomingValue>
<NextDeliveryDate i:nil="true"/>
<LeadtimeDayCount i:nil="true"/>
<PromotionIdSeed/>
<ImageKey>39e4b7ec-12d8-4f6e-b9c1-cbd7334190e1</ImageKey>
<ManufacturerName>Husqvarna</ManufacturerName>
<CategoryId>41722</CategoryId>
<OnHand xmlns:a="Enferno.Services.Contracts.Expose.Products">
<a:Value>0.000</a:Value>
<a:IncomingValue>0.000</a:IncomingValue>
<a:NextDeliveryDate i:nil="true"/>
<a:LeadtimeDayCount i:nil="true"/>
<a:LastChecked i:nil="true"/>
<a:IsActive>false</a:IsActive>
<a:IsReturnable>true</a:IsReturnable>
<a:Info i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
</OnHand>
<OnHandSupplier xmlns:a="Enferno.Services.Contracts.Expose.Products">
<a:Value>200.000</a:Value>
<a:IncomingValue>0.000</a:IncomingValue>
<a:NextDeliveryDate i:nil="true"/>
<a:LeadtimeDayCount>7</a:LeadtimeDayCount>
<a:LastChecked i:nil="true"/>
<a:IsActive>true</a:IsActive>
<a:IsReturnable>true</a:IsReturnable>
<a:Info i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
</OnHandSupplier>
<PriceRecommended>7000.00</PriceRecommended>
<ManufacturerId>1685</ManufacturerId>
<UniqueName>t540xp</UniqueName>
<StatusId>1</StatusId>
<StockDisplayBreakPoint i:nil="true"/>
<PriceCatalog i:nil="true"/>
<IsBuyable>true</IsBuyable>
<SubDescription i:nil="true"/>
<CategoryIdSeed>41722</CategoryIdSeed>
<RecommendedQuantity>4.000</RecommendedQuantity>
<IsRecommendedQuantityFixed>false</IsRecommendedQuantityFixed>
<AppliedPromotions/>
<RequirementPromotionIdSeed>5093</RequirementPromotionIdSeed>
<IsSubscribable>false</IsSubscribable>
<DescriptionHeader>Husqvarna T540XP</DescriptionHeader>
<IsPriceManual>false</IsPriceManual>
<PriceStandard>6375.20</PriceStandard>
<EanCode>123123123123123</EanCode>
<CostUnit>0.00</CostUnit>
<PriceDisplayIncVat>7179.00</PriceDisplayIncVat>
</BasketItem>
<BasketItem>
<Id>16030465</Id>
<LineNo>2</LineNo>
<ParentLineNo i:nil="true"/>
<ProductId>24706222</ProductId>
<PartNo>PRD0001212</PartNo>
<ManufacturerPartNo>FREIGHT01</ManufacturerPartNo>
<Name>Freight</Name>
<SubHeader i:nil="true"/>
<ThumbnailImage i:nil="true"/>
<FlagIdSeed>915</FlagIdSeed>
<Type>3</Type>
<PriceDisplay>0.00</PriceDisplay>
<Price>0.00</Price>
<PriceOriginal>0.00</PriceOriginal>
<Cost>0.00</Cost>
<VatRate>1.25</VatRate>
<Quantity>1.000</Quantity>
<UOM>st</UOM>
<UOMCount>1.000</UOMCount>
<Comment i:nil="true"/>
<PriceListId>1</PriceListId>
<ReferId i:nil="true"/>
<ReferUrl i:nil="true"/>
<IsEditable>true</IsEditable>
<IsDiscountable>true</IsDiscountable>
<Info>
<Info>
<TypeId>209</TypeId>
<Value/>
<Code>bit_size</Code>
</Info>
<Info>
<TypeId>241</TypeId>
<Value/>
<Code>bit_del_time</Code>
</Info>
<Info>
<TypeId>95</TypeId>
<Value/>
<Code>bit_additionalinformation</Code>
</Info>
</Info>
<OptionalItems/>
<OnHandValue>0.000</OnHandValue>
<IncomingValue>0.000</IncomingValue>
<NextDeliveryDate i:nil="true"/>
<LeadtimeDayCount>0</LeadtimeDayCount>
<PromotionIdSeed i:nil="true"/>
<ImageKey i:nil="true"/>
<ManufacturerName>Miscellaneous</ManufacturerName>
<CategoryId i:nil="true"/>
<OnHand xmlns:a="Enferno.Services.Contracts.Expose.Products">
<a:Value>0.000</a:Value>
<a:IncomingValue>0.000</a:IncomingValue>
<a:NextDeliveryDate i:nil="true"/>
<a:LeadtimeDayCount>0</a:LeadtimeDayCount>
<a:LastChecked>2012-01-02T12:46:14.807</a:LastChecked>
<a:IsActive>true</a:IsActive>
<a:IsReturnable>true</a:IsReturnable>
<a:Info i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
</OnHand>
<OnHandSupplier xmlns:a="Enferno.Services.Contracts.Expose.Products">
<a:Value>0.000</a:Value>
<a:IncomingValue>0.000</a:IncomingValue>
<a:NextDeliveryDate i:nil="true"/>
<a:LeadtimeDayCount i:nil="true"/>
<a:LastChecked i:nil="true"/>
<a:IsActive>false</a:IsActive>
<a:IsReturnable>true</a:IsReturnable>
<a:Info i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
</OnHandSupplier>
<PriceRecommended i:nil="true"/>
<ManufacturerId>4335</ManufacturerId>
<UniqueName>freight</UniqueName>
<StatusId>1</StatusId>
<StockDisplayBreakPoint i:nil="true"/>
<PriceCatalog i:nil="true"/>
<IsBuyable>true</IsBuyable>
<SubDescription i:nil="true"/>
<CategoryIdSeed/>
<RecommendedQuantity>1.000</RecommendedQuantity>
<IsRecommendedQuantityFixed>false</IsRecommendedQuantityFixed>
<AppliedPromotions/>
<RequirementPromotionIdSeed i:nil="true"/>
<IsSubscribable>false</IsSubscribable>
<DescriptionHeader i:nil="true"/>
<IsPriceManual>false</IsPriceManual>
<PriceStandard>0.00</PriceStandard>
<EanCode/>
<CostUnit>0.00</CostUnit>
<PriceDisplayIncVat>0.00</PriceDisplayIncVat>
</BasketItem>
<BasketItem>
<Id>0</Id>
<LineNo>3</LineNo>
<ParentLineNo>1</ParentLineNo>
<ProductId>31234588</ProductId>
<PartNo>PRD0001274</PartNo>
<ManufacturerPartNo>Underhållskit</ManufacturerPartNo>
<Name>Underhållskit Motorsåg</Name>
<SubHeader i:nil="true"/>
<ThumbnailImage>2/thumb_p31234588.png</ThumbnailImage>
<FlagIdSeed>915</FlagIdSeed>
<Type>1</Type>
<PriceDisplay>111.20</PriceDisplay>
<Price>0.00</Price>
<PriceOriginal>111.20</PriceOriginal>
<Cost>100.25</Cost>
<VatRate>1.25</VatRate>
<Quantity>1</Quantity>
<UOM>st</UOM>
<UOMCount>1.000</UOMCount>
<Comment i:nil="true"/>
<PriceListId>1</PriceListId>
<ReferId i:nil="true"/>
<ReferUrl i:nil="true"/>
<IsEditable>false</IsEditable>
<IsDiscountable>true</IsDiscountable>
<Info>
<Info>
<TypeId>209</TypeId>
<Value/>
<Code>bit_size</Code>
</Info>
<Info>
<TypeId>241</TypeId>
<Value/>
<Code>bit_del_time</Code>
</Info>
<Info>
<TypeId>95</TypeId>
<Value/>
<Code>bit_additionalinformation</Code>
</Info>
</Info>
<OptionalItems/>
<OnHandValue>12.000</OnHandValue>
<IncomingValue>0.000</IncomingValue>
<NextDeliveryDate i:nil="true"/>
<LeadtimeDayCount>0</LeadtimeDayCount>
<PromotionIdSeed/>
<ImageKey i:nil="true"/>
<ManufacturerName>Husqvarna</ManufacturerName>
<CategoryId>41722</CategoryId>
<OnHand xmlns:a="Enferno.Services.Contracts.Expose.Products">
<a:Value>12.000</a:Value>
<a:IncomingValue>0.000</a:IncomingValue>
<a:NextDeliveryDate i:nil="true"/>
<a:LeadtimeDayCount>0</a:LeadtimeDayCount>
<a:LastChecked i:nil="true"/>
<a:IsActive>true</a:IsActive>
<a:IsReturnable>true</a:IsReturnable>
<a:Info i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
</OnHand>
<OnHandSupplier xmlns:a="Enferno.Services.Contracts.Expose.Products">
<a:Value>133.000</a:Value>
<a:IncomingValue>0.000</a:IncomingValue>
<a:NextDeliveryDate i:nil="true"/>
<a:LeadtimeDayCount>5</a:LeadtimeDayCount>
<a:LastChecked>2017-02-14T16:19:15.163</a:LastChecked>
<a:IsActive>true</a:IsActive>
<a:IsReturnable>true</a:IsReturnable>
<a:Info i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
</OnHandSupplier>
<PriceRecommended i:nil="true"/>
<ManufacturerId>1685</ManufacturerId>
<UniqueName>underhallskit-motorsag</UniqueName>
<StatusId>1</StatusId>
<StockDisplayBreakPoint i:nil="true"/>
<PriceCatalog i:nil="true"/>
<IsBuyable>true</IsBuyable>
<SubDescription i:nil="true"/>
<CategoryIdSeed>41722</CategoryIdSeed>
<RecommendedQuantity>1.000</RecommendedQuantity>
<IsRecommendedQuantityFixed>false</IsRecommendedQuantityFixed>
<AppliedPromotions/>
<RequirementPromotionIdSeed/>
<IsSubscribable>false</IsSubscribable>
<DescriptionHeader i:nil="true"/>
<IsPriceManual>false</IsPriceManual>
<PriceStandard>0.00</PriceStandard>
<EanCode>345345345345345</EanCode>
<CostUnit>0.00</CostUnit>
<PriceDisplayIncVat>139.00</PriceDisplayIncVat>
</BasketItem>
</Items>
<Info>
<Info>
<TypeId>169</TypeId>
<Value/>
<Code>bit_expecteddeliverydate</Code>
</Info>
<Info>
<TypeId>293</TypeId>
<Value/>
<Code>bit_additionalorderinfo</Code>
</Info>
<Info>
<TypeId>445</TypeId>
<Value/>
<Code>Norce_Gender</Code>
</Info>
<Info>
<TypeId>493</TypeId>
<Value/>
<Code>recurring</Code>
</Info>
</Info>
<Summary>
<Items>
<Amount>5854.40</Amount>
<Vat>1463.60</Vat>
<AmountIncVat>7318.00</AmountIncVat>
</Items>
<Freigt>
<Amount>0.00</Amount>
<Vat>0.00</Vat>
<AmountIncVat>0.00</AmountIncVat>
</Freigt>
<Fees>
<Amount>0.00</Amount>
<Vat>0.00</Vat>
<AmountIncVat>0.00</AmountIncVat>
</Fees>
<Total>
<Amount>5854.40</Amount>
<Vat>1463.60</Vat>
<AmountIncVat>7318.00</AmountIncVat>
</Total>
</Summary>
<AppliedPromotions>
<Promotion>
<Id>5093</Id>
<Name>Add service</Name>
<Header/>
<ShortDescription/>
<Description1/>
<Description2/>
<StartDate i:nil="true"/>
<EndDate i:nil="true"/>
<ImageKey i:nil="true"/>
<RequirementSeed>3</RequirementSeed>
<DiscountCode i:nil="true"/>
<IsExcludedFromPriceCalculation>false</IsExcludedFromPriceCalculation>
<AllowProductListing>false</AllowProductListing>
<Images xmlns:a="Enferno.Services.Contracts.Expose"/>
<ProductFilters>
<Filter>
<ManufacturerId i:nil="true"/>
<CategorySeed i:nil="true"/>
<TypeId i:nil="true"/>
<ProductId i:nil="true"/>
<VariantProductId i:nil="true"/>
<PartNo>PRD0001274</PartNo>
<PricelistId>1</PricelistId>
<FlagId i:nil="true"/>
</Filter>
<Filter>
<ManufacturerId i:nil="true"/>
<CategorySeed i:nil="true"/>
<TypeId i:nil="true"/>
<ProductId i:nil="true"/>
<VariantProductId i:nil="true"/>
<PartNo i:nil="true"/>
<PricelistId i:nil="true"/>
<FlagId>1884</FlagId>
</Filter>
</ProductFilters>
<AppliedAmount>0.00</AppliedAmount>
<EffectSeed>5</EffectSeed>
<FreightDiscountPct i:nil="true"/>
<IsStackable>true</IsStackable>
<AppliedAmountIncVat>0.00</AppliedAmountIncVat>
</Promotion>
</AppliedPromotions>
<IpAddress>151.236.200.213</IpAddress>
<AttestedBy i:nil="true"/>
<TypeId>1</TypeId>
<DoHold>false</DoHold>
<IsBuyable>true</IsBuyable>
<InvoiceReference i:nil="true"/>
<PaymentMethodId>14</PaymentMethodId>
<DeliveryMethodId>1</DeliveryMethodId>
<SalesAreaId>1</SalesAreaId>
</Basket>
<Buyer xmlns:a="Enferno.Services.Contracts.Expose.Customers">
<a:Id i:nil="true"/>
<a:Key>bf335b15-2bf2-49ef-a1e7-5a0e599e96a4</a:Key>
<a:Code i:nil="true"/>
<a:Email>test@test.se</a:Email>
<a:SSN i:nil="true"/>
<a:FirstName>TestBuyerName</a:FirstName>
<a:LastName>TestBuyerLastname</a:LastName>
<a:Phone i:nil="true"/>
<a:CellPhone i:nil="true"/>
<a:ReferId i:nil="true"/>
<a:ReferUrl i:nil="true"/>
<a:Account>
<a:Id i:nil="true"/>
<a:Key>bf335b15-2bf2-49ef-a1e7-5a0e599e96a4</a:Key>
<a:LoginName i:nil="true"/>
<a:Name i:nil="true"/>
<a:Roles i:nil="true" xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<a:Authorizations i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
<a:IsActive>false</a:IsActive>
</a:Account>
<a:Companies/>
<a:DeliveryAddresses/>
<a:InvoiceAddress i:nil="true"/>
<a:Flags i:nil="true"/>
<a:UseInvoiceAddressAsDeliveryAddress>false</a:UseInvoiceAddressAsDeliveryAddress>
<a:Info i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
<a:PricelistIds i:nil="true" xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<a:CrmId i:nil="true"/>
<a:IsActive i:nil="true"/>
<a:Created i:nil="true"/>
<a:Updated i:nil="true"/>
</Buyer>
<Payer xmlns:a="Enferno.Services.Contracts.Expose.Customers">
<a:Id i:nil="true"/>
<a:Key>5ec95f79-75af-43e6-8036-5d69de968510</a:Key>
<a:Code i:nil="true"/>
<a:Email>test@test.se</a:Email>
<a:SSN i:nil="true"/>
<a:FirstName>TestBuyerName</a:FirstName>
<a:LastName>TestBuyerLastname</a:LastName>
<a:Phone i:nil="true"/>
<a:CellPhone i:nil="true"/>
<a:ReferId i:nil="true"/>
<a:ReferUrl i:nil="true"/>
<a:Account>
<a:Id i:nil="true"/>
<a:Key>5ec95f79-75af-43e6-8036-5d69de968510</a:Key>
<a:LoginName i:nil="true"/>
<a:Name i:nil="true"/>
<a:Roles i:nil="true" xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<a:Authorizations i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
<a:IsActive>false</a:IsActive>
</a:Account>
<a:Companies/>
<a:DeliveryAddresses/>
<a:InvoiceAddress>
<a:Id>12055560</a:Id>
<a:CareOf i:nil="true"/>
<a:Line1>TestInvoicestreet 1</a:Line1>
<a:Line2 i:nil="true"/>
<a:Zip>12345</a:Zip>
<a:City>TestCity</a:City>
<a:CountryId>1</a:CountryId>
<a:Country>Sverige</a:Country>
<a:Region i:nil="true"/>
<a:IsValidated>false</a:IsValidated>
<a:GlobalLocationNo i:nil="true"/>
<a:ShippingPhoneNumber i:nil="true"/>
</a:InvoiceAddress>
<a:Flags i:nil="true"/>
<a:UseInvoiceAddressAsDeliveryAddress>false</a:UseInvoiceAddressAsDeliveryAddress>
<a:Info i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
<a:PricelistIds i:nil="true" xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<a:CrmId i:nil="true"/>
<a:IsActive i:nil="true"/>
<a:Created i:nil="true"/>
<a:Updated i:nil="true"/>
</Payer>
<ShipTo xmlns:a="Enferno.Services.Contracts.Expose.Customers">
<a:Id i:nil="true"/>
<a:Key>b06fd649-f97d-4e0b-8285-d6a3ca3adf53</a:Key>
<a:Code i:nil="true"/>
<a:Email>test@test.se</a:Email>
<a:SSN i:nil="true"/>
<a:FirstName>TestBuyerName</a:FirstName>
<a:LastName>TestBuyerLastname</a:LastName>
<a:Phone i:nil="true"/>
<a:CellPhone i:nil="true"/>
<a:ReferId i:nil="true"/>
<a:ReferUrl i:nil="true"/>
<a:Account>
<a:Id i:nil="true"/>
<a:Key>b06fd649-f97d-4e0b-8285-d6a3ca3adf53</a:Key>
<a:LoginName i:nil="true"/>
<a:Name i:nil="true"/>
<a:Roles i:nil="true" xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<a:Authorizations i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
<a:IsActive>false</a:IsActive>
</a:Account>
<a:Companies/>
<a:DeliveryAddresses>
<a:Address>
<a:Id>12055561</a:Id>
<a:CareOf i:nil="true"/>
<a:Line1>TestInvoicestreet 1</a:Line1>
<a:Line2 i:nil="true"/>
<a:Zip>12345</a:Zip>
<a:City>TestCity</a:City>
<a:CountryId>1</a:CountryId>
<a:Country>Sverige</a:Country>
<a:Region i:nil="true"/>
<a:IsValidated>false</a:IsValidated>
<a:GlobalLocationNo i:nil="true"/>
<a:ShippingPhoneNumber i:nil="true"/>
</a:Address>
</a:DeliveryAddresses>
<a:InvoiceAddress i:nil="true"/>
<a:Flags i:nil="true"/>
<a:UseInvoiceAddressAsDeliveryAddress>false</a:UseInvoiceAddressAsDeliveryAddress>
<a:Info i:nil="true" xmlns:b="Enferno.Services.Contracts.Expose"/>
<a:PricelistIds i:nil="true" xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<a:CrmId i:nil="true"/>
<a:IsActive i:nil="true"/>
<a:Created i:nil="true"/>
<a:Updated i:nil="true"/>
</ShipTo>
<PaymentMethods>
<PaymentMethod>
<Id>14</Id>
<Name>Faktura</Name>
<TypeId>7</TypeId>
<TypeName>ErpInvoice</TypeName>
<Description>30 dagars faktura</Description>
<PartNo i:nil="true"/>
<Price>0.00</Price>
<VatRate>1.00</VatRate>
<ImagePath i:nil="true"/>
<IsSelected>true</IsSelected>
<Service>
<Id>3</Id>
<Name>No service</Name>
<Description i:nil="true"/>
<ImagePath i:nil="true"/>
<ImageKey i:nil="true"/>
</Service>
<ImageKey i:nil="true"/>
<IsForCompanyOnly>false</IsForCompanyOnly>
<IsForPersonOnly>false</IsForPersonOnly>
</PaymentMethod>
<PaymentMethod>
<Id>18</Id>
<Name>Presentkort</Name>
<TypeId>9</TypeId>
<TypeName>GiftCertificate</TypeName>
<Description>Used for giftcards handeled by an ERP or other source outside of Norce Commerce</Description>
<PartNo i:nil="true"/>
<Price>0.00</Price>
<VatRate>1.00</VatRate>
<ImagePath i:nil="true"/>
<IsSelected>false</IsSelected>
<Service>
<Id>3</Id>
<Name>No service</Name>
<Description i:nil="true"/>
<ImagePath i:nil="true"/>
<ImageKey i:nil="true"/>
</Service>
<ImageKey i:nil="true"/>
<IsForCompanyOnly>false</IsForCompanyOnly>
<IsForPersonOnly>false</IsForPersonOnly>
</PaymentMethod>
<PaymentMethod>
<Id>157</Id>
<Name>Svea Ekonomi</Name>
<TypeId>19</TypeId>
<TypeName>Checkout</TypeName>
<Description>Form checkout payment.</Description>
<PartNo i:nil="true"/>
<Price>0.00</Price>
<VatRate>1.00</VatRate>
<ImagePath i:nil="true"/>
<IsSelected>false</IsSelected>
<Service>
<Id>19</Id>
<Name>SveaEkonomi</Name>
<Description i:nil="true"/>
<ImagePath i:nil="true"/>
<ImageKey i:nil="true"/>
</Service>
<ImageKey i:nil="true"/>
<IsForCompanyOnly>false</IsForCompanyOnly>
<IsForPersonOnly>false</IsForPersonOnly>
</PaymentMethod>
<PaymentMethod>
<Id>162</Id>
<Name>Adyen checkout</Name>
<TypeId>19</TypeId>
<TypeName>Checkout</TypeName>
<Description>Form checkout payment.</Description>
<PartNo i:nil="true"/>
<Price>0.00</Price>
<VatRate>1.00</VatRate>
<ImagePath i:nil="true"/>
<IsSelected>false</IsSelected>
<Service>
<Id>27</Id>
<Name>AdyenV67</Name>
<Description i:nil="true"/>
<ImagePath i:nil="true"/>
<ImageKey i:nil="true"/>
</Service>
<ImageKey i:nil="true"/>
<IsForCompanyOnly>false</IsForCompanyOnly>
<IsForPersonOnly>false</IsForPersonOnly>
</PaymentMethod>
<PaymentMethod>
<Id>156</Id>
<Name>Klarna Checkout v3 (Recurrable)</Name>
<TypeId>19</TypeId>
<TypeName>Checkout</TypeName>
<Description>Form checkout payment.</Description>
<PartNo i:nil="true"/>
<Price>0.00</Price>
<VatRate>1.00</VatRate>
<ImagePath i:nil="true"/>
<IsSelected>false</IsSelected>
<Service>
<Id>18</Id>
<Name>KlarnaCheckoutV3</Name>
<Description i:nil="true"/>
<ImagePath i:nil="true"/>
<ImageKey i:nil="true"/>
</Service>
<ImageKey i:nil="true"/>
<IsForCompanyOnly>false</IsForCompanyOnly>
<IsForPersonOnly>false</IsForPersonOnly>
</PaymentMethod>
<PaymentMethod>
<Id>160</Id>
<Name>Dibs Easy Pay</Name>
<TypeId>19</TypeId>
<TypeName>Checkout</TypeName>
<Description>Form checkout payment.</Description>
<PartNo i:nil="true"/>
<Price>0.00</Price>
<VatRate>1.00</VatRate>
<ImagePath i:nil="true"/>
<IsSelected>false</IsSelected>
<Service>
<Id>22</Id>
<Name>DibsEasyCheckout</Name>
<Description i:nil="true"/>
<ImagePath i:nil="true"/>
<ImageKey i:nil="true"/>
</Service>
<ImageKey i:nil="true"/>
<IsForCompanyOnly>false</IsForCompanyOnly>
<IsForPersonOnly>false</IsForPersonOnly>
</PaymentMethod>
<PaymentMethod>
<Id>166</Id>
<Name>Walley B2B</Name>
<TypeId>19</TypeId>
<TypeName>Checkout</TypeName>
<Description/>
<PartNo i:nil="true"/>
<Price>0.00</Price>
<VatRate>1.00</VatRate>
<ImagePath i:nil="true"/>
<IsSelected>false</IsSelected>
<Service>
<Id>24</Id>
<Name>Collector</Name>
<Description i:nil="true"/>
<ImagePath i:nil="true"/>
<ImageKey i:nil="true"/>
</Service>
<ImageKey i:nil="true"/>
<IsForCompanyOnly>false</IsForCompanyOnly>
<IsForPersonOnly>false</IsForPersonOnly>
</PaymentMethod>
</PaymentMethods>
<DeliveryMethods>
<DeliveryMethod>
<Id>1</Id>
<Name>DB Schenker Utlämningsställe</Name>
<TypeId>6</TypeId>
<TypeName>Utlämning</TypeName>
<Description>DB Schenker leverans till vald utlämningsställe</Description>
<PartNo>PRD0001212</PartNo>
<Price>0.0000</Price>
<VatRate>1.25</VatRate>
<IsNotifiable>false</IsNotifiable>
<ImagePath i:nil="true"/>
<IsSelected>true</IsSelected>
<ImageKey i:nil="true"/>
<IsForCompanyOnly>false</IsForCompanyOnly>
<IsForPersonOnly>false</IsForPersonOnly>
<Cost>0.0000</Cost>
<StoreId i:nil="true"/>
<WarehouseId i:nil="true"/>
<LocationId i:nil="true"/>
<DropPoints/>
<Code>DBS-UTL</Code>
<Carrier i:nil="true"/>
</DeliveryMethod>
<DeliveryMethod>
<Id>7</Id>
<Name>Hempaket kväll</Name>
<TypeId>1</TypeId>
<TypeName>Hemleverans</TypeName>
<Description>Leverans sker hem mellan 17:00 och 22:00.</Description>
<PartNo>PRD0001212</PartNo>
<Price>49.0000</Price>
<VatRate>1.2500</VatRate>
<IsNotifiable>false</IsNotifiable>
<ImagePath i:nil="true"/>
<IsSelected>false</IsSelected>
<ImageKey i:nil="true"/>
<IsForCompanyOnly>false</IsForCompanyOnly>
<IsForPersonOnly>true</IsForPersonOnly>
<Cost>0.0000</Cost>
<StoreId i:nil="true"/>
<WarehouseId i:nil="true"/>
<LocationId i:nil="true"/>
<DropPoints/>
<Code>HEMPK</Code>
<Carrier i:nil="true"/>
</DeliveryMethod>
</DeliveryMethods>
<Payments/>
</Checkout>
Visual Overview:
The diagram below illustrates the structure of the Checkout
object, which is central to the checkout process.
- Basket: Contains all products/items, prices, fees, and promotions. See Basket guide.
- Buyer, Payer, ShipTo: Customer objects representing who buys, pays, and receives the order.
- Payments: List of payments already made (e.g., partial gift card payments).
- PaymentMethods: List of available payment methods. The selected method has
IsSelected: true
. - DeliveryMethods: List of available shipping methods. The selected method has
IsSelected: true
.
Note:
TheCheckout
object is always resolved from Norce Commerce business rules. Any update (e.g., changing shipping) may affect fees, promotions, or available payment methods. Always use the latestCheckout
object after any update.
Visual Overview:
The following diagram shows the recommended update flow for checkout.
- Handle the user action in your backend.
- Call the Norce Commerce Shopping Service to get the updated
Checkout
object. - Map the new checkout object to your model and return it to the frontend.
- Write the new model to cache (use a short cache time).
For more on update patterns, see the frontend design guide and basket guide.
To complete a purchase, ensure the following:
- One selected payment method
- One selected delivery method
- Customer information for Buyer, Payer, and ShipTo
Note:
For form-based payments, customer information may be collected by the payment service provider, not Norce Commerce.
Tip:
You can set default values (e.g.,PaymentMethodId
,DeliveryMethodId
) when creating the basket to streamline the checkout process. See Working with Baskets.
If you use Norce’s built-in freight framework, select a delivery method during checkout. Norce will automatically add the correct price and information to the basket and order.
You can also integrate with external delivery providers (e.g., NShift, Ingrid) by passing their information to the basket and order.
Norce Commerce supports multiple payment service providers (PSPs), grouped into three main types:
The customer completes payment in a single step, typically on the same page (e.g., invoice or pay-later methods).
One-step process Overview:
The following diagram shows the one-step payment process visually.
Process:
- User initiates purchase.
- Backend calls a purchase method in Norce Commerce.
- The response (
PaymentResponse
) contains status and next steps.
Purchase Methods:
Purchase
: Requires only basket ID.PurchaseEx
: Allows overriding payment parameters.PurchaseEx2
: Allows passing a full checkout object and payment parameters.
PaymentResponse Fields:
Status
,StatusDescription
: Status details.IsSynchronous
: True for one-step payments.OrderNo
,PaymentReference
,RedirectUrl
,RedirectParameters
: Order and payment details.
The customer is redirected to a payment window (e.g., card payments).
Two-step process Overview:
The following diagram shows the two-step payment process visually.
Process:
- Initiate purchase via Norce Commerce.
- Receive redirect URL and parameters.
- Redirect customer to PSP payment window.
- Customer completes payment and is redirected back.
- Validate payment using
PaymentCallback
orPaymentCallback2
.
Callback Methods:
PaymentCallback
: Validates payment and starts order process.PaymentCallback2
: Validates payment only.
Note:
Always validate the payment after redirection before showing the confirmation page.
Description:
The payment form is embedded (e.g., in an iframe) on the checkout page. The PSP collects customer information and triggers the purchase.
Process:
- Call
GetPaymentForm
to get form embed information. - Render the form in the UI.
- Customer completes payment in the form.
- Validate payment using
PaymentFormCallback
.
Callback Methods:
PaymentFormCallback
: Validates form payment (does not start order process).- Use
PaymentCallback
if the order should be processed directly.
To display an order confirmation page:
- Call
GetOrderRequest
to get order details. - Call
GetCheckout
to get the latest checkout object.
For two-step and form payments, pass the confirmation page URL to the PSP using the ShopCallbackUrl
parameter.
Tip:
Add theBasketId
as a query parameter to theShopCallbackUrl
for reliable confirmation page display.
Norce Commerce can send order confirmation emails using Sendgrid. Configure this in the Admin UI.
Alternatively, trigger notifications using Norce Commerce Events and look up order information via Norce Commerce Query.
You can check product availability during checkout using:
ListProductOnHandByBasket
: Returns OnHand info for all basket items.
Note:
Norce does not validate basket availability. Implement your own validation rules as needed.
Some payments require capture (settlement) after order delivery. You can use Norce Commerce’s capture functionality or handle it in your ERP system.
Read more about Payment Capture.
Different PSPs support different parameters. Norce maps common parameters to simplify integration.
Parameter Name | Used In | Description |
---|---|---|
CountryCode (*) | PurchaseEx , PurchaseEx2 , GetPaymentForm | Country code for the purchase (ISO-3166-1 ALPHA-2, e.g., "SE", "FI"). Must be configured in Norce Commerce. |
CultureCode | PurchaseEx , PurchaseEx2 , GetPaymentForm | Language for the PSP UI (ISO 639, e.g., "sv", "de", "sv-SE"). |
ShopCallbackUrl | PurchaseEx , PurchaseEx2 , GetPaymentForm | URL to redirect the customer after purchase completion (confirmation page). |
ShopTermsUrl | PurchaseEx , PurchaseEx2 , GetPaymentForm | URL for merchant terms and conditions. |
CheckoutId | GetPaymentForm | PSP’s unique checkout ID. Use in callback URLs. |
ShopValidationUrl | GetPaymentForm | URL for Norce to call during validation if you want custom validation logic. |
StartNewSession | GetPaymentForm | Forces a new session at the PSP, clearing persisted data. |
Note:
For most PSPs,CountryCode
cannot be updated mid-session. To change it, clear the old checkout ID and start a new session usingStartNewSession
.
See Checkout samples in Postman.