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:
| Field | Description |
|---|---|
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.leastCostRouting | Set the value to true. |
Thanks for your feedback!
Last published: September 29, 2026