Smart Retry

Smart Retry Integration Guide

Last updated:December 27, 2024
This guide is here to help you optimize your payment processing with Smart Retry. Your transactions will be intelligently routed to the best acquirers, boosting acceptance rates and conversions. To get started, simply enable the necessary configuration settings:
  • Soft Bank Reject Codes: Customize or use the default list to retry failed transactions.
  • Standalone Payments: Automatically retry failed transactions with a fallback acquirer.
  • Card on File Payments: Automatically retry unscheduled, recurring, or installment payments.
  • Fallback Merchant Account: Configure a fallback account to direct transactions to your preferred acquirer.
Please engage with your Customer Success Manager to understand which acquirers are compatible as fallbacks for COF payments.

Use cases

Fallback acquirer

The merchant initiates the payment authorization with Acquirer A and due to a Soft Bank Reject the payment is automatically retried with the fallback Acquirer B.

How it works

Smart retry with the fallback acquirer

Retry the payment request with the fallback acquirer upon a soft bank reject.

OPTIONAL

Manage the payment

Send the back-office payment request to the fallback acquirer if the original payment was processed there.

Transactions:
DB - Soft Bank Reject
DB - Soft Bank Reject
DB
DB
RF
RF
CB
CB
CR
CR
RB
RB

1. Smart retry with the fallback acquirer

Initiate a server-to-server POST request with the required payment data. If the default acquirer is temporarily unavailable, the transaction is routed to the fallback acquirer. The response to a successful request includes an id that should be stored and used in subsequent back-office operations.

Simulating a Soft Bank Reject

To simulate a soft bank reject, use the card.holder parameter in your request with the appropriate soft bank reject code. Select the desired code from the dropdown below to correspond to the type of soft bank reject you want to simulate.

Simulate decline:

Sample request:

Language:
curl https://test.oppwa.com/v1/payments \
-d "entityId=Configuration not ready. Please reset in Administration > OPP > Developer Portal." \
-d "paymentBrand=VISA" \
-d "card.holder=800.100.100" \
-d "amount=19.99" \
-d "paymentType=DB" \
-d "currency=EUR" \
-d "testMode=EXTERNAL" \
-d "card.number=4242428756079383" \
-d "card.expiryMonth=12" \
-d "card.expiryYear=2025" \
-d "card.cvv=123" \
-d "customer.email=john.smith@gmail.com" \
-d "customer.givenName=Smith" \
-d "customer.ip=192.168.0.0" \
-d "customer.surname=John" \
-d "customer.language=DE" \
-d "billing.city=MyCity" \
-d "billing.country=DE" \
-d "billing.postcode=712121" \
-d "billing.state=DE" \
-d "billing.street1=MyStreet" \
-d "threeDSecure.eci=05" \
-d "threeDSecure.authenticationStatus=Y" \
-d "threeDSecure.version=2.2.0" \
-d "threeDSecure.dsTransactionId=c75f23af-9454-43f6-ba17-130ed529507e" \
-d "threeDSecure.acsTransactionId=2c42c553-176f-4f08-af6c-f9364ecbd0e8" \
-d "threeDSecure.verificationId=MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=" \
-d "threeDSecure.amount=19.99" \
-d "threeDSecure.currency=EUR" \
-d "threeDSecure.flow=challenge" \
-H "Authorization: Bearer OGE4Mjk0MTc0ZWQ5YzJiNTAxNGVkZTY3ZTkzMjA2ZjN8SjR5SnhUYkNncw=="

Try it Out

2. Manage the payment

Initiate a back-office server-to-server POST request over the authorized payment. If the original payment was processed with the fallback acquirer, the request will be handled by the fallback acquirer.
  • refund either the full captured amount or a part of the captured amount (see refund)
  • reflect the chargeback processed by the bank (see chargeback)
  • reflect the chargeback reversal processed by the bank (see chargeback)
Operation:

Sample request:

Language:
https://test.oppwa.com/v1/payments/
curl https://test.oppwa.com/v1/payments/{id} \
-d "entityId=Configuration not ready. Please reset in Administration > OPP > Developer Portal." \
-d "amount=19.99" \
-d "paymentType=RF" \
-d "currency=EUR" \
-d "testMode=EXTERNAL" \
-H "Authorization: Bearer OGE4Mjk0MTc0ZWQ5YzJiNTAxNGVkZTY3ZTkzMjA2ZjN8SjR5SnhUYkNncw=="

Try it Out


See also