Need help with your APIs? I offer API discovery, governance & evangelism services. Explore services →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Tandem Bank Payment Initiation API (PIS)

Tandem Bank's Open Banking Payment Initiation Service (PIS) for initiating domestic and other payments against Tandem accounts. Delivered through Tandem's PSD2 dedicated interface (provided by Token), conformant to the OBIE Read/Write Payment Initiation API Standard. FAPI-secured (OAuth2/OIDC, mutual-TLS, PSD2 SCA); production base URL is issued per authorised TPP during Token onboarding and is not publicly published. The attached OpenAPI is the shared OBIE standard specification, not a Tandem-proprietary contract.

Tandem Bank Payment Initiation API (PIS) is one of 3 APIs that Tandem Bank publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Payment Initiation, PISP, and Open Banking. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, and an API reference.

This API exposes 41 operations across 40 paths, organized into 14 resource areas, and defines 110 schemas. It is described by OpenAPI 3.0.0, at version 4.0.1.

Requests are made against a single base URL, /open-banking/v4.0/pisp.

41 operations 40 paths 110 schemas 26 GET15 POST

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.0.0
API Version
4.0.1
Server
/open-banking/v4.0/pisp
Authentication
OAuth 2.0, OAuth 2.0
Terms of Service
Resource Areas
14

Authentication & Security 2

Tandem Bank Payment Initiation API (PIS) declares 2 security schemes for authenticating requests. It supports OAuth 2.0 (TPPOAuth2Security) using the clientCredentials flow, exposing 1 scope. It supports OAuth 2.0 (PSUOAuth2Security) using the authorizationCode flow, exposing 1 scope.

  • TPPOAuth2Security — TPP client credential authorisation flow with the ASPSP
  • PSUOAuth2Security — OAuth flow, it is required when the PSU needs to perform SCA with the ASPSP when a TPP wants to access an ASPSP resource owned by the PSU

Paths & Operations 41

Across 40 paths, the API surfaces 41 operations — 26 GET, 15 POST. They span 14 resource areas, including Domestic Payment Consents, Domestic Payments, Domestic Scheduled Payment Consents, Domestic Scheduled Payments, Domestic Standing Order Consents, Domestic Standing Orders, File Payment Consents, File Payments, and 6 more. Each is listed below with its method, path, parameters, and response codes.

