---
updatedAt: 2026-03-25T11:19:09.000Z
---

# Read Card Account Details

Reads details about a card account. 
It is assumed that a consent of the PSU to this access is already given and stored on the ASPSP system.
The addressed details of this account depends then on the stored consent addressed by consentId, 
respectively the OAuth2 access token.

# OpenAPI definition

```json
{
  "openapi": "3.0.1",
  "info": {
    "title": "OpenBanking Services - Account Information Service (AIS)",
    "description": "The Account Information Service (AIS) offers the following services:\n  * Transaction reports for a given account or card account including balances if applicable\n  * Balances of a given account or card account\n  * A list of available accounts or card account\n  * Account details of a given account or card account or of the list of all accessible accounts or card account relative to a granted consent \n\nAbbreviations used in the documentation:\n  * TPP - Third Party Providers\n  * AIS - Account Information Service\n  * ASPSP - Account Servicing Payment Service Provider \n  * PSU - Payment Service User\n  * SCA - Strong Customer Authentication\n",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://test-openbanking.tbcbank.ge/0.8",
      "description": "Sandbox"
    },
    {
      "url": "https://openbanking.tbcbank.ge/0.8",
      "description": "Production"
    },
    {
      "url": "https://test-api.tbcbank.ge",
      "description": "Sandbox for .well-known and authorize endpoints"
    },
    {
      "url": "https://api.tbcbank.ge",
      "description": "Production for .well-known and authorize endpoints"
    }
  ],
  "paths": {
    "/v1/card-accounts/{account-id}": {
      "get": {
        "summary": "Read Card Account Details",
        "description": "Reads details about a card account. \nIt is assumed that a consent of the PSU to this access is already given and stored on the ASPSP system.\nThe addressed details of this account depends then on the stored consent addressed by consentId, \nrespectively the OAuth2 access token.\n",
        "operationId": "aisreadcardaccountdetails",
        "tags": [
          "Card Accounts"
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Account-ID"
          },
          {
            "$ref": "#/components/parameters/X-Request-ID"
          },
          {
            "$ref": "#/components/parameters/WithBalance"
          },
          {
            "$ref": "#/components/parameters/Consent-ID"
          },
          {
            "$ref": "#/components/parameters/Digest"
          },
          {
            "$ref": "#/components/parameters/X-JWS-Signature"
          },
          {
            "$ref": "#/components/parameters/PSU-IP-Address"
          },
          {
            "$ref": "#/components/parameters/Accept-Language"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCardAccountResponse"
                },
                "examples": {
                  "Response example for get card account details": {
                    "$ref": "#/components/examples/GetCardAccountResponse_Example"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiProblemDetails"
                },
                "example": {
                  "$ref": "#/components/examples/400_BadRequest_Example_Accounts"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiProblemDetails"
                },
                "example": {
                  "$ref": "#/components/examples/401_Unauthorized_Example_Accounts"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiProblemDetails"
                },
                "example": {
                  "$ref": "#/components/examples/404_NotFound_Example_Accounts"
                }
              }
            }
          },
          "500": {
            "description": "Server Error",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiProblemDetails"
                },
                "example": {
                  "$ref": "#/components/examples/500_InternalError_Example_Accounts"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "headers": {
      "X-Request-ID": {
        "description": "ID of the request, unique to the call, as determined by the initiating party.",
        "required": true,
        "example": "dca140c0-7db3-4cf3-9415-81b5a141f5f3",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "parameters": {
      "Consent-ID": {
        "name": "Consent-ID",
        "in": "header",
        "description": "This then contains the consentId of the related AIS consent, which was performed prior to this payment initiation.",
        "required": true,
        "style": "simple",
        "schema": {
          "type": "string"
        },
        "example": "d87251a0-17a1-411c-b2d3-fc42eb9c87af"
      },
      "X-Request-ID": {
        "name": "X-Request-ID",
        "in": "header",
        "description": "ID of the request, unique to the call, as determined by the initiating party.",
        "required": true,
        "example": "dca140c0-7db3-4cf3-9415-81b5a141f5f3",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "Digest": {
        "name": "Digest",
        "in": "header",
        "description": "Is contained if and only if the \"Signature\" element is contained in the header of the request.",
        "required": true,
        "example": "SHA-256=+cHUU0wsuM/h13R5ler2wULmkj+gN3XAuUww3SbbAdM=",
        "schema": {
          "type": "string"
        }
      },
      "X-JWS-Signature": {
        "name": "X-JWS-Signature",
        "in": "header",
        "description": "A signature of the request by the TPP on application level. This might be mandated by ASPSP.",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "PSU-IP-Address": {
        "name": "PSU-IP-Address",
        "in": "header",
        "description": "The forwarded IP Address header field consists of the corresponding HTTP request IP Address field between PSU and TPP. It shall be contained if and only if this request was actively initiated by the PSU.",
        "required": true,
        "example": "123.345.567.78",
        "schema": {
          "type": "string",
          "format": "ipv4 or ipv6"
        }
      },
      "Accept-Language": {
        "name": "Accept-Language",
        "in": "header",
        "description": "HTTP header indicates the natural language and locale that the client prefers.",
        "example": "ka",
        "schema": {
          "type": "string"
        }
      },
      "WithBalance": {
        "name": "withBalance",
        "in": "query",
        "description": "If contained, this function reads the list of accessible payment accounts including the booking balance, \nif granted by the PSU in the related consent and available by the ASPSP. \nThis parameter might be ignored by the ASPSP.\n",
        "style": "form",
        "schema": {
          "type": "boolean"
        },
        "example": true
      },
      "Account-ID": {
        "name": "account-id",
        "in": "path",
        "description": "This identification is denoting the addressed (card) account. \nThe account-id is retrieved by using a \"Read Account List\" of \"Read Card Account List\" call. \nThe account-id is the \"resourceId\" attribute of the account structure. \nIts value is constant at least throughout the lifecycle of a given consent.\n",
        "required": true,
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "ApiProblemDetails": {
        "description": "A machine-readable format for specifying errors in HTTP API responses.",
        "type": "object",
        "properties": {
          "type": {
            "description": "A URI reference [RFC3986] that identifies the problem type.",
            "type": "string"
          },
          "title": {
            "description": "A short, human-readable summary of the problem type.",
            "type": "string"
          },
          "status": {
            "description": "The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.",
            "type": "integer",
            "format": "int32"
          },
          "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "type": "string"
          },
          "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.  It may or may not yield further information if dereferenced.",
            "type": "string"
          },
          "traceId": {
            "description": "Message identification for searching errors",
            "type": "string"
          },
          "code": {
            "type": "string",
            "description": "Message codes defined for AIS for appropriate HTTP status code"
          }
        }
      },
      "BalanceAmountResponse": {
        "type": "object",
        "properties": {
          "currency": {
            "type": "string",
            "description": "ISO 4217 Alpha 3 currency code.",
            "nullable": true
          },
          "amount": {
            "type": "string",
            "description": "The amount given with fractional digits, where fractions must be compliant to the currency definition. Up to 14 significant figures. Negative amounts are signed by minus. The decimal separator is a dot.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CardAccountsResponse": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "This is the data element to be used in the path when retrieving data from a dedicated account. This shall be filled, if addressable resource are created by the ASPSP on the /card-accounts endpoint.",
            "nullable": true,
            "example": "123456xxxxxx1234"
          },
          "maskedPan": {
            "type": "string",
            "description": "Masked Primary Account Number.",
            "nullable": true
          },
          "currency": {
            "type": "string",
            "description": "currencyCode",
            "nullable": true,
            "example": "EUR"
          },
          "ownerName": {
            "type": "string",
            "description": "Name of the legal account owner. If there is more than one owner, then e.g. two names might be noted here. <br /><br />For a corporate account, the corporate name is used for this attribute. Even if supported by the ASPSP, the provision of this field might depend on the fact whether an explicit consent to this specific additional account information has been given by the PSU.",
            "nullable": true,
            "example": "John Doe"
          },
          "name": {
            "type": "string",
            "description": "Name of the account, as assigned by the ASPSP, in agreement with the account owner in order to provide an additional means of identification of the account.",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "description": "Name of the account as defined by the PSU within online channels.",
            "nullable": true
          },
          "product": {
            "type": "string",
            "description": "Product Name of the Bank for this account, proprietary definition.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "accountStatus\r\n<br>Account status. The value is one of the following:<br> • \"enabled\": account is available<br> • \"deleted\": account is terminated<br> • \"blocked\": account is blocked e.g. for legal reasons If this field is not used, than the account is available in the sense of this specification.",
            "nullable": true
          },
          "usage": {
            "type": "string",
            "description": "<br>Specifies the usage of the account:\r\n<br> • PRIV: private personal account\r\n<br> • ORGA: professional account",
            "nullable": true
          },
          "details": {
            "type": "string",
            "description": "<br>Specifications that might be provided by the ASPSP:\r\n<br> • characteristics of the account\r\n<br> • characteristics of the relevant card",
            "nullable": true
          },
          "creditLimit": {
            "type": "string",
            "description": "The amount given with fractional digits, where fractions must be compliant to the currency definition. Up to 14 significant figures. Negative amounts are signed by minus. The decimal separator is a dot.",
            "nullable": true
          },
          "balances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Psd2BalanceResponse"
            },
            "description": "A list of balances regarding this account, e.g. the current balance, the last booked balance. The list might be restricted to the current balance.",
            "nullable": true
          },
          "links": {
            "$ref": "#/components/schemas/LinksCardAccountResponse"
          }
        },
        "additionalProperties": false
      },
      "GetCardAccountResponse": {
        "type": "object",
        "properties": {
          "cardAccount": {
            "$ref": "#/components/schemas/CardAccountsResponse"
          }
        },
        "additionalProperties": false
      },
      "HrefTypeResponse": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LinksCardAccountResponse": {
        "type": "object",
        "properties": {
          "balances": {
            "$ref": "#/components/schemas/HrefTypeResponse"
          },
          "transactions": {
            "$ref": "#/components/schemas/HrefTypeResponse"
          },
          "cardAccount": {
            "$ref": "#/components/schemas/HrefTypeResponse"
          }
        },
        "additionalProperties": false
      },
      "Psd2BalanceResponse": {
        "type": "object",
        "properties": {
          "balanceType": {
            "type": "string",
            "description": "The following balance types are defined:\r\n<br> • \"closingBooked\": Balance of the account at the end of the pre-agreed account reporting period. It is the sum of the opening booked balance at the beginning of the period and all entries booked to the account during the pre-agreed account reporting period.<br> • \"expected\": Balance composed of booked entries and pending items known at the time of calculation, which projects the end of day balance if everything is booked on the account and no other entry is posted.<br> • \"openingBooked\": Book balance of the account at the beginning of the account reporting period. It always equals the closing book balance from the previous report.<br> • \"interimAvailable\": Available balance calculated in the course of the account ?servicer?s business day, at the time specified, and subject to further changes during the business day. The interim balance is calculated on the basis of booked credit and debit items during the calculation time/period specified.<br> • \"interimBooked\": Balance calculated in the course of the account servicer's business day, at the time specified, and subject to further changes during the business day. The interim balance is calculated on the basis of booked credit and debit items during the calculation time/period specified.<br> • \"forwardAvailable\": Forward available balance of money that is at the disposal of the account owner on the date specified.<br> • \"nonInvoiced\": Only for card accounts, to be checked yet.<br> • ",
            "nullable": true
          },
          "balanceAmount": {
            "$ref": "#/components/schemas/BalanceAmountResponse"
          },
          "creditLimitIncluded": {
            "type": "boolean",
            "description": "A flag indicating if the credit limit of the corresponding account is included in the calculation of the balance, where applicable.",
            "nullable": true,
            "example": false
          },
          "lastCommittedTransaction": {
            "type": "string",
            "description": "\"entryReference\" of the last commited transaction to support the TPP in identifying whether all PSU transactions are already known.",
            "nullable": true
          },
          "referenceDate": {
            "type": "string",
            "description": "Indicates the date of the balance.",
            "nullable": true
          },
          "lastChangeDateTime": {
            "type": "string",
            "description": "This data element might be used to indicate e.g. with the expected or booked balance that no action is known on the account, which is not yet booked.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A single balance element."
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "description": "Bearer Token. \n\nIs contained only, if an OAuth2 based authentication was performed in a pre-step or \nan OAuth2 based SCA was performed in a preceding AIS service in the same session.\n",
        "type": "http",
        "scheme": "bearer"
      }
    },
    "examples": {
      "400_BadRequest_Example_Accounts": {
        "value": {
          "code": "FORMAT_ERROR",
          "traceId": "00-5336c4b7d89889b8b4a1bbdfb8c1a583-305db5d2099f1c58-01",
          "type": "https://developers.tbcbank.ge/docs/error-type-400",
          "title": "Invalid Request",
          "status": 400,
          "detail": "ValidUntil parameter is invalid, please check the date.",
          "instance": "/v1/accounts"
        }
      },
      "401_Unauthorized_Example_Accounts": {
        "value": {
          "code": "CONSENT_INVALID",
          "type": "https://developers.tbcbank.ge/docs/error-type-401",
          "traceId": "00-88e0f2509e1d5ad73d99dee283010f18-bdcf39859de601a7-01",
          "title": "Invalid Access",
          "status": 401,
          "detail": "Consent does not have access on accounts balances",
          "instance": "/v1/accounts"
        }
      },
      "404_NotFound_Example_Accounts": {
        "value": {
          "code": "CONSENT_UNKNOWN",
          "traceId": "00-88e0f2509e1d5ad73d99dee283010f18-bdcf39859de601a7-01",
          "type": "https://developers.tbcbank.ge/docs/error-type-404",
          "title": "Consent not found",
          "status": 404,
          "detail": "Consent not found with this Id: c9161b2e-46d0-4891-8114-2767253d4510",
          "instance": "/v1/accounts"
        }
      },
      "500_InternalError_Example_Accounts": {
        "value": {
          "code": "",
          "traceId": "00-ada2ec0e2c26c91bf50469bf79fdb14e-7bed7bf0dd005c16-01",
          "type": "https://developers.tbcbank.ge/docs/error-type-500",
          "title": "Internal Error",
          "status": 500,
          "detail": "Something wrong happened in the application",
          "instance": "/v1/accounts"
        }
      },
      "GetCardAccountResponse_Example": {
        "description": "Response example for get card account detail",
        "value": {
          "resourceId": "0f92178b-a77f-45d8-50f5-08dd818830c7",
          "maskedPan": "123456******7890",
          "currency": "XXX",
          "ownerName": "Owner Name 1",
          "name": "Owner Name 1",
          "product": "VISA",
          "status": "enabled",
          "usage": "PRIV",
          "balances": [
            {
              "balanceType": "interimBooked",
              "balanceAmount": {
                "currency": "GEL",
                "amount": "30.00"
              },
              "creditLimitIncluded": false,
              "referenceDate": "2025-03-26",
              "lastChangeDateTime": "2025-03-26T00:00:00"
            },
            {
              "balanceType": "interimAvailable",
              "balanceAmount": {
                "currency": "GEL",
                "amount": "30.00"
              },
              "creditLimitIncluded": false
            },
            {
              "balanceType": "interimBooked",
              "balanceAmount": {
                "currency": "USD",
                "amount": "0.00"
              },
              "creditLimitIncluded": false,
              "referenceDate": "2024-12-24",
              "lastChangeDateTime": "2024-12-24T00:00:00"
            },
            {
              "balanceType": "interimAvailable",
              "balanceAmount": {
                "currency": "USD",
                "amount": "0.00"
              },
              "creditLimitIncluded": false
            },
            {
              "balanceType": "interimBooked",
              "balanceAmount": {
                "currency": "EUR",
                "amount": "0.33"
              },
              "creditLimitIncluded": false,
              "referenceDate": "2025-02-23",
              "lastChangeDateTime": "2025-02-23T00:00:00"
            },
            {
              "balanceType": "interimAvailable",
              "balanceAmount": {
                "currency": "EUR",
                "amount": "0.00"
              },
              "creditLimitIncluded": false
            }
          ],
          "_links": {
            "balances": {
              "href": "/0.8/v1/card-accounts/0f92178b-a77f-45d8-50f5-08dd818830c7/balances"
            },
            "transactions": {
              "href": "/0.8/v1/card-accounts/0f92178b-a77f-45d8-50f5-08dd818830c7/transactions"
            },
            "cardAccount": {
              "href": "/0.8/v1/card-accounts/0f92178b-a77f-45d8-50f5-08dd818830c7"
            }
          }
        }
      }
    }
  },
  "security": [
    {}
  ],
  "x-readme": {
    "explorer-enabled": true,
    "proxy-enabled": true
  }
}
```