---
title: "Unified payment history (one-time orders + subscription charges)"
method: GET
path: "/v1/payment-history"
---

# Unified payment history (one-time orders + subscription charges)

`GET /v1/payment-history`

## Request

- Base URL: `https://api.hify.club`
- URL: `https://api.hify.club/v1/payment-history`
- Auth: API key in header `X-User-Token`

## Query parameters

- `kind` 'order' | 'subscription_charge'
- `start_time` string, date-time
- `end_time` string, date-time
- `facilities[]` integer[]
- `arenas[]` integer[]
- `sort_by` 'Newest' | 'Oldest'
- `page` integer
- `per_page` integer

## Response `200`

Gallery-style envelope. data holds the entries interleaved by date (order per sort, newest by default); pagination is also sent as X-Total-Count / X-Total-Pages headers.

- object
  - `data` object[]
    - `kind` 'order' | 'subscription_charge': Routes the client to the right detail screen
    - `source_id` string
    - `number` string
    - `amount` string
    - `currency_code` string
    - `status` 'processing' | 'done' | 'failed' | 'refunded': The payment outcome
    - `order_status` 'open' | 'paid' | 'on_hold' | 'in_progress' | 'fulfilled' | 'refunded' | 'null', nullable: The order's fulfilment stage, which status folds into done. Null for subscription charges.
    - `failure_reason` string, nullable: Gateway-reported cause on failed subscription charges
    - `plan_name` string, nullable: The plan this charge was for, as of the charge (stays correct after upgrades). Null for orders.
    - `payment_method` object, nullable: How this payment was made, e.g. { method: "upi", payment_method_details: { vpa: "…" } }. Null for an order that never reached the gateway (a fully redeemed benefit).
    - `base_amount` string, nullable: GST-exclusive amount (MRP). Null for orders.
    - `tax_amount` string, nullable: GST (18%, included in amount). Null for orders.
    - `has_invoice` boolean: Show the Invoice icon. True once a paid subscription charge's invoice link is saved (usually within minutes of the charge); always false for orders.
    - `subscription_id` integer, nullable: With source_id, the path to the invoice: GET /v1/subscriptions/{subscription_id}/charges/{source_id}/invoice returns { invoice_url }. Null for orders.
    - `occurred_at` string, date-time
  - `pagination` object
    - `current_page` integer
    - `per_page` integer
    - `total_pages` integer
    - `total_count` integer
  - `available_filters` object: Options for the filter chips, computed from all of the user's history and never from the applied filters.
    - `days` string[]: Every date with at least one entry, oldest first, in time_zone. The app groups these into months for the Month chip.
    - `facilities` object[]: The venues of the user's orders, with their courts.
      - `id` integer
      - `name` string
      - `arenas` object[]
        - `id` integer
        - `name` string
    - `sort_by` string[]: Empty when the user has no history.
    - `time_zone` string: The zone the days are in: the user's country zone, or the default country's. Build start_time/end_time in it. Always present.

---

[API](https://skmtc.dev/hify/apis/hify-apis.md) - [All operations](https://skmtc.dev/hify/apis/hify-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/hify/apis/hify-apis/revisions/b5920403538d?raw)
