--- swagger: "2.0" info: version: 1.0.7 title: BT - BG PSD2 PISP API description: "# Summary\nThe **NextGenPSD2** *Framework Version 1.2* offers a modern, open, harmonised and interoperable set of \nApplication Programming Interfaces (APIs) as the safest and most efficient way to provide data securely. \nThe NextGenPSD2 Framework reduces XS2A complexity and costs, addresses the problem of multiple competing standards \nin Europe and, aligned with the goals of the Euro Retail Payments Board,\nenables European banking customers to benefit from innovative products and services ('Banking as a Service') \nby granting TPPs safe and secure (authenticated and authorised) access to their bank accounts and financial data.\n\n Futhermore this API definition contains only a subset of the methods, the ones which are mandatory or which are applicable in the BT ecosystem.\n \n## Some General Remarks Related to this version of the OpenAPI Specification:\n* **This API definition is based on the Implementation Guidelines of the Berlin Group PSD2 API.** \n It is not an replacement in any sense.\n The main specification is (at the moment) allways the Implementation Guidelines of the Berlin Group PSD2 API.\n* **This API definition contains the REST-API for requests from the PISP to the ASPSP.**\n* **This API definition contains the messages for all different approaches defined in the Implementation Guidelines.**\n*\n\nChangelog:\n\nVersion 1.0.4\n- Dynamic generation of paymentId\n- tppMessages error parameter is array instead of object\n- GET Payment Details and GET Payment status paths now include the payment-product parameter (support values: ron-payment, other-currency-payment)\n- various minor corrections and additions" x-ibm-name: bt-bg-psd2-pisp-api host: psd03cj099.bt.wan basePath: /bt-psd2 schemes: - https consumes: - application/json produces: - application/json - 8a20200f-5099-409b-b858-dcfb3fe2e8ba paths: /v2/{payment-service}/{payment-product}: post: description: "This method is used to initiate a payment at the ASPSP.\n\n## Variants of Payment Initiation Requests\n\nThis method to initiate a payment initiation at the ASPSP can be sent with a JSON body for the payment product in the path.\n\nThere are the following **payment products**:\n\n - Payment products with payment information in *JSON* format:\n - ***ron-payment***\n \ - ***other-currency-payment***\n\nFurthermore the request body depends on the **payment-service**\n * ***payments***: A single payment initiation request.\n\n In case of a *JSON* there are several JSON payment blocks contained in a joining list.\n * ***periodic-payments***: \n Create a standing order initiation resource for recurrent i.e. periodic payments addressable under {paymentId} \n with all data relevant for the corresponding payment product and the execution of the standing order contained in a JSON body. \n\nThis is the first step in the API to initiate the related recurring/periodic payment.\n\n \ * ***bulk-payments***: \n Create a bulk payment initiation resource addressable under {paymentId} with all data relevant for the corresponding payment product.\n This is the first step in the API to initiate the related bulk payment. \n \ \n## Single and mulitilevel SCA Processes\n\nThe Payment Initiation Requests are independent from the need of one ore multilevel \nSCA processing, i.e. independent from the number of authorisations needed for the execution of payments. \n\nBut the response messages are specific to either one SCA processing or multilevel SCA processing. \n\nFor payment initiation with multilevel SCA, this specification requires an explicit start of the authorisation, \ni.e. links directly associated with SCA processing like 'scaRedirect' or 'scaOAuth' cannot be contained in the \nresponse message of a Payment Initation Request for a payment, where multiple authorisations are needed. \nAlso if any data is needed for the next action, like selecting an SCA method is not supported in the response, \nsince all starts of the multiple authorisations are fully equal. \nIn these cases, first an authorisation sub-resource has to be generated following the 'startAuthorisation' link." summary: Payment initiation request tags: - Payment Initiation Service (PIS) operationId: V1ByPaymentServiceAndPaymentProductPost produces: - application/json consumes: - application/json - application/x-www-form-urlencoded parameters: - name: payment-service in: path required: true enum: - payments - periodic-payments - bulk-payments x-enum-elements: - name: payments description: "" - name: periodic-payments description: "" - name: bulk-payments description: "" type: string description: Payment service:Possible values are:* payments* periodic-payments bulk-payments - name: payment-product in: path required: true enum: - ron-payment - other-currency-payment x-enum-elements: - name: ron-payment description: "" - name: other-currency-payment description: "" type: string description: 'The following payment products are supported: - ron-payment - other-currency-payment' - name: X-Request-ID in: header required: true type: string format: uuid description: ID of the request, unique to the call, as determined by the initiating party. - name: PSU-IP-Address in: header required: true type: string description: The forwarded IP Address header field consists of the corresponding http request IP Address field between PSU and TPP. - name: body required: true in: body schema: type: object example: debtorAccount: iban: RO98BTRLRONCRT0ABCDEFGHI instructedAmount: currency: RON amount: "50" creditorAccount: iban: RO98BTRLEURCRT0ABCDEFGHI creditorName: Dan Popescu debtorId: RO12345 endToEndIdentification: Test remittanceInformationUnstructured: explicatii description: json body of BTPaymentInitiationRon or BTPaymentInitiationVal types - name: Content-Type type: string required: true in: header description: application/json - name: PSU-Geo-Location type: string required: false in: header description: The forwarded Geo Location of the corresponding http request between PSU and TPP if available. responses: 201: description: CREATED schema: type: object example: paymentId: 273c540e6c534b1f8d873baf23728969ron transactionStatus: Submit psuMessage: Text to be displayed to the PSU tppMessages: Messages to the TPP on operational issues. _links: scaOAuth: href: https://api.apistorebt.ro/bt/sb/oauth/.well-known/oauth-authorization-server self: href: https://api.apistorebt.ro/bt/sb/bt-psd2/v3/payments/273c540e6c534b1f8d873baf23728969ron status: href: https://api.apistorebt.ro/bt/sb/bt-psd2/v3/payments/273c540e6c534b1f8d873baf23728969ron/status 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 404: description: Not found 405: description: Method Not Allowed 406: description: Not Acceptable 408: description: Request Timeout 415: description: Unsupported Media Type 429: description: Too Many Requests 503: description: Service Unavailable default: description: Internal Server Error security: [] x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /v2/{payment-service}/{payment-product}/{paymentId}: get: description: Returns the content of a payment object summary: Get Payment Information tags: - Payment Initiation Service (PIS) operationId: V1ByPaymentServiceAndPaymentIdGet produces: - application/json parameters: - name: payment-service in: path required: true enum: - payments - periodic-payments - bulk-payments x-enum-elements: - name: payments description: "" - name: periodic-payments description: "" - name: bulk-payments description: "" type: string description: |- Payment service: Possible values are: * payments * periodic-payments * bulk-payments - name: paymentId in: path required: true type: string description: Resource identification of the generated payment initiation resource. - name: X-Request-ID in: header required: true type: string format: uuid description: ID of the request, unique to the call, as determined by the initiating party. - name: PSU-IP-Address in: header required: false type: string description: The forwarded IP Address header field consists of the corresponding http request IP Address field between PSU and TPP. - name: PSU-Geo-Location in: header required: false type: string pattern: (GEO:)[0-9]{1,3}\.[-][0-9]{6}\,[-][0-9]{1,3}\.[0-9]{6} description: The forwarded Geo Location of the corresponding http request between PSU and TPP if available. - name: payment-product type: string required: true in: path description: 'The following payment products are supported: - ron-payment - other-currency-payment' - name: Authorization type: string required: true in: header description: This header should be in the form "Bearer Token", where Token is returned from the call to OAuth2 Token endpoint. responses: 200: description: OK schema: type: object example: debtorAccount: iban: RO98BTRLRONCRT0ABCDEFGHI instructedAmount: currency: RON amount: "50" creditorAccount: iban: RO98BTRLEURCRT0ABCDEFGHI creditorName: Dan Popescu debtorId: RO12345 endToEndIdentification: Test remittanceInformationUnstructured: explicatii 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 404: description: Not found 405: description: Method Not Allowed 406: description: Not Acceptable 408: description: Request Timeout 415: description: Unsupported Media Type 429: description: Too Many Requests 503: description: Service Unavailable default: description: Internal Server Error security: [] x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false deprecated: false /v2/{payment-service}/{payment-product}/{paymentId}/status: get: description: Check the transaction status of a payment initiation. summary: Payment initiation status request tags: - Payment Initiation Service (PIS) operationId: V1StatusByPaymentServiceAndPaymentIdGet produces: - application/json parameters: - name: payment-service in: path required: true enum: - payments - periodic-payments - bulk-payments x-enum-elements: - name: payments description: "" - name: periodic-payments description: "" - name: bulk-payments description: "" type: string description: |- Payment service: Possible values are: * payments * periodic-payments * bulk-payments - name: paymentId in: path required: true type: string description: Resource identification of the generated payment initiation resource. - name: X-Request-ID in: header required: true type: string format: uuid description: ID of the request, unique to the call, as determined by the initiating party. - name: PSU-IP-Address in: header required: false type: string description: The forwarded IP Address header field consists of the corresponding http request IP Address field between PSU and TPP. - name: PSU-Geo-Location in: header required: false type: string pattern: (GEO:)[0-9]{1,3}\.[-][0-9]{6}\,[-][0-9]{1,3}\.[0-9]{6} description: The forwarded Geo Location of the corresponding http request between PSU and TPP if available. - name: payment-product type: string required: true in: path description: 'The following payment products are supported: - ron-payment - other-currency-payment' - name: Authorization type: string required: true in: header description: This header should be in the form "Bearer Token", where Token is returned from the call to OAuth2 Token endpoint. responses: 200: description: OK schema: type: object example: transactionStatus: submit 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 404: description: Not found 405: description: Method Not Allowed 406: description: Not Acceptable 408: description: Request Timeout 415: description: Unsupported Media Type 429: description: Too Many Requests 503: description: Service Unavailable default: description: Internal Server Error security: [] x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /v2/{payment-service}/{payment-product}/confirmation: post: responses: 201: description: CREATED 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 404: description: Not found 405: description: Method Not Allowed 406: description: Not Acceptable 408: description: Request Timeout 415: description: Unsupported Media Type 429: description: Too Many Requests 503: description: Service Unavailable description: This method is used to confirm a bulk payment at the ASPSP and change the bulk payment status from Initiated to Confirmed summary: Bulk Payment confirmation request tags: - Bulk Payment Confirmation Service (PIS) operationId: V1ByPaymentServiceAndPaymentProductConfirmationPost parameters: - name: payment-service type: string required: true in: path description: |- Payment service: Possible values are: * bulk-payments - name: payment-product type: string required: true in: path description: 'The following payment products are supported: - ron-payment' - name: X-Request-ID type: string required: true in: header description: ID of the request, unique to the call, as determined by the initiating party. - name: PSU-IP-Address type: string required: true in: header description: The forwarded IP Address header field consists of the corresponding http request IP Address field between PSU and TPP. - name: body required: true in: body schema: type: object description: json body of BTBulkPaymentConfirmation type - name: Content-Type type: string required: true in: header description: application/json - name: PSU-Geo-Location type: string required: false in: header description: The forwarded Geo Location of the corresponding http request between PSU and TPP if available. - name: Authorization type: string required: true in: header description: This header should be in the form "Bearer Token", where Token is returned from the call to OAuth2 Token endpoint. consumes: - application/json - application/x-www-form-urlencoded produces: - application/json definitions: BTPaymentInitiationResponse: title: BTPaymentInitiationResponse type: object properties: TransactionId: description: The ID of the initiated transaction type: string TransactionStatus: description: Current status of the transaction type: string required: - TransactionId BTPaymentInitiationVal: description: "" type: object properties: debtorAccount: properties: [] description: Debtor Account $ref: '#/definitions/Account' instructedAmount: properties: currency: type: string amount: type: string $ref: '#/definitions/Amount' description: Amount Object creditorAccount: properties: iban: type: string $ref: '#/definitions/Account' description: Creditor Account creditorAgent: type: string description: BIC/SWIFT creditorAgentName: type: string description: Creditor Bank Name creditorName: type: string description: Creditor Name creditorAddress: properties: street: type: string buildingNumber: type: string city: type: string country: type: string description: Credit Address $ref: '#/definitions/Address' endToEndIdentification: type: string description: Transaction Reference remittanceInformationUnstructured: type: string description: Merchant payment reference example: '{"instructedAmount":{"currency":"EUR","amount":"100"},"debtorAccount":{"iban":"RO98BTRLEURCRT0ABCDEFGHI"},"creditorAccount":{"iban":"RO98BTRLEURCRT0ABCDEFGHJ"},"creditorAgent":"BTRLRO99","creditorAgentName":"Banca Transilvania","creditorName":"Creditor Name","creditorAddress":{"street":"Street name","buildingNumber":"Building number","city":"City","country":"RO"},"endToEndIdentification":"123456","remittanceInformationUnstructured":"123456"}' required: - instructedAmount - creditorAccount - creditorAgent - creditorAgentName - creditorName - creditorAddress additionalProperties: false BTPaymentInitiationRon: description: "" type: object properties: debtorAccount: properties: [] description: Debtor Account $ref: '#/definitions/Account' instructedAmount: properties: currency: type: string amount: type: string $ref: '#/definitions/Amount' description: Amount Object creditorAccount: properties: iban: type: string $ref: '#/definitions/Account' description: Creditor Account creditorName: type: string description: Creditor Name debtorId: type: string description: Debtor Fiscal Identification Number. Mandatory only for Treasury Payments. endToEndIdentification: type: string description: Transaction Reference remittanceInformationUnstructured: type: string description: Merchant payment reference example: '{ "debtorAccount": { "iban": "RO98BTRLRONCRT0ABCDEFGHI" }, "instructedAmount": { "currency": "RON", "amount": 50 }, "creditorAccount": { "iban": "RO98BTRLEURCRT0ABCDEFGHI" }, "creditorName": "Dan Popescu", "debtorId": "RO12345", "endToEndIdentification": "Test", "remittanceInformationUnstructured": "explicatii" }' required: - instructedAmount - creditorAccount - creditorName additionalProperties: false BTBulkPaymentInitiationRon: properties: debtorAccount: description: Debtor Account $ref: '#/definitions/Account' payments: description: The array that contain the payments $ref: '#/definitions/BulkPaymentsList' additionalProperties: false required: - payments BTBulkPaymentConfirmationRon: properties: paymentBulkId: type: string description: Bulk Payment Initiation resource identification additionalProperties: false required: - paymentBulkId RonPaymentsList: type: array items: $ref: '#/definitions/BTPaymentInitiationRon' ValPaymentsList: type: array items: $ref: '#/definitions/BTPaymentInitiationVal' BulkPaymentsList: type: array items: $ref: '#/definitions/BulkPayments' BulkPayments: type: object properties: instructedAmount: description: Amount Object $ref: '#/definitions/Amount' creditorAccount: $ref: '#/definitions/Account' description: Creditor Account creditorName: type: string description: Creditor Name debtorId: type: string description: Debtor Fiscal Identification Number. Mandatory only for Treasury Payments. endToEndIdentification: type: string description: Transaction Reference remittanceInformationUnstructured: type: string description: Merchant payment reference required: - instructedAmount - creditorAccount - creditorName Account: properties: iban: type: string minLength: 1 description: Account IBAN additionalProperties: false required: - iban Amount: properties: currency: type: string description: ISO 4217 Alpha 3 currency code amount: type: string description: The amount given with 2 fractional digits additionalProperties: false required: - currency - amount Address: properties: country: type: string description: ISO Country Code city: type: string description: City Name street: type: string description: Street Name buildingNumber: type: string description: Builiding Number additionalProperties: false required: - country BT-TppMessage_Error: properties: tppMessages: $ref: '#/definitions/TppMessages' additionalProperties: false TppMessages: type: array items: $ref: '#/definitions/TppMessage' TppMessage: type: object properties: category: type: string code: type: string text: type: string additionalProperties: false x-ibm-configuration: enforced: true testable: true phase: realized parameters: Authorization: name: Authorization type: string required: true in: header description: This header should be in the form "Bearer Token", where Token is returned from the call to OAuth2 x-ibm-endpoints: - endpointUrl: https://api.apistorebt.ro/bt/sb type: - production - development ...