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

# Payment initiation request

# OpenAPI definition

```json
{
  "openapi": "3.0.4",
  "info": {
    "title": "OpenBanking Services - Payments",
    "description": "APIs for initiating payment and getting its details and status.\n\nAbbreviations used in the documentation:\n  * TPP - Third Party Providers\n  * PIS - Payment Initiation Service\n  * ASPSP - Account Servicing Payment Service Provider \n  * PSU - Payment Service User\n  * SCA - Strong Customer Authentication\n  * PISP - Payment Initiation Service Provider\n\nIn order to make test integration, please use  https://test-openbanking.tbcbank.ge/0.8\n",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://test-openbanking.tbcbank.ge/0.8"
    },
    {
      "url": "https://openbanking.tbcbank.ge/0.8"
    }
  ],
  "paths": {
    "/v1/payments/{payment-product}/{paymentId}/status": {
      "get": {
        "tags": [
          "Payments"
        ],
        "summary": "Payment initiation request",
        "parameters": [
          {
            "name": "payment-product",
            "in": "path",
            "description": "<div class=\"enum-desc\"><p>Values:</p><ul><li><i>aspsp</i></li><li><i>domestic</i></li><li><i>foreign</i></li></ul></div><div class=\"enum-desc\"><p>Values:</p><ul><li><i>aspsp</i></li><li><i>domestic</i></li><li><i>foreign</i></li></ul></div>",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PaymentProductEnum"
            }
          },
          {
            "name": "paymentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Request-ID",
            "in": "header",
            "description": "ID of the request, unique to the call, as determined by the initiating party.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "698a3904-49aa-481f-b51e-b027e2b998e5"
          },
          {
            "name": "PSU-ID",
            "in": "header",
            "description": "Client ID of the PSU in the ASPSP client interface.\r\n\r\nMight be mandated in the ASPSP's documentation.\r\n\r\nIt might be contained even if an OAuth2 based authentication was performed in a pre-step or an OAuth2 based SCA was performed in an preceding AIS service in the same session. In this case the ASPSP might check whether PSU-ID and token match, according to ASPSP documentation.",
            "schema": {
              "type": "string"
            },
            "example": "PSU-1234"
          },
          {
            "name": "PSU-ID-Type",
            "in": "header",
            "description": "Type of the PSU-ID, needed in scenarios where PSUs have several PSU-IDs as access possibility.\r\n\r\nIn this case, the mean and use are then defined in the ASPSP’s documentation.",
            "schema": {
              "type": "string"
            }
          },
          {
            "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. If not available, the TPP shall use the IP Address used by the TPP when submitting this request.",
            "schema": {
              "type": "string"
            },
            "example": "192.168.8.78"
          },
          {
            "name": "PSU-IP-Port",
            "in": "header",
            "description": "The forwarded IP Port header field consists of the corresponding HTTP request IP Port field between PSU and TPP, if available.",
            "schema": {
              "type": "string"
            },
            "example": "1234"
          },
          {
            "name": "PSU-Geo-Location",
            "in": "header",
            "description": "The forwarded Geo Location of the corresponding http request between PSU and TPP if available.",
            "schema": {
              "type": "string"
            },
            "example": "GEO:52.506931;13.144558"
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "description": "The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "TPP-Redirect-URI",
            "in": "header",
            "description": "URI of the TPP, where the transaction flow shall be redirected to after a Redirect.\r\n\r\nMandated for the Redirect SCA Approach, specifically when TPP-Redirect-Preferred equals \"true\". It is recommended to always use this header field.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Apigee-UserId",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "TPP-Explicit-Authorisation-Preferred",
            "in": "header",
            "description": "If it equals \"true\", the TPP prefers to start the authorisation process separately, e.g. because of the usage of a signing basket. This preference might be ignored by the ASPSP, if a signing basket is not supported as functionality.\r\n\r\nIf it equals \"false\" or if the parameter is not used, there is no preference of the TPP. This especially indicates that the TPP assumes a direct authorisation of the transaction in the next step, without using a signing basket.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "TPPRejectionNoFundsPreferred",
            "in": "header",
            "description": "If it equals \"true\" then the TPP prefers a rejection of the payment initiation in case the ASPSP is providing an integrated confirmation of funds request an the result of this is that not sufficient funds are available.\r\n\r\nIf it equals \"false\" then the TPP prefers that the ASPSP is dealing with the payment initiation like in the ASPSPs online channel, potentially waiting for a certain time period for funds to arrive to initiate the payment.\r\n\r\nThis parameter might be ignored by the ASPSP.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Consent-ID",
            "in": "header",
            "description": "Consent Id",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPaymentStatusResponse"
                },
                "examples": {
                  "Example 1: Payment status request": {
                    "value": {
                      "transactionStatus": "RCVD",
                      "fundsAvailable": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiProblemDetails"
                },
                "examples": {
                  "Error example when Ip address is empty": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Ip address is empty",
                      "status": 400,
                      "detail": "Ip address is empty",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Consent not found": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Consent not found",
                      "status": 400,
                      "detail": "Consent not found",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Consent has expired": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Consent has expired",
                      "status": 401,
                      "detail": "Consent has expired",
                      "instance": "/cards/************",
                      "code": "CONSENT_EXPIRED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Invalid consent": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Invalid consent",
                      "status": 401,
                      "detail": "Invalid consent",
                      "instance": "/cards/************",
                      "code": "CONSENT_INVALID",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Invalid CardId": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Invalid CardId",
                      "status": 400,
                      "detail": "Invalid CardId",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Card not found": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Card not found",
                      "status": 404,
                      "detail": "Card not found",
                      "instance": "/cards/************",
                      "code": "RESOURCE_UNKNOWN",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Access exceeded": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Too many request",
                      "status": 429,
                      "detail": "Too many request",
                      "instance": "/cards/************",
                      "code": "ACCESS_EXCEEDED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when User doesn't have userid or a customerid assigned to it": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "User doesn't have userid or a customerid assigned to it.",
                      "status": 400,
                      "detail": "User doesn't have userid or a customerid assigned to it.",
                      "instance": "/cards/************",
                      "code": "RESOURCE_BLOCKED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when User is not active": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "User is not active",
                      "status": 400,
                      "detail": "User is not active",
                      "instance": "/cards/************",
                      "code": "RESOURCE_BLOCKED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiProblemDetails"
                },
                "examples": {
                  "Error example when Ip address is empty": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Ip address is empty",
                      "status": 400,
                      "detail": "Ip address is empty",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Consent not found": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Consent not found",
                      "status": 400,
                      "detail": "Consent not found",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Consent has expired": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Consent has expired",
                      "status": 401,
                      "detail": "Consent has expired",
                      "instance": "/cards/************",
                      "code": "CONSENT_EXPIRED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Invalid consent": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Invalid consent",
                      "status": 401,
                      "detail": "Invalid consent",
                      "instance": "/cards/************",
                      "code": "CONSENT_INVALID",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Invalid CardId": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Invalid CardId",
                      "status": 400,
                      "detail": "Invalid CardId",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Card not found": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Card not found",
                      "status": 404,
                      "detail": "Card not found",
                      "instance": "/cards/************",
                      "code": "RESOURCE_UNKNOWN",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Access exceeded": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Too many request",
                      "status": 429,
                      "detail": "Too many request",
                      "instance": "/cards/************",
                      "code": "ACCESS_EXCEEDED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when User doesn't have userid or a customerid assigned to it": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "User doesn't have userid or a customerid assigned to it.",
                      "status": 400,
                      "detail": "User doesn't have userid or a customerid assigned to it.",
                      "instance": "/cards/************",
                      "code": "RESOURCE_BLOCKED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when User is not active": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "User is not active",
                      "status": 400,
                      "detail": "User is not active",
                      "instance": "/cards/************",
                      "code": "RESOURCE_BLOCKED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiProblemDetails"
                },
                "examples": {
                  "Error example when Ip address is empty": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Ip address is empty",
                      "status": 400,
                      "detail": "Ip address is empty",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Consent not found": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Consent not found",
                      "status": 400,
                      "detail": "Consent not found",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Consent has expired": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Consent has expired",
                      "status": 401,
                      "detail": "Consent has expired",
                      "instance": "/cards/************",
                      "code": "CONSENT_EXPIRED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Invalid consent": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Invalid consent",
                      "status": 401,
                      "detail": "Invalid consent",
                      "instance": "/cards/************",
                      "code": "CONSENT_INVALID",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Invalid CardId": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Invalid CardId",
                      "status": 400,
                      "detail": "Invalid CardId",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Card not found": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Card not found",
                      "status": 404,
                      "detail": "Card not found",
                      "instance": "/cards/************",
                      "code": "RESOURCE_UNKNOWN",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Access exceeded": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Too many request",
                      "status": 429,
                      "detail": "Too many request",
                      "instance": "/cards/************",
                      "code": "ACCESS_EXCEEDED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when User doesn't have userid or a customerid assigned to it": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "User doesn't have userid or a customerid assigned to it.",
                      "status": 400,
                      "detail": "User doesn't have userid or a customerid assigned to it.",
                      "instance": "/cards/************",
                      "code": "RESOURCE_BLOCKED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when User is not active": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "User is not active",
                      "status": 400,
                      "detail": "User is not active",
                      "instance": "/cards/************",
                      "code": "RESOURCE_BLOCKED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiProblemDetails"
                },
                "examples": {
                  "Error example when Ip address is empty": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Ip address is empty",
                      "status": 400,
                      "detail": "Ip address is empty",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Consent not found": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Consent not found",
                      "status": 400,
                      "detail": "Consent not found",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Consent has expired": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Consent has expired",
                      "status": 401,
                      "detail": "Consent has expired",
                      "instance": "/cards/************",
                      "code": "CONSENT_EXPIRED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Invalid consent": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Invalid consent",
                      "status": 401,
                      "detail": "Invalid consent",
                      "instance": "/cards/************",
                      "code": "CONSENT_INVALID",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Invalid CardId": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Invalid CardId",
                      "status": 400,
                      "detail": "Invalid CardId",
                      "instance": "/cards/************",
                      "code": "FORMAT_ERROR",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Card not found": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Card not found",
                      "status": 404,
                      "detail": "Card not found",
                      "instance": "/cards/************",
                      "code": "RESOURCE_UNKNOWN",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when Access exceeded": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "Too many request",
                      "status": 429,
                      "detail": "Too many request",
                      "instance": "/cards/************",
                      "code": "ACCESS_EXCEEDED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when User doesn't have userid or a customerid assigned to it": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "User doesn't have userid or a customerid assigned to it.",
                      "status": 400,
                      "detail": "User doesn't have userid or a customerid assigned to it.",
                      "instance": "/cards/************",
                      "code": "RESOURCE_BLOCKED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  },
                  "Error example when User is not active": {
                    "value": {
                      "type": "https://developers.tbcbank.ge/docs/error-type-400",
                      "title": "User is not active",
                      "status": 400,
                      "detail": "User is not active",
                      "instance": "/cards/************",
                      "code": "RESOURCE_BLOCKED",
                      "traceId": "00-2ddc00ce6479ee8d32702c2a2ae1d10c-fe571a473a809386-01"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ApiProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "nullable": true
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "nullable": true
            },
            "nullable": true
          }
        },
        "additionalProperties": {}
      },
      "GetPaymentStatusResponse": {
        "type": "object",
        "properties": {
          "transactionStatus": {
            "type": "string",
            "nullable": true
          },
          "fundsAvailable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PaymentProductEnum": {
        "enum": [
          "aspsp",
          "domestic",
          "foreign"
        ],
        "type": "string",
        "description": "<div class=\"enum-desc\"><p>Values:</p><ul><li><i>aspsp</i></li><li><i>domestic</i></li><li><i>foreign</i></li></ul></div>",
        "x-enumNames": [
          "aspsp",
          "domestic",
          "foreign"
        ]
      }
    }
  },
  "x-readme": {
    "explorer-enabled": true,
    "proxy-enabled": true
  }
}
```