Chargebacks & Fraud Protection
Chargebacks occur when a cardholder disputes a fiat payment. Niftipay provides a multi-layered fraud detection system that protects your business automatically. This page covers:- How fraud protection works — overview of the system
- List chargebacks (
GET /api/fiat/chargebacks) - Get a single chargeback (
GET /api/fiat/chargebacks/:id) - Chargeback statistics (
GET /api/fiat/chargebacks/stats) - Chargeback cases (blocked IPs & emails)
- Fraud signals (order risk check) (
GET /api/fiat/orders/:identifier/fraud-signals) - Fraud alert emails
- Block page & contact URL
New: You can now proactively block IPs, emails, and card BINs without waiting for chargebacks. See Fraud Prevention & Blocking.
How fraud protection works
Niftipay uses multiple signals to detect and prevent repeat fraud:1. Automatic blocking (IP & email)
When a chargeback is recorded, Niftipay checks whether the same IP address or email has been involved in previous chargebacks for your account. If 2 or more chargebacks share the same IP or email, that identifier is automatically blocked and a case is created. When a blocked customer tries to pay via your checkout link, they see a block page with their case number instead of the payment form. You can add a contact URL so they can reach you if the block was a mistake. Each block is per merchant — if you unblock an IP, it only affects your account. Other merchants’ blocks are independent.2. Manual blocking (IP, email, BIN)
You can proactively block IPs, emails, and card BINs without waiting for chargebacks. This is useful when you spot suspicious activity or know a particular card range is being used for fraud. See the Fraud Prevention & Blocking page for the full API reference.3. BIN blocking
Block entire card ranges by their BIN (first 6 digits of the card number). When you notice fraud from cards sharing the same BIN (e.g.443047), block that BIN to prevent all cards in that range from completing checkout.
See Block a Card BIN for details.
4. Unusual amount detection
Niftipay monitors your order amounts and flags orders that are significantly higher than your average. If the same IP or email submits 2 or more flagged orders within 24 hours, that identifier is automatically blocked. See Unusual Amount Detection for details.5. Fraud alerts at payment time
When any order is paid, Niftipay checks the card number (last 4 digits), email, IP, card BIN, and order amount against:- Your own chargebacks — full order details included in the alert
- Platform-wide chargebacks from other merchants — count and date included (no other merchant’s details are exposed)
- Blocked BINs — flagged if the card BIN is on the blocklist
- Amount anomalies — flagged if the order amount is unusually high
6. Disposable email detection
Orders placed with disposable/temporary email addresses (e.g.mailinator.com, guerrillamail.com) are automatically flagged. This does not block the order, but the flag is included in fraud alert emails.
Niftipay checks against a database of 120,000+ known disposable email domains.
7. VPN / TOR / proxy detection
Before every checkout redirect, Niftipay checks the customer’s IP against known VPN, TOR, and proxy networks. TOR and proxy traffic is blocked by default. This runs independently of the chargeback system.Base URL
All examples use:https://www.niftipay.com
Authentication
These endpoints support two authentication methods:1) API Key (recommended for integrations)
Send your API key in thex-api-key header.
2) Session cookie (browser / dashboard usage)
If you are authenticated via the dashboard.Amounts are in minor units
All monetary values (feeCents, orderAmountCents, amountCents, subtotalCents) are stored in minor units (e.g. cents for EUR/USD).
To convert to the major unit, divide by 100 for most currencies. See Fiat Orders for details on currency decimal rules.
List Chargebacks
Endpoint
GET /api/fiat/chargebacks
Requires API key or session authentication.Returns a paginated list of chargeback events for the authenticated user, ordered by most recent first.
Query parameters
Example request
Example response
Response fields
Nested order object
Get Chargeback
Endpoint
GET /api/fiat/chargebacks/:id
Requires API key or session authentication.Returns a single chargeback event by its ID, along with the linked fiat order details.
Path parameters
Example request
Example response
Chargeback Statistics
Endpoint
GET /api/fiat/chargebacks/stats
Requires API key or session authentication.Returns a daily breakdown of chargeback counts and amounts, plus overall chargeback rate.
Example request
Example response
Response fields
days array
summary object
Error Responses
Invalid query parameters (400)
Missing or invalid authentication (401)
Chargeback not found (404)
Returned byGET /api/fiat/chargebacks/:id when the ID does not exist or does not belong to your account.
Chargeback Cases (Blocked IPs & Emails)
When an IP address or email appears in 2 or more chargebacks for your account, Niftipay automatically creates a chargeback case and blocks that identifier. Blocked customers see a message with their case number instead of being redirected to checkout. Each case has a type:ip (blocked by IP address) or email (blocked by email address).
Merchant isolation: Each case belongs to your account only. If you unblock an IP or email, it only affects your checkout. Other merchants’ blocks are completely independent.
List Chargeback Cases
Endpoint
GET /api/fiat/chargeback-cases
Requires API key or session authentication.Returns a paginated list of chargeback cases for the authenticated user.
Query parameters
Example request
Example response
Response fields (case object)
Get Chargeback Case
Endpoint
GET /api/fiat/chargeback-cases/:id
Requires API key or session authentication.Returns a single chargeback case with its related chargeback events and order details.
Path parameters
Example request
Example response
Unblock a Case
Endpoint
PATCH /api/fiat/chargeback-cases/:id
Requires API key or session authentication.Unblocks an IP or email, allowing orders from that identifier to proceed again. If a new chargeback is later recorded from the same identifier, the case will be automatically re-blocked.
You can only unblock your own cases. Other merchants’ blocks are not affected.
Path parameters
Request body
Example request
Example response
Error: already unblocked (409)
Fraud Signals (Order Risk Check)
Endpoint
GET /api/fiat/orders/:identifier/fraud-signals
Requires API key or session authentication.Returns a comprehensive fraud risk assessment for a single fiat order. Checks the order’s card number, email, and IP address against all chargeback records (both your own and platform-wide), checks for active blocks, detects disposable emails, and computes an IP risk score — all in a single request. This endpoint is used by the WooCommerce plugin to display real-time fraud warnings on the order detail page.
Path parameters
Example request
Example response
Response fields
order object
severity levels
signals array
Each signal is an object with a type field. The possible types are:
Merchant-level matches (
*_merchant) include a matches array with full order details:
Platform-level matches (
*_platform) only include a count and most recent amount/date — no other merchant’s details are exposed.
ipRisk object
Error responses
Order not found (404)
Not a fiat order / invalid identifier (400)
Ambiguous merchant reference (409)
If yourmerchantReference matches multiple orders:
orderKey or UUID id instead.
Fraud Alert Emails
Niftipay sends you an email when a paid order matches previous chargeback signals. These alerts are sent automatically — no API configuration needed.What triggers an alert
When an order completes payment, Niftipay checks three signals against your own chargebacks and chargebacks across the entire platform (from other merchants):
If any signal matches, you receive a single email with all risk signals and related chargebacks.
Example alert email contents
Privacy: Platform-wide alerts never expose other merchants’ order numbers, references, or identities. Only the signal type, count, and most recent date/amount are shown.
What to do when you receive an alert
- Review the order in your dashboard before shipping any goods.
- If the order looks legitimate, no action is needed.
- If the order looks fraudulent, you can cancel or refund it from the dashboard.
Block Page & Contact URL
When a customer is blocked, they see a page like this:There’s a problem with your order Case number: #CB-00042 Please contact the shop for assistance. [Contact Shop] ← button (only if you configured a contact URL)
Setting up a contact URL
You can add acontactUrl to your fiat integration so blocked customers can reach you directly. The “Contact Shop” button links to this URL.
To set it, update your integration via the API:
null: