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: portfolioId: type: string description: Portfolio identifier valuationDate: type: string format: date description: Valuation date totalMarketValue: type: number format: double description: Total market value totalCost: type: number format: double description: Total cost basis unrealizedPnL: type: number format: double description: Total unrealized P&L currency: type: string description: Valuation currency assetAllocation: type: array description: Asset allocation breakdown items: type: object properties: assetClass: type: string description: Asset class name marketValue: type: number format: double description: Market value in asset class weight: type: number format: double description: Percentage weight Error_3: type: object description: Error response properties: errorCode: type: string description: Error code errorMessage: type: string description: Error description AccountUpdate: type: object description: Request body for updating an account properties: accountName: type: string description: Updated display name status: type: string description: Updated account status enum: - ACTIVE - INACTIVE Error_2: type: object description: Error response properties: errorCode: type: string description: Machine-readable error code errorMessage: type: string description: Human-readable error description details: type: array description: Additional error details items: type: object properties: field: type: string description: Field related to the error message: type: string description: Detail message PaginationHeader_3: type: object description: Pagination metadata properties: page_size: type: integer description: Records per page page_start: type: integer description: Starting record total_size: type: integer description: Total records Account: type: object description: Banking account arrangement properties: accountId: type: string description: Unique account identifier customerId: type: string description: Associated customer identifier accountName: type: string description: Account display name accountType: type: string description: Type of account enum: - CURRENT - SAVINGS - DEPOSIT - LOAN productId: type: string description: Associated product identifier currency: type: string description: Account currency in ISO 4217 format pattern: ^[A-Z]{3}$ status: type: string description: Current account status enum: - ACTIVE - INACTIVE - CLOSED - DORMANT openingDate: type: string format: date description: Date the account was opened workingBalance: type: number format: double description: Current working balance availableBalance: type: number format: double description: Available balance for transactions responses: Unauthorized_2: description: Authentication required content: application/json: schema: $ref: '#/components/schemas/Error_3' NotFound: description: Requested resource not found content: application/json: schema: $ref: '#/components/schemas/Error_2' Unauthorized: description: Authentication required or invalid credentials content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/Error' NotFound_2: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error_3' parameters: pageSize: name: page_size in: query description: Number of records to return per page schema: type: integer minimum: 1 maximum: 100 default: 25 pageStart: name: page_start in: query description: Starting record number for pagination schema: type: integer minimum: 0 default: 0 portfolioId: name: portfolioId in: path required: true description: Unique portfolio identifier schema: type: string pageSize_2: name: page_size in: query description: Number of records per page schema: type: integer minimum: 1 maximum: 100 default: 25 accountId: name: accountId in: path required: true description: Unique account identifier schema: type: string pageStart_2: name: page_start in: query description: Starting record number schema: type: integer minimum: 0 default: 0 securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT externalDocs: description: Temenos BNPL API Documentation url: https://developer.temenos.com/service/buy-now-pay-later