---
title: "Create a gift card transaction"
method: POST
path: "/gift_cards/{card_number}/transactions"
tags: ["Gift Cards"]
---

# Create a gift card transaction

`POST /gift_cards/{card_number}/transactions`

Creates a new gift card transaction on the specified gift card. The request body requires the `type`, `amount`, and `client_id` fields. The `type` determines what sort of transaction it is.

* "REDEEMING" - Use this type when you want to redeem a certain amount from the gift card balance. The amount MUST be negative. If you want to add an amount to the balance use the "RELOADING" type.
* "RELOADING" - Use this type when you load a new amount onto a gift card.

If the gift card does not have enough credit to honour the transaction a 422 HTTP status code will be returned.

## Idempotency

Please populate the client_id field with a unique transaction identifier, to ensure that the transaction is safe from double-submit problems. See [the tutorial](/docs/gift_cards#idempotency) for more information.

🔒 Requires: `gift_cards:write:redeem` scope

## Path parameters

- `card_number` string, required

## Request body

- GiftCardTransactionParams — The parameters for creating a new gift card transaction.
  - `amount` string, required — The transaction amount. Must be negative for REDEEMING transactions and positive for RELOADING transactions.
  - `client_id` string, required — A unique transaction identifier for idempotency. The client must provide this and is normally the transaction id from the client system.
  - `expires_at` string — Optional new expiry date for the gift card in YYYY-MM-DD format. Can be used to extend the gift card's expiry when reloading.
  - `time_zone` string — The timezone to use when interpreting the `expires_at` date (e.g. "Pacific/Auckland"). See the list of tz database time zones for valid values.
  - `type` 'REDEEMING' | 'RELOADING', required — The type of the transaction.
  - `user_id` string — The ID of the user creating the transaction. If omitted, the authenticated user will be used.

## Response `201`

Gift card transaction successfully created.

- GiftCardTransactionSingleton — A single gift card transaction response.
  - `data` GiftCardTransaction, required — A gift card transaction with the amount represented as a string for precision.
    - `amount` string — The transaction amount, represented as a string for precision.
    - `client_id` string, nullable — The client id is a unique transaction identifier. The client must provide this and is normally the transaction id from the client system.
    - `created_at` string — The creation timestamp in UTC.
    - `id` string — Auto-generated object ID.
    - `source` string, nullable — The source of the transaction.
    - `source_id` string, nullable — The source id is a unique identifier for the transaction in the source system.
    - `type` 'ACTIVATION' | 'REDEEMING' | 'IMPORTING' | 'VOIDING' | 'EXPIRING' | 'REVERSING' | 'RELOADING' — The type of transaction.
    - `user_id` string — The user id associated with the transaction.

## Other responses

- `404` — The gift card was not found.
- `422` — Gift card does not have sufficient balance.

---

[API](https://skmtc.net/lightspeedhq/apis/api-2026-07.md) · [All operations](https://skmtc.net/lightspeedhq/apis/api-2026-07/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lightspeedhq/api-2026-07/revisions/72d4ceb46dbb/schema)
