Introduction
Duplication check in Axepta BNP Paribas Online is designed to detect and manage duplicate payment attempts across multiple channels (API, HPP, etc.).
It ensures that users and merchants do not accidentally trigger multiple payments with identical parameters, including cases where a payment is already in progress.
Objectives of Duplication check
Duplicates can originate from several causes :
User interaction errors (e.g., refresh, double-click, tab closure)
Merchant-side logic issues (e.g., retry loops)
Network latency or waiting times causing uncertainty about the payment status
Payment attempts still in progress when a new request is submitted
Configuration
The merchant must choose the following elements, which will be configured on the Axepta BNP Paribas Online side :
Historical depth in which duplicates are checked: 1 hour to 4 days (in hours)
- Historical depth refers to the period during which the system retains and analyzes past transaction data to detect duplicate payment attempts. This depth is configurable and can range from 1 hour to 4 days, depending on the merchant's needs and specific configurations. It allows comparing new transactions with those recorded within this timeframe to avoid redundant payments.
Scope: 1 or multiple MID
Consideration of "in progress" payments: yes/no
Operation
1. Verification
Duplicate checks are triggered before the payment page is displayed and between payment pages:
If a duplicate is detected, the user is redirected to the Failure URL
No payment is submitted if the request matches an existing or in-progress transaction
A failed transaction will not trigger duplicate detection.
2. Implementation
Option 1: Payment made via the Payment Method Selection Page (HPP) or Card Payment Form (payssl) It is necessary to add at least one of the following parameters in the API calls to /payments/sessions and /payments:
order.merchantReference
order.invoiceId
Option 2: Duplicate Verification via API – Coming Soon The Axepta Online API provides an endpoint allowing merchants to verify if a transaction is a duplicate before submitting it:
Endpoint: coming soon
Parameter:
merchantReferenceorinvoiceId(required),Amount,Currency.
3. Response Format
The API returns a status indicating whether a transaction is a duplicate :
| Status | Code | Description |
|---|---|---|
| OK | 00000000 | No duplicates detected |
| FAILED | 2XXX1550 | Payment already made |
| FAILED | 2XXX1551 | Payment pending |
| FAILED | 2XXX1552 | Multiple duplicates detected, additional criteria required |
If a duplicate is detected, the response also includes details of the existing transaction (PayID, TransactionID, Date, etc.).