Domestic Payment Consents 3
POST
/domestic-payment-consents
Create a Domestic Payment Consent
CreateDomesticPaymentConsents 8 params body → 201400401403405406415422
GET
/domestic-payment-consents/{ConsentId}
Get a Domestic Payment Consent
GetDomesticPaymentConsentsConsentId 7 params → 200400401403405406429500
GET
/domestic-payment-consents/{ConsentId}/funds-confirmation
Confirm availability of funds for a Domestic Payment
GetDomesticPaymentConsentsConsentIdFundsConfirmation 7 params → 200400401403405406429500
Domestic Payments 3
POST
/domestic-payments
Initiate a Domestic Payment
CreateDomesticPayments 8 params body → 201400401403405406409415
GET
/domestic-payments/{DomesticPaymentId}
Get a Domestic Payment
GetDomesticPaymentsDomesticPaymentId 7 params → 200400401403405406429500
GET
/domestic-payments/{DomesticPaymentId}/payment-details
Get details of a Domestic Payment
GetDomesticPaymentsDomesticPaymentIdPaymentDetails 7 params → 200400401403404405406429
Domestic Scheduled Payment Consents 2
POST
/domestic-scheduled-payment-consents
Create a Domestic Scheduled Payment Consent
CreateDomesticScheduledPaymentConsents 8 params body → 201400401403404405406409
GET
/domestic-scheduled-payment-consents/{ConsentId}
Get a Domestic Scheduled Payment Consent
GetDomesticScheduledPaymentConsentsConsentId 7 params → 200400401403404405406429
Domestic Scheduled Payments 3
POST
/domestic-scheduled-payments
Initiate a Domestic Scheduled Payment
CreateDomesticScheduledPayments 8 params body → 201400401403404405406409
GET
/domestic-scheduled-payments/{DomesticScheduledPaymentId}
Get a Domestic Scheduled Payment
GetDomesticScheduledPaymentsDomesticScheduledPaymentId 7 params → 200400401403404405406429
GET
/domestic-scheduled-payments/{DomesticScheduledPaymentId}/payment-details
Get details of a Domestic Scheduled Payment
GetDomesticScheduledPaymentsDomesticScheduledPaymentIdPaymentDetails 7 params → 200400401403404405406429
Domestic Standing Order Consents 2
POST
/domestic-standing-order-consents
Create a Domestic Standing Order Consent
CreateDomesticStandingOrderConsents 8 params body → 201400401403404405406409
GET
/domestic-standing-order-consents/{ConsentId}
Get a Domestic Standing Order Consent
GetDomesticStandingOrderConsentsConsentId 7 params → 200400401403404405406429
Domestic Standing Orders 3
POST
/domestic-standing-orders
Submit a Domestic Standing Order
CreateDomesticStandingOrders 8 params body → 201400401403404405406409
GET
/domestic-standing-orders/{DomesticStandingOrderId}
Get a Domestic Standing Order
GetDomesticStandingOrdersDomesticStandingOrderId 7 params → 200400401403404405406429
GET
/domestic-standing-orders/{DomesticStandingOrderId}/payment-details
Get details of a Domestic Standing Order Payment
GetDomesticStandingOrdersDomesticStandingOrderIdPaymentDetails 7 params → 200400401403404405406429
File Payment Consents 4
POST
/file-payment-consents
Create a File Payment Consent
CreateFilePaymentConsents 8 params body → 201400401403404405406409
GET
/file-payment-consents/{ConsentId}
Get a File Payment Consent
GetFilePaymentConsentsConsentId 7 params → 200400401403404405406429
POST
/file-payment-consents/{ConsentId}/file
Upload a File for a ConsentId
CreateFilePaymentConsentsConsentIdFile 9 params body → 200400401403404405406409
GET
/file-payment-consents/{ConsentId}/file
Get a File Payment Consent's Uploaded File
GetFilePaymentConsentsConsentIdFile 7 params → 200400401403404405406429
File Payments 4
POST
/file-payments
Submit a File Payment
CreateFilePayments 8 params body → 201400401403404405406409
GET
/file-payments/{FilePaymentId}
Get a File Payment by FilePaymentId
GetFilePaymentsFilePaymentId 7 params → 200400401403404405406429
GET
/file-payments/{FilePaymentId}/payment-details
Get payment details for a File Payment
GetFilePaymentsFilePaymentIdPaymentDetails 7 params → 200400401403404405406429
GET
/file-payments/{FilePaymentId}/report-file
Get a File Payment's Report File
GetFilePaymentsFilePaymentIdReportFile 7 params → 200400401403404405406429
International Payment Consents 3
POST
/international-payment-consents
Create an International Payment Consent
CreateInternationalPaymentConsents 8 params body → 201400401403404405406409
GET
/international-payment-consents/{ConsentId}
Get an International Payment Consent
GetInternationalPaymentConsentsConsentId 7 params → 200400401403404405406429
GET
/international-payment-consents/{ConsentId}/funds-confirmation
Confirm Funds Availability for an International Payment
GetInternationalPaymentConsentsConsentIdFundsConfirmation 7 params → 200400401403404405406429
International Payments 3
POST
/international-payments
Initiate an International Payment
CreateInternationalPayments 8 params body → 201400401403404405406415
GET
/international-payments/{InternationalPaymentId}
Get an International Payment
GetInternationalPaymentsInternationalPaymentId 7 params → 200400401403404405406429
GET
/international-payments/{InternationalPaymentId}/payment-details
Get details of an International Payment
GetInternationalPaymentsInternationalPaymentIdPaymentDetails 7 params → 200400401403404405406429
International Scheduled Payments Consents 3
POST
/international-scheduled-payment-consents
Create an International Scheduled Payment Consent
CreateInternationalScheduledPaymentConsents 8 params body → 201400401403404405406409
GET
/international-scheduled-payment-consents/{ConsentId}
Get an International Scheduled Payment Consent
GetInternationalScheduledPaymentConsentsConsentId 7 params → 200400401403404405406429
GET
/international-scheduled-payment-consents/{ConsentId}/funds-confirmation
Confirm Funds Availability for an International Scheduled Payment
GetInternationalScheduledPaymentConsentsConsentIdFundsConfirmation 7 params → 200400401403404405406429
International Scheduled Payments 3
POST
/international-scheduled-payments
Initiate an International Scheduled Payment
CreateInternationalScheduledPayments 8 params body → 201400401403404405406409
GET
/international-scheduled-payments/{InternationalScheduledPaymentId}
Get an International Scheduled Payment
GetInternationalScheduledPaymentsInternationalScheduledPaymentId 7 params → 200400401403404405406429
GET
/international-scheduled-payments/{InternationalScheduledPaymentId}/payment-details
Get details of an International Scheduled Payment
GetInternationalScheduledPaymentsInternationalScheduledPaymentIdPaymentDetails 7 params → 200400401403404405406429
International Standing Orders Consents 2
POST
/international-standing-order-consents
Create an International Standing Order Consent
CreateInternationalStandingOrderConsents 8 params body → 201400401403404405406409
GET
/international-standing-order-consents/{ConsentId}
Get an International Standing Order Consent
GetInternationalStandingOrderConsentsConsentId 7 params → 200400401403404405406429
International Standing Orders 3
POST
/international-standing-orders
Submit an International Standing Order
CreateInternationalStandingOrders 8 params body → 201400401403404405406409
GET
/international-standing-orders/{InternationalStandingOrderPaymentId}
Get an International Standing Order
GetInternationalStandingOrdersInternationalStandingOrderPaymentId 7 params → 200400401403404405406429
GET
/international-standing-orders/{InternationalStandingOrderPaymentId}/payment-details
Get details of an International Standing Order Payment
GetInternationalStandingOrdersInternationalStandingOrderPaymentIdPaymentDetails 7 params → 200400401403404405406429

