> ## Documentation Index
> Fetch the complete documentation index at: https://memberpulseptyltd.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# UJ-M-010: Transfer or Gift a Ticket

> Member transfers their event ticket to another person

## Journey Overview

| Attribute      | Value                                                         |
| -------------- | ------------------------------------------------------------- |
| **Journey ID** | UJ-M-010                                                      |
| **Actor**      | Ticket holder                                                 |
| **Goal**       | Transfer ticket ownership to another person                   |
| **Trigger**    | Member cannot attend and wants to give ticket to someone else |
| **Outcome**    | New recipient has valid ticket for the event                  |

## Preconditions

* Member has a valid ticket for an upcoming event
* Event allows ticket transfers (configurable)
* Transfer deadline has not passed
* Ticket has not been used (checked in)

## Journey Flow

```mermaid theme={null}
flowchart TD
    A[Access My Tickets] --> B[Select ticket to transfer]
    B --> C{Transfer allowed?}
    C -->|No| D[Show restriction message]
    C -->|Yes| E[Click Transfer Ticket]
    E --> F[Enter recipient details]
    F --> G[Confirm transfer]
    G --> H[Original ticket voided]
    H --> I[New ticket generated]
    I --> J[Recipient notified]
    J --> K[Transfer complete]
```

## Detailed Steps

<Steps>
  <Step title="Access My Tickets">
    Member navigates to My Tickets section:

    * View list of upcoming event tickets
    * Identify ticket to transfer
    * Check transfer eligibility
  </Step>

  <Step title="Check Transfer Eligibility">
    System validates transfer is allowed:

    | Check                   | Requirement                 |
    | ----------------------- | --------------------------- |
    | Event allows transfers  | Configured by organizer     |
    | Transfer deadline       | Before event or cutoff date |
    | Ticket not used         | Not checked in              |
    | Not already transferred | Original holder only        |
    | Transfer limit          | Within allowed number       |
  </Step>

  <Step title="Enter Recipient Details">
    Member provides new ticket holder information:

    | Field                | Required     | Notes                    |
    | -------------------- | ------------ | ------------------------ |
    | Recipient Email      | Yes          | New ticket sent here     |
    | Recipient First Name | Yes          | For new ticket           |
    | Recipient Last Name  | Yes          | For new ticket           |
    | Recipient Phone      | Configurable | For event communications |
    | Personal Message     | No           | Included in notification |

    **Validation:**

    * Valid email format
    * Cannot transfer to self
    * Recipient may need to be a member (if member-only event)
  </Step>

  <Step title="Review and Confirm">
    Transfer summary displayed:

    ```
    ┌─────────────────────────────────────────────┐
    │ Transfer Ticket                             │
    ├─────────────────────────────────────────────┤
    │ Event: Annual Conference 2025              │
    │ Ticket: Member Pass                         │
    │                                             │
    │ From: John Smith (you)                      │
    │ To: Jane Doe (jane@email.com)               │
    │                                             │
    │ ⚠️ This action cannot be undone.            │
    │    Your ticket will be cancelled.           │
    │                                             │
    │ [Cancel]  [Confirm Transfer]                │
    └─────────────────────────────────────────────┘
    ```

    Member must acknowledge:

    * Transfer is permanent
    * Original ticket will be voided
    * They will lose access to the event
  </Step>

  <Step title="Process Transfer">
    System processes transfer:

    1. Original ticket marked as "Transferred"
    2. Original QR code invalidated
    3. New ticket record created for recipient
    4. New QR code generated
    5. Audit trail recorded
  </Step>

  <Step title="Notifications Sent">
    **To Original Holder:**

    * Confirmation of transfer
    * Receipt for records
    * Note that they can no longer attend

    **To Recipient:**

    * Welcome message with event details
    * New ticket with QR code
    * Registration instructions (if account needed)
    * Calendar invite
  </Step>
</Steps>

## Transfer Restrictions

Organizations can configure:

| Setting                  | Options                    |
| ------------------------ | -------------------------- |
| Transfers allowed        | Yes/No                     |
| Transfer deadline        | X days before event        |
| Transfer fee             | None, fixed, or percentage |
| Max transfers per ticket | 1, 2, unlimited            |
| Recipient must be member | Yes/No                     |
| Requires approval        | Yes/No                     |

## Transfer Types

### Standard Transfer

* Ownership changes completely
* Original holder loses all access
* Recipient becomes new owner

### Name Change Only

* Original holder remains owner
* Attendee name updated for check-in
* May have different approval process

### Gift Ticket

* Same as transfer but framed as gift
* Personal message option
* Gift-themed notification

## Non-Member Recipients

If event allows non-member recipients:

1. Recipient receives ticket without account
2. Can access ticket via emailed link
3. Prompted to create account (optional)
4. No portal access for ticket management

If event requires membership:

1. Recipient must be existing member, OR
2. Recipient must register as member first
3. Transfer fails if recipient ineligible

## Transfer Fees

If transfer fee configured:

```
┌─────────────────────────────────────────────┐
│ Transfer Fee                                │
├─────────────────────────────────────────────┤
│ A transfer fee applies to this ticket.      │
│                                             │
│ Transfer Fee: $15.00                        │
│                                             │
│ Payment Method: [•••• 4242]                 │
│                                             │
│ [Pay and Transfer]                          │
└─────────────────────────────────────────────┘
```

## Related Entities

* [`Event Ticket`](/entities/core/event-ticket)
* [`Audit Log`](/entities/system/audit-log)

## Related Journeys

* [UJ-M-008](/member/journeys/purchase-event-ticket)
* [UJ-M-009](/member/journeys/receive-qr-ticket)
* [UJ-M-011](/member/journeys/event-checkin)

## Acceptance Criteria

### Frontend

* [ ] Transfer button on eligible tickets
* [ ] Recipient details form
* [ ] Transfer confirmation modal
* [ ] Disabled state for ineligible tickets
* [ ] Error messages for validation failures
* [ ] Success confirmation page
* [ ] Transfer history visible

### Backend

* [ ] `POST /api/tickets/{id}/transfer` - Initiate transfer
* [ ] `GET /api/tickets/{id}/transfer-eligibility` - Check eligibility
* [ ] Original ticket invalidation
* [ ] New ticket generation
* [ ] Email notifications (both parties)

### Permissions

* [ ] Only ticket owner can transfer
* [ ] Admin can transfer on behalf (support)

### Business Rules

* [ ] Transfer deadline enforced
* [ ] Transfer limits tracked
* [ ] Fee charged if configured
* [ ] Audit trail maintained
* [ ] Member-only events validate recipient

### Error Handling

* [ ] Clear message if transfers not allowed
* [ ] Deadline passed notification
* [ ] Recipient validation errors
* [ ] Payment failure handling (if fee)
