components:
  parameters:
    accountNumber:
      description: Client account number
      in: query
      name: accountNumber
      required: false
      schema:
        example: XEMT0110111111
        type: string
  schemas:
    Address:
      description: Represents an address.
      properties:
        country:
          $ref: '#/components/schemas/Country'
        line1:
          description: Address Line 1
          example: 1 Apartment name
          maxLength: 70
          minLength: 1
          type: string
        line2:
          description: Address line 2
          example: Railway Terrace
          maxLength: 70
          minLength: 1
          type: string
        locality:
          description: ' The city, town, village, post town, or other locality within which the street address may be found'
          example: Slough
          maxLength: 50
          minLength: 1
          type: string
        postcode:
          description: The postal code, post code, ZIP code or other short code associated with the address by the relevant country's postal system.
          maxLength: 20
          type: string
        region:
          description: The province, such as a state, county, or canton within which the locality may be found. For Australia, Canada, USA and Mexico, please provide the 2, 3 letter ISO State Code.
          example: Berkshire,QLD,TX
          maxLength: 50
          minLength: 1
          type: string
      title: Address
      type: object
      x-examples: {}
      x-stoplight:
        id: v28hftp3cprta
    AttachPayment:
      description: Attach payment request item
      properties:
        amount:
          description: The amount should be paid for the proiovided recipient. This field can be null if `autoAdjustAmountToRemainingBalance` flag is set to true.
          example: 80
          format: decimal
          minimum: 0.01
          nullable: true
          type: number
        autoAdjustAmountToRemainingBalance:
          default: false
          description: If auto adjust amount to remaining balance flag is set to true, then the whole remaining amount is paid to the recipient
          type: boolean
          x-stoplight:
            id: 5shiycpge8bjc
        paymentReference:
          description: Reference shown to the recipient.
          example: INV1234
          maxLength: 70
          minLength: 1
          type: string
        purposeOfPaymentCode:
          description: Purpose of payment code. Get list of Payment purposes using \'/payments/purposes\' endpoint
          example: CORP_SUPLIER_PAYMENT
          maxLength: 40
          type: string
        purposeOfPaymentText:
          description: |-
            Optional.
            Reason for the payment. Required when purposeOfPaymentCode allows free text.
          example: Supplier Payment
          maxLength: 35
          type: string
        recipientId:
          description: Recipient unique Id provided by Xe in the recipient registration response
          example: 85ad53e2-4077-418c-b17c-b597ed90c01d
          maxLength: 36
          minLength: 1
          type: string
      title: AttachPayment
      type: object
      x-examples:
        Example 1:
          amount: 10
          autoAdjustAmountToRemainingBalance: false
          paymentReference: INV1234
          purposeOfPaymentCode: CORP_SUPLIER_PAYMENT
          purposeOfPaymentText: Supplier Payment
          recipientId: 85ad53e2-4077-418c-b17c-b597ed90c01d
      x-stoplight:
        id: 31g6bmx1kjp9e
    AttachedRecipient:
      description: |-
        An **AttachedRecipient** represents either a registered or non-registered recipient attached to a payment.

        If you are providing a registered recipient, set the **type** field to **Registered** and present the **recipientId** field.

        For a Non-Registered recipient, set the **type** field to **NonRegistered** and present the **Recipient** field, we will try and register the recipient for you.
      properties:
        recipient:
          $ref: '#/components/schemas/Recipient'
        recipientId:
          $ref: '#/components/schemas/RecipientIdentifier'
        type:
          $ref: '#/components/schemas/RecipientRegistrationType'
      required:
        - type
      title: Attached Recipient
      type: object
      x-stoplight:
        id: oiotlk2ripg3e
    AuthRequest:
      description: Authentication request
      properties:
        password:
          description: Password associated to account.
          example: x14jhas9173$
          format: password
          maxLength: 256
          minLength: 1
          type: string
        username:
          description: Username associated to account.
          example: xm276589
          maxLength: 50
          minLength: 1
          type: string
      required:
        - username
        - password
      title: Authentication Request
      type: object
      x-examples:
        Acme User Authentication Request:
          password: x14jhas9173$
          username: xm276589
      x-stoplight:
        id: o7284o5bmk142
    AuthResult:
      description: Authentication request result
      properties:
        accessToken:
          $ref: '#/components/schemas/JwtToken'
        expiresAt:
          description: Date the access token will expire.
          format: date-time
          type: string
        idToken:
          $ref: '#/components/schemas/JwtToken'
        refreshToken:
          $ref: '#/components/schemas/JwtToken'
      required:
        - accessToken
        - idToken
        - refreshToken
        - expiresAt
      title: Authentication Result
      type: object
      x-examples: {}
      x-stoplight:
        id: mju80kqcany2r
    BankAccount:
      allOf:
        - properties:
            accountName:
              description: Optional - Name of the account given by the bank or the PSU in online-banking not required in request.
              example: ACME
              maxLength: 50
              type: string
            accountNumber:
              description: AccountNumber given by the bank or the PSU in online-banking.
              example: "12345674"
              maxLength: 35
              type: string
            accountType:
              description: Account type of the bank account. e.g. Savings, Current, NRE, Loan , Overdraft, CashCredit
              maxLength: 40
              type: string
              x-stoplight:
                id: 343v7cp0afo8p
            bic:
              description: BIC of account.
              example: MIDLGB22XXX
              maxLength: 35
              type: string
            branchNumber:
              description: Bank branch number is a code that identifies a specific branch of a bank.
              maxLength: 30
              type: string
            country:
              $ref: '#/components/schemas/Country'
            iban:
              description: IBAN of account.
              example: GB26MIDL40051512345674
              maxLength: 35
              minLength: 1
              type: string
            ncc:
              description: National clearing code of account.
              maxLength: 13
              type: string
      description: |
        A bank account can be used as a payout method on a recipient, if a payout method is a bank account this object will contain the data representing an account.

        Additionally a bank account is a transfer destination for settlement.
      title: Bank Account
      type: object
      x-examples:
        Current Account:
          accountNumber: "12345674"
          bic: MIDLGB22XXX
          country: GB
          iban: GB26MIDL40051512345674
          ncc: "400515"
      x-stoplight:
        id: r8mrsw2y4k69e
    BankAccountType:
      description: The type of bank account a recipient holds
      properties:
        code:
          description: Code for the bank account type.
          type: string
        name:
          description: Name of the bank account type.
          type: string
      title: BankAccountType
      type: object
      x-stoplight:
        id: ghihmoff2hojy
    BankPayoutMethod:
      description: An **BankPayoutMethod** object is used in setting a payout method.
      properties:
        account:
          $ref: '#/components/schemas/BankAccount'
        intermAccount:
          $ref: '#/components/schemas/IntermBankAccount'
      required:
        - account
      title: Bank Payout Method
      type: object
      x-stoplight:
        id: 9vgqv5nedc9fd
    ClientBankAccount:
      description: Represents a client bank account.
      properties:
        accountName:
          description: Bank Account name
          example: James Bond
          maxLength: 35
          minLength: 1
          type: string
        accountNumber:
          description: Bank Account number
          example: XC98745656
          maxLength: 35
          minLength: 1
          type: string
        bankAccountId:
          description: bank Account Id
          example: 123456
          type: integer
        country:
          description: Country
          example: US
          maxLength: 2
          minLength: 2
          type: string
        currency:
          description: Currency
          example: USD
          maxLength: 3
          minLength: 3
          type: string
      required:
        - bankAccountId
        - accountName
        - accountNumber
        - currency
        - country
      title: ClientBankAccount
      type: object
      x-examples: {}
      x-stoplight:
        id: 3cw74w6pzw6mm
    Company:
      description: '**Company** object allow you represent a corporate company as a recipient.'
      properties:
        address:
          $ref: '#/components/schemas/Address'
        emailAddress:
          description: Email address on account.
          maxLength: 70
          type: string
        idNumber:
          description: Number of the document provided for the ID type.
          maxLength: 70
          type: string
        idType:
          description: Type of identity document for a particular country.
          maxLength: 40
          type: string
        industryTypeCode:
          description: Industry type code
          type: string
        name:
          description: Name of Company
          maxLength: 70
          minLength: 1
          type: string
        phoneNumber:
          description: Phone number on account.
          maxLength: 32
          type: string
        taxNumber:
          description: Tax number of the company.
          maxLength: 30
          type: string
      required:
        - address
      title: Company
      type: object
      x-examples:
        Corporate:
          address:
            - country: GB
              lines:
                - Unit 14
                - 3 Edgar Buildings
                - George Street
                - Bath
                - England
                - BA1 2FJ
              locality: Bath
              postcode: BA1 2FJ
              region: England
              street: 3 Edgar Buildings, George Street
          emailAddress: example@email.com
          industryTypeCode: CHAR_CHAR
          name: ACME
      x-stoplight:
        id: f3gdgr9dazrqv
    Consumer:
      description: '**Consumer** objects allow you to represent a consumer as a recipient.'
      properties:
        address:
          $ref: '#/components/schemas/Address'
        emailAddress:
          description: |-
            Conditional
            Email address on account.
          maxLength: 70
          type: string
        familyName:
          description: |-
            The single family name
            Also known as surname or last name
          maxLength: 20
          type: string
        givenNames:
          description: This is a space separated list of names (not including the family name).
          maxLength: 50
          type: string
        idNumber:
          description: Number of the document provided for the ID type.
          maxLength: 70
          type: string
        idType:
          description: Type of identity document for a particular country.
          maxLength: 40
          type: string
        mobileNumber:
          deprecated: true
          description: Deprecated - use `phoneNumber` instead.
          type: string
        phoneNumber:
          description: Phone number on account
          maxLength: 32
          type: string
        taxNumber:
          description: Tax number of the recipient.
          maxLength: 30
          type: string
        title:
          description: Title prefix of consumer's name.
          type: string
      required:
        - address
      title: Consumer
      type: object
      x-examples:
        Consumer:
          address:
            country: GB
            lines:
              - Unit 14
              - Flat 3a
              - George Street
              - Bath
              - England
              - BA1 2FJ
            locality: Bath
            postcode: BA1 2FJ
            region: England
            street: 3 Flat 3a, George Street
          emailAddress: joebloggs@Xe.com
          familyName: Bloggs
          givenNames: Joe Andrew
          title: Mr
      x-stoplight:
        id: zh0nahxis74z4
    Contract:
      description: |
        An object representing a contract with a related quote.
      properties:
        contractType:
          $ref: '#/components/schemas/FxContractType'
        createdDate:
          description: This is the timestamp when the money transfer instruction was created by the system.
          format: date-time
          type: string
        deliveryMethod:
          $ref: '#/components/schemas/DeliveryMethod'
        identifier:
          $ref: '#/components/schemas/ContractId'
        quote:
          $ref: '#/components/schemas/QuoteSummary'
        quoteStatus:
          $ref: '#/components/schemas/QuoteStatus'
        settlementOptions:
          items:
            $ref: '#/components/schemas/SettlementOption'
          type: array
        settlementStatus:
          $ref: '#/components/schemas/SettlementStatus'
        status:
          $ref: '#/components/schemas/ContractStatus'
        summary:
          description: Settlement Summary of one or more settlement currencies.
          items:
            $ref: '#/components/schemas/SettlementSummary'
          type: array
      required:
        - identifier
        - createdDate
        - status
        - settlementStatus
      title: Contract
      type: object
      x-examples:
        Mass Contract:
          acceptedDate: "2019-08-24T14:15:22Z"
          identifier:
            clientTransferNumber: ACME1345
            contractNumber: "2416427"
          quote:
            amount:
              amount: 112.67
              currency: USD
            expires: "2019-08-24T14:15:22Z"
            fees:
              amount: 0
              currency: USD
            fxDetails:
              - buy:
                  amount: 112.67
                  currency: USD
                rate:
                  baseCurrency: GBP
                  buyCurrency: USD
                  rate: 1.4
                  sellCurrency: GBP
                sell:
                  amount: 80
                  currency: GBP
            quoteTime: "2019-08-24T14:13:52Z"
          settlementSummary:
            settlementAmount:
              amount: 80
              currency: GBP
            settlementDate: "2019-08-24T14:15:22Z"
            settlementFees:
              amount: 0
              currency: GBP
          status: ContractUnconfirmed
          type: Mass
      x-stoplight:
        id: 7svrf46qkaqh3
    ContractCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Contract'
      description: Inherits **Contract**
      title: ContractCreateResponse
      x-stoplight:
        id: z74eniv1rk2u8
    ContractId:
      description: An object representing a group of contract Identifiers
      properties:
        clientTransferNumber:
          description: Associated client transfer number
          example: ACME1345
          maxLength: 35
          minLength: 1
          type: string
        contractNumber:
          description: The contract Number generated by Xe.
          example: "2416427"
          maxLength: 20
          minLength: 1
          type: string
      required:
        - contractNumber
        - clientTransferNumber
      title: Contract Identifiers
      type: object
      x-examples:
        Identifier Example:
          clientTransferNumber: ACME1345
          contractNumber: "2416427"
      x-stoplight:
        id: 54egmdd1g8b8d
    ContractStatus:
      default: QuoteRequired
      description: |-
        Status of the contract.

        | Status | Description |
        |-|-|
        | PaymentIssues | Some payments contains issues, contract cannot be approved until these are corrected or removed |
        | QuoteRequired | Quote has expired or needs generating |
        | ContractUnconfirmed | Contract is waiting to be confirmed (Approved) |
        | ContractConfirmed | Contract has been confirmed (Approved) |
        | Completed | Contract has been settled and all payouts have been completed |
        | ExposureLimitReached | Client has reached their exposure limit set by Xe |
        | Cancelled| Contract has been cancelled |
        | AwaitingRecipientDetails| Awaiting recipient details |
        | AwaitingFunds| Awaiting funds |
        | ReadyForRelease | Ready for release |
        | Processing | Contract is being processed, refresh after few seconds |
        | SettlementMethodNotAvailable | Selected settlement method is not available |
        | HeldInCurrencyAccount | Amount added to currency account balance  |
      enum:
        - PaymentIssues
        - ContractConfirmed
        - Completed
        - ContractUnconfirmed
        - ExposureLimitReached
        - QuoteRequired
        - Cancelled
        - AwaitingRecipientDetails
        - AwaitingFunds
        - ReadyForRelease
        - Processing
        - SettlementMethodNotAvailable
        - HeldInCurrencyAccount
      example: QuoteRequired
      title: Contract Status
      type: string
      x-examples:
        Example: QuoteRequired
      x-stoplight:
        id: jcrsdqjh95m4x
    ContractSummary:
      properties:
        accountNumber:
          type: string
        contractSource:
          type: string
        contractStatus:
          $ref: '#/components/schemas/ContractStatus'
        contractType:
          $ref: '#/components/schemas/FxContractType'
        dateCreated:
          format: date-time
          type: string
        excludedPayments:
          description: No. of excluded payments for MassPayments
          type: integer
          x-stoplight:
            id: q1zjqwmauoc1h
        identifier:
          $ref: '#/components/schemas/ContractId'
        lastModifiedAt:
          format: date-time
          type: string
        settlementStatus:
          $ref: '#/components/schemas/SettlementStatus'
        totalPayments:
          description: Total number of payments in a Contract
          type: integer
      title: ContractSummary
      type: object
      x-stoplight:
        id: qtrrlbjxt4xsh
    Country:
      description: |-
        Represents a country.

        This is a valid supported ISO 3166-1-alpha-2 country code.
      example: GB
      maxLength: 2
      minLength: 2
      pattern: (?:[a-zA-Z]){2,}
      title: Country
      type: string
      x-examples:
        Example: GB
      x-stoplight:
        id: t4ec0jt32wueb
    Currency:
      description: |
        The currency code is a three letter ISO 4217 code.

        https://www.iso.org/iso-4217-currency-codes.html
      example: GBP
      maxLength: 3
      minLength: 3
      pattern: (?:[a-zA-Z]){3,}
      title: Currency
      type: string
      x-examples:
        Example: GBP
      x-stoplight:
        id: 7jv7afhiv8ql5
    CurrencyAccountResponse:
      properties:
        availableBalance:
          description: This is the amount you can access or spend right now.
          format: decimal
          type: number
        currency:
          description: Currency code
          type: string
        totalBalance:
          description: This is your available balance and funds cleared to be available for a payment at a future date.
          format: decimal
          type: number
      title: CurrencyAccountResponse
      type: object
    CurrencyAmount:
      description: |-
        Represents monetary value within a currency.

        If `amount` is zero (0) this should be set as null.
      properties:
        amount:
          description: "Decimal amount in currency.  \nThe number of decimal places is defined by the currency."
          example: 80
          format: decimal
          minimum: 0.01
          nullable: true
          type: number
        currency:
          $ref: '#/components/schemas/Currency'
      required:
        - currency
      title: Currency Amount
      type: object
      x-examples:
        Example:
          amount: 80
          currency: GBP
      x-stoplight:
        id: gxnm7cjvs8mbp
    CurrencySettlementSummary:
      description: Currency Settlement Summary
      properties:
        initialMargin:
          $ref: '#/components/schemas/SettlementAmount'
        remainingSettlement:
          $ref: '#/components/schemas/SettlementAmountDetail'
        settlementAmount:
          $ref: '#/components/schemas/SettlementAmount'
        settlementFees:
          $ref: '#/components/schemas/SettlementAmount'
      required:
        - settlementFees
        - settlementAmount
      title: Currency Settlement Summary
      type: object
      x-examples:
        Example:
          initialSettlement:
            amount: 10
            currency: GBP
          remainingSettlement:
            amount: 90
            currency: GBP
            settlementDate: "2025-08-24"
          settlementAmount:
            amount: 100
            currency: GBP
          settlementFees:
            amount: 2
            currency: GBP
      x-stoplight:
        id: 96wvh0a4p8gl9
    DeliveryMethod:
      default: NotSet
      description: |-
        Funds delivery method
        | NotSet | Delivery method not being set |
        | BankAccount | Deliver to recipient's bank account |
        | CashPayout | Deliver cash to recipient |
        | MobileWallet | Deliver to recipient's mobile wallet |
        | FundsOnBalance | Deliver funds to currency balance |
        | PeerToPeer| Deliver funds to another XE customer |
      enum:
        - NotSet
        - BankAccount
        - CashPayout
        - MobileWallet
        - FundsOnBalance
        - PeerToPeer
      example: BankAccount
      title: DeliveryMethod
      type: string
      x-examples:
        Example 1: BankAccount
      x-stoplight:
        id: l5zwuh00b5ki2
    DirectDebitBankAccount:
      allOf:
        - properties:
            accountName:
              description: Name of the account given by the bank or the PSU in online-banking
              example: ACME
              maxLength: 70
              type: string
            accountNumber:
              description: AccountNumber given by the bank or the PSU in online-banking.
              example: "12345674"
              type: string
      description: Direct Debit Bank Account is a US/Canada bank account from where the funds will be debited
      title: Direct Debit Bank Account
      type: object
      x-examples:
        DirectDebitBankAccount:
          accountName: US Account
          accountNumber: 12345674
      x-stoplight:
        id: lty8gt7c04n64
    EnterpriseAccount:
      description: Associated account details
      properties:
        accountName:
          type: string
        accountNumber:
          type: string
        parentAccountNumber:
          type: string
      title: EnterpriseAccount
      type: object
      x-examples:
        Example 1:
          accountName: Example Account
          accountNumber: XEMT0000011111
          parentAccountNumber: XEMT0000022222
      x-stoplight:
        id: pfkffb1j4iay0
    ExpectedValue:
      description: An expected value for a recipient field
      properties:
        id:
          example: CHECKING
          type: string
        value:
          example: Checking
          type: string
      required:
        - id
        - value
      title: ExpectedValue
      type: object
    FieldError:
      properties:
        code:
          description: Error Code
          type: string
        message:
          description: Error Message
          type: string
      required:
        - code
        - message
      title: FieldError
      type: object
      x-stoplight:
        id: ylg6g6zaffla6
    FixedAmountType:
      default: NotSet
      description: |-
        | NotSet | Value is not set for Amount type. |
        | Buy | Buy amount is provided. |
        | Sell | Sell amount is provided. |
      enum:
        - NotSet
        - Buy
        - Sell
      title: FixedAmountType
      type: string
      x-examples:
        Example: Buy
      x-stoplight:
        id: 101ynnrrn5tcc
    FxContractType:
      default: NotSpecified
      description: |-
        Enum: The type of the contract
        Values: NotSpecified | Spot | Forward | RecurrringPayment | PreDelivery  | Rollover | CloseOut | MassPayments | Topup | SameCurrency | ScheduledPayment
      enum:
        - NotSpecified
        - Spot
        - Forward
        - RecurrringPayment
        - PreDelivery
        - Rollover
        - CloseOut
        - MassPayments
        - Topup
        - SameCurrency
        - ScheduledPayment
      title: FxContractType
      type: string
      x-examples:
        'Example ': Forward
      x-stoplight:
        id: o2gcpj0mlaweu
    FxDetail:
      description: An object representing the detail of an FX rate.
      properties:
        buy:
          $ref: '#/components/schemas/CurrencyAmount'
        fixedAmountType:
          $ref: '#/components/schemas/FixedAmountType'
        rate:
          $ref: '#/components/schemas/FxRate'
        remainingBuyForward:
          $ref: '#/components/schemas/CurrencyAmount'
        remainingSellForward:
          $ref: '#/components/schemas/CurrencyAmount'
        sell:
          $ref: '#/components/schemas/CurrencyAmount'
      required:
        - rate
      title: FX Detail
      type: object
      x-examples:
        Example:
          buy:
            amount: 112.67
            currency: USD
          fixedAmountType: Buy
          rate:
            baseCurrency: GBP
            buyCurrency: USD
            inverseRate: 0.82
            rate: 1.4
            sellCurrency: GBP
          sell:
            amount: 80
            currency: GBP
      x-stoplight:
        id: mgr7f2xn6ly86
    FxQuotePatchRequest:
      description: Patch request for updating an existing quote
      properties:
        deliveryMethod:
          $ref: '#/components/schemas/DeliveryMethod'
          description: |-
            Optional
            Delivery method to be updated
        initialMarginSettlementDetails:
          $ref: '#/components/schemas/SettlementDetails'
          description: |-
            Optional
            Initial margin settlement details to be updated
        payments:
          description: |-
            Optional
            Payments to be attached, it will replace existing payments if any payment is attached to the original quote
          items:
            $ref: '#/components/schemas/AttachPayment'
          type: array
          x-stoplight:
            id: r2ixpvfdnyp2v
        settlementDetails:
          $ref: '#/components/schemas/SettlementDetails'
          description: |-
            Optional
            Settlement details to be updated
      title: FxQuotePatchRequest
      type: object
      x-examples:
        Example 1:
          deliveryMethod: BankAccount
          initialMarginSettlementDetails:
            bankAccountId: 0
            settlementMethod: BankTransfer
          payments:
            - amount: 10
              autoAdjustAmountToRemainingBalance: false
              paymentReference: INV1234
              purposeOfPaymentCode: CORP_SUPLIER_PAYMENT
              purposeOfPaymentText: Supplier Payment
              recipientId: 85ad53e2-4077-418c-b17c-b597ed90c01d
          settlementDetails:
            bankAccountId: 0
            settlementMethod: BankTransfer
        Example 2:
          deliveryMethod: BankAccount
          initialMarginSettlementDetails:
            bankAccountId: 0
            settlementMethod: BankTransfer
          payments:
            - amount: 50
              autoAdjustAmountToRemainingBalance: false
              paymentReference: INV1234
              purposeOfPaymentCode: CORP_SUPLIER_PAYMENT
              purposeOfPaymentText: Supplier Payment
              recipientId: 85ad53e2-4077-418c-b17c-b597ed90c01d
            - amount: 30
              autoAdjustAmountToRemainingBalance: true
              paymentReference: INV12569
              purposeOfPaymentCode: CORP_SUPLIER_PAYMENT
              purposeOfPaymentText: Supplier Payment
              recipientId: 85ad53e2-4077-418c-b17c-b597ed90c02a
          settlementDetails:
            bankAccountId: 0
            settlementMethod: BankTransfer
      x-stoplight:
        id: jw2egnayd96iu
    FxQuoteRequest:
      description: Single fx quote request
      properties:
        buy:
          $ref: '#/components/schemas/CurrencyAmount'
        clientTransferNumber:
          description: Reference set by the client for the quote.
          example: ACME984621
          maxLength: 35
          minLength: 1
          nullable: true
          type: string
        countryTo:
          $ref: '#/components/schemas/Country'
        deliveryMethod:
          $ref: '#/components/schemas/DeliveryMethod'
        initialMarginSettlementDetails:
          $ref: '#/components/schemas/SettlementDetails'
        payments:
          description: Payments to be attached
          items:
            $ref: '#/components/schemas/AttachPayment'
          type: array
          x-stoplight:
            id: r2ixpvfdnyp2v
        sell:
          $ref: '#/components/schemas/CurrencyAmount'
        settlementDetails:
          $ref: '#/components/schemas/SettlementDetails'
        valueDate:
          description: Value date of the payout, if left **BLANK** the current date will be used.
          format: date
          nullable: true
          type: string
      title: FxQuoteRequest
      type: object
      x-examples:
        Example 1:
          buy:
            amount: 80
            currency: GBP
          clientTransferNumber: ACME984621
          countryTo: GB
          deliveryMethod: BankAccount
          sell:
            amount: 80
            currency: GBP
          settlementDetails:
            bankAccountId: 0
            settlementMethod: BankTransfer
          valueDate: "2019-08-24"
      x-stoplight:
        id: yu0h7tl625mtd
    FxQuoteResponse:
      description: Quote response for single Fx quote request
      properties:
        clientTransferNumber:
          type: string
        deliveryMethod:
          $ref: '#/components/schemas/DeliveryMethod'
        expires:
          description: |-
            Expiration Date of quote
            Returned by Xe platform.
          format: date-time
          nullable: true
          type: string
        fxDetail:
          $ref: '#/components/schemas/QuoteFxDetail'
        initialMarginSettlementMethod:
          $ref: '#/components/schemas/SettlementMethod'
          nullable: true
        messages:
          items:
            $ref: '#/components/schemas/InfoMessage'
          type: array
          x-stoplight:
            id: lkqhielfyw8m7
        payments:
          description: The list of payments to be made as part of this quote
          items:
            $ref: '#/components/schemas/AttachPayment'
          type: array
        quoteId:
          type: string
        quoteTime:
          description: |-
            Date of quote
            Returned by Xe platform.
          format: date-time
          nullable: true
          type: string
        settlementMethod:
          $ref: '#/components/schemas/SettlementMethod'
        settlementOptions:
          items:
            $ref: '#/components/schemas/SettlementOption'
          type: array
        status:
          $ref: '#/components/schemas/QuoteStatus'
        summary:
          description: Summary of settlement per currency pairs.
          items:
            $ref: '#/components/schemas/CurrencySettlementSummary'
          type: array
      required:
        - summary
        - quoteId
        - status
      title: FxQuoteResponse
      type: object
      x-examples:
        Example 1:
          clientTransferNumber: string
          deliveryMethod: BankAccount
          expires: "2025-08-24T14:15:22Z"
          fxDetail:
            buy:
              amount: 100
              currency: USD
            fixedAmountType: Buy
            quoteType: Forward
            rate:
              baseCurrency: USD
              buyCurrency: USD
              inverseRate: 0.8
              rate: 1.25
              sellCurrency: GBP
            remainingBuyForward:
              amount: 25
              currency: USD
            remainingSellForward:
              amount: 20
              currency: GBP
            sell:
              amount: 80
              currency: GBP
            valueDate: "2025-08-24"
          messages:
            - code: string
              message: string
          quoteId: string
          quoteTime: "2025-08-24T14:15:22Z"
          settlementMethod: BankTransfer
          settlementOptions:
            - displayName: string
              isAvailable: true
              method: BankTransfer
              unAvailableReason: string
              unAvailableReasonCode: string
          status: NotSet
          summary:
            - initialSettlement:
                amount: 5
                currency: GBP
              remainingSettlement:
                amount: 95
                currency: GBP
                settlementDate: "2019-08-24"
              settlementAmount:
                amount: 100
                currency: GBP
              settlementFees:
                amount: 0
                currency: GBP
      x-stoplight:
        id: n2750p2r1mnqc
    FxRate:
      description: A object representing a FX Rate
      properties:
        baseCurrency:
          $ref: '#/components/schemas/Currency'
        buyCurrency:
          $ref: '#/components/schemas/Currency'
        inverseRate:
          description: The opposite ratio of the exchange rate of a currency pair.
          format: decimal
          nullable: true
          type: number
        rate:
          description: The exchange rate between the two currencies.
          format: decimal
          nullable: true
          type: number
        sellCurrency:
          $ref: '#/components/schemas/Currency'
      required:
        - baseCurrency
      title: FX Rate
      type: object
      x-examples:
        Example:
          baseCurrency: GBP
          buyCurrency: USD
          inverseRate: 0.8219
          rate: 1.4
          sellCurrency: GBP
      x-stoplight:
        id: f13rmboqtx4oe
    GetContractsResponse:
      properties:
        Records:
          items:
            $ref: '#/components/schemas/ContractSummary'
          type: array
        TotalRecords:
          type: integer
      title: GetContractsResponse
      type: object
      x-stoplight:
        id: 4x58lgca8vfk0
    IdType:
      description: Represents a recipient identity document type for a given country.
      properties:
        code:
          description: Code for the ID type.
          type: string
        country:
          description: Country of the ID type.
          type: string
        name:
          description: Full name of the ID type.
          type: string
      required:
        - code
        - name
      title: IdType
      type: object
      x-stoplight:
        id: 4pnjo2xae5nn7
    IndustryType:
      description: Industry type for a given industry type category
      properties:
        code:
          description: Code for industry type.
          type: string
        description:
          description: Full description of the industry type.
          type: string
      title: Industry Type
      type: object
      x-stoplight:
        id: ekn0nv3hi4xre
    IndustryTypeCategory:
      description: Industry type category object
      properties:
        code:
          description: Code for industry type category.
          type: string
        description:
          description: Full description of the industry type category.
          type: string
      title: Industry Type Category
      type: object
      x-stoplight:
        id: iujzw3uv1t8rq
    InfoMessage:
      properties:
        code:
          description: Information or warning message code
          type: string
          x-stoplight:
            id: 0oa6kpl284bor
        message:
          description: Information or warning message
          type: string
          x-stoplight:
            id: uuiqsmc82u5ii
      required:
        - code
        - message
      title: InfoMessage
      type: object
      x-stoplight:
        id: cwpstsr2tfrgv
    IntermBankAccount:
      allOf:
        - properties:
            accountName:
              description: Name of the account given by the bank or the PSU in online-banking
              example: ACME
              maxLength: 50
              type: string
            accountNumber:
              description: AccountNumber given by the bank or the PSU in online-banking.
              example: "12345674"
              maxLength: 35
              type: string
            bic:
              description: BIC of account.
              example: MIDLGB22XXX
              maxLength: 35
              type: string
            country:
              $ref: '#/components/schemas/Country'
            iban:
              description: IBAN of account.
              example: GB26MIDL40051512345674
              maxLength: 35
              minLength: 1
              type: string
            ncc:
              description: National clearing code of account.
              maxLength: 13
              type: string
      description: |
        A bank account can be used as a payout method on a recipient, if a payout method is a bank account this object will contain the data representing an account.

        Additionally a bank account is a transfer destination for settlement.
      title: Interm Bank Account
      type: object
      x-examples:
        Current Account:
          accountNumber: "12345674"
          bic: MIDLGB22XXX
          country: GB
          iban: GB26MIDL40051512345674
          ncc: "400515"
      x-stoplight:
        id: 7cwt5jol7g5s9
    Issue:
      description: |
        An object used to represent an issue.
      properties:
        description:
          description: Description of Issue.
          type: string
        issueId:
          description: Issue Identifier
          type: integer
      required:
        - issueId
        - description
      title: Issue
      type: object
      x-examples:
        Example:
          description: INVALID CURRENCY
          issueId: "1001"
      x-stoplight:
        id: 8ximxobj7teun
    JwtToken:
      description: Base64 encoded [RFC-7519](https://tools.ietf.org/html/rfc7519) JWT token
      pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
      title: JWT Token
      type: string
      x-stoplight:
        id: oh4txsced3sdh
    Payment:
      description: |
        This object is used to request a payout.
      properties:
        buyAmount:
          $ref: '#/components/schemas/CurrencyAmount'
        clientReference:
          description: |-
            Reference for the payment set by client.
            This reference must be unique, if provided previously  validation will returned an issue.
          maxLength: 35
          minLength: 1
          pattern: ^[a-zA-Z0-9_-]+$
          type: string
        effectiveDate:
          description: |-
            Optional.
            When date of payment is required, if left blank payment will be done as soon as possible.
          format: date
          nullable: true
          type: string
        paymentReference:
          description: Reference shown to the recipient.
          maxLength: 70
          minLength: 1
          type: string
        purpose:
          description: |-
            Optional.
            Reason for the payment. Required when purposeOfPaymentCode allows free text.
          maxLength: 35
          type: string
        purposeOfPaymentCode:
          description: Purpose of payment code. Get list of Payment purposes using \'/payments/purposes\' endpoint
          maxLength: 40
          type: string
        sellAmount:
          $ref: '#/components/schemas/CurrencyAmount'
      required:
        - clientReference
        - sellAmount
        - buyAmount
      title: Payment
      type: object
      x-examples:
        example-1:
          buyAmount:
            amount: 80
            currency: GBP
          clientReference: string
          effectiveDate: "2019-08-24"
          paymentReference: string
          purpose: ""
          purposeOfPaymentCode: PRIV_INVESTMENT
          sellAmount:
            amount: 80
            currency: USD
        example-2:
          buyAmount:
            amount: 80
            currency: GBP
          clientReference: string
          effectiveDate: "2019-08-24"
          paymentReference: string
          purpose: Gift
          purposeOfPaymentCode: PRIV_OTHER
          sellAmount:
            amount: 100
            currency: USD
      x-stoplight:
        id: 38eaov7xaojtd
    PaymentFieldMap:
      description: Field details
      properties:
        fieldName:
          description: Name of the field to be included in the request
          example: accountNumber
          type: string
        label:
          description: Label to be shown in UI for the field
          example: Account number
          type: string
        maximumLength:
          description: Maximum length of the field value allowed.
          nullable: true
          type: integer
        minimumLength:
          description: Minimum length of the field value.
          nullable: true
          type: integer
        pattern:
          description: Return RegEx used to validate field value if not then return null.
          example: '[0-9]6'
          type: string
        required:
          description: Whether field is required or not for payment request
          example: true
          type: boolean
      required:
        - fieldName
        - label
        - required
      title: PaymentFieldMap
      type: object
      x-examples:
        Account number field:
          fieldName: accountNumber
          label: Account number
          maximumLength: 22
          minimumLength: 5
          pattern: null
          required: true
        example-1:
          fieldName: ncc
          label: Sort code
          maximumLength: 0
          minimumLength: 0
          pattern: '[0-9]6'
          required: true
    PaymentIdentifier:
      description: An object representing a group of payment Identifiers
      properties:
        clientReference:
          example: C124863
          maxLength: 35
          minLength: 1
          type: string
        xePaymentId:
          description: The Payment ID generated by Xe.
          example: P124863
          maxLength: 35
          nullable: true
          type: string
      required:
        - clientReference
      title: PaymentIdentifier
      type: object
      x-stoplight:
        id: 2wirsuc35c421
    PaymentRecipientUpdateRequest:
      description: |-
        This is a composite request. It is used when you need to update a payment's recipient.

        To update to a newly registered recipient you can specify their identifiers using the field **recipientId** and set the **type** field to **Registered**.

        To provide a new non-registered recipient you can provide the **recipient** field and set the **type** field to **NonRegistered**, we will try and register this recipient for you.

        **Recipient** field is required in version 2.
      properties:
        recipient:
          $ref: '#/components/schemas/Recipient'
      required:
        - recipient
      title: Payment Recipient Update Request
      type: object
      x-stoplight:
        id: t0kh0kax6alue
    PaymentSummary:
      allOf:
        - properties:
            fxDetail:
              $ref: '#/components/schemas/FxDetail'
            identifier:
              $ref: '#/components/schemas/PaymentIdentifier'
            isExcluded:
              description: This flag will be true when a payment is deleted from the contract, else false.
              type: boolean
            issues:
              description: List of issues identified against the payment.
              items:
                $ref: '#/components/schemas/Issue'
              type: array
            payoutInformation:
              $ref: '#/components/schemas/Payout'
            recipientName:
              description: Recipient name is `name` property for Company and `title + givenNames + familyName` for consumer.
              type: string
            validationStatus:
              $ref: '#/components/schemas/PaymentValidationStatus'
          required:
            - validationStatus
          type: object
        - $ref: '#/components/schemas/Payment'
      description: |-
        Inherits from **Payment**

        An object representing the summary of a payment.
      x-examples:
        Valid Payment Summary:
          buyAmount:
            currency: USD
          clientReference: 26bf0ffc-5fc5-495a-9a83-83ab45bd9b04
          effectiveDate: "2019-08-24"
          fxDetail:
            buy:
              amount: 112.67
              currency: USD
            rate:
              baseCurrency: GBP
              buyCurrency: USD
              rate: 1.4
              sellCurrency: GBP
            sell:
              amount: 80
              currency: GBP
          isExcluded: false
          issues: []
          paymentReference: PAYE132
          payoutInformation:
            expectedPaymentDate: "2019-08-24"
            feeAmount:
              amount: 0
              currency: USD
            payoutAmount:
              amount: 112.67
              currency: USD
          purpose: Invoice
          recipientName: Recipient Name
          sellAmount:
            amount: 80
            currency: GBP
          validationStatus: Approved
      x-stoplight:
        id: 1lfl5izscuz9b
    PaymentValidationStatus:
      default: Rejected
      description: |-
        Validation status of Payment.

        | Status | Description |
        |-|-|
        | Approved | Payment has passed validation |
        | Rejected | Payment has not passed validation and requires reviewing |
        | AwaitingApproval | Payment has is awaiting approval |
        | Cancelled | Payment has been cancelled |
        | Sent | Payment has passed validation and been paid to recipient |
        | InReview | Payment requires manual review |
        | Processing | Payment is currently being processed |
      enum:
        - Approved
        - Rejected
        - Sent
        - InReview
        - Cancelled
        - AwaitingApproval
        - Processing
      title: PaymentValidationStatus
      type: string
      x-examples:
        Example: Rejected
      x-stoplight:
        id: rdx2mt2c6vb9a
    PaymentsCreateRequest:
      description: |
        This is a composite request. It is used when you need to create one or more payment requests.
      properties:
        autoApprove:
          default: false
          description: |-
            Set to **TRUE** to automatically approve and release the payouts.
            This setting reduces the need to call the approve method.
            If payments are **REJECTED** the contract will not be released.
          type: boolean
        payments:
          description: "Array of payments. \nThis object is used to supply a list of payout information."
          items:
            $ref: '#/components/schemas/RecipientPayment'
          minItems: 1
          type: array
        settlementDetails:
          $ref: '#/components/schemas/SettlementDetails'
      required:
        - payments
      title: Payments Create Request
      type: object
      x-examples:
        Company Payments:
          autoApprove: false
          payments:
            - buyAmount:
                currency: USD
              clientReference: 26bf0ffc-5fc5-495a-9a83-83ab45bd9b04
              effectiveDate: "2021-04-23"
              paymentReference: PAYE132
              recipient:
                address:
                  - country: GB
                    lines:
                      - Unit 14
                      - 3 Edgar Buildings
                      - George Street
                      - Bath
                      - England
                      - BA1 2FJ
                    locality: Bath
                    postcode: BA1 2FJ
                    region: England
                    street: 3 Edgar Buildings, George Street
                bankAccount:
                  country: GB
                  iban: GB26MIDL40051512345674
                name: ACME
                type: CompanyBankAccount
              sellAmount:
                amount: 80
                currency: GBP
      x-stoplight:
        id: yo9qs4z117h7k
    PaymentsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Contract'
      description: |
        Inherits **Contract**

        Response object for Payments Create Request.
      title: Payments Create Response
      x-examples: {}
      x-stoplight:
        id: 3rxuj3yvkxesd
    Payout:
      allOf:
        - properties:
            dateSentToRecipient:
              description: Date sent to Recipient, this will be blank until the payout is processed.
              format: date-time
              nullable: true
              type: string
            expectedPaymentDate:
              description: The date when we expected to pay the recipient.
              format: date
              nullable: true
              type: string
            feeAmount:
              $ref: '#/components/schemas/CurrencyAmount'
            payoutAmount:
              $ref: '#/components/schemas/CurrencyAmount'
          required:
            - payoutAmount
            - feeAmount
      description: An object representing payout details originating from the creation of a payment.
      title: Payout
      type: object
      x-examples:
        Example - Not Sent to Recipient:
          expectedPaymentDate: "2019-08-24"
          feeAmount:
            amount: 0
            currency: USD
          payoutAmount:
            amount: 112.67
            currency: USD
        Example - Sent to Recipient:
          dateSentToRecipient: "2019-08-24T14:15:22Z"
          expectedPaymentDate: "2019-08-24"
          feeAmount:
            amount: 0
            currency: USD
          payoutAmount:
            amount: 112.67
            currency: USD
      x-stoplight:
        id: qq1jds23rk82k
    PayoutMethod:
      description: Payout Method object represent your recipient's payout instrument. This object can be used in combination with registering recipients or as part of a collection of payments.
      properties:
        bank:
          $ref: '#/components/schemas/BankPayoutMethod'
        type:
          $ref: '#/components/schemas/PayoutMethodType'
      required:
        - type
      title: Payout Method
      type: object
      x-stoplight:
        id: j3ob38hdj4nww
    PayoutMethodType:
      default: BankAccount
      description: Type of payout method
      enum:
        - BankAccount
      example: BankAccount
      title: Payout Method Type
      type: string
      x-stoplight:
        id: rlqgm7icjommn
    PurposeOfPayment:
      description: A Purpose of Payment used for a payment
      properties:
        allowFreeText:
          description: Flag to allow free text for purpose of payment
          type: boolean
        code:
          description: Code for purpose of payment.
          type: string
        name:
          description: Full name for purpose of payment
          type: string
      required:
        - code
        - name
        - allowFreeText
      title: Purpose Of Payment
      type: object
      x-examples:
        DefaultOtherPurpose:
          allowFreeText: true
          code: PRI_OTHER
          name: Other
        PurposesForPrivateINR:
          allowFreeText: false
          code: PRI_INR_INVESTMENT
          name: Investment
      x-stoplight:
        id: hmwgrr4yrsgn7
    Quote:
      description: An object representing an FX quote.
      properties:
        buy:
          $ref: '#/components/schemas/CurrencyAmount'
        countryTo:
          $ref: '#/components/schemas/Country'
        effectiveDate:
          deprecated: true
          description: Deprecated - use `valueDate` instead.
          format: date
          nullable: true
          type: string
        sell:
          $ref: '#/components/schemas/CurrencyAmount'
        valueDate:
          description: |-
            Optional.
            Value date of the payout, if left **BLANK** the current date will be used.
          format: date
          nullable: true
          type: string
      required:
        - sell
        - buy
      title: Quote
      type: object
      x-examples:
        Simple:
          buy:
            currency: USD
          countryTo: US
          sell:
            amount: 80
            currency: GBP
          valueDate: "2021-04-23"
      x-stoplight:
        id: gdevuue2fyhc5
    QuoteFxDetail:
      allOf:
        - $ref: '#/components/schemas/FxDetail'
        - properties:
            effectiveDate:
              deprecated: true
              description: Deprecated - Use `valueDate` instead.
              format: date
              nullable: true
              type: string
            quoteType:
              $ref: '#/components/schemas/QuoteType'
            remainingToDisburse:
              $ref: '#/components/schemas/CurrencyAmount'
            valueDate:
              description: Value date of the fx transaction.
              format: date
              nullable: true
              type: string
          type: object
      description: |
        Inherits from **FxDetail**
      title: Quote Fx Detail
      x-examples:
        Example 1:
          buy:
            amount: 80
            currency: GBP
          quoteType: Spot
          rate:
            baseCurrency: GBP
            buyCurrency: GBP
            inverseRate: 0
            rate: 0
            sellCurrency: GBP
          sell:
            amount: 80
            currency: GBP
          valueDate: "2019-08-24"
      x-stoplight:
        id: 7fdvaxxwile9t
    QuoteStatus:
      default: NotSet
      description: |-
        Status of the contract quote.

        | NotSet | Indicates that quote is not available |
        | Valid | Valid quote |
        | ManualQuoteRequested | Quote requires manual pricing |
        | Timeout | Quote timed out |
        | Rejected | Quote Rejected |
        | Missing | No valid quote available |
        | UnableToQuote | Unable to provide a quote |
        | Error | Error occured while processing a quote |
        | Indicative | Quote is indicative |
      enum:
        - NotSet
        - Valid
        - ManualQuoteRequested
        - Timeout
        - Rejected
        - Missing
        - UnableToQuote
        - Error
        - Indicative
      example: NotSet
      title: QuoteStatus
      type: string
      x-stoplight:
        id: 7q6ggy7kc6qka
      x-tags:
        - QuoteStatus
    QuoteSummary:
      description: Summary of quote
      properties:
        expires:
          description: |-
            Expiration Date of quote
            Returned by Xe platform.
          format: date-time
          nullable: true
          type: string
        fxDetails:
          description: Fx Detail(s) of one or more currency pairs.
          items:
            $ref: '#/components/schemas/QuoteFxDetail'
          type: array
        quoteTime:
          description: |-
            Date of quote
            Returned by Xe platform.
          format: date-time
          nullable: true
          type: string
      required:
        - fxDetails
      title: Quote Summary
      type: object
      x-examples:
        Example:
          amount:
            amount: 112.67
            currency: USD
          expires: "2019-08-24T14:15:22Z"
          fees:
            amount: 0
            currency: USD
          fxDetails:
            - buy:
                amount: 112.67
                currency: USD
              rate:
                baseCurrency: GBP
                buyCurrency: USD
                rate: 1.4
                sellCurrency: GBP
              sell:
                amount: 80
                currency: GBP
              valueDate: "2019-08-24"
          quoteTime: "2019-08-24T14:13:52Z"
      x-stoplight:
        id: q3pxccgs5rubw
    QuoteType:
      default: NotSet
      description: |-
        Type of quote provided
        | NotSet | Quote type is not set |
        | Spot | Quote to execute immediately |
        | Forward | Quote to execute in future date |
        | ScheduledPayment | Scheduled payment(s) quote |
      enum:
        - NotSet
        - Spot
        - Forward
        - ScheduledPayment
      example: Spot
      title: QuoteType
      type: string
      x-examples:
        Example 1: Spot
      x-stoplight:
        id: ka7s5i83p9ago
    QuotesRequest:
      description: An object used for creating a bulk quote request.
      properties:
        clientTransferNumber:
          description: Reference set by the client for the quote.
          example: ACME984621
          maxLength: 35
          minLength: 1
          type: string
        quoteReference:
          deprecated: true
          description: DEPRECATED - Use `clientTransferNumber` instead.
          example: ACME984621
          maxLength: 35
          minLength: 1
          type: string
        quotes:
          description: List of currency pairs to quote upon.
          items:
            $ref: '#/components/schemas/Quote'
          maxItems: 1
          minItems: 1
          type: array
      required:
        - quotes
      title: Quotes Request
      type: object
      x-examples:
        Example - GBP to USD:
          clientTransferNumber: ACME984621
          quotes:
            - buy:
                currency: USD
              countryTo: US
              effectiveDate: "2019-08-24"
              sell:
                amount: 80
                currency: GBP
      x-stoplight:
        id: tot58nfruhrbd
    QuotesResponse:
      allOf:
        - $ref: '#/components/schemas/QuoteSummary'
        - properties:
            clientTransferNumber:
              type: string
            quoteId:
              type: string
            status:
              $ref: '#/components/schemas/QuoteStatus'
            summary:
              description: Summary of settlement per currency pairs.
              items:
                $ref: '#/components/schemas/CurrencySettlementSummary'
              type: array
          required:
            - summary
            - quoteId
          type: object
      x-examples:
        Example:
          expires: "2019-08-24T14:15:22Z"
          fxDetails:
            - buy:
                amount: 112.67
                currency: USD
              effectiveDate: "2019-08-24"
              rate:
                baseCurrency: GBP
                buyCurrency: USD
                rate: 1.4
                sellCurrency: GBP
              sell:
                amount: 80
                currency: GBP
          quoteId: string
          quoteTime: "2019-08-24T14:13:52Z"
          summary:
            - settlementAmount:
                amount: 80
                currency: GBP
              settlementFees:
                amount: 0
                currency: GBP
      x-stoplight:
        id: wq2458f03lkrv
    Recipient:
      description: |-
        A Recipient object is used to represent an entity of either a consumer or company with an attached **PayoutMethod**.

        This object can be used as a non-registered recipient in a collection of payments.
      properties:
        entity:
          $ref: '#/components/schemas/RecipientEntity'
        payoutMethod:
          $ref: '#/components/schemas/PayoutMethod'
      required:
        - payoutMethod
        - entity
      title: Recipient
      type: object
      x-examples: {}
      x-stoplight:
        id: uuil2ibpfxerw
    RecipientCreateRequest:
      allOf:
        - $ref: '#/components/schemas/Recipient'
        - properties:
            clientReference:
              description: |-
                Reference for adding recipient set by client.
                This reference must be unique, if provided previously validation will returned an issue.
              maxLength: 35
              minLength: 1
              pattern: ^[\sa-zA-Z0-9,\.:'\+\(\)\?\-/\x26@]{1,35}$
              type: string
            currency:
              type: string
          required:
            - clientReference
          type: object
      description: This is a composite request. It is used when you need to create a recipient.
      title: Recipient Create Request
      x-stoplight:
        id: e4elq78xfbvj1
    RecipientCreateResponse:
      allOf:
        - $ref: '#/components/schemas/RegisteredRecipient'
      description: |
        Inherits **RegisteredRecipient**

        Response object for Recipient Create Request.
      title: Recipient Create Response
      x-stoplight:
        id: 4s6ic2fo5ifhq
    RecipientEntity:
      description: A recipient entity used to represent either a consumer or company
      properties:
        company:
          $ref: '#/components/schemas/Company'
        consumer:
          $ref: '#/components/schemas/Consumer'
        isDeactivated:
          default: false
          type: boolean
          x-stoplight: null
        type:
          $ref: '#/components/schemas/RecipientType'
      required:
        - type
      title: Recipient Entity
      type: object
      x-stoplight:
        id: 2w8qq65z17hqw
    RecipientFieldMap:
      description: Recipient field details
      properties:
        expectedValues:
          description: List of expected values for the field, if applicable.
          items:
            $ref: '#/components/schemas/ExpectedValue'
          type: array
        fieldGroupName:
          description: Name of the group the field belongs to on the Recipient request/response contracts
          example: bank.account
          type: string
        fieldName:
          description: Name of the field to be included in the request
          example: bic
          type: string
        label:
          description: Label to be shown in UI for the field
          example: BIC/SWIFT Code
          type: string
        maximumLength:
          description: Maximum length of the field value allowed.
          nullable: true
          type: integer
        minimumLength:
          description: Minimum length of the field value.
          nullable: true
          type: integer
        pattern:
          description: Return RegEx used to validate field value if not then return null.
          example: '[0-9]6'
          type: string
        required:
          description: Whether field is required or not for the recipient
          example: true
          type: boolean
      required:
        - fieldName
        - fieldGroupName
        - label
        - required
      title: RecipientFieldMap
      type: object
      x-examples:
        BIC field:
          fieldGroupName: bank.account
          fieldName: bic
          label: BIC/SWIFT Code
          maximumLength: 11
          minimumLength: 8
          pattern: null
          required: true
    RecipientIdentifier:
      description: |-
        A group consisting of all possible recipient identifiers used to identify a registered recipient.


        **xeRecipientId** is generated by Xe for the recipient, **clientReference** is a client specified identifier for the recipient
      properties:
        clientReference:
          description: |-
            Client's unique reference to identify recipient.

            If not provided it will be defaulted to **XeRecipientId**
          example: ACMER1284
          maxLength: 35
          nullable: true
          type: string
        xeRecipientId:
          description: Unique Id generated by Xe.
          example: "124863"
          maxLength: 36
          nullable: true
          type: string
      title: Recipient Reference
      type: object
      x-stoplight:
        id: r39p574uuuzjv
    RecipientPayment:
      allOf:
        - $ref: '#/components/schemas/Payment'
        - properties:
            recipient:
              $ref: '#/components/schemas/AttachedRecipient'
          type: object
      description: |-
        Inherits from **Payment**

        This object is used to request a payment with an attached recipient.

        In current version if recipient is not provided an error will be returned.
      title: Recipient Payment
      x-examples: {}
      x-stoplight:
        id: izhmgn2e7xdcz
    RecipientRegistrationType:
      default: NonRegistered
      description: Type of registration for recipient
      enum:
        - Registered
        - NonRegistered
      example: NonRegistered
      title: Recipient Registration Type
      type: string
      x-stoplight:
        id: tn1wn5oimsi8w
    RecipientType:
      default: Company
      description: Type of recipient
      enum:
        - Consumer
        - Company
      example: Company
      title: Recipient Type
      type: string
      x-stoplight:
        id: 4okfe7qrqw8ri
    RecipientUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/Recipient'
        - properties:
            currency:
              type: string
          required:
            - currency
          type: object
      description: |-
        Inherits **Recipient**

        This is a composite request. It is used when you need to update a recipient.
      title: Recipient Update Request
      x-stoplight:
        id: g6imew5s8oixn
    RecipientUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/RegisteredRecipient'
      description: |
        Inherits **RegisteredRecipient**

        Response object for Recipient Update Request.
      title: Recipient Update Response
      x-stoplight:
        id: wexieher6nsvb
    RecipientValidationResponse:
      description: |
        Recipient validation response for a single recipient validation request.
      properties:
        clientReference:
          type: string
        isValid:
          type: boolean
        validationErrors:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
      title: Recipient Validation Response
      type: object
      x-stoplight:
        id: ciz7e160oq0ax
    RegisteredRecipient:
      allOf:
        - $ref: '#/components/schemas/Recipient'
        - properties:
            currency:
              type: string
            recipientId:
              $ref: '#/components/schemas/RecipientIdentifier'
          required:
            - recipientId
          type: object
      description: "Inherits from **Recipient**\n\nThe **RegisteredRecipient** object represents a recipient that has been registered. "
      title: Registered Recipient
      x-stoplight:
        id: pmny2rngfo60p
    ServiceException:
      allOf:
        - properties:
            code:
              description: A Xe specific error code.
              type: integer
          required:
            - code
          type: object
        - $ref: '#/components/schemas/XeException'
      description: |
        The service exception object is used to provide custom service exception to handle system errors, data validation and connectivity issues.
      title: Service Exception
      x-examples:
        Currency Service Exception:
          code: 1001
          failureDateTime: "2019-08-24T14:15:22Z"
          longErrorMsg: AEX was used as a currency within payment with reference ACME334871
          shortErrorMsg: AEX IS NOT A VALID CURRENCY
          traceErrorId: eca2290c-4519-4c0c-88c8-20450cd15f17
          typeOfFailure: SERVICE_EXCEPTION
      x-stoplight:
        id: l9tlx4sjmymeg
    SettlementAmount:
      description: An object representing a settlement amount.
      properties:
        amount:
          description: Settlement Amount
          format: decimal
          type: number
        currency:
          $ref: '#/components/schemas/Currency'
      required:
        - currency
        - amount
      title: Settlement Amount
      type: object
      x-examples:
        Example:
          amount: 80
          currency: GBP
      x-stoplight:
        id: 7g9nfdsxjktu9
    SettlementAmountDetail:
      allOf:
        - $ref: '#/components/schemas/SettlementAmount'
        - properties:
            valueDate:
              format: date
              type: string
              x-stoplight:
                id: kb42bg3y45xdn
          type: object
      title: SettlementAmountDetail
      x-examples:
        Example 1:
          amount: 10
          currency: GBP
          settlementDate: "2019-08-24"
      x-stoplight:
        id: bxpl2fiq81u00
    SettlementDetails:
      description: Settlement Details describes how funds will be settled
      properties:
        bankAccountId:
          description: 'bankAccountId is mandatory if settlementMethod is Direct Debit '
          nullable: true
          type: integer
        settlementMethod:
          $ref: '#/components/schemas/SettlementMethod'
      required:
        - settlementMethod
      title: SettlementDetails
      type: object
      x-examples:
        example-1:
          bankAccountId: integer
          settlementMethod: BankTransfer
      x-stoplight:
        id: ajnd3mf4m8n2t
    SettlementMethod:
      default: BankTransfer
      description: |
        | BankTransfer |(Default Settlement Method) Selected settlement method is Bank Transfer |
        | CreditCard |Selected settlement method is Credit Card |
        | DebitCard |Selected settlement method is Debit Card |
        | DirectDebit | Selected settlement method is Direct Debit |
        | Cheque |Selected settlement method is Cheque |
        | Interac |Selected settlement method is Interac |
        | OpenBanking |Selected settlement method is Open Banking |
        | FundsOnBalance |Selected settlement method is Funds On Balance |
      enum:
        - BankTransfer
        - CreditCard
        - DebitCard
        - DirectDebit
        - Cheque
        - Interac
        - OpenBanking
        - FundsOnBalance
      example: BankTransfer
      nullable: true
      title: Settlement Method
      type: string
      x-examples:
        Example: BankTransfer
      x-stoplight:
        id: cbzsoz2nii0g3
    SettlementOption:
      properties:
        displayName:
          type: string
          x-stoplight:
            id: 382xw34q3fzf3
        initialMarginSettlementMethods:
          items:
            $ref: '#/components/schemas/SettlementMethod'
          type: array
          x-stoplight:
            id: avjbhrx21kubc
        isAvailable:
          type: boolean
          x-stoplight:
            id: 8ozn1b554m8q9
        method:
          $ref: '#/components/schemas/SettlementMethod'
        unAvailableReason:
          type: string
          x-stoplight:
            id: 6a65ha94aiyhp
        unAvailableReasonCode:
          type: string
          x-stoplight:
            id: 46ptq62l6gyie
      title: SettlementOption
      type: object
      x-examples:
        Example 2:
          InitialMarginSettlementMethods:
            - BankTransfer
          displayName: string
          isAvailable: true
          method: BankTransfer
          unAvailableReason: string
          unAvailableReasonCode: string
      x-stoplight:
        id: nokjhpfwz68w0
    SettlementStatus:
      default: NotSettled
      description: |-
        | NotSettled | Contract has been confirmed but is still awaiting settlement |
        | PartiallySettled | Client has paritally settled the contract |
        | Settled | Contract has been settled |
      enum:
        - Settled
        - PartiallySettled
        - NotSettled
      title: Settlement Status
      type: string
      x-examples:
        Example: NotSettled
      x-stoplight:
        id: qfen8qfau9i82
    SettlementSummary:
      allOf:
        - properties:
            directDebitBankAccount:
              $ref: '#/components/schemas/DirectDebitBankAccount'
            settlementDate:
              description: Expected Settlement Date
              format: date-time
              type: string
            settlementMethod:
              $ref: '#/components/schemas/SettlementMethod'
            xeBankAccount:
              $ref: '#/components/schemas/BankAccount'
          required:
            - settlementDate
          type: object
        - $ref: '#/components/schemas/CurrencySettlementSummary'
      description: |
        Inherits from **Currency Settlement Summary**
      title: Settlement Summary
      x-examples:
        Example:
          directDebitBankAccount:
            accountName: ACME
            accountNumber: "12345674"
          settlementAmount:
            amount: 80
            currency: GBP
          settlementDate: "2019-08-24T14:15:22Z"
          settlementFees:
            amount: 0
            currency: GBP
          settlementMethod: DirectDebit
          xeBankAccount:
            accountName: ACME
            accountNumber: "12345674"
            bic: MIDLGB22XXX
            country: GB
            iban: GB26MIDL40051512345674
            ncc: string
      x-stoplight:
        id: t1xeichmi2kx2
    StatementFeedEntry:
      properties:
        balance:
          description: Balance after this entry
          format: decimal
          type: number
        creditAmount:
          description: Credit amount
          format: decimal
          type: number
        currency:
          description: Currency code
          type: string
        dealReference:
          description: Deal reference
          type: string
        debitAmount:
          description: Debit amount
          format: decimal
          type: number
        details:
          description: Additional details
          type: string
        linkedItems:
          description: References of items linked to this entry
          items:
            type: string
          type: array
        type:
          description: Entry type
          type: string
        valueDate:
          description: Value date of the entry
          format: date
          type: string
      title: StatementFeedEntry
      type: object
    StatementFeedFilter:
      description: Shared date-range and search filter fields for statement feed requests.
      properties:
        fromDate:
          description: Start of the date range. Defaults to toDate minus 30 days when omitted.
          format: date
          nullable: true
          type: string
        searches:
          description: Optional field/term filters.
          items:
            $ref: '#/components/schemas/StatementFeedSearch'
          nullable: true
          type: array
        toDate:
          description: End of the date range. Defaults to today (UTC) when omitted.
          format: date
          nullable: true
          type: string
      title: StatementFeedFilter
      type: object
    StatementFeedRequest:
      allOf:
        - $ref: '#/components/schemas/StatementFeedFilter'
        - properties:
            batchSize:
              default: 50
              description: Size of the batch to be fetched. Default 50, max 100.
              format: int32
              maximum: 100
              minimum: 1
              nullable: true
              type: integer
            skip:
              default: 0
              description: Mentions how many entries to skip. Default 0.
              format: int32
              minimum: 0
              nullable: true
              type: integer
          type: object
      description: Request body for retrieving the statement feed for a currency account.
      title: StatementFeedRequest
      type: object
    StatementFeedResponse:
      properties:
        batchSize:
          format: int32
          type: integer
        entries:
          items:
            $ref: '#/components/schemas/StatementFeedEntry'
          type: array
        skip:
          format: int32
          type: integer
        total:
          format: int32
          type: integer
      title: StatementFeedResponse
      type: object
      x-stoplight:
        id: vup8urre3g2uq
    StatementFeedSearch:
      description: A single field/term filter applied to the statement feed.
      properties:
        fieldName:
          description: 'Field to filter on. One of: reference, type, date.'
          example: reference
          type: string
        searchTerm:
          description: Value to search for within fieldName.
          example: C16354699
          type: string
      required:
        - fieldName
        - searchTerm
      title: StatementFeedSearch
      type: object
    TermsAndConditionsResponse:
      description: ""
      properties:
        link:
          type: string
          x-stoplight:
            id: eahp2b43ouncu
      title: TermsAndConditionsResponse
      type: object
      x-examples:
        'Example ':
          link: https://help.xe.com/hc/en-gb/sections/16573963247889-Terms-and-conditions
      x-stoplight:
        id: 3ek9x6v7pxohy
    TokenRequest:
      description: Token request
      properties:
        accessKey:
          description: Username associated to account.
          example: xm276589
          type: string
          x-stoplight:
            id: 420pk2kgt5rle
        accessSecret:
          description: Password associated to account.
          example: x14jhas9173$
          format: password
          type: string
          x-stoplight:
            id: 1qc2f3lh58tbj
      required:
        - accessKey
        - accessSecret
      title: Token Request
      type: object
      x-examples:
        Acme User Authentication Request:
          password: x14jhas9173$
          username: xm276589
      x-stoplight:
        id: ccex7696arpdv
    ValidateRecipientBatchRequest:
      description: |
        This is a composite request. It is used when you need to validate one or more recipients.
      properties:
        recipients:
          description: "Array of recipients. \nThis object is used to supply a list of recipient information."
          items:
            $ref: '#/components/schemas/RecipientCreateRequest'
          minItems: 1
          type: array
      required:
        - recipients
      title: Validate Recipient Batch Request
      type: object
      x-stoplight:
        id: 4jiqy5ia70q2k
    ValidateRecipientBatchResponse:
      description: |
        This is a composite request. It is used when you need to validate one or more recipients.
      properties:
        recipients:
          description: 'Array of recipient validations. '
          items:
            $ref: '#/components/schemas/RecipientValidationResponse'
          type: array
      required:
        - recipients
      title: Validate Recipient Batch Response
      type: object
      x-stoplight:
        id: 389h1j5z69bz9
    ValidationError:
      description: An object representing a field validation error.
      properties:
        errors:
          deprecated: true
          description: List of errors(Deprecated, please use 'fieldErrors' property instead)
          items:
            type: string
          type: array
        fieldErrors:
          items:
            $ref: '#/components/schemas/FieldError'
          type: array
        fieldName:
          description: Field name within model.
          type: string
      required:
        - fieldName
        - fieldErrors
      title: Validation Error
      type: object
      x-stoplight:
        id: um61456y1v1ln
    ValidationException:
      allOf:
        - properties:
            errors:
              items:
                $ref: '#/components/schemas/ValidationError'
              type: array
          required:
            - errors
          type: object
        - $ref: '#/components/schemas/XeException'
      description: An object representing validation exceptions for models.
      title: Validation Exception
      x-stoplight:
        id: ia6wbychf59r8
    WebhookHeader:
      properties:
        key:
          type: string
        value:
          type: string
      title: WebhookHeader
      type: object
      x-is-disabled: true
      x-stoplight:
        id: tv4nidrk1vk7c
    WebhookRegistration:
      description: Registered webhook details
      properties:
        disabledReason:
          description: |-
            Optional.
            Why Xe disabled this registration. Only populated when `status` is `Disabled`,
            and null otherwise.
          maxLength: 500
          nullable: true
          type: string
        eventTypes:
          description: List of event type names subscribed to; empty when subscribeToAll is true
          items:
            type: string
          type: array
        headers:
          items:
            $ref: '#/components/schemas/WebhookHeader'
          type: array
        id:
          type: string
        secretKey:
          type: string
        status:
          $ref: '#/components/schemas/WebhookRegistrationStatus'
        subscribeToAll:
          description: When true, subscribes to all event types
          type: boolean
        uri:
          type: string
      required:
        - id
        - uri
        - secretKey
        - status
      title: WebhookRegistration
      type: object
      x-is-disabled: true
      x-stoplight:
        id: 3aoyif6eyirvo
    WebhookRegistrationRequest:
      description: Webhook registration request
      properties:
        eventTypes:
          description: List of event type names to subscribe to; ignored when subscribeToAll is true
          items:
            enum:
              - Payment.Created
              - Payment.Completed
              - Payment.Rejected
              - Contract.Created
              - Contract.Cancelled
              - Contract.Completed
              - Contract.Funded
              - Contract.Updated
              - Contract.StatusChanged
              - Batch.Created
              - Batch.Approved
              - Batch.Completed
              - Batch.Deleted
              - Batch.StatusChanged
            type: string
          type: array
        headers:
          items:
            $ref: '#/components/schemas/WebhookHeader'
          type: array
        secretKey:
          type: string
        subscribeToAll:
          description: When true, subscribes to all event types
          type: boolean
        uri:
          type: string
      title: WebhookRegistrationRequest
      type: object
      x-is-disabled: true
      x-stoplight:
        id: 8ztysxbkeam36
    WebhookRegistrationStatus:
      default: Pending
      description: |-
        Lifecycle state of a webhook registration.

        | Pending  | Registration received but not yet recognised by Xe. No events are delivered. |
        | Active   | Registration is recognised by Xe and events are delivered. |
        | Disabled | Registration still exists but has been disabled by Xe. See `disabledReason`. |
      enum:
        - Pending
        - Active
        - Disabled
      example: Pending
      title: WebhookRegistrationStatus
      type: string
      x-is-disabled: true
      x-stoplight:
        id: 0vwz9bt2ao5ax
      x-tags:
        - WebhookRegistrationStatus
    XeException:
      description: An object representing a xe exception.
      properties:
        failureDateTime:
          description: Datetime of failure.
          format: date-time
          type: string
        longErrorMsg:
          description: Long message describing the error.
          type: string
        shortErrorMsg:
          description: Short message describing the error.
          type: string
        traceErrorId:
          description: An Xe traceable error Id.
          type: string
        typeOfFailure:
          default: SERVICE_EXCEPTION
          description: |-
            Type of failure.
            VALIDATION
            ACCOUNT_LOCKED
            MODEL_VALIDATION

            Default: VALIDATION
          enum:
            - MODEL_VALIDATION
            - SERVICE_EXCEPTION
          type: string
      required:
        - failureDateTime
        - typeOfFailure
      title: Xe Exception
      type: object
      x-stoplight:
        id: tg6qt2zpt2p31
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http
info:
  contact:
    name: Xe
    url: https://www.xe.com
  description: |
    Xe Payments API
  title: Xe Pay API
  version: 2.0.0
openapi: 3.0.0
paths:
  /v2/accounts:
    get:
      description: Gets a list of accounts that the user has access to.
      operationId: Get-Associated-Accounts
      parameters: []
      responses:
        "200":
          content:
            application/json:
              examples:
                Example 1:
                  value:
                    - accountName: Account 1
                      accountNumber: XEMT000011111
                      parentAccountNumber: XEMT00009999
                    - accountName: Account 2
                      accountNumber: XEMT000011112
                      parentAccountNumber: XEMT00009999
              schema:
                items:
                  $ref: '#/components/schemas/EnterpriseAccount'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: 'Unauthorized - Invalid Token or Client '
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get a list of accounts that the user has access to.
      tags:
        - Accounts
    parameters: []
  /v2/auth/refresh:
    post:
      description: Obtains a new token set from a given Refresh Token
      operationId: Refresh-Auth
      requestBody:
        content:
          application/json:
            schema:
              description: Refresh token request
              properties:
                refreshToken:
                  type: string
              type: object
        description: The Refresh Token obtained at a previous login
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthResult'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized
      security: []
      summary: Refresh Authentication Token
      tags:
        - Authentication
  /v2/auth/verify:
    get:
      description: Verifys the presented token
      operationId: Verify-Auth
      responses:
        "204":
          description: No Content
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized
      summary: Verify Authentication
      tags:
        - Authentication
  /v2/bankAccounts:
    get:
      description: This API call allows you to get verified client bank accounts
      operationId: Get-Client-BankAccounts
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ClientBankAccount'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: 'Unauthorized - Invalid Token or Client '
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get client bank accounts.
      tags:
        - ClientBankAccounts
  /v2/contracts:
    get:
      description: This API call allows you to get all the contracts based on the passed parameters.
      operationId: Get-Contracts
      parameters:
        - allowEmptyValue: true
          description: Created after
          in: query
          name: createdAfter
          schema:
            format: date-time
            nullable: true
            type: string
        - description: Created before
          in: query
          name: createdBefore
          schema:
            format: date-time
            nullable: true
            type: string
        - description: Modified after
          in: query
          name: modifiedAfter
          schema:
            format: date-time
            nullable: true
            type: string
        - description: 'Modified before '
          in: query
          name: modifiedBefore
          schema:
            format: date-time
            nullable: true
            type: string
        - description: Size of the batch to be fetched
          in: query
          name: batchSize
          schema:
            default: 500
            format: int32
            maximum: 500
            minimum: 1
            nullable: true
            type: integer
        - description: Mentions how many contracts to skip
          in: query
          name: skip
          schema:
            default: 0
            format: int32
            minimum: 0
            nullable: true
            type: integer
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              examples:
                Example 1:
                  value:
                    Records:
                      - accountNumber: XE1234
                        contractSource: string
                        contractStatus: QuoteRequired
                        contractType: NotSpecified
                        dateCreated: "2019-08-24T14:15:22Z"
                        identifier:
                          clientTransferNumber: beeee5c6-4167-46fd-b021-d894c353541
                          contractNumber: C11470263
                        lastModifiedAt: "2019-08-24T14:15:22Z"
                        settlementStatus: NotSettled
                        totalPayments: 3
                    TotalRecords: 1
              schema:
                $ref: '#/components/schemas/GetContractsResponse'
          description: OK
        "400":
          content:
            application/javascript:
              schema:
                properties: {}
                type: object
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: 'Unauthorized - Invalid Token or Client '
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Contracts
      tags:
        - Contracts
      x-internal: false
    parameters: []
  /v2/contracts/quote/{quoteId}:
    parameters:
      - in: path
        name: quoteId
        required: true
        schema:
          type: string
    post:
      description: The API endpoint to create new contract using existing quote
      operationId: Create-Contract-From-Quote
      parameters: []
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractCreateResponse'
          description: OK
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ValidationException'
                  - $ref: '#/components/schemas/ServiceException'
          description: Bad Request
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Quote not found
        "500":
          description: Internal Server Error
      summary: Create new contract from quote
      tags:
        - Contracts
  /v2/contracts/{contractNumber}:
    delete:
      description: This API call allows you to cancel a contract, if successful the contract will be marked as cancelled and all payments are removed.
      operationId: Cancel-Contract
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "204":
          description: OK - Canceled
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Cancel Contract
      tags:
        - Contracts
    get:
      description: This API call retrieves a single contract.
      operationId: Get-Contract
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contract'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Contract
      tags:
        - Contracts
    parameters:
      - in: path
        name: contractNumber
        required: true
        schema:
          type: string
  /v2/contracts/{contractNumber}/approve:
    parameters:
      - in: path
        name: contractNumber
        required: true
        schema:
          type: string
    post:
      description: This API call is the final step for Xe executing payouts, using this call will approve the contract.
      operationId: Approve-Contract
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contract'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Approve Contract
      tags:
        - Contracts
  /v2/contracts/{contractNumber}/invoice:
    get:
      description: This API call retrieves a invoice as PDF which can be downloaded. Read the response as binary stream or byte[].
      operationId: Get-Contract-Invoice
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/pdf:
              schema:
                format: binary
                type: string
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Contract Invoice
      tags:
        - Contracts
    parameters:
      - in: path
        name: contractNumber
        required: true
        schema:
          type: string
  /v2/contracts/{contractNumber}/payments:
    get:
      description: This API call retrieves all payments for a particular contract.
      operationId: Get-Contract-Payments
      parameters:
        - description: Filter to payments with issues only
          in: query
          name: issuesOnly
          schema:
            type: boolean
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PaymentSummary'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Payments
      tags:
        - Contracts
    parameters:
      - in: path
        name: contractNumber
        required: true
        schema:
          type: string
    post:
      description: This API call adds new payments to an existing contract
      operationId: Attach-Payments
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      requestBody:
        content:
          application/json:
            examples:
              WithAutoAdjustAmountToRemainingBalance:
                value:
                  - autoAdjustAmountToRemainingBalance: true
                    paymentReference: INV1234
                    purposeOfPaymentCode: CORP_SUPLIER_PAYMENT
                    purposeOfPaymentText: Supplier Payment
                    recipientId: 85ad53e2-4077-418c-b17c-b597ed90c01d
            schema:
              items:
                $ref: '#/components/schemas/AttachPayment'
              type: array
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PaymentSummary'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Add payments to existing contract
      tags:
        - Contracts
  /v2/contracts/{contractNumber}/payments/{clientReference}:
    delete:
      description: |-
        This API call allows for the deletion of a payment from a contract.

        A refresh on the contract will be required.
      operationId: Delete-Payment
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "204":
          description: OK - Deleted
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Delete Payment
      tags:
        - Contracts
    get:
      description: |-
        This API call allows a client to get an original payment and review its validation status or issues.

        You can pass in clientReference or XePaymentId via the clientReference path parameter.
      operationId: Get-Payment
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentSummary'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Payment
      tags:
        - Contracts
    parameters:
      - in: path
        name: contractNumber
        required: true
        schema:
          type: string
      - in: path
        name: clientReference
        required: true
        schema:
          type: string
    put:
      description: Update a particular payment using its payment Reference.
      operationId: Update-Payment
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Payment'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentSummary'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Update Payment
      tags:
        - Contracts
  /v2/contracts/{contractNumber}/payments/{clientReference}/recipient:
    get:
      description: |-
        This API call allows a client to get a payment's recipient.

        You can pass in clientReference or XePaymentId via the clientReference path parameter.
      operationId: Get-Payment-Recipient
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachedRecipient'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Payment Recipient
      tags:
        - Contracts
    parameters:
      - in: path
        name: contractNumber
        required: true
        schema:
          type: string
      - in: path
        name: clientReference
        required: true
        schema:
          type: string
    put:
      description: This API call allows a client to update a payment's recipient of an unapproved contract.
      operationId: Update-Payment-Recipient
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentRecipientUpdateRequest'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachedRecipient'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Update Payment Recipient
      tags:
        - Contracts
  /v2/contracts/{contractNumber}/quote:
    parameters:
      - in: path
        name: contractNumber
        required: true
        schema:
          type: string
    post:
      description: |
        This API call can be used by a client to re-quote an existing contract after a change to a payment, deletion of a payment or the expiry of a previous quotation.
      operationId: Quote-Contract
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contract'
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Quote Contract
      tags:
        - Contracts
  /v2/contracts/{contractNumber}/settlementDetails:
    parameters:
      - in: path
        name: contractNumber
        required: true
        schema:
          type: string
    patch:
      description: This API call updates Settlement Details for an existing contract.
      operationId: Update-Contract-Settlement-Details
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SettlementDetails'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contract'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Update Payment Settlement Type
      tags:
        - Contracts
  /v2/currencyAccounts:
    get:
      description: This API allows to get currency accounts, balances and transaction history of a client account
      operationId: GetCurrencyAccounts
      parameters:
        - $ref: '#/components/parameters/accountNumber'
        - description: If this flag is included, the endpoint returns balances of all the currencies that are enabled.
          in: query
          name: showAll
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              examples: {}
              schema:
                items:
                  $ref: '#/components/schemas/CurrencyAccountResponse'
                type: array
          description: Ok
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect
        "401":
          description: 'Unauthorized - Invalid Token or Client '
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get currency accounts
      tags:
        - CurrencyAccounts
  /v2/currencyAccounts/{currencyCode}:
    get:
      description: This API call retrieves a single currency account by using ccy.
      operationId: GetAvailableCurrencyAccount
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CurrencyAccountResponse'
          description: OK
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: 'Unauthorized - Invalid Token or Client '
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get currency account for provided currency code
      tags:
        - CurrencyAccounts
    parameters:
      - description: Currency code
        in: path
        name: currencyCode
        required: true
        schema:
          type: string
  /v2/currencyAccounts/{currencyCode}/statement-feed:
    parameters:
      - description: Currency code
        in: path
        name: currencyCode
        required: true
        schema:
          type: string
    post:
      description: This API call retrieves a paginated, filterable statement feed (ledger entries) for a given currency account.
      operationId: GetStatementFeed
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StatementFeedRequest'
        description: Optional date range, paging, and search filters.
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatementFeedResponse'
          description: OK
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: 'Unauthorized - Invalid Token or Client '
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get statement feed for a currency account
      tags:
        - CurrencyAccounts
  /v2/fxquotes:
    parameters: []
    post:
      description: Create a quote for a currency pair and amount
      operationId: CreateQuote
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FxQuoteRequest'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FxQuoteResponse'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Create Quote
      tags:
        - FxQuotes
  /v2/fxquotes/{quoteId}:
    get:
      description: Get existing quote by quoteId
      operationId: Get-FxQuote
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FxQuoteResponse'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Quote
      tags:
        - FxQuotes
    parameters:
      - in: path
        name: quoteId
        required: true
        schema:
          type: string
    patch:
      description: This API call updates an existing quote.
      operationId: Update-FxQuote
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FxQuotePatchRequest'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FxQuoteResponse'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Update Quote
      tags:
        - FxQuotes
  /v2/fxquotes/{quoteId}/refresh:
    get:
      description: This API call retrieves a refreshed quote.
      operationId: Refresh-FxQuote
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FxQuoteResponse'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Refresh Quote
      tags:
        - FxQuotes
    parameters:
      - in: path
        name: quoteId
        required: true
        schema:
          type: string
  /v2/industryTypes/categories:
    get:
      description: This API call retrieves all the industry category types.
      operationId: Get-Industry-Type-Categories
      parameters: []
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/IndustryTypeCategory'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Industry Type Categories
      tags:
        - IndustryType
  /v2/industryTypes/{industryTypeCategoryCode}:
    get:
      description: This API call retrieves all the industry types for a category.
      operationId: Get-Industry-Types-By-Category
      parameters:
        - in: path
          name: industryTypeCategoryCode
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/IndustryType'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get industry types for provided industry type category
      tags:
        - IndustryType
  /v2/legalDocs/termsAndConditions:
    get:
      description: This API call allows a client to get the Terms and Conditions link for their account.
      operationId: Get-TermsAndConditions
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TermsAndConditionsResponse'
          description: OK
        "401":
          description: Unauthorized
        "404":
          description: Not Found
        "500":
          description: Internal Server Error
      summary: GET terms and conditions link
      tags:
        - LegalDocs
    parameters: []
  /v2/paymentFields/country/{countryCode}/currency/{ccyCode}:
    get:
      description: This API call allows a client to get list of fields for Payment request by country and currency
      operationId: Get-Payment-Fields
      parameters:
        - description: Bank country code
          in: path
          name: countryCode
          required: true
          schema:
            type: string
        - description: Buy currency code of payment
          in: path
          name: ccyCode
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/accountNumber'
        - description: Country code of recipient's address
          in: query
          name: addressCountryCode
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PaymentFieldMap'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: 'Unauthorized - Invalid Token or Client '
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get payment fields
      tags:
        - PaymentFields
  /v2/payments:
    parameters: []
    post:
      description: |
        Create payments for recipients.
      operationId: Create-Payments
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentsCreateRequest'
        description: ""
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentsCreateResponse'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Create Payments for Recipients
      tags:
        - Contracts
  /v2/payments/purposes:
    get:
      description: This API call allows you to get a list of purpose of payments usable for a currency.
      operationId: Get-Payment-Purposes
      parameters:
        - description: Currency Code to get purpose of payments for.
          in: query
          name: currency
          required: true
          schema:
            example: GBP
            maxLength: 3
            minLength: 3
            pattern: (?:[a-zA-Z]){3,}
            type: string
        - description: Recipient Type, Consumer or Company
          in: query
          name: recipientType
          required: true
          schema:
            $ref: '#/components/schemas/RecipientType'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PurposeOfPayment'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Purpose of Payments
      tags:
        - PurposeOfPayments
    parameters: []
  /v2/payments/purposes/{code}:
    get:
      description: This API call allows you to get purpose of payment details by purpose ofpayment code.
      operationId: Get-Payment-Purpose-By-Code
      parameters: []
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurposeOfPayment'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Purpose of Payment details by Code
      tags:
        - PurposeOfPayments
    parameters:
      - description: Purpose of Payment Code
        in: path
        name: code
        required: true
        schema:
          type: string
  /v2/quotes:
    post:
      deprecated: true
      description: Please use POST /fxquotes endpoint instead
      operationId: Create-Quote
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuotesRequest'
        description: ""
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuotesResponse'
            application/xml:
              schema:
                properties: {}
                type: object
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Create Quote
      tags:
        - Quotes
  /v2/quotes/{quoteId}:
    get:
      deprecated: true
      description: Please use GET /fxquotes/{quoteId} endpoint instead
      operationId: Get-Quote
      parameters: []
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuotesResponse'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Quote
      tags:
        - Quotes
    parameters:
      - in: path
        name: quoteId
        required: true
        schema:
          type: string
  /v2/quotes/{quoteId}/refresh:
    get:
      deprecated: true
      description: Please use GET /fxquotes/{quoteId}/refresh endpoint instead
      operationId: Refresh-Quote
      parameters: []
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuotesResponse'
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Refresh Quote
      tags:
        - Quotes
    parameters:
      - in: path
        name: quoteId
        required: true
        schema:
          type: string
  /v2/recipients:
    get:
      description: This API call allows a client to list their recipients.
      operationId: Get-Recipients
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RegisteredRecipient'
                type: array
            application/xml:
              schema:
                properties: {}
                type: object
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Recipients
      tags:
        - Recipients
    parameters: []
    post:
      description: This API call allows a client to register a recipient.
      operationId: Create-Recipients
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipientCreateRequest'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipientCreateResponse'
            application/xml:
              schema:
                properties: {}
                type: object
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Create Recipient
      tags:
        - Recipients
  /v2/recipients/fields/country/{countryCode}/currency/{ccyCode}:
    get:
      description: This API call allows a client to get all recipient fields (not just bank fields) for a country/currency/business-type combination.
      operationId: Get-Recipient-Fields
      parameters:
        - description: Country code
          in: path
          name: countryCode
          required: true
          schema:
            type: string
        - description: Currency code
          in: path
          name: ccyCode
          required: true
          schema:
            type: string
        - description: Whether the recipient is a business. Defaults to false.
          in: query
          name: isBusiness
          schema:
            default: false
            type: boolean
        - description: Country code of recipient's address
          in: query
          name: addressCountryCode
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RecipientFieldMap'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: 'Unauthorized - Invalid Token or Client '
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get recipient fields
      tags:
        - Recipients
  /v2/recipients/validate:
    post:
      description: This API call validates recipient's details.
      operationId: Validate-Recipient
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipientCreateRequest'
      responses:
        "200":
          description: OK
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ValidationException'
                  - $ref: '#/components/schemas/ServiceException'
          description: Bad Request
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Validate Recipient's Details
      tags:
        - Recipients
  /v2/recipients/validate-batch:
    parameters:
      - $ref: '#/components/parameters/accountNumber'
    post:
      description: This API call validates a batch of recipient's details.
      operationId: Validate-Recipient-Batch
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateRecipientBatchRequest'
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RecipientValidationResponse'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ValidationException'
                  - $ref: '#/components/schemas/ServiceException'
          description: Bad Request
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Validate Recipient's Details Batch
      tags:
        - Recipients
  /v2/recipients/{recipientId}:
    delete:
      description: This API call allows a client to delete a recipient.
      operationId: Delete-Recipient
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "204":
          description: Ok - Deleted
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "403":
          description: Forbidden
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Delete Recipient
      tags:
        - Recipients
    get:
      description: This API call allows a client to get a recipient.
      operationId: Get-Recipient
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisteredRecipient'
            application/xml:
              schema:
                properties: {}
                type: object
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Recipient
      tags:
        - Recipients
    parameters:
      - in: path
        name: recipientId
        required: true
        schema:
          type: string
    put:
      description: Update the given recipient
      operationId: Update-Recipient
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipientUpdateRequest'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipientUpdateResponse'
            application/xml:
              schema:
                properties: {}
                type: object
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Update Recipient
      tags:
        - Recipients
  /v2/resources/bankAccountTypes:
    get:
      description: This API call retrieves a list of all bank account ID types available.
      operationId: Get-All-Bank-Account-Types
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BankAccountType'
                type: array
          description: OK
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get all the bank account types
      tags:
        - Resources
  /v2/resources/recipientIdTypes:
    get:
      description: This API call retrieves a list of all recipient ID types available.
      operationId: Get-All-Recipient-Id-Types
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/IdType'
                type: array
          description: OK
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get All Recipient ID Types
      tags:
        - Resources
  /v2/resources/recipientIdTypes/{countryCode}:
    get:
      description: This API call retrieves a list of recipient ID types available for a given bank country code.
      operationId: Get-Recipient-Id-Types
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/IdType'
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: typeOfFailure
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid.
        "401":
          description: Unauthorized - Invalid Token or Client Id
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Recipient ID Types
      tags:
        - Resources
    parameters:
      - description: ISO 3166-1 alpha-2 country code
        in: path
        name: countryCode
        required: true
        schema:
          type: string
  /v2/settlementOptions:
    get:
      description: This API call allows a client to get list of allowed settlement options for their account based on sellCurrency.
      operationId: Get-Settlement-Options
      parameters:
        - description: Sell currency
          in: query
          name: sellCurrency
          required: true
          schema:
            maxLength: 3
            minLength: 3
            type: string
        - description: Fixed currency
          in: query
          name: fixedCurrency
          required: true
          schema:
            maxLength: 3
            minLength: 3
            type: string
        - description: sellAmount
          in: query
          name: amount
          required: true
          schema:
            format: decimal
            type: number
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              examples:
                example-1:
                  value:
                    - Method: BankTransfer
              schema:
                items:
                  $ref: '#/components/schemas/SettlementOption'
                type: array
          description: OK
        "201":
          description: Created
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: 'Unauthorized - Invalid Token or Client '
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Settlement Options
      tags:
        - SettlementOptions
    parameters: []
  /v2/settlementOptions/ccy/{sellCurrency}:
    get:
      deprecated: true
      description: Deprecated - please use GET /settlementOptions endpoint instead
      operationId: Get-Settlement-Options-Deprecated
      parameters:
        - $ref: '#/components/parameters/accountNumber'
      responses:
        "200":
          content:
            application/json:
              examples:
                example-1:
                  value:
                    - Method: BankTransfer
              schema:
                items:
                  $ref: '#/components/schemas/SettlementOption'
                type: array
          description: OK
        "201":
          description: Created
        "400":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ServiceException'
                  - $ref: '#/components/schemas/ValidationException'
          description: The requested operation could not be performed. Request is invalid or incorrect.
        "401":
          description: 'Unauthorized - Invalid Token or Client '
        "404":
          description: Not Found
        "500":
          description: An internal error has occurred in Xe platform.
      summary: Get Settlement Options - Deprecated
      tags:
        - SettlementOptions
    parameters:
      - in: path
        name: sellCurrency
        required: true
        schema:
          type: string
security:
  - bearerAuth: []
servers:
  - url: https://pay-api-sandbox.xe.com
tags:
  - name: Authentication
  - name: Accounts
  - name: FxQuotes
  - name: Contracts
  - name: Recipients
  - name: PaymentFields
  - name: PurposeOfPayments
  - name: IndustryType
  - name: ClientBankAccounts
  - name: SettlementOptions
  - name: CurrencyAccounts
  - name: LegalDocs
  - name: Resources
  - name: Quotes
x-stoplight:
  id: ogu9a5d0s0aoo
