Payments
Record and review payments received against invoices, accept online card payments through Stripe, and keep each invoice's balance up to date.
The Payments area lives in the Billing section, which is only available on plans with the usage-based billing feature enabled. Viewing payments requires the Payments (invoice_payments) read permission, and recording a payment requires the create permission.
Overview
The Payments module lets you:
- View every payment recorded across your invoices, with summary totals
- Search payments and filter by payment method
- Record a manual payment (cash, check, ACH, wire, etc.) against an invoice
- Accept online card payments through Stripe via a public invoice link
- See how each payment affected an invoice's balance
- Have Stripe refunds and disputes reconciled automatically through webhooks
Navigate to Payments
Go to Billing → Payments (/payments) to open the payment list.
Summary cards
The top of the page shows three figures based on the currently filtered results:
| Card | Shows |
|---|---|
| Total Received | Sum of all matching payment amounts |
| Payment Count | Number of matching payments |
| Average Payment | Total received divided by payment count |
Payment list
Each row in the table shows:
| Column | Description |
|---|---|
| Date | When the payment was received (paidAt) |
| Invoice | The invoice the payment was applied to — links to the invoice |
| Client | The client on that invoice — links to the client |
| Method | Payment method badge |
| Reference | Optional reference (e.g. check or transaction number), or - |
| Amount | Payment amount in the invoice currency |
Click a row to open the payment detail page. Click the Invoice or Client link to jump straight to that record.
Filtering
You can narrow the list with:
- Search — matches against the invoice number, client name, or reference text
- Payment Method — All Methods, Cash, Check, Credit Card, ACH, Wire Transfer, or Other
The list is paginated 25 payments per page.
Recording a manual payment
Manual payments cover money you receive outside of online checkout (cash, paper checks, bank transfers, etc.).
From the Payments page
- Click Record Payment to open the New Payment form (
/payments/new). - Select the Invoice to apply the payment to. The dropdown lists only invoices that still have an outstanding balance, showing the amount due for each.
- Once selected, the form shows the invoice's Invoice Total, Amount Paid, and Balance Due.
- Enter the Amount. Click Full to fill in the entire remaining balance. The amount cannot exceed the balance due.
- Choose a Payment Method.
- Optionally enter a Reference Number (for example,
Check #1234). - Set the Payment Date (defaults to today).
- Review the Summary sidebar, then click Record Payment.
After saving you return to the payment list. The invoice's amount paid and status are updated automatically — when the full balance is paid the invoice moves to PAID, and a partial payment leaves it in a PARTIAL state.
From an invoice
Open an invoice that still has a balance (and is not a draft, void, or cancelled invoice) and click Record Payment. This opens a Record Payment dialog right on the invoice page with Amount, Payment Method, and an optional Reference field, then saves the payment against that invoice.
From a payment's detail page, when a balance remains, click Record Another Payment to open the New Payment form with that invoice already selected (the form accepts an invoiceId parameter to preselect the invoice).
Payment methods
| Method | Stored value |
|---|---|
| Cash | CASH |
| Check | CHECK |
| Credit Card | CREDIT_CARD |
| ACH | ACH |
| Wire Transfer | WIRE |
| Other | OTHER |
These are the only payment methods Ascent records. Stripe online payments are recorded as Credit Card.
Payment detail
Clicking a payment opens its detail page, which is split into two cards:
- Payment Details — amount, method, reference, payment date, and when the payment was recorded.
- Invoice Information — the invoice number, client, invoice total, total paid, and current balance due.
A Quick Actions section links to the invoice, the client, and — if a balance remains — Record Another Payment.
Online payments with Stripe
When your organization has Stripe configured (under Admin → Integrations), customers can pay invoices online with a card. No customer login is required.
The public invoice page
An invoice can be shared with a public token link at /invoice/public/<token>. This unauthenticated page shows the invoice with your organization's branding (name, logo, website, phone), the line items, totals, due date, status, and any prior payments.
If online payments are available for the invoice, a blue Pay Now banner appears with the amount due. Clicking Pay Now starts the checkout flow.
The public pay flow
- The customer clicks Pay Now (or follows a pay link of the form
/pay/<invoiceId>/<key>). - Ascent validates the link's payment key, confirms the invoice is in a payable state (Published, Sent, Viewed, Partial, or Overdue) and still has a balance, then redirects to a secure Stripe Checkout session.
- After paying, the customer lands on the Payment Successful page. Ascent confirms the payment with Stripe and records it against the invoice, then offers a View Invoice link back to the public invoice.
- If the customer cancels in Stripe, they reach the Payment Cancelled page (no charge is made) with options to Try Again, View Invoice Details, or Go to Portal Home.
The success page tells the customer that a receipt has been sent to their email. Ascent does not send a receipt for online card payments itself, so whether a receipt actually arrives depends on your Stripe account's email-receipt settings.
Processing fees
If your Stripe integration is set to pass processing fees to clients, a Payment Processing Fee line is added to the Checkout total as a convenience fee. When an expense account is configured for the integration, the Stripe processing fee on each successful charge is recorded as an expense in Ascent automatically (best-effort).
Refunds and disputes
Refunds and disputes are handled in Stripe, and Ascent keeps the invoice in sync through its Stripe webhook:
- Refunds — When a charge is refunded (fully or partially) in the Stripe Dashboard, Ascent records a matching negative payment, recalculates the invoice's amount paid and status, and notifies your team that the invoice was refunded.
- Disputes (chargebacks) — When a customer disputes a charge, Ascent adds a
dispute_createdentry to the invoice history and notifies admins so they can respond in Stripe. When the dispute is resolved, adispute_closedentry records the outcome.
There is no in-app button to issue a refund — initiate refunds from your Stripe Dashboard and let the webhook reconcile the invoice.
Tips
- Record manual payments promptly so invoice balances and your dashboards stay accurate.
- Use the Reference field to store check numbers or external transaction IDs for easy reconciliation.
- Use the Full button when collecting a full balance to avoid rounding mistakes.
- Configure the Stripe webhook so refunds, disputes, and processing-fee expenses flow back into Ascent without manual entry.