Transaction signals
What each signal on a payment means, when it fires, and how to act on it.
Every payment detail page in your dashboard carries a Customer Intelligence panel with signals XPay derives from this single payment. A signal fires when this payment is unusual in some way: an outlier amount, a country mismatch between the card and the customer's IP, a retry, a repeat, a refund, or the first ever from a new country. Each signal carries a one-line detail so you know exactly what triggered it.
This page lists every transaction signal, when it fires, and what to do about it. For signals derived from a customer's lifetime history rather than one payment, see Customer signals.
How to read a signal
Each signal sits in one of three sentiment buckets, used to color-code the panel:
| Sentiment | What it means |
|---|---|
| Warning | A pattern worth a closer look. Same-day duplicate purchases, several failed retries, or a full refund. |
| Info | Neutral context that helps you understand the payment. |
| Neutral | Pure status (currently used for routine repeat purchases beyond the same-day window). |
Where a signal fires across all your customers for context, the percentile is computed against successful payments on your account in the same database (test or live). Test-mode percentiles only compare against test-mode payments.
Unusual Amount
Sentiment: info. Detail line: "Larger than X% of transactions (Top X%)".
Triggers when this payment's amount is in the top 10% of all successful payments on your account. Needs at least two successful payments on the account to compute meaningfully.
Use it for: Spotting outliers worth a manual review (high-ticket purchases, plan upgrades, or a wrong-decimal-place mistake before it ships out).
Cross-Border
Sentiment: info. Detail line: "Card issued in XX, paid from YY" (ISO country codes).
Triggers when the card's issuing country and the customer's IP country don't match. Requires both countries to be known on the payment.
Use it for: Travel, VPN usage, or a fraud signal worth correlating with refund or dispute history. A single Cross-Border on its own isn't an alarm; combined with Payment Retry or a customer's Multi-Card User signal, it deserves a look.
Payment Retry
Sentiment: warning when 3 or more failed attempts, info otherwise. Detail line: "Succeeded after N failed attempt(s)" or "N failed attempt(s)".
Triggers when this payment had at least one failed charge attempt before reaching its current state. The signal stays even after the payment eventually succeeds, so you can see how many tries it took.
Use it for: Friction signals on the customer's end (expired card, wrong CVC, bank rules), or fraud-shaped patterns (rapid retries with different cards, which combined with Cross-Border can mean card-testing).
Repeat Purchase
Sentiment: warning when same-day duplicate, neutral when older. Detail line:
- "Same amount charged N time(s) earlier today" (same day)
- "Same amount charged N time(s) in the last X days" (within a week)
- "Same amount charged N time(s) in the last X weeks" (1 to 8 weeks)
- "Same amount charged N time(s) in the last X months" (older)
Triggers when the same customer paid the same exact amount on a different payment within the last 365 days. The same-day case is highlighted as a warning because it often means an accidental double charge.
Use it for: Catching duplicate charges before the customer raises them. Subscription-style merchants will see this signal often and can treat it as routine; one-time-purchase merchants should investigate.
New Market
Sentiment: info. Detail line: "First transaction from <country>".
Triggers when this is the first successful payment your account has ever taken from this IP country.
Use it for: A milestone marker for international expansion, or a sanity check on whether the country makes sense for your business. If you don't ship internationally and a New Market signal fires, treat it as a fraud signal.
Refunded
Sentiment: warning when fully refunded, info when partially refunded. Detail line: "Fully refunded (X% of transaction amount)" or "Partially refunded (X% of transaction amount)".
Triggers when any refund has been issued against this payment. The percentage reflects how much of the original amount has been refunded.
Use it for: A quick read on a payment's outcome without scrolling to the timeline. The full-refund warning helps when triaging a long list of recently refunded payments.
When a payment shows no signals
Empty signal panels are normal. A payment won't show signals when:
- The amount sits in the middle of your merchant's distribution (not in the top 10%).
- The card and IP countries match (or one of them is unknown).
- The payment authorized on the first attempt, no retries.
- The customer has never paid this exact amount before within the last year.
- The country has been seen on a previous successful payment.
- No refund has been issued yet.
In short: signals fire only when this payment stands apart from the rest. A quiet panel means the payment fits the pattern of typical traffic on your account.
Where to next
Payments
The detail page where the Customer Intelligence panel sits.
Refunds
What the Refunded signal reflects, and how to issue a refund yourself.
Customer signals
The 12 signals that ride on a customer's full history, not one payment.
Balance and activity
Where each captured charge and refund shows up as a balance entry.