---
title: "CardTransaction Completed"
method: POST
path: "card_transaction.completed"
tags: ["Cards"]
---

# CardTransaction Completed

`POST card_transaction.completed` (webhook)

Sent when a card transaction is completed

Required permissions:
 - `payout:account:read`
 - `webhook_receive:card_transactions`

## Headers

- `webhook-id` string, required — A unique identifier for this webhook request
- `webhook-signature` string, required — The signature of the webhook request with the webhook version prepended
- `webhook-timestamp` string, required — The timestamp in seconds since the Unix epoch that the webhook was sent at on the server

## Payload

- object
  - `api_version` 'v1', required — The API version for this webhook
  - `api_version_date` string, nullable, required — The dated API version (Api-Version-Date) the payload is serialized to
  - `company_id` string, nullable — The account ID that this webhook event is associated with
  - `data` CardTransaction, required
    - `card_id` string, required — The card this transaction was charged to, prefixed `icrd_`.
    - `cardholder_id` string, nullable, required — The user the card is assigned to, prefixed `user_`. Null when the card has no assigned cardholder.
    - `cashback_usd_amount` number, nullable, required — Cashback earned on this transaction as a USD amount. Zero for declined or ineligible transactions, and null when cashback has not been computed yet.
    - `created_at` string, required — When the transaction was authorized, as an ISO 8601 timestamp.
    - `currency` string, nullable, required — ISO 4217 currency code the merchant charged in.
    - `declined_reason` string, nullable, required — Why the transaction was declined. Null unless `status` is `declined`.
    - `id` string, required — Card transaction ID, prefixed `citx_`.
    - `international` boolean, required — True when the merchant is outside the card's home country.
    - `local_amount` number, nullable, required — Amount the merchant charged in their own currency. Pair with `currency`.
    - `merchant_category` string, nullable, required — Merchant category label, enriched where available and otherwise as the card network reported it.
    - `merchant_category_code` string, nullable, required — Four-digit ISO 18245 merchant category code (MCC).
    - `merchant_icon_url` string, nullable, required — URL of the enriched merchant logo. Null when no logo was matched.
    - `merchant_name` string, nullable, required — Merchant name, enriched where available and otherwise as the card network reported it.
    - `posted_at` string, nullable, required — When the card network settled the transaction, as an ISO 8601 timestamp. Null until it settles.
    - `status` 'pending' | 'completed' | 'reversed' | 'declined', required — Current status of the transaction.
    - `transaction_type` 'spend', required — The kind of card transaction. Always `spend` today.
    - `usd_amount` number, nullable, required — Amount charged in USD. Negative when the merchant refunded the card.
  - `id` string, required — A unique ID for every single webhook request
  - `timestamp` string, date-time, required — The timestamp in ISO 8601 format that the webhook was sent at on the server
  - `type` 'card_transaction.completed', required — The webhook event type

## Acknowledgement `200`

Return a 200 status to indicate that the data was received successfully

---

[API](https://skmtc.net/whop/apis/whop-api.md) · [All operations](https://skmtc.net/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whop/whop-api/versions/866821546d67/schema)
