Skip to main content

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

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:

CardShows
Total ReceivedSum of all matching payment amounts
Payment CountNumber of matching payments
Average PaymentTotal received divided by payment count

Payment list

Each row in the table shows:

ColumnDescription
DateWhen the payment was received (paidAt)
InvoiceThe invoice the payment was applied to — links to the invoice
ClientThe client on that invoice — links to the client
MethodPayment method badge
ReferenceOptional reference (e.g. check or transaction number), or -
AmountPayment 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 MethodAll 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

  1. Click Record Payment to open the New Payment form (/payments/new).
  2. 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.
  3. Once selected, the form shows the invoice's Invoice Total, Amount Paid, and Balance Due.
  4. Enter the Amount. Click Full to fill in the entire remaining balance. The amount cannot exceed the balance due.
  5. Choose a Payment Method.
  6. Optionally enter a Reference Number (for example, Check #1234).
  7. Set the Payment Date (defaults to today).
  8. 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

MethodStored value
CashCASH
CheckCHECK
Credit CardCREDIT_CARD
ACHACH
Wire TransferWIRE
OtherOTHER

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

  1. The customer clicks Pay Now (or follows a pay link of the form /pay/<invoiceId>/<key>).
  2. 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.
  3. 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.
  4. 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_created entry to the invoice history and notifies admins so they can respond in Stripe. When the dispute is resolved, a dispute_closed entry 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.