# Manage ticket options

Configure paid, free, donation or package tickets, pricing and availability.
Start with [summary](summary.md); identify the event, ticket groups, prices, capacity and sales windows.

## Workflow
1. GET `/{event_id}/categories/index.json` and `/{event_id}/products/index.json`.
2. Create or select an event-owned category using the category guide.
3. GET `/{event_id}/products/add/free.json` for free-product defaults when relevant; this does not create a ticket.
4. PUT `/{event_id}/products/add/{type}.json` with the documented envelopes; retain the successful `id`.
5. Use `paid`, `free`, `donation` or `package` as appropriate; consult the product schema for required fields.
6. GET `/{event_id}/products/edit/{product_id}.json` before editing configuration.
7. PUT to that edit URL for supported pricing, dates, capacity and configuration changes.
8. Re-read products and verify their appearance and availability in the public shop.

## Important distinctions
- `stock` is configured capacity; `current_stock` accounts for sales, reservations and pending holds.
- Shared pools, packages, visibility and sales windows can further restrict availability.
- Reading stock does not reserve a ticket; checkout makes the final availability decision.
- Use the documented decimal money formats and event currency.
- Deletion can be prevented by existing use; do not replace a sold product merely to change its label.

## Diagnose unavailable tickets
Check in order: event publication, ticket sale dates, visibility, per-order limits, current stock, shared pools/package constraints and the applied promo.
A valid promo with no eligible available product can still yield an empty offer.
Distinguish “sold out and shown” from “hidden when sold out”; neither changes the underlying count of purchased tickets.
For a private early-bird exception, inspect both the hidden offer and its sale period rather than extending public availability unintentionally.

## Reservations, cancellation and waiting lists
A stock read is a snapshot; reservations and pending operations can change availability before checkout completes.
Cancellation or reservation release can free capacity. If the organizer wants waiting-list allocation instead of public resale, establish the intended stock/visibility policy before changing it.
Use the [waiting-list invitation workflow](guest-registrations.md) explicitly; do not infer that joining the list reserves a ticket or guarantees automatic admission.
For packages, inspect component and shared-pool constraints as well as the package's own stock.
When correcting counts, preserve sale periods and visibility; a repair must not silently reopen an expired early-bird offer.

## Verify
Check an early-bird transition, exhausted capacity and package/shared-pool constraints when configured.
Test creation only with synthetic data; re-read before retrying uncertain writes.

## More documentation
- [Product management](https://developer.paydro.com/en-us/docs/product-management.md)
- [Availability](https://developer.paydro.com/en-us/docs/product-availability.md)
- [Categories](https://developer.paydro.com/en-us/docs/categories.md)
