Skip to main content

Least-Cost Routing


This section describes how to apply least-cost routing to an authorization request.

This feature is supported only for FDI Australia and Worldpay VAP.

This feature is supported only for Worldpay VAP.

Least-cost routing (LCR) offers the lowest routing costs available. LCR uses single-message processing, when it is possible, to move funds in a single, full-financial message. A full-financial message moves funds immediately.

When you request least-cost routing, the processor first determines whether LCR is possible for the transaction. If LCR is possible, the processor uses single-message processing to accomplish LCR. If the transaction is enabled for partial authorization, the processor can process a partial amount instead of the entire requested amount.

To learn whether the processor used least-cost routing for a transaction, see the daily processor report.

Supported Processors

  • FDI Australia
  • Worldpay VAP
  • Worldpay VAP

Features Supported with Least-Cost Routing

Worldpay VAP supports these features with least-cost routing and single-message processing:

  • Address Verification System (AVS)
  • Balance responses
  • Card type indicators
  • Credits
  • Card verification number (CVN)
  • Debit cards
  • Merchandise descriptors
  • Payer authentication
  • Prepaid cards

Features Not Supported for Least-Cost Routing

These features are not supported with least-cost routing and single-message processing:

  • Authorization reversal after void
  • Full authorization reversals: To process an aborted transaction or a return, request the credit service.
  • Multiple partial captures
  • Stand-alone authorizations
  • Stand-alone captures
  • Verbal authorizations
  • Voids

Prerequisites

To enable least-cost routing, contact customer support to have your account configured for this feature.

Endpoints

POST /pts/v2/payments

POST /pts/v2/payments

POST /pts/v2/payments

Example

{  "clientReferenceInformation": {    "code": "TC50171_3"  },  "processingInformation": {    "leastCostRouting": "true"  },  "paymentInformation": {    "card": {      "number": "CARD_NUMBER",      "expirationMonth": "12",      "expirationYear": "2031"    }  },  "orderInformation": {    "amountDetails": {      "totalAmount": "102.21",      "currency": "USD"    },    "billTo": {      "firstName": "John",      "lastName": "Doe",      "address1": "1 Market St",      "locality": "san francisco",      "administrativeArea": "CA",      "postalCode": "94105",      "country": "US",      "email": "[email protected]",      "phoneNumber": "4158880000"    }  }}
{  "_links": {    "authReversal": {      "method": "POST",      "href": "/pts/v2/payments/6843757345116021304951/reversals"    },    "self": {      "method": "GET",      "href": "/pts/v2/payments/6843757345116021304951"    },    "capture": {      "method": "POST",      "href": "/pts/v2/payments/6843757345116021304951/captures"    }  },  "clientReferenceInformation": {    "code": "TC50171_3"  },  "id": "6843757345116021304951",  "orderInformation": {    "amountDetails": {      "authorizedAmount": "102.21",      "currency": "USD"    }  },  "paymentAccountInformation": {    "card": {      "type": "001"    }  },  "paymentInformation": {    "accountFeatures": {      "category": "A"    },    "tokenizedCard": {      "type": "001"    },    "card": {      "type": "001"    }  },  "processorInformation": {    "approvalCode": "831000",    "networkTransactionId": "558196000003814",    "transactionId": "558196000003814",    "responseCode": "000",    "avs": {      "code": "Y",      "codeRaw": "Y"    }  },  "status": "AUTHORIZED",  "submitTimeUtc": "2023-05-18T02:08:54Z"}

Required Fields

Include these fields with a standard authorization request when processing a least-cost routing request:

FieldDescription
orderInformation.amountDetails.currency—
orderInformation.amountDetails.totalAmount—
orderInformation.billTo.address1—
orderInformation.billTo.administrativeArea—
orderInformation.billTo.country—
orderInformation.billTo.email—
orderInformation.billTo.firstName—
orderInformation.billTo.lastName—
orderInformation.billTo.locality—
orderInformation.billTo.postalCode—
paymentInformation.card.expirationMonth—
paymentInformation.card.expirationYear—
paymentInformation.card.number—
processingInformation.leastCostRoutingSet the value to true.

Last published: September 29, 2026