---
title: "Update an account"
method: PATCH
path: "/v1/accounts/{id}"
tags: ["Accounts"]
---

# Update an account

`PATCH /v1/accounts/{id}`

## Request

- Base URL: `https://api.prod.keyban.io`
- URL: `https://api.prod.keyban.io/v1/accounts/{id}`
- Auth: one of:
  - API key in header `X-Api-Key`
  - `bearer` (a scheme the document does not define)

Update mutable account properties—primarily loyalty settings—while keeping the blockchain address and network unchanged.

## Path parameters

- `id` string, uuid, required

## Request body

- UpdateAccountDto: Fields to update on the account ssss
  - `loyalty` object, required
    - `fixedRewardTier` string, uuid, nullable

## Response `200`

Updated account

- AccountDto
  - `id` string, uuid, required: Entity UUID
  - `createdAt` string, date-time, required: Creation date (ISO 8601)
  - `updatedAt` string, date-time, required: Last update date (ISO 8601)
  - `application` string, uuid, required: The unique identifier of the application this account belongs to
  - `user` object, required
    - `id` string, uuid, required: Entity UUID
    - `createdAt` string, date-time, required: Creation date (ISO 8601)
    - `updatedAt` string, date-time, required: Last update date (ISO 8601)
    - `name` string, required: Full display name of the user (first name + last name).
    - `email` string, email, required: Contact email address of the user. Must be a valid RFC 5322 address.
    - `emailVerified` boolean, required: Indicates whether the email address has been verified via OTP or magic-link.
    - `image` string, uri, nullable: HTTPS URL of the user avatar image. `null` when no avatar has been set.
    - `phoneNumber` string, nullable: Phone number of the user in E.164 format (e.g. `+33612345678`). `null` when not provided.
    - `phoneNumberVerified` boolean, nullable: Indicates whether the phone number has been verified via OTP. `null` when no phone number is on record.
    - `birthDate` string, date, nullable: Date of birth in ISO 8601 date-only format (`YYYY-MM-DD`, e.g. `1990-03-15`). `null` when not provided.
    - `preferredLocale` 'en-US' | 'fr-FR' | 'es-ES' | 'it-IT' | 'null', nullable: BCP 47 language tag for the user's preferred locale (e.g. `fr-FR`). Null when not set; falls back to organization default or Accept-Language header.
  - `network` 'EthereumAnvil' | 'BaseSepolia' | 'BaseMainnet' | 'XdcApothem' | 'XdcMainnet' | 'StellarQuickstart' | 'StellarTestnet' | 'StellarMainnet', required: The blockchain network where this account is deployed
  - `address` string, required: The blockchain address of the account
  - `explorerUrl` string, uri: URL to a blockchain explorer for this account
  - `loyalty` object, required: Loyalty program data associated with this account
    - `optimisticBalance` string, required: The current loyalty points balance (as string to handle large numbers)
    - `zelty` object, required: Zelty-specific loyalty data
      - `customerId` number, nullable: The Zelty customer ID associated with this account, if any
    - `visits` number, required
    - `fixedRewardTier` string, uuid, nullable
    - `rewardTier` object, nullable
      - `id` string, uuid, required: Entity UUID
      - `createdAt` string, date-time, required: Creation date (ISO 8601)
      - `updatedAt` string, date-time, required: Last update date (ISO 8601)
      - `application` string, uuid, required: The unique identifier of the application
      - `name` string, required: The name of the loyalty reward tier
      - `requiredVisits` integer, required: The number of visits required to reach this reward tier
      - `currencyToPointRatio` integer, required: Number of loyalty points earned for each 1 unit of currency spent (e.g., if the ratio is 2 and currency is EUR, spending €1 earns 2 points). Used to calculate point accruals from transaction amounts.
      - `bgImageUrl` string, uri, nullable: Background image for the reward tier. Supported formats: WEBP (preferred), PNG. Recommended size: 1920×1080 px (landscape). Max file size: 1 MB.
  - `dpp` object, required: DPP data associated with this account
    - `passportCount` integer, required: Number of DPP item passports minted to this account
    - `lastActivityAt` string, date-time, nullable: Timestamp of the most recent wallet quota event (account creation, passport update as minter) for the user of this account within the application
    - `isActive` boolean, required: Whether the account had wallet activity recently (within the rolling activity window)

---

[API](https://skmtc.dev/keyban/apis/keyban-rest-apis.md) · [All operations](https://skmtc.dev/keyban/apis/keyban-rest-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/keyban/apis/keyban-rest-apis/revisions/0bb79a1da961?raw)
