Nuvei
Adapter 0.1.0, documentation reviewed 2026-10-25. Overall status: limited.
Capabilities
| Error decoding | supported |
| API response parsing | limited |
| Webhook / notification parsing | limited |
| Timeline | limited |
| Event correlation | limited |
| Diagnostic rules | limited |
Supported input
| Format | Description | Status |
|---|---|---|
nuvei.rest_response | REST API 1.0 JSON response (status, errCode, reason, transactionStatus, gwErrorCode, gwExtendedErrorCode, gwErrorReason, paymentMethodErrorCode, paymentMethodErrorReason) | limited |
nuvei.payment_dmn | Payment DMN as a query string or form body (ppp_status, Status, ErrCode, ExErrCode, Reason, ReasonCode) | limited |
nuvei.withdrawal_dmn | Withdrawal DMN (wdRequestId, wdRequestState, wdRequestStatus, wdOrderStatus) | limited |
nuvei.chargeback_dmn | Control Panel event DMN (JSON) with EventType Chargeback | limited |
nuvei.event_dmn | Other Control Panel event DMNs (alerts, manual corrections, fraud reports, PayFac and terminal events); recognized, not analyzed | unsupported |
nuvei.subscription_dmn | Rebilling subscription DMNs (dmnType); recognized, not analyzed | unsupported |
nuvei.payment_page_redirect | Payment Page parameters appended to the Success, Pending or Error URL (browser side); recognized, not analyzed | unsupported |
nuvei.rest_v2 | REST API 2.0 (beta), a different JSON format with dotted decline codes | unsupported |
nuvei.web_sdk | Web SDK and Simply Connect browser results | unsupported |
Notification delivery
- Repeated deliveries are recognized by EventId (or EventCorrelationId) for Control Panel event DMNs; payment DMNs have no delivery id, so the transaction id (TransactionID, or PPP_TransactionID when it is empty), Status, ppp_status, transactionType and responseTimeStamp are combined; Nuvei documents that notifications can be delivered more than once.
- Delivery order: not documented by the provider.
- Nuvei resends a DMN every 15 minutes for 24 hours until it gets HTTP 200, and an APM payment sends a PENDING DMN before the final one. Make the handler idempotent on the transaction id and status, ignore a status that is older than the one already stored, and confirm the state with /getPaymentStatus or /getTransactionDetails before acting.
Known limitations
- Codes are decoded only by the field that carries them (errCode, gwErrorCode with gwExtendedErrorCode, gwErrorReason, threeDReasonId, merchantAdviceCode), because the same numbers mean different things in different fields. A bare number is never decoded.
- APPROVED and PENDING share the gateway code pair 0/0, so the outcome is taken only from the status fields (transactionStatus, status, Status, ppp_status, wdOrderStatus, wdRequestStatus).
- Filter codes 1158, 1159, 1160 and 1167 are listed twice by Nuvei with unrelated meanings; both meanings are shown with possible confidence. Codes 1211, 1212, 1213, 1215 and 1216 are only listed as reserved.
- Nuvei calls its decline reason list non-exhaustive. Unlisted gwErrorReason texts are shown as a decline with possible confidence. 29 errCode values named only in the Java SDK constants are decoded with possible confidence.
- APM-side codes (paymentMethodErrorCode, errApmCode, apmErrorCode) and Nuvei's errScCode for APM transactions are not documented and are shown without interpretation.
- The link between the DMN fields ErrCode, ExErrCode and Reason and the REST fields gwErrorCode, gwExtendedErrorCode and gwErrorReason is inferred from the field descriptions, so gateway and filter codes from DMNs and withdrawal DMNs are decoded with possible confidence at most. ReasonCode and gwReasonCode values are not documented and are not interpreted.
- No complete declined or status=ERROR REST response is published; decline and error handling follows the field descriptions and code tables. The HTTP status of REST 1.0 errors is not documented.
- REST responses carry no timestamp and settle, refund and void responses do not echo relatedTransactionId, so a modification response cannot be linked to its payment from the response alone. Each operation has its own transactionId.
- REST /payout responses cannot be told apart from refund responses unless transactionType says payout; a Credit transaction is shown as a refund. A payment DMN with type=WITHDRAWAL and withdrawal DMNs are shown as payouts.
- Payment DMNs have no event or delivery id. The delivery key combines the transaction id, Status, ppp_status, transactionType and responseTimeStamp; whether responseTimeStamp stays the same across Nuvei's retries is not documented, so a repeated delivery with a new timestamp appears as a separate event. Without responseTimeStamp no delivery key is set.
- responseTimeStamp (YYYY-MM-DD.HH:MM:SS) is read as GMT, as the checksum section of the payment DMN page states. Delivery order is not documented.
- transactionType in payment DMNs is sent only when Nuvei enables it for the account. Without it a payment DMN is shown as a payment. Status values SUCCESS and UPDATE are documented without an outcome and are shown as unknown.
- Field names in DMNs differ in case between Nuvei's tables and examples (PPP_TransactionID, ppp_TransactionId, TransactionID, TransactionId); identifiers are matched without regard to case. Status (DMN) and status (Payment Page redirect) are told apart by case.
- Checksums (advanceResponseChecksum, responsechecksum, the withdrawal DMN checksum and the event DMN checksum header) are never verified or copied; a pasted DMN is never treated as authentic. Only the checksum length is reported.
- Withdrawal DMNs are documented only as a field table and a checksum string, without a raw example, and the notificationType of order notifications is not documented. Withdrawal amounts are not read. Withdrawal API error codes belong to Withdrawal API responses, which are not analyzed.
- Control Panel event DMNs are analyzed only for EventType Chargeback, keyed by EventId or EventCorrelationId; AttemptNumber above 1 marks a redelivery. Other event types (alerts, manual corrections, fraud reports, instant settlement, PayFac and terminal events) are recognized but not analyzed. DisputeUnifiedStatusCode values and scheme chargeback reason codes are not documented by Nuvei and are shown as supplied.
- Subscription DMNs, pre-deposit DMNs, KYC DMNs, Payment Page redirect parameters, Web SDK and Simply Connect results and REST API 2.0 (beta) are not analyzed. Payment Page redirect parameters reach the browser and are not a trustworthy final state.
- Skrill payments made through Nuvei (payment_method apmgw_MoneyBookers) arrive in Nuvei's own DMN format and are analyzed by this adapter; direct Skrill status_url posts belong to the Skrill adapter.
- Category and retry guidance per code are PandaPayLens suggestions; where Nuvei gives advice it is reflected. Mastercard Merchant Advice Codes are read only next to a decline or an error, because Nuvei's successful examples also carry one.
Examples
- Nuvei: APM payment pending, then approved: Two payment DMNs for one transaction, shown as one timeline.
- Nuvei: declined, do not honor: A REST decline where the Mastercard advice code tightens the retry advice.
Provider documentation
- Response handling (errCode, gateway, filter and decline reason tables)
- REST API 1.0 reference
- REST API 1.0 server-to-server flow
- DMN delivery
- Payment DMNs
- Withdrawal DMNs
- Control Panel event DMNs
- 3-D Secure responses
- Auth and settle
- Void
- Refund
- Payout
- Withdrawal guide
- FAQs
PandaPayLens is not affiliated with Nuvei. Pasted notifications are never treated as verified: PandaPayLens does not check webhook signatures.