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

# Read Account Balances

Reads account data from a given account addressed by "account-id"

**Remark:** This account-id can be a tokenised identification due to data protection reason since the path information might be logged on intermediary servers within the ASPSP sphere.
This account-id then can be retrieved by the "Get account list" call.

The account-id is constant at least throughout the lifecycle of a given consent.

# 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/accounts/{account-id}/balances": {
      "get": {
        "summary": "Read Account Balances",
        "description": "Reads account data from a given account addressed by \"account-id\"\n\n**Remark:** This account-id can be a tokenised identification due to data protection reason since the path information might be logged on intermediary servers within the ASPSP sphere.\nThis account-id then can be retrieved by the \"Get account list\" call.\n\nThe account-id is constant at least throughout the lifecycle of a given consent.\n",
        "operationId": "aisreadaccountbalance",
        "tags": [
          "Accounts"
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Account-ID"
          },
          {
            "$ref": "#/components/parameters/X-Request-ID"
          },
          {
            "$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/GetBalanceResponse"
                },
                "examples": {
                  "Response example for get account balances": {
                    "$ref": "#/components/examples/GetBalanceResponse_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"
        }
      },
      "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"
          }
        }
      },
      "AccountReferenceResponse": {
        "type": "object",
        "properties": {
          "iban": {
            "type": "string",
            "description": "IBAN of an account",
            "nullable": true,
            "example": "FR7612345987650123456789014"
          },
          "bban": {
            "type": "string",
            "description": "Basic Bank Account Number (BBAN) Identifier.\r\n<br /><br />\r\nThis data element can be used in the body of the consent request. Message for retrieving account access consent from this account. This data elements is used for payment accounts which have no IBAN. ISO20022: Basic Bank Account Number (BBAN).\r\n<br /><br />\r\nIdentifier used nationally by financial institutions, i.e., in individual countries, generally as part of a National Account Numbering Scheme(s), which uniquely identifies the account of a customer.",
            "nullable": true,
            "example": "BARC12345612345678"
          },
          "pan": {
            "type": "string",
            "description": "Primary Account Number according to ISO/IEC 7812.",
            "nullable": true,
            "example": "5409050000000000"
          },
          "maskedPan": {
            "type": "string",
            "description": "Masked Primary Account Number.",
            "nullable": true,
            "example": "123456xxxxxx1234"
          },
          "msisdn": {
            "type": "string",
            "description": "Mobile phone number.",
            "nullable": true,
            "example": "+49 170 1234567"
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 Alpha 3 currency code.",
            "nullable": true,
            "example": "EUR"
          },
          "other": {
            "$ref": "#/components/schemas/OtherTypeResponse"
          }
        },
        "additionalProperties": false
      },
      "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
      },
      "GetBalanceResponse": {
        "type": "object",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/AccountReferenceResponse"
          },
          "balances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Psd2BalanceResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Body of the response for a successful read balance for an account request."
      },
      "OtherTypeResponse": {
        "type": "object",
        "properties": {
          "identification": {
            "type": "string",
            "description": "Identification",
            "nullable": true
          },
          "schemeNameCode": {
            "type": "string",
            "description": "Scheme Name Code",
            "nullable": true
          },
          "schemeNameProprietary": {
            "type": "string",
            "description": "Scheme Name Proprietary",
            "nullable": true
          },
          "issuer": {
            "type": "string",
            "description": "Issuer",
            "nullable": true
          }
        },
        "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"
        }
      },
      "GetBalanceResponse_Example": {
        "description": "Response example for get account balances",
        "value": {
          "account": {
            "iban": "GE01TB0203040506070809",
            "currency": "XXX"
          },
          "balances": [
            {
              "balanceType": "interimAvailable",
              "balanceAmount": {
                "currency": "GEL",
                "amount": "30.00"
              },
              "creditLimitIncluded": false
            },
            {
              "balanceType": "interimBooked",
              "balanceAmount": {
                "currency": "GEL",
                "amount": "30.00"
              },
              "creditLimitIncluded": false,
              "referenceDate": "2025-03-26",
              "lastChangeDateTime": "2025-03-26T00:00:00"
            },
            {
              "balanceType": "closingBooked",
              "balanceAmount": {
                "currency": "GEL",
                "amount": "-30.00"
              }
            },
            {
              "balanceType": "interimAvailable",
              "balanceAmount": {
                "currency": "USD",
                "amount": "0.00"
              },
              "creditLimitIncluded": false
            },
            {
              "balanceType": "interimBooked",
              "balanceAmount": {
                "currency": "USD",
                "amount": "0.00"
              },
              "creditLimitIncluded": false,
              "referenceDate": "2024-12-24",
              "lastChangeDateTime": "2024-12-24T00:00:00"
            },
            {
              "balanceType": "closingBooked",
              "balanceAmount": {
                "currency": "USD",
                "amount": "0.00"
              }
            },
            {
              "balanceType": "interimAvailable",
              "balanceAmount": {
                "currency": "EUR",
                "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": "closingBooked",
              "balanceAmount": {
                "currency": "EUR",
                "amount": "-0.33"
              }
            }
          ]
        }
      }
    }
  },
  "security": [
    {}
  ],
  "x-readme": {
    "explorer-enabled": true,
    "proxy-enabled": true
  }
}
```