> ## Documentation Index
> Fetch the complete documentation index at: https://docs.borderless.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a new Payment Instruction

> Create a new Payment Instruction using the data provided in the request body.



## OpenAPI

````yaml https://sandbox-api.borderless.xyz/v1/api-json post /v1/identities/{identityId}/payment-instructions
openapi: 3.0.0
info:
  title: Borderless API
  description: The Borderless API documentation.
  version: '1.0'
  contact: {}
servers:
  - url: https://sandbox-api.borderless.xyz
security: []
tags: []
paths:
  /v1/identities/{identityId}/payment-instructions:
    post:
      tags:
        - Payment Instructions
      summary: Create a new Payment Instruction
      description: >-
        Create a new Payment Instruction using the data provided in the request
        body.
      operationId: PaymentInstructionsController_createPaymentInstruction
      parameters:
        - name: identityId
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentInstructionCreateDto'
      responses:
        '201':
          description: Successfully created Payment Instruction data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentInstructionEntity'
        '400':
          description: The Payment Instruction data is invalid or incomplete.
        '404':
          description: The Identity with the specified id does not exist.
      security:
        - bearer: []
components:
  schemas:
    PaymentInstructionCreateDto:
      type: object
      properties:
        country:
          description: >-
            The country code in ISO-3166-2 format where the payment instructions
            are applied. See [ISO-3166-2
            documentation](https://www.iso.org/iso-3166-country-codes.html).
          example: US
          allOf:
            - $ref: '#/components/schemas/CountryCode'
        currency:
          description: >-
            The fiat currency for the payment instructions. Learn more about
            supported currencies at [Currency
            Guide](https://example.com/docs/currencies).
          example: USD
          allOf:
            - $ref: '#/components/schemas/FiatCurrencyId'
        name:
          type: string
          minLength: 1
          maxLength: 255
          description: >-
            A unique identifier for a payment instruction, allowing to
            distinguish it from other accounts.
          example: Primary Bank Account
        paymentMethod:
          description: >-
            The method used to execute the payment instructions. Learn more at
            [Payment Instructions
            Guide](https://docs.buildborderless.com/docs/payment-instructions).
          example: ACH
          allOf:
            - $ref: '#/components/schemas/PaymentMethod'
        details:
          description: >-
            The details of the payment instructions, which vary depending on the
            `paymentMethod`. Refer to [Payment Instructions
            Guide](https://docs.buildborderless.com/docs/payment-instructions)
            for specifics.
          oneOf:
            - $ref: '#/components/schemas/USDetailsCreateDto'
              title: US Details (ACH and Wire)
            - $ref: '#/components/schemas/BankDetailsCreateDto'
              title: Bank Details
            - $ref: '#/components/schemas/IbanBankDetailsIbanCreateDto'
              title: Iban Bank Details
            - $ref: '#/components/schemas/IdentifierDetailsCreateDto'
              title: Identifier (PIX)
            - $ref: '#/components/schemas/BrebKeyDetailsCreateDto'
              title: Bre-B Key (Colombia)
            - $ref: '#/components/schemas/SepaDetailsCreateDto'
              title: SEPA (Europe)
            - $ref: '#/components/schemas/MobileMoneyDetailsCreateDto'
              title: Mobile Money (Africa)
            - $ref: '#/components/schemas/UKFPSDetailsCreateDto'
              title: UK FPS (Sort Code + IBAN)
      required:
        - country
        - currency
        - name
        - paymentMethod
        - details
    PaymentInstructionEntity:
      type: object
      properties:
        id:
          type: string
        identityId:
          type: string
        name:
          type: string
        paymentMethod:
          allOf:
            - $ref: '#/components/schemas/PaymentMethod'
        currency:
          type: string
          example: USD
        country:
          example: US
          allOf:
            - $ref: '#/components/schemas/CountryCode'
        deleted:
          type: boolean
          default: false
        createdAt:
          format: date-time
          type: string
        details:
          oneOf:
            - $ref: '#/components/schemas/USDetailsEntity'
              title: US Details (ACH and Wire)
            - $ref: '#/components/schemas/IbanBankDetailsEntity'
              title: Iban Bank Details
            - $ref: '#/components/schemas/BankDetailsEntity'
              title: Bank Details
            - $ref: '#/components/schemas/IdentifierDetailsEntity'
              title: Identifier (PIX)
            - $ref: '#/components/schemas/BrebKeyDetailsEntity'
              title: Bre-B Key (Colombia)
            - $ref: '#/components/schemas/SepaDetailsEntity'
              title: SEPA (Europe)
            - $ref: '#/components/schemas/SwiftDetailsEntity'
              title: Swift Details
            - $ref: '#/components/schemas/MobileMoneyDetailsEntity'
              title: Mobile Money (Africa)
            - $ref: '#/components/schemas/UKFPSDetailsEntity'
              title: UK FPS (Sort Code + IBAN)
      required:
        - id
        - identityId
        - name
        - paymentMethod
        - currency
        - country
        - deleted
        - createdAt
        - details
    CountryCode:
      type: string
      enum:
        - AF
        - AL
        - DZ
        - AS
        - AD
        - AO
        - AI
        - AQ
        - AG
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BY
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BQ
        - BA
        - BW
        - BV
        - BR
        - IO
        - BN
        - BG
        - BF
        - BI
        - CV
        - KH
        - CM
        - CA
        - KY
        - CF
        - TD
        - CL
        - CN
        - CX
        - CC
        - CO
        - KM
        - CD
        - CG
        - CK
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - CI
        - DK
        - DJ
        - DM
        - DO
        - EC
        - EG
        - SV
        - GQ
        - ER
        - EE
        - SZ
        - ET
        - FK
        - FO
        - FJ
        - FI
        - FR
        - GF
        - PF
        - TF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GI
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GW
        - GY
        - HT
        - HM
        - VA
        - HN
        - HK
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IM
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KP
        - KR
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - MV
        - ML
        - MT
        - MH
        - MQ
        - MR
        - MU
        - YT
        - MX
        - FM
        - MD
        - MC
        - MN
        - ME
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NC
        - NZ
        - NI
        - NE
        - NG
        - NU
        - NF
        - MP
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PG
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - MK
        - RO
        - RU
        - RW
        - RE
        - BL
        - SH
        - KN
        - LC
        - MF
        - PM
        - VC
        - WS
        - SM
        - ST
        - SA
        - SN
        - RS
        - SC
        - SL
        - SG
        - SX
        - SK
        - SI
        - SB
        - SO
        - ZA
        - GS
        - SS
        - ES
        - LK
        - SD
        - SR
        - SJ
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TL
        - TG
        - TK
        - TO
        - TT
        - TN
        - TR
        - TM
        - TC
        - TV
        - UG
        - UA
        - AE
        - GB
        - UM
        - US
        - UY
        - UZ
        - VU
        - VE
        - VN
        - VG
        - VI
        - WF
        - EH
        - YE
        - ZM
        - ZW
        - AX
        - ZZ
    FiatCurrencyId:
      type: string
      enum:
        - USD
        - EUR
        - BRL
        - ARS
        - MXN
        - COP
        - CLP
        - PEN
        - PYG
        - DOP
        - UYU
        - BOB
        - CRC
        - GTQ
        - BWP
        - CDF
        - GHS
        - KES
        - MWK
        - NGN
        - RWF
        - ZAR
        - TZS
        - UGX
        - ZMW
        - XOF
        - XAF
        - AUD
        - BDT
        - CAD
        - INR
        - JPY
        - NPR
        - PKR
        - PHP
        - SGD
        - GBP
        - CNY
        - HKD
        - IDR
        - MYR
        - KRW
        - LKR
        - THB
        - TRY
        - VND
        - CZK
        - DKK
        - NOK
        - PLN
        - RON
        - RSD
        - SEK
        - CHF
        - AED
        - SAR
        - QAR
        - ILS
        - EGP
        - JOD
        - HNL
        - JMD
        - NZD
        - DZD
        - GMD
        - GNF
        - HTG
        - MAD
        - TND
      description: Fiat currency identifier supported by the PFI account.
    PaymentMethod:
      type: string
      enum:
        - ACH
        - Wire
        - Sepa
        - Swift
        - Card
        - MobileMoney
        - PIX
        - TED
        - PSE
        - SPEI
        - COELSA
        - Transfers30
        - SPAV
        - CCE
        - SPI
        - LBTR
        - SINPE
        - Transfer365
        - NIP
        - GhIPSS
        - BankTransfer
        - EFT
        - RTP
        - BECS
        - FPS
        - IMPS_FIRC
        - Breb
        - NPSS
        - MADA
        - ZAHAV
        - IBFT
        - SIC
    USDetailsCreateDto:
      type: object
      properties:
        bankName:
          type: string
          minLength: 1
          maxLength: 255
          description: The name of the bank, if applicable
          example: Example Bank
        accountHolderName:
          type: string
          minLength: 1
          maxLength: 255
          description: The name of the account holder for the US bank account
          example: John Doe
        bankAccountNumber:
          type: string
          minLength: 1
          maxLength: 27
          description: The bank account number for the US account
          example: '123456789012'
        bankRoutingNumber:
          type: string
          minLength: 1
          maxLength: 9
          description: The bank routing number (ABA) for the US account
          example: '123456789'
        bankAccountType:
          description: The type of bank account (e.g., Checking or Savings).
          example: Checking
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        recipientRelationship:
          description: >-
            The relationship between the sender and the recipient. Required by
            some payment providers.
          example: first party
          allOf:
            - $ref: '#/components/schemas/RecipientRelationship'
        address:
          description: >-
            Beneficiary bank address. Optional; required only for certain
            countries/corridors. The beneficiary's own address is taken from the
            identity.
          allOf:
            - $ref: '#/components/schemas/PostalAddressCreateDto'
      required:
        - accountHolderName
        - bankAccountNumber
        - bankRoutingNumber
        - bankAccountType
    BankDetailsCreateDto:
      type: object
      properties:
        bankSlug:
          type: string
          description: The bank code for the account, such as a routing number or sort code
          example: NH4EM3uyZ4DXriHihwbGLzeRAGj9qDXbClBtYBSX2x
        bankAccountNumber:
          type: string
          minLength: 1
          maxLength: 27
          description: The bank account number
          example: '1234567890123456'
        localRoutingCode:
          type: string
          minLength: 1
          maxLength: 24
          description: >-
            Required for the following payment methods:
            BECS,FPS,IMPS_FIRC,EFT,TED. It may contain country-specific bank or
            branch identifiers such as branch code, transit number, BSB, IFSC,
            clearing code, or similar local routing codes.
          example: '1234567'
        bankName:
          type: string
          minLength: 1
          maxLength: 255
          description: The name of the bank.
          example: Example Bank
        swiftOrBicNumber:
          type: string
          minLength: 8
          maxLength: 11
          description: Beneficiary bank swift or bic number. Required for some regions
        accountHolderName:
          type: string
          minLength: 1
          maxLength: 255
          description: >-
            The name of the account holder. Required for Colombia. Learn more at
            [Payment Instructions
            Guide](https://docs.buildborderless.com/docs/latam-payment-instructions).
          example: John Doe
        bankAccountType:
          description: The type of bank account.
          example: Checking
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        bankAccountNumberType:
          description: >-
            The type of bank account number. Required for Argentina. Learn more
            at [Payment Instructions
            Guide](https://docs.buildborderless.com/docs/latam-payment-instructions).
          example: CBU
          allOf:
            - $ref: '#/components/schemas/BankAccountNumberType'
        address:
          description: >-
            Beneficiary bank address. Optional; required only for certain
            countries/corridors. The beneficiary's own address is taken from the
            identity.
          allOf:
            - $ref: '#/components/schemas/PostalAddressCreateDto'
        bankCode:
          type: string
          minLength: 3
          maxLength: 11
          description: >-
            DEPRECATED. The bank code for the account, such as a routing number
            or sort code.
          example: '123456789'
          deprecated: true
        phone:
          type: string
          minLength: 7
          maxLength: 20
          description: DEPRECATED. The phone number associated with the bank account.
          example: '+1234567890'
          deprecated: true
        taxId:
          type: string
          minLength: 3
          maxLength: 20
          description: >-
            DEPRECATED. The tax identification number associated with the
            account.
          example: '123456789'
          deprecated: true
    IbanBankDetailsIbanCreateDto:
      type: object
      properties:
        bankSlug:
          type: string
          description: The bank code for the account, such as a routing number or sort code
          example: NH4EM3uyZ4DXriHihwbGLzeRAGj9qDXbClBtYBSX2x
        iban:
          type: string
          minLength: 1
          maxLength: 34
          description: The bank account number
          example: DE89370400440532013000
        address:
          description: >-
            Beneficiary bank address. Optional; required only for certain
            countries/corridors. The beneficiary's own address is taken from the
            identity.
          allOf:
            - $ref: '#/components/schemas/PostalAddressCreateDto'
    IdentifierDetailsCreateDto:
      type: object
      properties:
        identifierType:
          description: The type of identifier used for the payment instruction.
          example: Email
          allOf:
            - $ref: '#/components/schemas/PaymentInstructionIdentifierType'
        identifierValue:
          type: string
          description: The value of the identifier, such as a PIX key or similar
          example: '12345678901'
        address:
          description: >-
            The address is deprecated in Identifier Payment Instruction and will
            be removed in future releases.
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/PostalAddressCreateDto'
      required:
        - identifierType
        - identifierValue
    BrebKeyDetailsCreateDto:
      type: object
      properties:
        brebKey:
          type: string
          minLength: 1
          maxLength: 255
          description: The Bre-B key value registered for the recipient.
          example: '@JAR1234'
      required:
        - brebKey
    SepaDetailsCreateDto:
      type: object
      properties:
        bankName:
          type: string
          minLength: 1
          maxLength: 255
          description: The name of the bank.
          example: Example Bank
        accountHolderName:
          type: string
          minLength: 1
          maxLength: 255
          description: The name of the account holder for the SEPA account.
          example: John Doe
        bankAccountNumber:
          type: string
          minLength: 1
          maxLength: 34
          description: The IBAN (International Bank Account Number) for the SEPA account.
          example: DE89370400440532013000
        swiftOrBicNumber:
          type: string
          minLength: 8
          maxLength: 11
          description: The SWIFT or BIC code of the bank.
          example: DEUTDEFF
        accountOwnerType:
          description: The type of account owner (Personal or Business).
          example: Personal
          allOf:
            - $ref: '#/components/schemas/BankAccountOwnerType'
        firstName:
          type: string
          minLength: 1
          maxLength: 50
          description: >-
            The first name of the account holder, required if accountOwnerType
            is Personal
          example: John
        lastName:
          type: string
          minLength: 1
          maxLength: 50
          description: >-
            The last name of the account holder, required if accountOwnerType is
            Personal
          example: Doe
        businessName:
          type: string
          minLength: 1
          maxLength: 50
          description: The business name, required if accountOwnerType is Business
          example: Example Corp
        address:
          description: >-
            Beneficiary bank address. Optional; required only for certain
            countries/corridors. The beneficiary's own address is taken from the
            identity.
          allOf:
            - $ref: '#/components/schemas/PostalAddressCreateDto'
      required:
        - accountHolderName
        - bankAccountNumber
        - swiftOrBicNumber
        - accountOwnerType
    MobileMoneyDetailsCreateDto:
      type: object
      properties:
        phone:
          type: string
          minLength: 7
          maxLength: 20
          description: The phone number associated with the mobile money account
          example: '+1234567890'
        networkSlug:
          type: string
          description: The mobile money network operator slug.
          example: NH4EM3uyZ4DXriHihwbGLzeRAGj9qDXbClBtYBSX2x4
        accountHolderName:
          type: string
          minLength: 1
          maxLength: 255
          description: The name of the account holder for the mobile money account
          example: John Doe
        networkProvider:
          description: >-
            The mobile money network provider. This field is deprecated, please
            use networkSlug instead as the list of supported operators can
            dynamically change.
          example: MPESA
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/MobileMoneyProvider'
      required:
        - phone
        - accountHolderName
    UKFPSDetailsCreateDto:
      type: object
      properties:
        iban:
          type: string
          pattern: UK_IBAN_REGEX
          description: >-
            UK IBAN. Required: Walapay UK FPS payouts cannot be created without
            it, and Bridge UK FPS payouts derive sort code + account number from
            it.
          example: GB29NWBK60161331926819
        localRoutingCode:
          type: string
          pattern: UK_SORT_CODE_REGEX
          description: >-
            UK sort code (6 digits, hyphens optional). Optional — auto-derived
            from the IBAN. If provided, must match the IBAN.
          example: 20-40-36
        bankAccountNumber:
          type: string
          pattern: UK_ACCOUNT_NUMBER_REGEX
          description: >-
            UK bank account number (8 digits). Optional — auto-derived from the
            IBAN. If provided, must match the IBAN.
          example: '12345678'
        bankName:
          type: string
          description: Bank name, e.g. Barclays.
          example: Barclays
        bankSlug:
          type: string
          description: Anonymized bank slug returned by the institutions list endpoint.
        bankAccountType:
          description: Account type (Checking or Savings).
          example: Checking
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        address:
          description: >-
            Beneficiary bank address. Optional; required only for certain
            countries/corridors. The beneficiary's own address is taken from the
            identity.
          allOf:
            - $ref: '#/components/schemas/PostalAddressCreateDto'
      required:
        - iban
    USDetailsEntity:
      type: object
      properties:
        bankName:
          type: string
          nullable: true
          example: Chase
        accountHolderName:
          type: string
          example: John Doe
        bankAccountNumber:
          type: string
          example: '123456789'
          description: >-
            Full bank account number (PII). Nullable / omitted by default.
            Returned only when your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        bankAccountNumberLast4:
          type: string
          example: '6789'
        bankRoutingNumber:
          type: string
          example: '021000021'
        bankAccountType:
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        recipientRelationship:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RecipientRelationship'
        address:
          nullable: true
          description: >-
            Beneficiary bank address. The beneficiary's own address is taken
            from the identity.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
        bankSlug:
          type: string
          nullable: true
          deprecated: true
        bankCode:
          type: string
          nullable: true
          deprecated: true
        phone:
          type: string
          nullable: true
          deprecated: true
        taxId:
          type: string
          nullable: true
          deprecated: true
      required:
        - bankName
        - accountHolderName
        - bankAccountNumberLast4
        - bankRoutingNumber
        - bankAccountType
        - recipientRelationship
        - address
        - bankSlug
        - bankCode
        - phone
        - taxId
    IbanBankDetailsEntity:
      type: object
      properties:
        bankSlug:
          type: string
          nullable: true
          example: Chase
        iban:
          type: string
          example: DE89370400440532013000
          description: >-
            Full IBAN (PII). Nullable / omitted by default. Returned only when
            your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        ibanLast4:
          type: string
          example: '3000'
        address:
          nullable: true
          description: Beneficiary bank address.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
        bankAccountNumberLast4:
          type: string
          deprecated: true
          example: '3000'
        bankName:
          type: string
          nullable: true
          deprecated: true
        bankRoutingNumber:
          type: string
          nullable: true
          deprecated: true
        bankCode:
          type: string
          nullable: true
          deprecated: true
        accountHolderName:
          type: string
          nullable: true
          deprecated: true
        bankAccountType:
          nullable: true
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        recipientRelationship:
          nullable: true
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/RecipientRelationship'
        phone:
          type: string
          nullable: true
          deprecated: true
        taxId:
          type: string
          nullable: true
          deprecated: true
      required:
        - bankSlug
        - ibanLast4
        - address
        - bankAccountNumberLast4
        - bankName
        - bankRoutingNumber
        - bankCode
        - accountHolderName
        - bankAccountType
        - recipientRelationship
        - phone
        - taxId
    BankDetailsEntity:
      type: object
      properties:
        bankName:
          type: string
          nullable: true
          example: Chase
        bankSlug:
          type: string
          nullable: true
          example: Chase
        bankAccountNumber:
          type: string
          example: '123456789'
          description: >-
            Full bank account number (PII). Nullable / omitted by default.
            Returned only when your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        bankAccountNumberLast4:
          type: string
          example: '6789'
        localRoutingCode:
          type: string
          nullable: true
          example: '1234567'
        swiftOrBicNumber:
          type: string
          nullable: true
          example: DEUTDEFF
        accountHolderName:
          type: string
          nullable: true
          example: John Doe
        bankAccountType:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        bankAccountNumberType:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BankAccountNumberType'
        address:
          nullable: true
          description: >-
            Beneficiary bank address. The beneficiary's own address is taken
            from the identity.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
        bankRoutingNumber:
          type: string
          nullable: true
          deprecated: true
          example: '021000021'
        bankCode:
          type: string
          nullable: true
          deprecated: true
          example: '40006'
        phone:
          type: string
          nullable: true
          deprecated: true
        taxId:
          type: string
          nullable: true
          deprecated: true
        recipientRelationship:
          nullable: true
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/RecipientRelationship'
      required:
        - bankName
        - bankSlug
        - bankAccountNumberLast4
        - localRoutingCode
        - swiftOrBicNumber
        - accountHolderName
        - bankAccountType
        - bankAccountNumberType
        - address
        - bankRoutingNumber
        - bankCode
        - phone
        - taxId
        - recipientRelationship
    IdentifierDetailsEntity:
      type: object
      properties:
        identifierType:
          allOf:
            - $ref: '#/components/schemas/PaymentInstructionIdentifierType'
        identifierValue:
          type: string
        address:
          nullable: true
          description: >-
            The address associated with the Identifier Payment Instruction is
            deprecated.
          deprecated: true
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
      required:
        - identifierType
        - identifierValue
        - address
    BrebKeyDetailsEntity:
      type: object
      properties:
        brebKey:
          type: string
          description: The Bre-B key value registered for the recipient.
      required:
        - brebKey
    SepaDetailsEntity:
      type: object
      properties:
        bankName:
          type: string
          example: Chase
        bankAccountNumber:
          type: string
          example: '123456789'
          description: >-
            Full bank account number (PII). Nullable / omitted by default.
            Returned only when your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        bankAccountNumberLast4:
          type: string
          example: '6789'
        accountHolderName:
          type: string
          example: John Doe
        swiftOrBicNumber:
          type: string
          example: BNPAFRPPXXX
        accountOwnerType:
          allOf:
            - $ref: '#/components/schemas/BankAccountOwnerType'
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        businessName:
          type: string
          nullable: true
        address:
          nullable: true
          description: >-
            Beneficiary bank address. The beneficiary's own address is taken
            from the identity.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
      required:
        - bankName
        - bankAccountNumberLast4
        - accountHolderName
        - swiftOrBicNumber
        - accountOwnerType
        - firstName
        - lastName
        - businessName
        - address
    SwiftDetailsEntity:
      type: object
      properties:
        accountHolderName:
          type: string
          example: John Doe
        bankAccountNumber:
          type: string
          example: '123456789'
          description: >-
            Full bank account number (PII). Nullable / omitted by default.
            Returned only when your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        bankAccountNumberLast4:
          type: string
          example: '6789'
        swiftOrBicNumber:
          type: string
          example: BNPAFRPPXXX
        address:
          nullable: true
          description: >-
            Beneficiary bank address. Optional; required for SWIFT payouts via
            BlindPay. The beneficiary's own address is taken from the identity.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
        bankName:
          type: string
          nullable: true
          example: Chase
        bankAccountType:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        intermediaryBankName:
          type: string
          nullable: true
        intermediaryBankSwiftOrBicNumber:
          type: string
          nullable: true
        intermediaryBankAddress:
          type: string
          nullable: true
        beneficiaryBankCnapsCode:
          type: string
          nullable: true
        beneficiaryPhone:
          type: string
          nullable: true
        beneficiaryAddressInChinese:
          type: string
          nullable: true
        recipientRelationship:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RecipientRelationship'
        bankAddress:
          type: string
          nullable: true
          description: >-
            Deprecated. Use the structured `address` field for the beneficiary
            bank address.
          deprecated: true
      required:
        - accountHolderName
        - bankAccountNumberLast4
        - swiftOrBicNumber
        - address
        - bankName
        - bankAccountType
        - intermediaryBankName
        - intermediaryBankSwiftOrBicNumber
        - intermediaryBankAddress
        - beneficiaryBankCnapsCode
        - beneficiaryPhone
        - beneficiaryAddressInChinese
        - recipientRelationship
        - bankAddress
    MobileMoneyDetailsEntity:
      type: object
      properties:
        accountHolderName:
          type: string
        phone:
          type: string
        networkProvider:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/MobileMoneyProvider'
        networkSlug:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/MobileMoneyProvider'
      required:
        - accountHolderName
        - phone
        - networkProvider
        - networkSlug
    UKFPSDetailsEntity:
      type: object
      properties:
        bankName:
          type: string
          nullable: true
          example: Barclays
        bankSlug:
          type: string
          nullable: true
          example: Barclays
        bankAccountNumber:
          type: string
          nullable: true
          example: '12345678'
          description: >-
            Full bank account number (PII). Nullable / omitted by default.
            Returned only when your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        bankAccountNumberLast4:
          type: string
          nullable: true
          example: '5678'
        sortCode:
          type: string
          nullable: true
          example: '601613'
          description: 6-digit UK sort code (derived from IBAN positions 9-14).
        iban:
          type: string
          nullable: true
          example: GB29NWBK60161331926819
          description: >-
            Full IBAN (PII). Nullable / omitted by default. Returned only when
            your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        ibanLast4:
          type: string
          nullable: true
          example: '6819'
        accountHolderName:
          type: string
          nullable: true
          example: Jane Smith
        bankAccountType:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        address:
          nullable: true
          description: >-
            Beneficiary bank address. The beneficiary's own address is taken
            from the identity.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
      required:
        - bankName
        - bankSlug
        - bankAccountNumberLast4
        - sortCode
        - ibanLast4
        - accountHolderName
        - bankAccountType
        - address
    BankAccountType:
      type: string
      enum:
        - Checking
        - Savings
    RecipientRelationship:
      type: string
      enum:
        - first party
        - employee
        - independent contractor
        - vendor or supplier
        - subsidiary or affiliate
        - merchant or partner
        - customer
        - landlord
        - family
        - other
    PostalAddressCreateDto:
      type: object
      properties:
        street1:
          type: string
          minLength: 3
          maxLength: 100
          description: The primary street address
          example: 123 Main St
        street2:
          type: string
          minLength: 3
          maxLength: 100
          description: Additional street address information, if applicable
          example: Apt 4B
        city:
          type: string
          minLength: 3
          maxLength: 50
          description: The city of the address
          example: New York
        state:
          type: string
          minLength: 2
          maxLength: 50
          description: >-
            The state/province/region/county code in ISO-3166-2 format. Required
            if country has subdivision. See [ISO-3166-2
            documentation](https://www.iso.org/iso-3166-country-codes.html).
          example: NY
        country:
          description: >-
            The country code in ISO-3166-2 format. See [ISO-3166-2
            documentation](https://www.iso.org/iso-3166-country-codes.html).
          example: US
          allOf:
            - $ref: '#/components/schemas/CountryCode'
        postalCode:
          type: string
          description: The postal code for the address, validated based on the country
          example: '10001'
      required:
        - street1
        - city
        - country
    BankAccountNumberType:
      type: string
      enum:
        - CVU
        - CBU
        - ALIAS
    PaymentInstructionIdentifierType:
      type: string
      enum:
        - PhoneNumber
        - Email
        - CPF
        - EVP
        - CNPJ
    BankAccountOwnerType:
      type: string
      enum:
        - Personal
        - Business
    MobileMoneyProvider:
      type: string
      enum:
        - AIRTEL
        - BKTRX
        - FAWRY
        - CHECKOUT
        - CRDTRX
        - EXPRESSO
        - FLOOZ
        - FREE
        - HALOPESA
        - MOBICASH
        - MOOV
        - MPESA
        - MTN
        - MYZAKA
        - OPAY
        - ORANGE
        - TIGO
        - TMONEY
        - TNM
        - VODACOM
        - VODAFONE
        - WAVE
        - ZAMTEL
    PostalAddressEntity:
      type: object
      properties:
        id:
          type: string
        street1:
          type: string
        street2:
          type: string
          nullable: true
        city:
          type: string
        state:
          type: string
          nullable: true
        country:
          allOf:
            - $ref: '#/components/schemas/CountryCode'
        postalCode:
          type: string
      required:
        - id
        - street1
        - street2
        - city
        - state
        - country
        - postalCode
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````