---
title: "Transfergiftcardownership"
method: POST
path: "/v2/giftcards/programs/{programId}/cards/{cardId}/transfer-ownership"
tags: ["Gift Cards"]
---

# Transfergiftcardownership

`POST /v2/giftcards/programs/{programId}/cards/{cardId}/transfer-ownership`

### Transfer Gift Card Ownership

Updates the cardholder details (name, email, optional customer ID) on an active gift card.
Intended for merchant use when a card is gifted or resold to a new owner.

An `OWNERSHIP_TRANSFER` transaction is recorded for audit trail purposes.

**Business Rules**:
- Card must be active
- New owner email must be a valid email address (validated by Pydantic `EmailStr`)
- Name is sanitized to remove HTML/script content

**Status Codes**:
- 200: Ownership transferred successfully
- 400: Card is not active
- 404: Card not found
- 401: Unauthorized

## Path parameters

- `programId` string, required
- `cardId` string, required

## Headers

- `X-Eposn-Customer-Token` string, nullable
- `X-Eposn-Merchant-Token` string, nullable

## Request body

- TransferOwnershipRequest
  - `newOwnerName` string, required
  - `newOwnerEmail` string, email, required
  - `newCustomerId` string
  - `referenceId` string, nullable

## Response `200`

Successful Response

- GiftCardResponse
  - `id` string, required
  - `cardNumber` string, required
  - `balance` string, required
  - `initialValue` string, required
  - `status` 'pending' | 'active' | 'suspended' | 'expired' | 'voided' | 'depleted', required — Gift card status enumeration.
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, nullable, required
  - `activatedAt` string, date-time, nullable, required
  - `expiresAt` string, date-time, required
  - `suspendedReason` string, nullable, required
  - `suspendedUntil` string, date-time, nullable, required
  - `suspendedAt` string, date-time, nullable, required
  - `customerId` string, required
  - `customerEmail` string, nullable, required
  - `customerPhone` string, nullable, required
  - `customerName` string, nullable, required
  - `senderName` string, nullable
  - `merchantId` string, required
  - `merchantName` string, nullable
  - `isPhysical` boolean, required
  - `designTemplate` string, nullable, required
  - `customMessage` string, nullable, required
  - `lastFourDigits` string, required
  - `programId` string, required
  - `deliverAt` string, date-time, nullable
  - `delivered` boolean
  - `card` PassCard, required — The customer card object Attributes: serialNumber (str): The serial number of the customer pass passTypeIdentifier (str): The pass type identifier of the customer pass url (str): The shareable URL of the customer pass
    - `serialNumber` string, required
    - `passTypeIdentifier` string, required
    - `url` string, uri, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/loyalty/apis/loyaltydog.md) · [All operations](https://skmtc.net/loyalty/apis/loyaltydog/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/loyalty/loyaltydog/versions/42b7b22af2b6/schema)
