openapi: 3.1.0
info:
title: Temenos Buy Now Pay Later Accounts Holdings API
description: APIs for buy now pay later services with embedded Explainable AI for automated decisioning and credit offer matching. Supports interest-free and interest-bearing BNPL products with point-of-sale integration and full loan lifecycle management. Core banking agnostic and deployable on Temenos Banking Cloud.
version: 1.0.0
contact:
name: Temenos Developer Support
url: https://developer.temenos.com/
email: api.support@temenos.com
license:
name: Temenos Terms of Service
url: https://www.temenos.com/legal-information/website-terms-and-conditions/
termsOfService: https://www.temenos.com/legal-information/website-terms-and-conditions/
servers:
- url: https://api.temenos.com/bnpl/v1
description: Temenos BNPL API - Production
security:
- bearerAuth: []
tags:
- name: Holdings
description: Manage fund investment positions including deposits, capital transactions, dividends, equities, bonds, foreign exchange, futures, options, swaps, and other securities with 47 endpoints.
paths:
/holdings/positions:
get:
operationId: listPositions
summary: List Fund Positions
description: Retrieve investment positions across funds including equities, bonds, derivatives, and other securities with current valuations and accounting data.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/pageStart'
- name: fundId
in: query
description: Filter by fund identifier
schema:
type: string
responses:
'200':
description: Successful retrieval of positions
content:
application/json:
schema:
type: object
properties:
header:
$ref: '#/components/schemas/PaginationHeader'
body:
type: array
items:
$ref: '#/components/schemas/Position'
'401':
$ref: '#/components/responses/Unauthorized'
/holdings/transactions:
get:
operationId: listHoldingsTransactions
summary: List Holdings Transactions
description: Retrieve securities transactions including equity trades, bond transactions, FX spot and forward deals, futures, options, and swap bookings across fund portfolios.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/pageStart'
- name: fundId
in: query
description: Filter by fund identifier
schema:
type: string
- name: transactionType
in: query
description: Filter by transaction type
schema:
type: string
enum:
- EQUITY
- BOND
- FX_SPOT
- FX_FORWARD
- FUTURE
- OPTION
- SWAP
- DIVIDEND
- CAPITAL
responses:
'200':
description: Successful retrieval of transactions
content:
application/json:
schema:
type: object
properties:
header:
$ref: '#/components/schemas/PaginationHeader'
body:
type: array
items:
$ref: '#/components/schemas/SecurityTransaction'
'401':
$ref: '#/components/responses/Unauthorized'
/holdings/dividends:
post:
operationId: bookDividend
summary: Book Dividend Transaction
description: Book a dividend or coupon distribution transaction for a fund including income distributions and reinvestment processing.
tags:
- Holdings
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DividendBooking'
responses:
'201':
description: Dividend booked successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SecurityTransaction'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/holdings/accounts:
get:
operationId: listAccounts
summary: List Accounts
description: Retrieve a list of customer accounts across all account types including current accounts, savings accounts, deposit accounts, and loan accounts. Supports filtering by customer, account type, and status.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/pageStart'
- name: customerId
in: query
description: Filter accounts by customer identifier
schema:
type: string
- name: accountType
in: query
description: Filter by account type
schema:
type: string
responses:
'200':
description: Successful retrieval of accounts
content:
application/json:
schema:
type: object
properties:
header:
$ref: '#/components/schemas/PaginationHeader_2'
body:
type: array
items:
$ref: '#/components/schemas/Account'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
post:
operationId: createAccount
summary: Create Account Arrangement
description: Create a new account arrangement for a customer. The arrangement architecture supports creating various account types including current accounts, savings accounts, and deposit accounts with modular business component configuration.
tags:
- Holdings
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AccountCreate'
responses:
'201':
description: Account created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/holdings/accounts/{accountId}:
get:
operationId: getAccount
summary: Get Account Details
description: Retrieve detailed information for a specific account including balances, status, product details, and arrangement properties.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/accountId'
responses:
'200':
description: Successful retrieval of account details
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateAccount
summary: Update Account Arrangement
description: Update an existing account arrangement including modifying account properties, status, and configuration settings.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/accountId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AccountUpdate'
responses:
'200':
description: Account updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/holdings/accounts/{accountId}/balances:
get:
operationId: getAccountBalances
summary: Get Account Balances
description: Retrieve balance information for a specific account including working balance, available balance, locked amount, and cleared balance across different balance types.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/accountId'
responses:
'200':
description: Successful retrieval of account balances
content:
application/json:
schema:
$ref: '#/components/schemas/AccountBalance'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/holdings/accounts/{accountId}/transactions:
get:
operationId: listAccountTransactions
summary: List Account Transactions
description: Retrieve transaction history for a specific account with support for date range filtering, transaction type filtering, and pagination.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/pageStart'
- name: dateFrom
in: query
description: Start date for transaction filter in ISO 8601 format
schema:
type: string
format: date
- name: dateTo
in: query
description: End date for transaction filter in ISO 8601 format
schema:
type: string
format: date
- name: transactionType
in: query
description: Filter by transaction type
schema:
type: string
responses:
'200':
description: Successful retrieval of transactions
content:
application/json:
schema:
type: object
properties:
header:
$ref: '#/components/schemas/PaginationHeader_2'
body:
type: array
items:
$ref: '#/components/schemas/Transaction'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/holdings/deposits:
get:
operationId: listDeposits
summary: List Deposit Arrangements
description: Retrieve a list of deposit arrangements including term deposits, call deposits, and savings deposits with their maturity dates, interest rates, and current balances.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/pageStart'
- name: customerId
in: query
description: Filter deposits by customer identifier
schema:
type: string
responses:
'200':
description: Successful retrieval of deposits
content:
application/json:
schema:
type: object
properties:
header:
$ref: '#/components/schemas/PaginationHeader_2'
body:
type: array
items:
$ref: '#/components/schemas/Deposit'
'401':
$ref: '#/components/responses/Unauthorized'
/holdings/loans:
get:
operationId: listLoans
summary: List Loan Arrangements
description: Retrieve a list of loan arrangements including personal loans, mortgage loans, and corporate lending with their outstanding balances, repayment schedules, and interest details.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/pageStart'
- name: customerId
in: query
description: Filter loans by customer identifier
schema:
type: string
responses:
'200':
description: Successful retrieval of loans
content:
application/json:
schema:
type: object
properties:
header:
$ref: '#/components/schemas/PaginationHeader_2'
body:
type: array
items:
$ref: '#/components/schemas/Loan'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createLoan
summary: Create Loan Arrangement
description: Create a new loan arrangement for a customer specifying loan amount, term, interest rate, and repayment schedule details.
tags:
- Holdings
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LoanCreate'
responses:
'201':
description: Loan created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Loan'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/holdings/portfolios:
get:
operationId: listPortfolios
summary: List Portfolios
description: Retrieve a list of investment portfolios for wealth clients including portfolio valuations, benchmark assignments, and investment mandate details.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/pageSize_2'
- $ref: '#/components/parameters/pageStart_2'
- name: customerId
in: query
description: Filter portfolios by customer identifier
schema:
type: string
- name: advisorId
in: query
description: Filter by assigned advisor
schema:
type: string
responses:
'200':
description: Successful retrieval of portfolios
content:
application/json:
schema:
type: object
properties:
header:
$ref: '#/components/schemas/PaginationHeader_3'
body:
type: array
items:
$ref: '#/components/schemas/Portfolio'
'401':
$ref: '#/components/responses/Unauthorized_2'
post:
operationId: createPortfolio
summary: Create Portfolio
description: Create a new investment portfolio for a wealth client with specified investment mandate, benchmark, and risk profile.
tags:
- Holdings
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PortfolioCreate'
responses:
'201':
description: Portfolio created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Portfolio'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized_2'
/holdings/portfolios/{portfolioId}:
get:
operationId: getPortfolio
summary: Get Portfolio Details
description: Retrieve detailed portfolio information including current valuation, asset allocation, performance metrics, and linked account details.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/portfolioId'
responses:
'200':
description: Successful retrieval of portfolio details
content:
application/json:
schema:
$ref: '#/components/schemas/Portfolio'
'401':
$ref: '#/components/responses/Unauthorized_2'
'404':
$ref: '#/components/responses/NotFound_2'
delete:
operationId: closePortfolio
summary: Close Portfolio
description: Close an investment portfolio after all positions have been liquidated and settled.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/portfolioId'
responses:
'200':
description: Portfolio closed successfully
'401':
$ref: '#/components/responses/Unauthorized_2'
'404':
$ref: '#/components/responses/NotFound_2'
/holdings/portfolios/{portfolioId}/positions:
get:
operationId: listPortfolioPositions
summary: List Portfolio Positions
description: Retrieve investment positions within a portfolio including equities, bonds, derivatives, funds, and cash positions with current market valuations.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/portfolioId'
- $ref: '#/components/parameters/pageSize_2'
- $ref: '#/components/parameters/pageStart_2'
- name: assetClass
in: query
description: Filter by asset class
schema:
type: string
enum:
- EQUITY
- FIXED_INCOME
- DERIVATIVES
- FUNDS
- CASH
- ALTERNATIVES
responses:
'200':
description: Successful retrieval of positions
content:
application/json:
schema:
type: object
properties:
header:
$ref: '#/components/schemas/PaginationHeader_3'
body:
type: array
items:
$ref: '#/components/schemas/Position_2'
'401':
$ref: '#/components/responses/Unauthorized_2'
'404':
$ref: '#/components/responses/NotFound_2'
/holdings/portfolios/{portfolioId}/valuation:
get:
operationId: getPortfolioValuation
summary: Get Portfolio Valuation
description: Retrieve the current or historical valuation of a portfolio including total market value, unrealized gains and losses, and asset allocation breakdown.
tags:
- Holdings
parameters:
- $ref: '#/components/parameters/portfolioId'
- name: valuationDate
in: query
description: Valuation date for historical lookups
schema:
type: string
format: date
responses:
'200':
description: Successful retrieval of valuation
content:
application/json:
schema:
$ref: '#/components/schemas/PortfolioValuation'
'401':
$ref: '#/components/responses/Unauthorized_2'
'404':
$ref: '#/components/responses/NotFound_2'
components:
schemas:
Loan:
type: object
description: Loan arrangement
properties:
loanId:
type: string
description: Unique loan identifier
customerId:
type: string
description: Associated customer identifier
loanType:
type: string
description: Type of loan
currency:
type: string
description: Loan currency in ISO 4217 format
principalAmount:
type: number
format: double
description: Original loan principal amount
outstandingBalance:
type: number
format: double
description: Current outstanding balance
interestRate:
type: number
format: double
description: Applied interest rate
term:
type: integer
description: Loan term in months
startDate:
type: string
format: date
description: Loan start date
maturityDate:
type: string
format: date
description: Loan maturity date
repaymentFrequency:
type: string
description: Frequency of repayments
enum:
- MONTHLY
- QUARTERLY
- SEMI_ANNUAL
- ANNUAL
status:
type: string
description: Current loan status
Portfolio:
type: object
description: Investment portfolio
properties:
portfolioId:
type: string
description: Unique portfolio identifier
customerId:
type: string
description: Associated customer
portfolioName:
type: string
description: Portfolio display name
currency:
type: string
description: Portfolio base currency
mandateType:
type: string
description: Investment mandate type
enum:
- DISCRETIONARY
- ADVISORY
- EXECUTION_ONLY
riskProfile:
type: string
description: Client risk profile
enum:
- CONSERVATIVE
- MODERATE
- BALANCED
- GROWTH
- AGGRESSIVE
benchmarkId:
type: string
description: Assigned benchmark identifier
totalValue:
type: number
format: double
description: Total portfolio market value
advisorId:
type: string
description: Assigned advisor identifier
openDate:
type: string
format: date
description: Portfolio opening date
status:
type: string
description: Portfolio status
enum:
- ACTIVE
- CLOSED
- SUSPENDED
Transaction:
type: object
description: Account transaction record
properties:
transactionId:
type: string
description: Unique transaction identifier
accountId:
type: string
description: Associated account identifier
transactionType:
type: string
description: Type of transaction
amount:
type: number
format: double
description: Transaction amount
currency:
type: string
description: Transaction currency in ISO 4217 format
debitOrCredit:
type: string
description: Whether the transaction is a debit or credit
enum:
- DEBIT
- CREDIT
bookingDate:
type: string
format: date
description: Date the transaction was booked
valueDate:
type: string
format: date
description: Value date of the transaction
description:
type: string
description: Transaction narrative description
reference:
type: string
description: Transaction reference number
LoanCreate:
type: object
description: Request body for creating a new loan
required:
- customerId
- productId
- currency
- principalAmount
- term
properties:
customerId:
type: string
description: Customer identifier for the borrower
productId:
type: string
description: Loan product identifier
currency:
type: string
description: Loan currency in ISO 4217 format
pattern: ^[A-Z]{3}$
principalAmount:
type: number
format: double
description: Requested loan amount
minimum: 0
term:
type: integer
description: Loan term in months
minimum: 1
PaginationHeader_2:
type: object
description: Pagination metadata for list responses
properties:
page_size:
type: integer
description: Number of records per page
page_start:
type: integer
description: Starting record number
total_size:
type: integer
description: Total number of records available
Position_2:
type: object
description: Portfolio position
properties:
positionId:
type: string
description: Position identifier
portfolioId:
type: string
description: Portfolio identifier
securityId:
type: string
description: Security identifier
securityName:
type: string
description: Security name
assetClass:
type: string
description: Asset class
enum:
- EQUITY
- FIXED_INCOME
- DERIVATIVES
- FUNDS
- CASH
- ALTERNATIVES
quantity:
type: number
format: double
description: Position quantity
averageCost:
type: number
format: double
description: Average cost per unit
marketPrice:
type: number
format: double
description: Current market price
marketValue:
type: number
format: double
description: Current market value
unrealizedPnL:
type: number
format: double
description: Unrealized profit and loss
currency:
type: string
description: Position currency
weight:
type: number
format: double
description: Position weight in portfolio as percentage
DividendBooking:
type: object
description: Dividend booking request
required:
- fundId
- securityId
- amount
- currency
properties:
fundId:
type: string
description: Fund identifier
securityId:
type: string
description: Security identifier
amount:
type: number
format: double
description: Dividend amount
currency:
type: string
description: Currency code
exDate:
type: string
format: date
description: Ex-dividend date
paymentDate:
type: string
format: date
description: Payment date
AccountCreate:
type: object
description: Request body for creating a new account
required:
- customerId
- productId
- currency
properties:
customerId:
type: string
description: Customer identifier for the account holder
productId:
type: string
description: Product identifier defining account type and terms
currency:
type: string
description: Account currency in ISO 4217 format
pattern: ^[A-Z]{3}$
accountName:
type: string
description: Optional display name for the account
AccountBalance:
type: object
description: Account balance details
properties:
accountId:
type: string
description: Account identifier
currency:
type: string
description: Balance currency in ISO 4217 format
workingBalance:
type: number
format: double
description: Current working balance
availableBalance:
type: number
format: double
description: Balance available for transactions
lockedAmount:
type: number
format: double
description: Amount held or locked
clearedBalance:
type: number
format: double
description: Cleared funds balance
Deposit:
type: object
description: Deposit arrangement
properties:
depositId:
type: string
description: Unique deposit identifier
customerId:
type: string
description: Associated customer identifier
depositType:
type: string
description: Type of deposit
enum:
- TERM
- CALL
- SAVINGS
currency:
type: string
description: Deposit currency in ISO 4217 format
principalAmount:
type: number
format: double
description: Original deposit principal amount
interestRate:
type: number
format: double
description: Applied interest rate
maturityDate:
type: string
format: date
description: Maturity date for term deposits
status:
type: string
description: Current deposit status
PaginationHeader:
type: object
description: Pagination metadata
properties:
page_size:
type: integer
description: Records per page
page_start:
type: integer
description: Starting record number
total_size:
type: integer
description: Total records available
PortfolioCreate:
type: object
description: Portfolio creation request
required:
- customerId
- currency
- mandateType
properties:
customerId:
type: string
description: Customer identifier
portfolioName:
type: string
description: Portfolio name
currency:
type: string
description: Base currency in ISO 4217 format
pattern: ^[A-Z]{3}$
mandateType:
type: string
description: Investment mandate type
enum:
- DISCRETIONARY
- ADVISORY
- EXECUTION_ONLY
riskProfile:
type: string
description: Risk profile
enum:
- CONSERVATIVE
- MODERATE
- BALANCED
- GROWTH
- AGGRESSIVE
benchmarkId:
type: string
description: Benchmark assignment
advisorId:
type: string
description: Advisor assignment
SecurityTransaction:
type: object
description: Securities transaction record
properties:
transactionId:
type: string
description: Transaction identifier
fundId:
type: string
description: Fund identifier
securityId:
type: string
description: Security identifier
transactionType:
type: string
description: Transaction type
enum:
- BUY
- SELL
- DIVIDEND
- COUPON
- FX_SPOT
- FX_FORWARD
- CAPITAL_INCREASE
- CAPITAL_DECREASE
quantity:
type: number
format: double
description: Transaction quantity
price:
type: number
format: double
description: Transaction price
amount:
type: number
format: double
description: Total transaction amount
currency:
type: string
description: Transaction currency
tradeDate:
type: string
format: date
description: Trade date
settlementDate:
type: string
format: date
description: Settlement date
Error:
type: object
description: Error response
properties:
errorCode:
type: string
description: Machine-readable error code
errorMessage:
type: string
description: Human-readable error description
Position:
type: object
description: Fund investment position
properties:
positionId:
type: string
description: Position identifier
fundId:
type: string
description: Fund identifier
securityId:
type: string
description: Security identifier
securityType:
type: string
description: Type of security
enum:
- EQUITY
- BOND
- FX
- FUTURE
- OPTION
- SWAP
- FUND
quantity:
type: number
format: double
description: Position quantity
marketValue:
type: number
format: double
description: Current market value
currency:
type: string
description: Position currency
valuationDate:
type: string
format: date
description: Valuation date
PortfolioValuation:
type: object
description: Portfolio valuation summary
properties:
portfolio
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/temenos/refs/heads/main/openapi/temenos-holdings-api-openapi.yml