Payment Failure Tracking & Retry Links

Overview

Horsify tracks payments that never complete and gives organisers the tools to resend a payment link or clean up a dead registration. A rider who starts checkout and doesn't finish leaves a registration sitting at Pending Payment; once Horsify is certain the attempt can't still succeed, it becomes PaymentFailed so you can see it and act.

Purpose: Give organisers visibility into failed payments and self-service tools to recover revenue by resending payment links or removing dead registrations, without needing to contact support.


Who Uses This

  • Organisers: Admins and staff with Finances at Manage can send payment links and adjust a line's price. Admins, staff with Events and entries at Manage and the event's Event team can delete orphaned registrations. See Staff Access.
  • Global Admins: Same capabilities across all organisations from the global admin registration dashboard.
  • Riders: Receive a new checkout email when an organiser resends a payment link, and one automatic retry email after a failed payment (see below).

Key Features

1. Automatic Payment Failure Detection

A background process watches outstanding checkout sessions. A registration moves from Pending Payment to PaymentFailed when the Stripe checkout session expires (Stripe keeps one payable for about 24 hours), if the session no longer exists at Stripe at all, or when Stripe reports a declined card. If the rider has since opened a newer checkout for the same entry, an older session expiring doesn't fail it.

Give it a day before you chase. A registration sitting at Pending Payment overnight is normal, and the rider can still legitimately pay from the link they already have. Horsify deliberately waits for the session to expire rather than declaring failure early and leaving a live payment link pointing at a registration already marked as failed.

If you'd rather not wait, resending the payment link works from Pending Payment too.

A top-up never fails a paid entry. If a rider has already paid and then adds a class, the checkout for the difference doesn't change their entry's status. If they abandon it or let it expire, the entry stays Confirmed with the balance still owing, and keeps its place.

1a. Automatic Retry Link

Horsify emails the rider a fresh payment link by itself, once per registration:

  • when their checkout session expires unpaid, or
  • about an hour after a declined card, if they still haven't paid.

It isn't sent for a cancelled event, while the rider has another checkout for the same entry open or paid, while another live entry for the same event already covers the same rider (for example they entered again after a declined card), or while new charges on your Horsify-managed Stripe account are on hold. After that one automatic email, any further link comes from you (below).

2. Resend Payment Link

Organisers can send a fresh checkout link to a rider whose registration is in PaymentFailed or PendingPayment status, or is Pending (awaiting approval) or Confirmed with an unpaid balance. For a Pending registration the action says Send rather than Resend, and sending the link accepts the entry: it moves to Pending Payment and leaves your approval queue. A cancelled event can't be sent a payment link. The system:

  1. Validates the registration status
  2. Creates a new checkout session for the outstanding balance
  3. Returns the registration to Pending Payment, unless it has already paid part of its total. A top-up like that keeps its status (for example Confirmed) while the balance is collected
  4. Emails the new checkout link to the registrant

An entry stops holding its ticket place when its last payment attempt ends. Sending a link takes the place back if there's room. If the ticket has no places left, Horsify says so and asks Send the link anyway? before sending. If you send it anyway and the rider pays, the ticket will have more entries than places.

2a. Adjust a Line Price Before Sending the Link

The payment link bills the registration's outstanding balance, so the figure to change when a rider should pay something other than the advertised price is the registration itself, not the link. On the registration detail page every session/ticket line carries an Adjust price action. It sets the unit price of that one line by hand, for example to honour the $10 a rider was quoted before the ticket went to $30, or to make a committee member's entry free, and then runs the same amendment path as every other change: the registration total is recomputed, the live invoice is rewritten (with the reason, if one was given, in its notes), and the rider can optionally be emailed the amended confirmation and invoice.

  • The line is marked Adjusted price on every surface, with the advertised figure beside it ("Adjusted price $10.00 (standard $30.00)"), so the invoice cannot be mistaken for a data error.
  • An adjusted line keeps its figure through later amendments: "Edit Sessions & Tickets" re-prices every other line from the ticket but leaves an adjusted line alone. Setting the price back to the ticket's advertised figure clears the adjustment.
  • Nothing moves money. A reduction on an unpaid registration lowers what the payment link bills; a reduction on a paid registration is reported as an overpayment for the organiser to refund from the payment record; an increase becomes an amount owing.

Endpoint: PUT /api/organisations/{orgId}/registrations/{registrationId}/session-selections/{selectionId}/price (organisation admins and staff with Finances at Manage, the same people who may send the link).

3. Delete Orphaned Registrations

Organisers can permanently delete registrations that are stuck in Cancelled, PaymentFailed, or PendingPayment status, and unpaid Confirmed registrations that the organiser added without a rider account. This cleans up registrations where the rider never completed payment and frees capacity.

If you leave them, Horsify tidies up for you: seven days after an event ends, any registration still at Pending Payment or PaymentFailed and unpaid is cancelled automatically. A registration whose entries have results is left alone, so you can still chase a rider who competed.

4. Payment Type Restrictions

When you've connected your own Stripe account, the available payment methods at checkout are restricted to those your organisation has configured fees for. If no fee configurations exist, card payment is always available as a fallback.


How to Use

Resending a Payment Link

  1. Open Registrations in the organiser menu (the Registration Management page), or Admin Dashboard → Registrations for global admins
  2. Locate the registration with status PaymentFailed or PendingPayment
  3. Click the envelope icon in its row (Resend payment link, or Send payment link for a registration still awaiting approval). On the registration detail page it's a labelled button.
  4. Review the confirmation dialog showing the rider's email, the event and the payment amount
  5. Click Send Payment Link to confirm
  6. The rider receives a new checkout email with a fresh payment link

Honouring a Different Price for One Rider

  1. Open the registration from Registration Management (the detail page, not the list)
  2. In Session Selections, click Adjust price on the line
  3. Enter the new price each (0 makes the line free) and, optionally, a reason for the invoice
  4. Leave Email the amended invoice to the rider ticked if the rider should hear about it now
  5. Click Save price. The registration total and invoice update immediately
  6. Click Resend payment link (or Send payment link). The link bills the new outstanding balance

Deleting an Orphaned Registration

  1. Open Registrations in the organiser menu (the Registration Management page)
  2. Locate a registration with status Cancelled, PaymentFailed, or PendingPayment (or an unpaid Confirmed registration you added yourself)
  3. Click the red bin icon (Delete) in its row
  4. Review the confirmation dialog: this action is permanent
  5. Click Delete permanently to confirm
  6. The rider receives an email notification that their registration has been removed

Related Features

Tags
Payment Fees Configuration - Comprehensive Feature Guide
Bank Account Details for Organisations