---
title: PayPal Pipelines [DEPRECATED]
slug: extensions/8Ej6vjTDziS2XcNkV4ZNR
docTags: 
createdAt: 2025-12-14T14:23:42.414Z
---

# (deprecated) PayPal Pipelines

:::BlockQuote
**NOTE** Due to SFCC's deprecation of the pipelines architecture, Forter's latest cartridge versions no longer include full support or compatibility for older, Pipelines architecture.
:::

## Overview

The diagrams and instructions below outline how to integrate the Forter cartridge so that you're able to send information about the PayPal account associated with the customer or transaction and receive a real-time Forter decision.

## Update Site Preferences

When integrating with Paypal, we recommend modifying your Paypal Cartridge settings. To do this, go to:

```javascript
Site Preferences -> Customer Site Preference Groups
```

This will allow the Forter cartridge to receive relevant information to decision whether a paypal transaction is captured or voided. Please note we do **NOT** handle **Billing Agreement** checkout flow in this example.

### Set Authorization

The Express Checkout should include Authorization before Forter is called. This can be done by setting the Payment Action to "Authorization" or by setting Run Authorization in case of Order to Yes.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-iUUnNTXs5S7B3nzzc9R2i-20250724-184338.png)

### Send SFCC Billing Info

make sure the Paypal cartridge is set to send to Salesforce Commerce Cloud the billing information. Please note this configuration may need external permissions added by Paypal support to your Paypal account.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-0srGqkCfXPbZm4Okl80FO-20250724-184337.png)

## Configure the PayPal pipelines

The diagrams below are from the **PAYPAL\_EXPRESS-Authorize** Pipeline. After the `CommitTransaction` is called Forter requests additional information about the transaction from Paypal by triggering the **Paypal-GetTransactionDetails API** call. After the details are stored Forter API is called in order to provide a decision on the order.

### Review your current Pipelines

The diagrams below are from the PAYPAL\_EXPRESS-Authorize Pipeline. After the "CommitTransaction" is called Forter requests additional information about the transaction from Paypal by triggering the Paypal-GetTransactionDetails API call. After the details are stored Forter API is called in order to provide a decision on the order. Based on the Forter Decision and the Forter Cartridge configuration, additional API calls are made to Paypal in order to capture or void the order as needed.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-DCPoh_zexv5klfOAN4tsK-20250724-184335.png)

Based on the Forter Decision and the Forter Cartridge configuration, additional API calls are made to Paypal in order to capture or void the order as needed.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-bQGjzxt3plbN9va8jpE-O-20250724-184335.png)

**1) Assign Node \*\*isAuthorized\*\***

Add an Assign node. Set `_From_0_` to `true`; `_To_0_` to `isAuthorized`.

**2) Add a Decision node. Set \*\*Decision Key\*\***

Add a Decision node. Set **Decision Key** to:

```javascript
DoExpressCheckoutResponseContainer.data.paymentinfo_0_pendingreason === 'order' 
```

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny--PNvckL_zphOXGVZqVp9V-20250724-184335.png)

**3) Add Assign Node \*\*DoAuthorizationResponseContainer.data.transactionid\*\*’**

Add an Assign node. Set `From_0` to `DoAuthorizationResponseContainer.data.transactionid`; `To_0` to `TransactionID`

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-PXcNV7fN3V_Zd8gwU4t57-20250724-184336.png)

**4) Add Assign Node to transactionID**

Add an Assign node. Set `From_0` to `DoExpressCheckoutResponseContainer.data.paymentinfo_0_transactionid`; `To_0` to `TransactionID`

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-LVNiToOm3mi73PI6C2XK7-20250724-184336.png)

**5) Add Call Node&#x20;**`Paypal-GetTransactionDetails`

Add a `Call` Node Set `Pipeline` to `Paypal-GetTransactionDetails`.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-VjZqrIqGb5XNyeI-97d-A-20250724-184336.png)

**6) Add Assign Node in&#x20;**`PaypalTransactionDetails`

Add an Assign node. Set `From_0` to `GetTransactionDetalisResponseContainer`; `To_0` to `PaypalTransactionDetails`

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-PjNVJgQ9u41h5VOOEbaAX-20250724-184336.png)

**7) Add Script Node to&#x20;**`ForterCallStoreResponse.ds`

Add a Script node. Set `ScriptFile` to `int_forter:pipelets/forter/ForterCallStoreResponse.ds`; `PaymentInstrument` to `PaymentInstrument`; `ResponseDataContainer` to `PaypalTransactionDetails`; `ResponseType` to `paypal_transaction_details_response`.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-ZE-pBpUdKE_FQWtZXobV5-20250724-184336.png)

**8) Add a script node to&#x20;**`ForterCallValidate.ds`

Add a Script node. Set `ScriptFile` to `int_forter:pipelets/forter/ForterCallValidate.ds`; `Order` to `Order`; `JsonResponseOutput` to `ForterResponse`; `PlaceOrderError` to `PlaceOrderError`.

**9) Set Decision Keys**

Add a Decision node. Set `Decision Key` to&#x20;

```javascript
ForterResponse.JsonResponseOutput.processorAction === 'skipCapture' || ForterResponse.JsonResponseOutput.processorAction === 'notReviewed'
```

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-QVo_Z0p1ExSok8TC71xzX-20250724-184336.png)

**10) Set Additional Decision Keys**

Add a `Decision` node. Set `Decision Key` to&#x20;

```javascript
ForterResponse.JsonResponseOutput.processorAction === 'disabled' || ForterResponse.JsonResponseOutput.processorAction === 'internalError' || ForterResponse.JsonResponseOutput.processorAction === 'capture'
```

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-ZA61F8EPW6JayVMTWmQHr-20250724-184336.png)

