Sofort deprecation impact
Last updated: Sept 24th, 5:07pm
* Important: Sofort will be sunset on April 18, 2024. PayPal will not support Sofort payments starting April 19, 2024. Offer your users PayPal wallet and other alternative payment methods. Learn more.
This document explains how the deprecation of the Sofort alternative payment method (APM) will impact the following integration patterns:
- Smart Payment Buttons
- Standalone button
- Payment Fields
- Orders V2 REST API
Each section covers the expected behavior for each integration after Sofort has been sunset in the APM platform.
Smart Payment Buttons
If your Smart Payment Buttons (SPB) integration is set up to show all available payment buttons, the sofort
button won't show up as a supported payment method.
1<script src="https://www.paypal.com/sdk/js?client-id={client-id}&components=buttons"></script>234<script>5 paypal.Buttons({6 ...7 }).render('#paypal-button-container');8</script>
The exception is when the merchant passes sofort
in the enable-funding
query parameter when the SDK loads: the sofort
button will show up. See the enable-funding and disable-funding query parameters section for details.
Standalone button
If your standalone button integration checks funding eligibility and specifies which payment buttons to show, the sofort
button won't show up as a supported payment method. No other standalone button integrations are impacted.
1<script src="https://www.paypal.com/sdk/js?client-id={client-id}&components=buttons,funding-eligibility"></script>234<script>567 var button = paypal.Buttons({8 fundingSource: paypal.FUNDING.SOFORT,9 });101112 // buttons with fundingSource of paypal.FUNDING.SOFORT will no longer be eligible13 if (button.isEligible()) {14 button.render('#paypal-button-container');15 }16</script>
The exception is when the merchant passes sofort
in the enable-funding
query parameter when the SDK loads: the sofort
button will show up. See the enable-funding and disable-funding query parameters section for details.
Payment Fields
For integrations using payment-fields
and standalone buttons, the standalone sofort
button won't render and the payment fields won't be submittable. The payment fields will still render, but without the standalone button, the form cannot be submitted. If you are rendering payment-fields
, it is recommended to only render them if the associated button meets the isEligibile
requirement.
1<script src="https://www.paypal.com/sdk/js?client-id={client-id}&components=buttons,payment-fieldsfunding-eligibility"></script>234<script>567 var button = paypal.Buttons({8 fundingSource: paypal.FUNDING.SOFORT,9 });101112 var paymentFields = paypal.PaymentFields({13 fundingSource: paypal.FUNDING.SOFORT,14 });151617 // Only render the payment fields and button if the button is eligible18 if (button.isEligible()) {19 button.render('#paypal-button-container');20 paymentFields.render('#paypal-payment-fields-container');21 }22</script>
See the JS SDK tab of the Sofort Integration section for more details about the JavaScript SDK integration.
Orders V2 REST API
For API integrations, requests to either /v2/checkout/orders
or /v2/checkout/orders/{orderId}/confirm-payment-source
with an embedded sofort
payment source will receive a 403 Forbidden
HTML response with the following error message:
1{2 "name": "NOT_AUTHORIZED",3 "details": [4 {5 "issue": "PERMISSION_DENIED",6 "description": "You do not have permission to access or perform operations on this resource."7 }8 ],9 "message": "Authorization failed due to insufficient permissions.",10 "debug_id": "ebdc46ef682c6",11 "links": [12 {13 "href": "https://developer.paypal.com/docs/api/orders/v2/#error-PERMISSION_DENIED",14 "rel": "information_link",15 "method": "GET"16 }17 ]18}
See the Orders API tab of the Sofort Integration section for more details about the Orders V2 REST API integration.
enable-funding and disable-funding query parameters
To ensure compatibility with existing integrations, the sofort
option will continue to be supported for integrations that pass enable-funding
and disable-funding
query parameters in the <script>
tag. If we remove sofort
from these as a recognized value, the SDK will throw a validation error and the SDK will fail to load entirely.
This example shows what happens when the enable-funding
query parameter passes an unrecognized value:
Sample request
1https://www.paypal.com/sdk/js?client-id=test&components=buttons,funding-eligibility&enable-funding=unknown
Sample response
1throw new Error("SDK Validation error: 'Invalid query value for enable-funding: unknown'" );234/* Original Error:567Invalid query value for enable-funding: unknown (debug id: f227561ac6cf6)8910*/
If an existing integration passes sofort
in the enable-funding
object, this will override the sunset logic that hides the Sofort payment button. When a buyer selects the sofort
button, they will be redirected to the guest checkout flow to choose another payment method.
Avoid future complications by removing the sofort
value from your enable-funding
and disable-funding
objects.
paypal.getFundingSources
https://developer.paypal.com/sdk/js/reference/#link-paypalgetfundingsources
To ensure compatibility with existing integrations that use paypal.getFundingSources
, enable-funding
, and disable-funding
:
- The
paypal.getFundingSources
response will continue to returnsofort
in the list of supported funding sources. - The
paypal.isFundingEligible(paypal.FUNDING.SOFORT)
parameter returnsfalse
, unless you have loadedenable-funding=sofort
into the SDK script.
1paypal.getFundingSources().forEach(function(fundingSource) {2// ...3});
1[2 "paypal",3 "venmo",4 "itau",5 "credit",6 "paylater",7 "applepay",8 "ideal",9 "sepa",10 "bancontact",11 "giropay",12 "eps",13 "sofort",14 "mybank",15 "blik",16 "p24",17 "wechatpay",18 "payu",19 "trustly",20 "oxxo",21 "boleto",22 "boletobancario",23 "mercadopago",24 "multibanco",25 "satispay",26 "paidy",27 "card"28]