Skip to content

Ticket Upgrade Option #63

Open
Open

Description

@G1ne

Users who purchase a lower-tier ticket can upgrade later to a higher-tier option by paying the difference.

Use case example:

Ticket A = Half-day conference at £60
Ticket B = Full-day conference at £99

User purchases Ticket A, then decides later that they want Ticket B, and only pays £39 extra.

They will need a way to verify their original purchase/ticket ownership. UX flow should make it obvious they can upgrade.

Activity

  1. dadofsambonzuki commented on Oct 6, 2026

    @dadofsambonzuki

    The mechanism is implemented in #64 (draft); the UX half of your issue isn't, so flagging both.

    What exists:

    • An offer rule with "requires a ticket ID" + source credit + "move my ticket", configured per event in the promo dialog.
    • Credit is based on TicketExtra.paid_value — what the ticket actually cost, not its ticket type's list price — so a chain of upgrades (A→B→C) can't inflate its own value.
    • Credit is capped at the target ticket's price: if the difference is zero or negative the upgrade is free, never a payout.
    • move voids the source ticket and releases its seat when the upgrade is paid; both tickets record the link (upgraded_from / upgraded_to).
    • Cross-currency upgrades are blocked, as are already-consumed, deactivated and refunded source tickets.
    • POST /maintenance/backfill-paid-values reconstructs paid_value for tickets sold before that field existed, so historic tickets can be upgraded too.

    What's missing — your "UX flow should make it obvious":

    • The buyer has to type <their ticket ID>, <offer code> into the same comma-separated promo box used for ordinary discounts. Nothing on the event page or on their ticket tells them an upgrade is available or that this is how to claim it.
    • The buyer's ticket page shows the QR and a copy-link button but never prints the ticket ID as text, so getting the ID means decoding the QR yourself.
    • Ownership is possession-based: the ticket ID is the bearer token, so anyone holding it can spend the upgrade.

    Proposal: keep the promo machinery as-is and add a small "Upgrade this ticket" block on the ticket page that lists the offers matching that ticket's type, shows the computed difference, and pre-fills the ticket ID — plus print the ticket ID as text. Happy to take that as follow-up work if the direction's agreed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions