Checkout-sessions basics
Gain a better understanding of how to define a checkout-session
Last updated
Gain a better understanding of how to define a checkout-session
Last updated
A checkout-session determines what information and options are presented to customers in .
At a minimum, your create checkout-session request needs to contain currency and product data.
You can also tell us whether your prices are tax-inclusive.
If the customer’s cart contains , provide shipping method options for customers to select from.
When checking out registered customers, you can send their unique identifiers and saved addresses.
For complete specifications, refer to the checkout-sessions API reference docs.
In upstreamId
, you can pass the unique identifier of the order in your system. If upstreamId
is not null
, displays its value as the order number during the .
You need to pass currency
in your create checkout-session request. This value determines how amounts are denominated in the checkout experience.
To control how the checkout experience, purchase invoices, and credit memos are localized, you can pass language
in the create checkout-session request.
For each product in the customer’s cart, you'll need to use items[]
to send the:
quantity
You can also use items[]
to provide:
a shipFrom
location.
a discount
on the product
a strikeThroughPrice
that highlights how much customers are saving
If you're using an external subscription service and would like the billing frequency of the subscription that the customer is acquiring to be displayed in the checkout experience, then specify a plan.interval
and plan.intervalCount
in items[].subscriptionInfo
of your create checkout-session request.
To highlight how much customers are saving when purchasing a product, you can send items[].strikeThroughPrice
. The value you assign this parameter in a create checkout-session request typically represents the original, pre-discounted price of an items[]
, which Digital River then crosses out and displays next to the discounted price
.
Other parameters in the request don't affect how strikeThroughPrice
is rendered in the checkout experience. Digital River displays its value as is. For example, we don't adjust it depending on the taxInclusive
setting.
So, if an items[]
has a quantity
that's greater than 1
, and you're trying to communicate a discount, make sure you implement pre-request logic that ensures strikeThroughPrice
is less than price
multiplied by quantity
. Otherwise, the product's price will appear to be marked up instead of discounted.
The parameter is not intended for use with either discount
or items[].discount
since this might result in conflicting information being displayed in the experience.
A checkout-session's shoppingCountry
represents the country in which a customer is based.
Additionally, shoppingCountry
prompts Digital River to disable the shipping country drop-down menu and blocks customers from selecting any options.addresses[]
whose country
doesn't match shoppingCountry
.
However, a checkout-session's shoppingCountry
and billTo.address.country
don't need to match. As a result, the bill to country drop-down menu remains operable, and customers can choose from any options.addresses[]
.
The shoppingCountry
also plays a role in determining:
Whether customers are shown a form that collects their tax identification number and whether they have the option to enter a value or are required to do so.
The options are displayed in the payment collection stage.
To get this data added to the checkout-session, you can:
Send shipFrom
in a create checkout-session request.
The checkout-session's customerType
indicates whether customers are making the purchase as an individual
or on behalf of a business
.
If customerType
is business
, customers must enter their company's name in the shipping and billing information collection forms.
You can pass customerType
in a create checkout-session request. But to do so, you'll need to have this information before initiating checkout.
For details, refer to:
The taxInclusive
boolean determines how we treat product prices when calculating tax.
It also dictates how prices are displayed in the checkout experience. The default value is false
. If you set taxInclusive
to true
, then the experience indicates that the total amount includes VAT.
For checkouts initiated by a registered customer, your create checkout-session request can include the following:
To checkout customers registered in your system, send their customerId
.
Digital River uses this value to determine whether a customer with that identifier exists in our system.
If the customer doesn’t yet exist in our system, we create a new object and assign it the customerId
you provided.
If you persist registered customers’ addresses, and the customer checking out has one or more saved values in your system, you can use options.addresses[]
to send Digital River this data.
In the address collection stage, we present these saved values to customers for convenience.
For each options.addresses[]
, Digital River only displays its name
and address
.
First, you can send options.shippingMethods[]
in the create checkout-session request.
For each of the checkout-session's options.shippingMethods[]
, the user is displayed its amount
, description
, and shippingTerms
, as well as businessDaysInTransit
, estimatedArrival.date
, and estimatedArrival.dayOfWeek
in deliveryInformation
.
Each options.shippingMethods[]
requires an amount
but not a serviceLevel
. However, this data helps Digital River detect fraud, so we highly encourage you to pass it.
The create checkout-session request options
allows you to pass one or more storeCredits[]
. Each element in this array can be defined by an amount
, name
, upstreamId
, iconUrl
, and lastFour
.
In the payment collection forms, we display amount
, name
, iconUrl
and lastFour
to customers.
amount
This required parameter represents how much credit you’re offering the customer.
name
upstreamId
This required parameter uniquely identifies the line of credit in your system. Passing multiple storeCredits[]
that share the same upstreamId
is not allowed.
iconUrl
The web address of your store credit logo.
lastFour
The last four digits of the customer's store credit card.
For a list of accepted values, refer to .
If you define in the , that value gets assigned to the checkout-session's language
.
Digital River uses the checkout-session's language
to set the checkout's language
, determining once the order is successfully created.
skuId
or productDetails
. For details, refer to .
price
or aggregatePrice
. For details, refer to .
For details on configuring a checkout-session for use with , refer to .
Digital River reads those values and displays them in the order summary section of .
This feature is not yet supported in .
Additionally, if you need this data to populate or some other potential use case, then we also add these key-value pairs to the event
with a of .
The currently doesn't support this feature.
If you're using the , then we perform a currency conversion on strikeThroughPrice
, just like we do with price
, based on what when they initiate checkout.
If you send a shoppingCountry
that's not null
, Digital River uses that value to populate the checkout-session's shipTo.address.country
. This is true whether items[]
represents .
You can also . If you do so, shoppingCountry
in a POST /drop-in/checkout-sessions
overrides (but doesn't overwrite) the value saved in the Digital River Dashboard.
The following create checkout-session request passes shoppingCountry
, and its single items[].skuId
reference a .
And even though items[]
only references , the and order.*
contain shipTo.address.country
.
What a customer's inputs are subjected to.
The designated affects what compliance disclosures are displayed and whether a is eventually generated.
If items[]
contains , then your checkout-session needs to meet certain shipFrom.address
requirements.
Refer to on the page for details. There, you will find checkout requirements, which the checkout-session wraps.
. If you do this, then any shipFrom
values sent in a POST /drop-in/checkout-sessions
override (but don't overwrite) those saved in the Digital River Dashboard.
to dynamically provide Digital River with one or more shipFrom
locations during the checkout process.
In many cases, a value of business
is required to activate the tax identifier collection form. For details, refer to .
If you'd like Digital River to ask customers during the checkout process whether they're making the purchase on behalf of a business, then you'll need to , and your POST /drop-in/checkout-sessions
must (1) omit customerType
(2) or assign a value of individual
or null
to this parameter.
in the on the page
on the page.
If it does, we retrieve that customer's transaction-applicable []
and payment and, for convenience purposes, present them as options in the tax identifier and payment collection forms.
In either case, as registered customers progress through a , they can save their shipping information, tax identifiers, and billing information for future transactions. They can also do the same for their selected payment method in and .
If items[]
contain , you must provide Digital River shipping options for customers to select from. You can do this in one of the following ways:
Alternatively, you can . These represent static options (i.e., ones whose amount
and serviceLevel
are not dependent on where the products are being shipped or how much they weigh). If you use this approach, options.shippingMethods[]
sent in the overrides your saved values in the Digital River Dashboard.
Finally, you can River calls at checkout time. This lets you offer your customers dynamic options in the shipping method selection stage. The data returned by this endpoint overrides any options.shippingMethods[]
sent in your request or saved in the Digital River Dashboard.
If you submit a POST /drop-in/checkout-sessions
with physical items[]
but without options.shippingMethods[]
, and you don't have or a shipping saved in Digital River Dashboard, then the request returns the following error:
For more details, refer to .
The name of the store credit offer. Omitting name
or passing a null
value doesn't throw an , but it does mean that that particular storeCredits[]
won't be displayed in the payment collection form.
You can control the appearance and visual behavior of a by defining style
in a create checkout-session request.
For details, refer to .