> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chip-in.asia/llms.txt
> Use this file to discover all available pages before exploring further.

# Card response metadata

> Card and fee fields exposed on a paid card Purchase: card_type, card_brand, masked_pan, and fee_amount.

## Overview

For a `paid` card Purchase, the response includes card and authorization
metadata under `transaction_data.extra` and `transaction_data.attempts[].extra`,
plus fee information under `payment.fee_amount` and at the per-attempt level.
This page documents those fields.

<Note>
  The same `transaction_data` shape is delivered in the `purchase.paid` webhook
  payload, so everything on this page applies to webhook consumers as well.
</Note>

## Card fields

The following fields appear in `transaction_data.extra` (and again in
`transaction_data.attempts[].extra` for each attempt) when a card payment
is made. All fields are read-only and reported by the acquirer.

| Field                         | Type    | Example              | Notes                                                                                                          |
| ----------------------------- | ------- | -------------------- | -------------------------------------------------------------------------------------------------------------- |
| `card_type`                   | string  | `"credit"`           | Funding type. Values: `credit`, `debit`, `prepaid`. Reported by the acquirer; may be missing for some issuers. |
| `card_brand`                  | string  | `"mastercard"`       | Card scheme. For card payments, this is the same value as `transaction_data.payment_method`.                   |
| `masked_pan`                  | string  | `"444433******1111"` | Last 4 digits of the PAN. **The first 6 (BIN) is not included** — only the last 4 are exposed.                 |
| `expiry_month`                | integer | `12`                 | 1–12.                                                                                                          |
| `expiry_year`                 | integer | `28`                 | 2-digit year.                                                                                                  |
| `cardholder_name`             | string  | `"Ahmad Razali"`     | Name on the card as supplied during authorization.                                                             |
| `card_issuer`                 | string  | `"cimb bank berhad"` | Issuing bank name.                                                                                             |
| `card_issuer_country`         | string  | `"MY"`               | ISO 3166-1 alpha-2 code of the issuing country.                                                                |
| `card_category`               | string  | `"PERSONAL"`         | Typical values: `PERSONAL`, `CORPORATE`.                                                                       |
| `RRN`                         | string  | `"123456789012"`     | Retrieval Reference Number from the acquirer.                                                                  |
| `authorization_approval_code` | string  | `"AB1234"`           | Authorization approval code.                                                                                   |
| `descriptor`                  | string  | `"YOUR BRAND NAME"`  | Merchant descriptor sent to the issuer (truncated to fit on the cardholder's statement).                       |
| `three_d_secure`              | boolean | `true`               | Whether 3D Secure authentication was performed for this transaction.                                           |

## Fee fields

Fees are exposed at two levels: per-Purchase and per-attempt. All amounts
are in the smallest currency unit (e.g. sen for MYR, cents for USD).

| Field                                        | Type    | Notes                                                                   |
| -------------------------------------------- | ------- | ----------------------------------------------------------------------- |
| `payment.fee_amount`                         | integer | Total fee for the Purchase. The canonical "what was charged" field.     |
| `transaction_data.attempts[].fee_amount`     | integer | Fee for that specific attempt. Useful when an authorization is retried. |
| `transaction_data.attempts[].markup_amount`  | integer | Markup (if any) on top of the processor fee for that attempt.           |
| `transaction_data.attempts[].processing_fee` | integer | Raw processor fee for that attempt, before any markup.                  |

<Note>
  The top-level `payment.fee_amount` equals the `fee_amount` of the most
  recent successful attempt. For a single-attempt `paid` Purchase, all four
  values describe the same transaction.
</Note>