**11) Set Payment Status to&#x20;**`Completed`

Add a `Decision` node. Set `Decision Key` to:

```javascript
DoExpressCheckoutResponseContainer.data.paymentinfo_0_paymentstatus === 'Completed'
```

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-4bJU81V7nQ7cdqcfS3Vd7-20250724-184337.png)

**12) Add&#x20;**`Assign`**&#x20;Node to update payment details**

Add an `Assign` node. Set:

- `From_0`to `new Object()`;
- `From_1` to `PaypalTransactionDetails.data.amt`;
- `From_2` to `PaypalTransactionDetails.data.transactionid`;
- `From_3` to `"Complete"`;
- `From_4` to `PaypalTransactionDetails.data.currencycode`;
- `From_5` to `PaypalTransactionDetails.data.invnum`;
- `From_6` to `"forter auto capture note"`;
- `To_0` to `PaypalDoCapture`;
- `To_1` to `PaypalDoCapture.amount`;
- `To_2` to `PaypalDoCapture.authorizationID`;
- `To_3` to `PaypalDoCapture.completeType`;
- `To_4` to `PaypalDoCapture.currency`;
- `To_5` to `PaypalDoCapture.invNum`;
- `To_6` to `PaypalDoCapture.note`;

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-1deL9BwOxtb23Y-Vf7aVF-20250724-184337.png)

\*\*13) Add a Call node. Set `Pipeline` to \*\*`Paypal-DoCapture`

Add a Call node. Set `Pipeline` to `Paypal-DoCapture`.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-p6w9D3w5oi3OZZbANN02E-20250724-184337.png)

\*\*14) Set `ScriptFile` to \*\*`ForterCallStoreResponse.ds`

Add a Script node. Set `ScriptFile` to `int_forter:pipelets/forter/ForterCallStoreResponse.ds`; `PaymentInstrument` to `PaymentInstrument`; `ResponseDataContainer` to `DoCaptureResponseContainer`; `ResponseType` to `paypal_capture_response`.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-Hf5cE79F7iSJfMACkrgas-20250724-184337.png)

**15) Add Script Node to&#x20;**`UpdateOrderTransaction.ds`

Add a `Script` node. Set: `ScriptFile` to `int_paypal:data/UpdateOrderTransaction.ds`; `IsCustomOrder` to `false`; `MethodName` to `"DoCapture"`; `OrderNo` to `Order.orderNo`; `TransactionID` to&#x20;

```javascript
DoCaptureResponseContainer.data.get('transactionid') || DoCaptureResponseContainer.data.get('authorizationid') || DoCaptureResponseContainer.data.get('refundtransactionid')
```

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-cWiqf0NHu770QQeSSTsJm-20250724-184337.png)

**16) Add some more Assign Nodes!**

Add an Assign node. Set:

- `From_0` to `new Object();`
- `From_1` to `PaypalTransactionDetails.data.transactionid`
- `From_2` to `"auto void forter"`
- `To_0` to `PaypalDoVoid`;
- `To_1` to `PaypalDoVoid.authorizationID`;
- `To_2` to `PaypalDoVoid.note`;

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-prDgK70E3-tCNnlx34WxW-20250724-184337.png)

\*\*17) Set `Pipeline` to \*\*`Paypal-DoVoid`

Add a Call node. Set `Pipeline` to `Paypal-DoVoid`.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-FNC-weHDkRuWamWfwQEK7-20250724-184337.png)

**18) Update Void Response Pipelets**

Add a `Script` node. Set: `ScriptFile` to `int_forter:pipelets/forter/ForterCallStoreResponse.ds`; `PaymentInstrument` to `PaymentInstrument`; `ResponseDataContainer` to `DoVoidResponseContainer`; `ResponseType` to `"paypal_void_response"`.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-SbaYvR9oMFDJfMfltwwJ4-20250724-184337.png)

**19) Add Script Node to&#x20;**`UpdateOrderTransaction.ds`

Add a Script node. Set the following:

- `ScriptFile` to `int_paypal:data/UpdateOrderTransaction.ds`;
- `IsCustomOrder` to `false`;
- `MethodName` to `"DoVoid"`;
- `OrderNo` to \`Order.orderNo’;
- `TransactionID` to `DoVoidResponseContainer.data.get('transactionid') || DoVoidResponseContainer.data.get('authorizationid') || DoVoidResponseContainer.data.get('refundtransactionid')`.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-SJfdKyxocQaWItuPi11My-20250724-184337.png)

The Forter cartridge has built-in functionality for saving the PayPal API responses – the transaction details, capture, void, authorization and expresscheckout responses. The data is stored as a JSON string in the custom attribute of the Order Payment Instrument object. Each response is saved to its dedicated custom attribute. The recommended type for these custom attributes is Text since in some cases the response is over 4K characters. In order to save the PayPal response a script node must be added in the place where the required data exists.

For example PayPal transaction details may be saved right after a call to `PaypPal-GetTransactionDetails` and passed into the int\_forter\:pipelets/forter/ForterCallStoreResponse.ds script.
In the script Dictionary Input, the `“paypal_transaction_details_response”` is actually the type of the response custom attribute, `PaypalTransactionDetails`. This data point is an object that contains information about the current transaction and `PaymentInstrument` is your current payment instrument.

![](https://api.archbee.com/api/optimize/dYhsqkppjaUNAqFmds_Ny-STUqjoCRC2p3UM1RfaOhO-20250724-184337.png)
