Payments
Find any payment, read its full lifecycle, refund it, and trace the funds to your payout.
A payment is a single attempt to charge a customer for a defined amount, surfaced in your dashboard as one row in the Payments tab and one detail page. Behind the scenes, it's a Payment IntentAPI with one or more ChargeAPI attempts, but in the dashboard you just see the payment.
This page covers how to find a payment, what every section of the detail page tells you, and how the dashboard surfaces refund state, processor failures, and the connection from a payment to the payout that disbursed the funds.
What you can do
Find any payment fast
Search by ID, customer email, phone, or name. Filter by status, amount range, date, country, device, or payment method type.
Read the full lifecycle
A timeline shows every step from start to authorization, 3-D Secure, the customer's action on a redirect or voucher, refunds, and the eventual payout.
Refund inline
Issue a full or partial refund from the detail page. Refund state shows up on the same payment row, no separate refunds list.
Trace funds to payout
Every successful payment carries a Connected Payout link that takes you to the payout batch where the money landed.
Find a payment
Click Transactions in the dashboard sidebar. The page opens on the Payments tab.
KPI cards
Three totals sit above the table, scoped to the filters you have applied:
| Card | What it shows |
|---|---|
| Amount captured | Sum of money successfully charged across the visible payments. |
| Amount refunded | Sum of refunds processed against the visible payments. |
| Net amount | Captured minus refunded. The total the visible payments contributed. |
Search and filters
The search box matches against payment ID, customer ID, customer email, name, and phone. The filter bar above the table holds:
| Filter | What it does |
|---|---|
| Status | Multi-select: Successful, Failed, Refunded, Partially Refunded, and others. |
| Amount | Range or comparison (e.g. greater than, between two values). In your settlement currency. |
| Date | Range or relative window. Uses your browser timezone. |
| Country | Filter by the customer's IP country at payment time. |
| City | Filter by IP-derived city. |
| Device | Mobile, tablet, desktop. |
| Platform | iOS, Android, Windows, macOS, and others. |
| Browser | Chrome, Safari, Firefox, and others. |
| Payment method | Card, Valu, Fawry, mobile wallet. |
Columns
| Column | What it shows |
|---|---|
| Amount | The amount in the customer's currency. A small VAT or Fee badge appears when those configs are on; hover the amount to see a payment breakdown. |
| Status | A color-coded badge. Hover for a one-line tooltip; on Failed, the tooltip carries the decline reason and a link to the matching error page. |
| Customer | Email and phone of the paying customer, with a click-through to their profile. |
| Payment Method | Card brand and last 4, Valu, Fawry, or wallet identifier. |
| Date | When the payment was created. |
| Description | Free-form text on the payment, when set. |
| Refunded Date | When the most recent refund was issued, when applicable. |
| Failure Reason | A short, plain-language reason on Failed rows. Hover for the full decline code, network code, and a link to the right error page. |
Click any row to open the payment.
Read a payment
The detail page is organized as a vertical narrative: who paid, what happened, where the money sits now. Sections appear in this order, with sections hiding when they don't apply.
Header
The amount and currency are at the top, with the status badge next to them. A Held badge appears when the funds are temporarily frozen for a risk review (see below). When the payment is refundable, a Refund button sits to the right.
Customer Intelligence
A panel of signals XPay derives from this single payment, like a repeat purchase, a cross-border charge, or a payment retry. See Transaction signals for the full list and how to act on them.
Timeline
A reverse-chronological log of every step in the payment's life. Common entries:
- Payment started. When the Checkout Session began.
- 3-D Secure (succeeded, attempted, failed, abandoned). Card-only.
- Customer action (succeeded or abandoned). For BNPL redirects, kiosk vouchers, OTP, mobile wallet redirects, and bank transfers.
- Authorized or Failed. The processor's verdict on the charge attempt. Failed entries on the latest attempt carry the decline code, the network decline code, and a link to the matching page in Decline codes.
- Refund (succeeded, pending, failed). One entry per refund.
- Payout (scheduled, in transit, paid, failed, canceled). Tracks the payout batch the funds were assigned to.
- Canceled. When the payment was canceled.
Multiple charge attempts on the same payment (a customer retrying with a different card) all show up here. The latest attempt's decline info is the one expanded by default.
Checkout Summary
The line items the customer paid for, drawn from the Checkout Session that created the payment. Useful when a customer asks "what did I buy?".
Transaction Details
A right-column block (stacks below on mobile) listing the metadata fields:
| Field | What it shows |
|---|---|
| Customer | Name, email, phone with a click-through to their profile. |
| Payment ID | The pi_* ID, with one-click copy. |
| Payment Method | The card or wallet used. |
| Description | Whatever your integration set on the payment. |
| Dates | When the payment was created and last updated. |
Payment Breakdown
The math behind the amount. Lines appear conditionally based on configuration:
| Line | When it shows |
|---|---|
| Customer paid + Exchange rate + Settlement amount | When the customer paid in a different currency than your settlement currency. |
| Payment amount | Always. The base amount before VAT and fees. |
| VAT (X%) | When VAT collection is on for this payment. |
| XPay processing fees (paid by customer) | When fee pass-through is on. Adds to the customer's total. |
| Total charged to customer | When VAT or fee pass-through is on. |
| XPay processing fees (deducted) | When fee pass-through is on. The amount XPay deducts. |
| Processing fees | When fee pass-through is off. The flat XPay fee taken from your settlement. |
| Refunded amount | When any refund has been issued. |
| Net amount | Always. What the payment ultimately contributed to your balance. |
Connected Payout
Once the payment is settled and assigned to a payout batch, this section shows the payout ID (clickable through to its detail), amount, status, and arrival date. See Payouts and settlement for the full payout view.
Payment Method Details
For card payments: brand, masked number, fingerprint, expiry, issuing country, funding type (credit, debit, prepaid), and the 3D Secure result. For Valu, Fawry, and wallets: the relevant identifiers (loan number, voucher reference, wallet ID).
Client and device info
Geolocation, IP, browser, OS, and device type at payment time. Useful when correlating with Card-Country Mismatch or Multi-Device signals on the customer's profile.
Related transactions
Other payments by the same customer, with status and amount. Click any to drill across.
Statuses
Every payment carries a status. The ones you'll meet most often:
| Status | What it means |
|---|---|
| Successful | Payment authorized and captured. Funds are queued for payout. |
| Partially Refunded | At least one refund has been issued, but the full amount is not refunded. |
| Refunded | The full captured amount has been refunded. |
| Failed | The processor declined the charge. Hover the badge in the list, or open the payment, to see the decline reason. |
| Pending | The payment is in flight. Common for kiosk vouchers, BNPL redirects, and bank transfers awaiting confirmation. |
| Requires Action | The customer needs to complete a step, like a 3-D Secure challenge or a voucher payment. |
| Canceled | The payment was canceled before completion. |
| Voided | An authorized payment was released without capture. |
| Expired | The payment timed out without the customer completing it. |
A handful of additional statuses (like Requires Confirmation and Requires Payment Method) only appear on a payment that's mid-creation. The list view collapses these into the closest user-meaningful state.
Refund a payment
Open the payment, click Refund in the top right, and a sheet opens. Choose a full refund or enter a partial amount, optionally pick a reason (Requested by customer, Duplicate, Fraudulent), and submit. The refund appears in the timeline immediately and the payment's status flips to Partially Refunded or Refunded.
The button is hidden when the payment isn't refundable: not yet captured, already fully refunded, on a payment method that doesn't support refunds, or under a risk hold.
See Refunds for the full flow, partial refund rules, and what shows up where.
The Held badge
Sometimes a payment carries a Held badge in the header. This is a temporary risk review by XPay: the captured funds are frozen, and the Refund button is hidden until the review is resolved. Holds are placed and released by the XPay risk team. Contact support if you need clarification on a specific hold.
Where to next
Refunds
Issue a refund, partial vs full, and how refund state surfaces across the dashboard.
Transaction signals
The signals XPay surfaces on each individual payment.
Balance and activity
Where every captured charge, refund, fee, and adjustment shows up as a balance entry.
Payouts and settlement
The payout batches that disburse settled funds to your bank.