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.getFundingSourcesresponse will continue to returnsofortin the list of supported funding sources. - The
paypal.isFundingEligible(paypal.FUNDING.SOFORT)parameter returnsfalse, unless you have loadedenable-funding=sofortinto 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]