Schemas 110

The contract defines 110 schemas that model the data the API accepts and returns. The most detailed are OBPostalAddress7 (18 properties), OBRisk1 (9 properties), OBMandateRelatedInformation1 (8 properties), OBRemittanceInformationStructured (7 properties). Each schema is shown below with its type and property counts.

OBDomesticRefundAccount1
object
Unambiguous identification of the refund account to which a refund will be made as a result of the transaction.
1 property 1 required
NumberOfPayments
string
Number of the payments that will be made in completing this frequency sequence including any executed since the sequence start date.
Frequency_1
string
Individual Definitions: NotKnown - Not Known EvryDay - Every day EvryWorkgDay - Every working day IntrvlDay - An interval specified in number of calendar days…
OBUltimateCreditor1
object
Ultimate party to which an amount of money is due.
5 properties
OBUltimateDebtor1
object
Ultimate party that owes an amount of money to the (ultimate) creditor.
5 properties
OBFrequency6
object
Regularity with which credit transfer instructions are to be created and processed
3 properties 1 required
PointInTime
string
Exact2NumericText - Further information on the exact point in time the event should take place. Specifies a frequency in terms of an exact point in time or mom…
ActiveOrHistoricCurrencyCode
string
A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international st…
BuildingName
string
Name of a referenced building.
BuildingNumber
string
Number that identifies the position of a building on a street.
Date
string
Date and time associated with the date time type. All dates in the JSON payloads are represented in ISO 8601 date format. An example is below: 2017-04-05
ExternalCategoryPurpose1Code
string
Enumeration of codes that outlines the type of purpose behind a transaction, payment or risk. For all enum values see ExternalCategoryPurpose1Code [here](https…
CareOf
string
The 'care of' address is used whenever sending mail to a person or organisation who does not actually live or work at the address. They will receive the mail f…
CountryCode
string
Nation with its own government.
CountrySubDivision
string
Identifies a subdivision of a country such as state, region, county.
DistrictName
string
Number that of the regional area, known as a district, which forms part of an address
Department
string
Identification of a division of a large organisation or building.
File
object
Floor
string
Number that identifies the level within a building
ISODateTime
string
All dates in the JSON payloads are represented in ISO 8601 date-time format. All date-time fields in responses must include the timezone. An example is below:…
Identification_0
string
Identification assigned by an institution to identify an account. This identification is known by the account owner.
Identification_1
string
Unique identification, as assigned by the creditor, to unambiguously identify the mandate.
Identification_3
string
Identification of the organisation issuing the invoice, when it is different from the creditor or ultimate creditor
Identification_4
string
Identification of the party to whom an invoice is issued, when it is different from the debtor or ultimate debtor.
LEI
string
Legal entity identification as an alternate identification for a party. Legal Entity Identifier is a code allocated to a party as described in ISO 17442 "Finan…
Links
object
Links relevant to the payload
5 properties 1 required
Meta
object
Meta Data relevant to the payload
3 properties
Name
string
Name by which an agent is known and which is usually used to identify that agent.
OBActiveCurrencyAndAmount_SimpleType
string
A number of monetary units specified in an active currency where the unit of currency is explicit and compliant with ISO 4217.
OBActiveOrHistoricCurrencyAndAmount
object
Amount of money associated with the charge type.
2 properties 2 required
OBAddressTypeCode
string
Identifies the nature of the postal address.
OBAddressType2Code
string
Identifies the nature of the postal address. For a full set of codes see OBAddressType2Code [here](https://github.com/OpenBankingUK/ExternalInternalCodeSets).
OBBranchAndFinancialInstitutionIdentification6_0
object
Party that manages the account on behalf of the account owner, that is manages the registration and booking of entries on the account, calculates balances on t…
5 properties
OBInternalChargeBearerType1Code
string
Specifies which party/parties will bear the charges associated with the processing of the payment transaction. For a full list of values refer to OBInternalCha…
OBCashAccountCreditor3
object
6 properties 3 required
OBCashAccountDebtor4
object
^ Only included in the response if Data. ReadRefundAccount is set to Yes in the consent.
5 properties
OBExternalMandateClassification1Code
string
OBError1
object
4 properties 1 required
OBErrorResponse1
object
An array of detail error codes, and messages, and URLs to documentation to help remediation.
4 properties 1 required
OBInternalAccountIdentification4Code
string
Name of the identification scheme, in a coded form as published in an external list. For a full list of values refer to OBInternalAccountIdentification4Code in…
ExternalCreditorReferenceType1Code
string
Specifies the type of creditor reference as published in an external creditor reference type code set. For more information see ExternalCreditorReferenceType1C…
ExternalDocumentType1Code
string
Specifies the document type as published in an external document type code list. For more information see ExternalDocumentType1Code in ISOExternalCodeSet [here…
OBInternalFinancialInstitutionIdentification4Code
string
Name of the identification scheme, in a coded form as published in an external list.
OBInternalExtendedAccountType1Code
string
Specifies the extended type of account.
OBInternalLocalInstrument1Code
string
User community specific instrument. Usage: This element is used to specify a local instrument, local clearing option and/or further qualify the service or serv…
OBInternalPaymentChargeType1Code
string
Charge type, in a coded form. For a full list of values refer to OBInternalPaymentChargeType1Code in OBInternalCodeSet [here](https://github.com/OpenBankingUK/…
ExternalPurpose1Code
string
This is a partial list, For a full list see ExternalPurpose1Code [here](https://github.com/OpenBankingUK/ExternalInternalCodeSets)
OBExternalStatusReason1Code
string
Low level textual error code, for all enum values see OBExternalStatusReason1Code in OBInternalCodeSet [here](https://github.com/OpenBankingUK/ExternalInternal…
OBFrequency6Code
string
For a full list of values see OBFrequency6Code in OBInternalCodeSet [here](https://github.com/OpenBankingUK/ExternalInternalCodeSets)
OBMandateRelatedInformation1
object
8 properties 1 required
OBPaymentStatusReason
object
3 properties
OBProxy1
object
Specifies an alternate assumed name for the identification of the account.
3 properties 2 required
ExternalProxyAccountType1Code
string
Specifies the external proxy account type code, as published in the proxy account type external code set. For a full list of values see ExternalProxyAccountTyp…
OBPostalAddress7
object
Information that locates and identifies a specific address, as defined by postal services.
18 properties
OBReferredDocumentInformation
object
5 properties
OBRemittanceInformation2
object
Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' rec…
2 properties
OBRemittanceInformationStructured
object
7 properties
OBRegulatoryAuthority2
object
Entity requiring the regulatory reporting information.
2 properties
OBRegulatoryReporting1
object
Information needed due to regulatory and statutory requirements
3 properties
OBRisk1
object
The Risk section is sent by the initiating party to the ASPSP. It is used to specify additional details for risk scoring for Payments.
9 properties
OBSCASupportData1
object
Supporting Data provided by TPP, when requesting SCA Exemption.
3 properties
OBStatusReason
object
3 properties
OBStructuredRegulatoryReporting3
object
Set of elements used to provide details on the regulatory reporting information.
5 properties
OBSupplementaryData1
object
Additional information that can not be captured in the structured fields and/or any other specific block.
OBWriteDomestic2
object
2 properties 2 required
OBWriteDomesticConsent4
object
2 properties 2 required
OBWriteDomesticConsentResponse5
object
4 properties 2 required
OBInternalConsentStatus2Code
string
Specifies the status of consent resource in code form. For a full list of values refer to OBInternalConsentStatus2Code in OBInternalCodeSet [here](https://gith…
OBWriteDomesticResponse5
object
3 properties 1 required
OBWriteDomesticScheduled2
object
2 properties 2 required
OBWriteDomesticScheduledConsent4
object
2 properties 2 required
OBWriteDomesticScheduledConsentResponse5
object
4 properties 2 required
OBWriteDomesticScheduledResponse5
object
3 properties 1 required
OBWriteDomesticStandingOrder3
object
2 properties 2 required
OBWriteDomesticStandingOrderConsent5
object
2 properties 2 required
OBWriteDomesticStandingOrderConsentResponse6
object
4 properties 2 required
OBWriteDomesticStandingOrderResponse6
object
3 properties 1 required
OBWriteFile2
object
1 property 1 required
OBWriteFileConsent3
object
1 property 1 required
OBWriteFileConsentResponse4
object
3 properties 1 required
OBInternalConsentStatus3Code
string
Specifies the status of consent resource in code form.
OBWriteFileResponse3
object
3 properties 1 required
OBWriteFundsConfirmationResponse1
object
3 properties 1 required
OBWriteInternational3
object
2 properties 2 required
OBWriteInternationalConsent5
object
2 properties 2 required
OBWriteInternationalConsentResponse6
object
4 properties 2 required
OBWriteInternationalResponse5
object
3 properties 1 required
OBWriteInternationalScheduled3
object
2 properties 2 required
OBWriteInternationalScheduledConsent5
object
2 properties 2 required
OBWriteInternationalScheduledConsentResponse6
object
4 properties 2 required
OBWriteInternationalScheduledResponse6
object
3 properties 1 required
OBWriteInternationalStandingOrder4
object
2 properties 2 required
OBWriteInternationalStandingOrderConsent6
object
2 properties 2 required
OBWriteInternationalStandingOrderConsentResponse7
object
4 properties 2 required
OBWriteInternationalStandingOrderResponse7
object
3 properties 1 required
OBWritePaymentDetailsResponse1
object
3 properties 1 required
OBWritePaymentDetails1
object
4 properties 3 required
PostBox
string
Information that locates and identifies a box in a post office assigned to a person or organization, where letters for them are kept until called for.
PostCode
string
Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail.
Room
string
Information that locates and identifies a room to form part of an address
SecondaryIdentification
string
This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally ident…
StreetName
string
Name of a street or thoroughfare.
SubDepartment
string
Identification of a sub-division of a large organisation or building.
Time
string
Time at which assets become available to the account owner in case of a credit entry, or cease to be available to the account owner in case of a debit transact…
TownName
string
Name of a built-up area, with defined boundaries, and a local government.
UnitNumber
string
Number that identifies the unit of a specific address .
ExternalPaymentTransactionStatus1Code
string
The current status of the payment resource. For a full list of values see ExternalPaymentTransactionStatus1Code in OBInternalCodeSet [here](https://github.com/…
ExternalPaymentTransactionStatus2Code
string
Specifies the status of the payment order resource. For a full list of values see ExternalPaymentTransactionStatus2Code in OBInternalCodeSet [here](https://git…
ExternalPaymentTransactionStatus3Code
string
Specifies the status of the payment information group. For a full list of values refer to ExternalPaymentTransactionStatus3Code in OBInternalCodeSet [here](htt…
ExternalPaymentTransactionStatus4Code
string
Specifies the status of the payment order resource. See ExternalPaymentTransactionStatus4Code in OBInternalCodeSet [here](https://github.com/OpenBankingUK/Exte…

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

obie-standard-payment-initiation-openapi.yaml Raw ↑

Other APIs Tandem Bank publishes across the network.

Tandem Bank Account and Transaction Information API (AIS)
Tandem Bank Confirmation of Funds API (CBPII)