In some cases, the upsell flow cannot be completed as a direct transaction within the existing purchase session. Instead, the response will include an UpsellLink property that the customer needs to be redirected to. In this link they are taken through Qliro Checkout where the customer can only finalize the upsell payment.
This may happen for several reasons, including but not limited to:
-
Payment method requirements: Some payment methods — such as Swish, Vipps, Apple Pay, MobilePay, Trustly, PayPal, and similar — require the customer to actively confirm the payment through an external flow.
-
Strong Customer Authentication (SCA): Even for payment methods that normally support direct transactions, Qliro may return an UpsellLink if SCA is required. This can depend on the upsell amount, payment provider policies, or internal control rules.
-
Compliance and regulatory reasons: Certain transactions may need to be processed through a separate, customer-authenticated flow to meet compliance or security requirements.
Qliro will handle retries, error messages, and other transaction-related logic within this link to ensure the highest possible chance of a successful payment. As a result, there may be multiple error transactions recorded during the process, but only one successful transaction will ever be created for the specific upsell session.
When using the Upsell Link flow, Qliro will notify the merchant of the upsell outcome through UpsellStatus pushes sent to the configured MerchantCheckoutStatusPushUrl.
-
Successful completion:
If the customer completes the upsell purchase through the UpsellLink, Qliro will immediately send an UpsellStatus notification with Status = "Success". This confirms that the upsell has been successfully processed and added to the order. The customer is also redirected to the configured MerchantConfirmationUrl.
- Error transaction:
Qliro will NOT send an UpsellStatus error notification on every error transaction that happens within the Upsell Expiration time. Upsell Link handles retries, error messages, and multiple attempts to maximize the chance of customer completing the payment.
-
Session expiration:
If the customer does not complete the upsell before the session expires (as defined by the EligibleForUpsellUntil timestamp), Qliro will send an UpsellStatus notification with Status = "Error".
-
Pending transactions after expiration:
In cases where there are an in process payment transaction remaining after the upsell session has expired, Qliro will wait until these transactions have been finalized.
Once processed, Qliro will send an UpsellStatus push with either Status = "Success" (if the transaction was successful) or Status = "Error" (if the transaction failed).