Sofort deprecation impact

DOCS

Last updated: Sept 24th, 5:07pm

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>
    2
    3
    4<script>
    5 paypal.Buttons({
    6 ...
    7 }).render('#paypal-button-container');
    8</script>

    Smart,Payment,Buttons,sample

    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>
      2
      3
      4<script>
      5
      6
      7 var button = paypal.Buttons({
      8 fundingSource: paypal.FUNDING.SOFORT,
      9 });
      10
      11
      12 // buttons with fundingSource of paypal.FUNDING.SOFORT will no longer be eligible
      13 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>
        2
        3
        4<script>
        5
        6
        7 var button = paypal.Buttons({
        8 fundingSource: paypal.FUNDING.SOFORT,
        9 });
        10
        11
        12 var paymentFields = paypal.PaymentFields({
        13 fundingSource: paypal.FUNDING.SOFORT,
        14 });
        15
        16
        17 // Only render the payment fields and button if the button is eligible
        18 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'" );
              2
              3
              4/* Original Error:
              5
              6
              7Invalid query value for enable-funding: unknown (debug id: f227561ac6cf6)
              8
              9
              10*/

              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 return sofort in the list of supported funding sources.
              • The paypal.isFundingEligible(paypal.FUNDING.SOFORT) parameter returns false, unless you have loaded enable-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]