Overview
The Auth-Settle flow allows merchants to perform Authorization and Settlement as separate steps. This topic describes how to implement an Auth-Settle flow using Nuvei REST API 2.0:
- Authorization – Request that confirms the availability of the payment amount in the customer’s account.
- Settlement – After receiving authorization from the issuer, the merchant sends one or more settlement requests:
-
- A single request that debits from the customer’s account the full authorized amount (full settlement).
- Multiple requests that add up to the full authorized amount (partial settlements).
Merchants with a USprocessingEntityIdand that use a TSYS bank as the acquirer can use the Multi-Settle Option.
Authorization
Send a POST /payments request and include one of the following:
transactionType: “Auth” – A successfulAuthtransaction places a temporary hold on the approvedamountin the customer’s account for a short time frame to ensure sufficient funds are available to settle the payment. At the end of the time frame, the authorization and the temporary hold expire automatically.
For example, a merchant that wishes to charge customers only after confirming product availability can first send an authorization request. Later, when the product is ready to be shipped, the merchant can send a settlement request.transactionType: “PreAuth” – Similar to anAuthrequest, except that the temporary hold can be placed on an amount larger than the final purchase amount, and the hold can be set for a longer time frame. The temporary hold is cleared when the merchant charges the customer or the hold expires automatically after 7 to 31 days, depending on the issuer and the industry.
For example, a car rental company can send a pre-authorization request to temporarily hold $5,000 in the customer’s account. When the car is returned without fines, scratches, or accident damage, the car rental company sends a $400 settlement request that also removes the temporary hold.
Example POST /payments Request with transactionType: “Auth”
{
"processingEntityId": "<your processingEntityId>",
"amount": 10.5,
"currency": "USD",
"transactionType": "Auth",
"paymentOption": {
"store": "buyerToken",
"card": {
"cardNumber": "5101081046006034",
"cardHolderName": "John Smith",
"expirationMonth": "10",
"expirationYear": "2026",
"cvv": "345"
}
},
"custom": {
"description": "Some description"
},
"deviceDetails": {
"browser": {
"acceptHeader": "Y",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
"javaEnabled": "true",
"language": "en-US",
"colorDepth": "24",
"screenHeight": "1080",
"screenWidth": "1920",
"timeZone": "0",
"javaScriptEnabled": "true"
}
},
"buyerDetails": {
"buyerId": "<unique customer identifier in your system>",
"firstName": "John",
"lastName": "Smith",
"companyName": "Nuvei Corp",
"dateOfBirth": "1978-01-01",
"email": "[email protected]",
"phone": "6175551414",
"billingAddress": {
"address": "22 Main Street",
"zip": "02460",
"city": "Boston",
"countryCode": "US",
"phone": "6175551414",
"addressMatch": "true"
},
"shippingAddress": {
"sameAsBilling": "true",
"address": "22 Main Street",
"zip": "02460",
"city": "Boston",
"countryCode": "US",
"phone": "6175551414"
}
}
}
Example POST /payments Response with result.status: “authorizedOnly”
{
"paymentId": "375021",
"transactionId": "2110000000010964387",
"externalTransactionId": "211010964387",
"amount": 10.5,
"currency": "USD",
"transactionType": "Auth",
"result": {
"status": "authorizedOnly"
},
"authCode": "961830",
"partialApproval": {
"requestedAmount": 10.5,
"requestedCurrency": "USD"
},
"paymentOption": {
"card": {
"cardHolderName": "John Smith",
"maskedCardNumber": "5****6034",
"bin": "523233",
"last4Digits": "6034",
"expirationMonth": "10",
"expirationYear": "2026",
"acquirerId": "99",
"cardType": "Credit",
"cardBrand": "MASTERCARD",
"paymentTokenId": "b058c947-011d-4695-969a-3d6dae9a1d91"
}
}
}
If the issuer approves the authorization request, the merchant can continue the flow by:
- Settling the transaction, or by
- Voiding the authorization, which cancels the temporary hold without completing the payment.
Settlement
The merchant can send one or more POST /payments/{payment-id}/settles requests using the paymentId of the original payment transaction. Provide the mandatory parameters for the request. The merchant can:
- Send one request for the full authorized amount (full settlement).
- Send multiple requests that add up to the full authorized amount (partial settlements).
Example POST /payments/{payment-id}/settles Request
{
"processingEntityId": "<your processingEntityId>",
"amount": 5,
"custom":{
"description":"test test"
}
}
Example POST /payments/{payment-id}/settles Response
{
"settleId": "457191",
"transactionId": "2110000000010751269",
"amount": 5,
"currency": "USD",
"result": {
"status": "approved"
},
"authCode": "377290"
}
Multi-Settle Option
Merchants with a US processingEntityId and that use a TSYS bank as the acquirer can send multiple /payments/{payment-id}/settles requests that add up to the full authorized amount (partial settlements). Include the mandatory parameters and:
totalSettleCount: “<the number (positive integer) of partial settlements into which the settlement is split>”
Include totalSettleCount in the initial /payments/{payment-id}/settles request and in all subsequent /payments/{payment-id}/settles requests. In all requests, the value must be the same.
Example POST /payments/{payment-id}/settles Request – Multi-Settle Option
{
"processingEntityId": "<your processingEntityId>",
"amount": 5,
"custom": {
"description": "Some description"
},
"totalSettleCounts": 2
}