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

# Create a transfer recipient

> Create a transfer recipient



## OpenAPI

````yaml Flutterwave_v4_Open_API.json post /transfers/recipients
openapi: 3.1.0
info:
  version: '1.0'
  title: Flutterwave APIs
  description: APIs for Enterprise Customers
  contact:
    name: Flutterwave
    email: hi@flutterwavego.com
servers:
  - url: https://developersandbox-api.flutterwave.com
    description: Dev server
security:
  - bearerAuth: []
paths:
  /transfers/recipients:
    post:
      tags:
        - Transfer Recipients
      summary: Create a transfer recipient
      description: Create a transfer recipient
      operationId: transfers_recipients_create
      parameters:
        - $ref: '#/components/parameters/trace_id'
        - $ref: '#/components/parameters/idempotency_key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/recipient_in'
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/created_transfer_recipient_response'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400'
        '401':
          description: Unauthorised request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/403'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409'
components:
  parameters:
    trace_id:
      description: >-
        A unique identifier to track this operation. It must be between 12 and
        255 characters in length.
      in: header
      name: X-Trace-Id
      schema:
        type: string
        minLength: 12
        maxLength: 255
      example: acb123e4-f567-4a8b-9c0d-1e2f3a4b5c6d
    idempotency_key:
      description: >-
        A unique identifier to prevent duplicate requests. It must be between 12
        and 255 characters in length.
      in: header
      name: X-Idempotency-Key
      required: false
      schema:
        type: string
        minLength: 12
        maxLength: 255
      example: req-5c0a2e8c-f3b9-4d1a-8e2f-0c1d2e3f4a5b
  schemas:
    '400':
      description: Bad Request
      type: object
      properties:
        status:
          type: string
          nullable: false
          enum:
            - failed
        error:
          type: object
          properties:
            type:
              type: string
              example: REQUEST_NOT_VALID
            code:
              type: string
              example: '10400'
            message:
              type: string
              nullable: true
              example: Request is not valid
            validation_errors:
              type: array
              items:
                type: object
                properties:
                  field_name:
                    type: string
                    example: amount
                  message:
                    type: string
                    example: must not be null
          description: >-
            The request cannot be accepted and is malformed and/or missing
            required parameters.
    '401':
      description: Unauthorized
      type: object
      properties:
        status:
          type: string
          nullable: false
          enum:
            - failed
        message:
          type: string
          nullable: true
          description: Invalid API key provided
          example: UNAUTHORIZED
        error:
          type: object
          properties:
            type:
              type: string
              example: UNAUTHORIZED
            code:
              type: string
              example: '10401'
            message:
              type: string
              example: unauthorized
    '403':
      description: Forbidden
      type: object
      properties:
        status:
          type: string
          nullable: false
          enum:
            - failed
        message:
          type: string
          description: API key doesn't have permission to access this resource
        error:
          type: object
          properties:
            type:
              type: string
              example: FORBIDDEN
            code:
              type: string
              example: '10403'
            message:
              type: string
              example: Forbidden
    '409':
      description: Conflict
      type: object
      properties:
        status:
          type: string
          nullable: false
          enum:
            - failed
        message:
          type: string
          description: The request conflicts with another request
        error:
          type: object
          properties:
            type:
              type: string
              example: RESOURCE_CONFLICT
            code:
              type: string
              example: '10409'
            message:
              type: string
              example: Resource conflict
    recipient_in:
      oneOf:
        - $ref: '#/components/schemas/bank_ngn_recipient_in'
        - $ref: '#/components/schemas/bank_etb_recipient_in'
        - $ref: '#/components/schemas/bank_eur_recipient_in'
        - $ref: '#/components/schemas/bank_gbp_recipient_in'
        - $ref: '#/components/schemas/bank_ghs_recipient_in'
        - $ref: '#/components/schemas/bank_mwk_recipient_in'
        - $ref: '#/components/schemas/bank_usd_recipient_in'
        - $ref: '#/components/schemas/bank_zar_recipient_in'
        - $ref: '#/components/schemas/bank_kes_recipient_in'
        - $ref: '#/components/schemas/bank_rwf_recipient_in'
        - $ref: '#/components/schemas/bank_sll_recipient_in'
        - $ref: '#/components/schemas/bank_ugx_recipient_in'
        - $ref: '#/components/schemas/bank_xaf_recipient_in'
        - $ref: '#/components/schemas/bank_xof_recipient_in'
        - $ref: '#/components/schemas/mobile_money_etb_recipient_in'
        - $ref: '#/components/schemas/mobile_money_ghs_recipient_in'
        - $ref: '#/components/schemas/mobile_money_kes_recipient_in'
        - $ref: '#/components/schemas/mobile_money_rwf_recipient_in'
        - $ref: '#/components/schemas/mobile_money_tzs_recipient_in'
        - $ref: '#/components/schemas/mobile_money_ugx_recipient_in'
        - $ref: '#/components/schemas/mobile_money_zmw_recipient_in'
        - $ref: '#/components/schemas/mobile_money_xaf_recipient_in'
        - $ref: '#/components/schemas/mobile_money_xof_recipient_in'
      discriminator:
        propertyName: type
        mapping:
          bank_etb: '#/components/schemas/bank_etb_recipient_in'
          bank_eur: '#/components/schemas/bank_eur_recipient_in'
          bank_gbp: '#/components/schemas/bank_gbp_recipient_in'
          bank_ghs: '#/components/schemas/bank_ghs_recipient_in'
          bank_kes: '#/components/schemas/bank_kes_recipient_in'
          bank_mwk: '#/components/schemas/bank_mwk_recipient_in'
          bank_ngn: '#/components/schemas/bank_ngn_recipient_in'
          bank_usd: '#/components/schemas/bank_usd_recipient_in'
          bank_rwf: '#/components/schemas/bank_rwf_recipient_in'
          bank_sll: '#/components/schemas/bank_sll_recipient_in'
          bank_ugx: '#/components/schemas/bank_ugx_recipient_in'
          bank_xaf: '#/components/schemas/bank_xaf_recipient_in'
          bank_xof: '#/components/schemas/bank_xof_recipient_in'
          bank_zar: '#/components/schemas/bank_zar_recipient_in'
          mobile_money_etb: '#/components/schemas/mobile_money_etb_recipient_in'
          mobile_money_ghs: '#/components/schemas/mobile_money_ghs_recipient_in'
          mobile_money_kes: '#/components/schemas/mobile_money_kes_recipient_in'
          mobile_money_rwf: '#/components/schemas/mobile_money_rwf_recipient_in'
          mobile_money_tzs: '#/components/schemas/mobile_money_tzs_recipient_in'
          mobile_money_ugx: '#/components/schemas/mobile_money_ugx_recipient_in'
          mobile_money_xaf: '#/components/schemas/mobile_money_xaf_recipient_in'
          mobile_money_xof: '#/components/schemas/mobile_money_xof_recipient_in'
          mobile_money_zmw: '#/components/schemas/mobile_money_zmw_recipient_in'
    created_transfer_recipient_response:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/status'
        message:
          type: string
        data:
          $ref: '#/components/schemas/recipient'
    bank_ngn_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_ngn_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: NGN
              readOnly: true
            type:
              type: string
              default: bank_ngn
              readOnly: true
    bank_etb_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_etb_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: ETB
              readOnly: true
            type:
              type: string
              default: bank_etb
              readOnly: true
    bank_eur_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_eur_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: EUR
              readOnly: true
            type:
              type: string
              default: bank_eur
              readOnly: true
    bank_gbp_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_gbp_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: GBP
              readOnly: true
            type:
              type: string
              default: bank_gbp
              readOnly: true
    bank_ghs_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_ghs_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: GHS
              readOnly: true
            type:
              type: string
              default: bank_ghs
              readOnly: true
    bank_mwk_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_mwk_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: MWK
              readOnly: true
            type:
              type: string
              default: bank_mwk
              readOnly: true
    bank_usd_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_usd_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: USD
              readOnly: true
            type:
              type: string
              default: bank_usd
              readOnly: true
    bank_zar_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_zar_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: ZAR
              readOnly: true
            type:
              type: string
              default: bank_zar
              readOnly: true
    bank_kes_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_etb_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: KES
              readOnly: true
            type:
              type: string
              default: bank_kes
              readOnly: true
    bank_rwf_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_ghs_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: RWF
              readOnly: true
            type:
              type: string
              default: bank_rwf
              readOnly: true
    bank_sll_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_ghs_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: SLL
              readOnly: true
            type:
              type: string
              default: bank_sll
              readOnly: true
    bank_ugx_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_ghs_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: UGX
              readOnly: true
            type:
              type: string
              default: bank_ugx
              readOnly: true
    bank_xaf_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_ghs_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: XAF
              readOnly: true
            type:
              type: string
              default: bank_xaf
              readOnly: true
    bank_xof_recipient_in:
      allOf:
        - $ref: '#/components/schemas/bank_ghs_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: XOF
              readOnly: true
            type:
              type: string
              default: bank_xof
              readOnly: true
    mobile_money_etb_recipient_in:
      allOf:
        - $ref: '#/components/schemas/mobile_money_etb_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: ETB
              readOnly: true
            type:
              type: string
              default: mobile_money_etb
              readOnly: true
    mobile_money_ghs_recipient_in:
      allOf:
        - $ref: '#/components/schemas/mobile_money_etb_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: GHS
              readOnly: true
            type:
              type: string
              default: mobile_money_ghs
              readOnly: true
    mobile_money_kes_recipient_in:
      allOf:
        - $ref: '#/components/schemas/mobile_money_etb_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: KES
              readOnly: true
            type:
              type: string
              default: mobile_money_kes
              readOnly: true
    mobile_money_rwf_recipient_in:
      allOf:
        - $ref: '#/components/schemas/mobile_money_etb_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: RWF
              readOnly: true
            type:
              type: string
              default: mobile_money_rwf
              readOnly: true
    mobile_money_tzs_recipient_in:
      allOf:
        - $ref: '#/components/schemas/mobile_money_etb_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: TZS
              readOnly: true
            type:
              type: string
              default: mobile_money_tzs
              readOnly: true
    mobile_money_ugx_recipient_in:
      allOf:
        - $ref: '#/components/schemas/mobile_money_etb_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: UGX
              readOnly: true
            type:
              type: string
              default: mobile_money_ugx
              readOnly: true
    mobile_money_zmw_recipient_in:
      allOf:
        - $ref: '#/components/schemas/mobile_money_etb_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: ZMW
              readOnly: true
            type:
              type: string
              default: mobile_money_zmw
              readOnly: true
    mobile_money_xaf_recipient_in:
      allOf:
        - $ref: '#/components/schemas/mobile_money_xaf_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: XAF
              readOnly: true
            type:
              type: string
              default: mobile_money_xaf
              readOnly: true
    mobile_money_xof_recipient_in:
      allOf:
        - $ref: '#/components/schemas/mobile_money_xaf_recipient'
        - type: object
          properties:
            destination_currency:
              type: string
              default: XOF
              readOnly: true
            type:
              type: string
              default: mobile_money_xof
              readOnly: true
    status:
      type: string
      nullable: false
      enum:
        - success
        - failed
    recipient:
      oneOf:
        - $ref: '#/components/schemas/bank_recipient'
        - $ref: '#/components/schemas/mobile_money_recipient'
        - $ref: '#/components/schemas/wallet_recipient'
        - $ref: '#/components/schemas/cashpickup_recipient'
      discriminator:
        propertyName: type
        mapping:
          bank: '#/components/schemas/bank_recipient'
          mobile_money: '#/components/schemas/mobile_money_recipient'
          wallet: '#/components/schemas/wallet_recipient'
          cash_pickup: '#/components/schemas/cashpickup_recipient'
    bank_ngn_recipient:
      type: object
      required:
        - bank
      properties:
        name:
          allOf:
            - $ref: '#/components/schemas/name'
          readOnly: true
        type:
          type: string
          default: bank
          readOnly: true
        bank:
          type: object
          required:
            - account_number
            - code
          properties:
            account_number:
              description: recipient account number
              type: string
              example: '0690000031'
            code:
              description: recipient bank code
              type: string
              example: '044'
              pattern: ^.+$
              x-pattern-message: value must not be empty
    bank_etb_recipient:
      type: object
      required:
        - bank
        - name
      properties:
        type:
          type: string
          default: bank
          readOnly: true
        name:
          allOf:
            - $ref: '#/components/schemas/name'
            - type: object
              required:
                - first
                - last
        bank:
          type: object
          required:
            - account_number
            - code
          properties:
            account_number:
              description: recipient account number
              type: string
              example: '6708908978675'
              minLength: 7
              maxLength: 24
            code:
              description: recipient bank code
              type: string
              example: '15'
              pattern: ^.+$
              x-pattern-message: value must not be empty
    bank_eur_recipient:
      type: object
      required:
        - bank
        - name
        - phone
        - email
        - address
      properties:
        type:
          type: string
          default: bank
          readOnly: true
        name:
          allOf:
            - $ref: '#/components/schemas/name'
            - type: object
              required:
                - first
                - last
        phone:
          description: Recipient phone number
          allOf:
            - $ref: '#/components/schemas/phone'
            - type: object
              required:
                - country_code
                - number
        email:
          allOf:
            - $ref: '#/components/schemas/email'
          description: Recipient email address
          example: hi@flutterwave.com
        address:
          description: Recipient address
          allOf:
            - $ref: '#/components/schemas/address'
            - type: object
              required:
                - city
                - country
                - line1
                - postal_code
                - state
        bank:
          type: object
          required:
            - account_number
            - name
            - swift_code
          properties:
            account_number:
              description: recipient account number
              type: string
              example: DE89370400440532013000
              minLength: 8
              maxLength: 35
            name:
              description: recipient bank name
              type: string
              example: Deutsche Bank
              minLength: 2
              maxLength: 60
            swift_code:
              description: recipient bank swift code
              type: string
              example: DEUTDEFF
              minLength: 4
              maxLength: 15
    bank_gbp_recipient:
      type: object
      required:
        - bank
        - name
        - phone
        - email
        - address
      properties:
        type:
          type: string
          default: bank
          readOnly: true
        name:
          allOf:
            - $ref: '#/components/schemas/name'
            - type: object
              required:
                - first
                - last
        phone:
          description: Recipient phone number
          allOf:
            - $ref: '#/components/schemas/phone'
            - type: object
              required:
                - country_code
                - number
        email:
          allOf:
            - $ref: '#/components/schemas/email'
          description: Recipient email address
          example: hi@flutterwave.com
        address:
          description: Recipient address
          allOf:
            - $ref: '#/components/schemas/address'
            - type: object
              required:
                - city
                - country
                - line1
                - postal_code
                - state
        bank:
          type: object
          required:
            - account_number
            - account_type
            - name
            - sort_code
          properties:
            account_number:
              description: recipient account number
              type: string
              example: DE89370400440532013000
              minLength: 8
              maxLength: 35
            account_type:
              description: recipient account type
              type: string
              enum:
                - individual
                - corporate
              example: individual
            name:
              description: recipient bank name
              type: string
              example: Deutsche Bank
              minLength: 2
              maxLength: 60
            sort_code:
              description: recipient bank sort code
              type: string
              example: '80489123'
              minLength: 4
              maxLength: 15
    bank_ghs_recipient:
      type: object
      required:
        - bank
        - name
      properties:
        type:
          type: string
          default: bank
          readOnly: true
        name:
          allOf:
            - $ref: '#/components/schemas/name'
            - type: object
              required:
                - first
                - last
        bank:
          type: object
          required:
            - account_number
            - code
            - branch
          properties:
            account_number:
              description: recipient account number
              type: string
              example: '001234567890'
              minLength: 7
              maxLength: 35
            code:
              description: recipient bank code
              type: string
              example: '11276282'
              pattern: ^.+$
              x-pattern-message: value must not be empty
            branch:
              description: recipient bank branch
              type: string
              example: 1812051EPC
              pattern: ^.+$
              x-pattern-message: value must not be empty
    bank_mwk_recipient:
      type: object
      required:
        - bank
        - name
      properties:
        type:
          type: string
          default: bank
          readOnly: true
        name:
          allOf:
            - $ref: '#/components/schemas/name'
            - type: object
              required:
                - first
                - last
        bank:
          type: object
          required:
            - account_number
            - code
          properties:
            account_number:
              description: recipient account number
              type: string
              example: '123456789012'
              minLength: 5
              maxLength: 19
            code:
              description: recipient bank code
              type: string
              example: ABHY
              pattern: ^.+$
              x-pattern-message: value must not be empty
            branch:
              description: recipient bank branch
              type: string
              example: ABHY0065001
              pattern: ^.+$
              x-pattern-message: value must not be empty
    bank_usd_recipient:
      type: object
      required:
        - bank
        - name
        - phone
        - email
        - address
      properties:
        type:
          type: string
          default: bank
          readOnly: true
        name:
          allOf:
            - $ref: '#/components/schemas/name'
            - type: object
              required:
                - first
                - last
        phone:
          description: Recipient phone number
          allOf:
            - $ref: '#/components/schemas/phone'
            - type: object
              required:
                - country_code
                - number
        email:
          allOf:
            - $ref: '#/components/schemas/email'
              description: Recipient email address
              example: hi@flutterwave.com
        address:
          description: Recipient address
          allOf:
            - $ref: '#/components/schemas/address'
            - type: object
              required:
                - city
                - country
                - line1
                - postal_code
                - state
        bank:
          type: object
          required:
            - account_number
            - account_type
            - code
            - swift_code
            - routing_number
          properties:
            account_number:
              description: recipient account number
              type: string
              example: '1234567890'
              minLength: 5
              maxLength: 17
            code:
              description: recipient bank code
              type: string
              example: '021000021'
              pattern: ^.+$
              x-pattern-message: value must not be empty
            account_type:
              description: recipient account type
              type: string
              enum:
                - checking
                - savings
              example: checking
            routing_number:
              description: recipient bank routing number
              type: string
              example: '021000021'
              minLength: 6
              maxLength: 9
            swift_code:
              description: recipient bank swift code
              type: string
              example: BOFAUS3NXXX
              minLength: 8
              maxLength: 11
    bank_zar_recipient:
      type: object
      required:
        - bank
        - phone
        - email
        - address
        - name
      properties:
        type:
          type: string
          default: bank
          readOnly: true
        name:
          allOf:
            - $ref: '#/components/schemas/name'
            - type: object
              required:
                - first
                - last
        phone:
          description: Recipient phone number
          allOf:
            - $ref: '#/components/schemas/phone'
            - type: object
              required:
                - country_code
                - number
        email:
          allOf:
            - $ref: '#/components/schemas/email'
          description: Recipient email address
          example: hi@flutterwave.com
        address:
          description: Recipient address
          allOf:
            - $ref: '#/components/schemas/address'
            - type: object
              required:
                - city
                - country
                - line1
                - postal_code
                - state
        bank:
          type: object
          required:
            - account_number
            - code
          properties:
            account_number:
              description: recipient account number
              type: string
              example: '123456789'
              minLength: 7
              maxLength: 11
            code:
              description: recipient bank code
              type: string
              example: '632005'
              pattern: ^.+$
              x-pattern-message: value must not be empty
    mobile_money_etb_recipient:
      type: object
      required:
        - name
        - mobile_money
      properties:
        type:
          type: string
          default: mobile_money
          readOnly: true
        name:
          allOf:
            - $ref: '#/components/schemas/name'
            - type: object
              required:
                - first
                - last
        mobile_money:
          type: object
          required:
            - network
            - msisdn
          properties:
            network:
              description: recipient network
              type: string
              minLength: 2
              maxLength: 25
              pattern: ^[a-zA-Z0-9]*$
              example: VODAFONE
              x-pattern-message: must only contain alphanumeric characters
            msisdn:
              description: recipient phone number
              type: string
              minLength: 6
              maxLength: 25
              pattern: ^[a-zA-Z0-9]*$
              example: '251911234567'
              x-pattern-message: must only contain alphanumeric characters
    mobile_money_xaf_recipient:
      type: object
      required:
        - name
        - mobile_money
      properties:
        type:
          type: string
          default: mobile_money
          readOnly: true
        name:
          allOf:
            - $ref: '#/components/schemas/name'
            - type: object
              required:
                - first
                - last
        mobile_money:
          type: object
          required:
            - network
            - country
            - msisdn
          properties:
            network:
              description: recipient network
              type: string
              minLength: 2
              maxLength: 25
              pattern: ^[a-zA-Z0-9]*$
              example: VODAFONE
              x-pattern-message: must only contain alphanumeric characters
            country:
              description: recipient country
              type: string
              pattern: ^[A-Z]{2}$
              example: CI
              x-pattern-message: must be a valid country ISO2 format
            msisdn:
              description: recipient phone number
              type: string
              minLength: 6
              maxLength: 25
              pattern: ^[a-zA-Z0-9]*$
              example: '251911234567'
              x-pattern-message: must only contain alphanumeric characters
    bank_recipient:
      type: object
      required:
        - bank
      properties:
        id:
          description: ID of the transfer recipient
          type: string
        type:
          type: string
          default: bank
          readOnly: true
        name:
          $ref: '#/components/schemas/name'
        currency:
          allOf:
            - $ref: '#/components/schemas/currency'
        national_identification:
          allOf:
            - $ref: '#/components/schemas/national_identification'
          description: Sender government identification
        phone:
          $ref: '#/components/schemas/phone'
        date_of_birth:
          $ref: '#/components/schemas/date_of_birth'
        email:
          allOf:
            - $ref: '#/components/schemas/email'
          example: hi@flutterwave.com
        address:
          $ref: '#/components/schemas/address'
        bank:
          $ref: '#/components/schemas/bank'
    mobile_money_recipient:
      type: object
      required:
        - name
      properties:
        id:
          description: ID of the transfer recipient
          type: string
        type:
          type: string
          default: mobile_money
          readOnly: true
        name:
          $ref: '#/components/schemas/name'
        currency:
          allOf:
            - $ref: '#/components/schemas/currency'
        national_identification:
          allOf:
            - $ref: '#/components/schemas/national_identification'
          description: Sender government identification
        phone:
          $ref: '#/components/schemas/phone'
        date_of_birth:
          $ref: '#/components/schemas/date_of_birth'
        email:
          $ref: '#/components/schemas/email'
        address:
          $ref: '#/components/schemas/address'
        mobile_money:
          type: object
          required:
            - network
            - country
            - msisdn
          properties:
            network:
              description: recipient network
              type: string
            country:
              description: recipient country
              type: string
            msisdn:
              description: recipient phone number
              type: string
    wallet_recipient:
      type: object
      properties:
        id:
          description: ID of the transfer recipient
          type: string
        type:
          type: string
          default: wallet
          readOnly: true
        name:
          $ref: '#/components/schemas/name'
          readOnly: true
        currency:
          allOf:
            - $ref: '#/components/schemas/currency'
        wallet:
          $ref: '#/components/schemas/wallet'
    cashpickup_recipient:
      type: object
      properties:
        id:
          description: ID of the transfer recipient
          type: string
        type:
          type: string
          default: cash_pickup
          readOnly: true
        name:
          $ref: '#/components/schemas/name'
        currency:
          allOf:
            - $ref: '#/components/schemas/currency'
        national_identification:
          allOf:
            - $ref: '#/components/schemas/national_identification'
          description: Sender government identification
        phone:
          $ref: '#/components/schemas/phone'
        date_of_birth:
          $ref: '#/components/schemas/date_of_birth'
        email:
          allOf:
            - $ref: '#/components/schemas/email'
          example: hi@flutterwave.com
        address:
          $ref: '#/components/schemas/address'
        cash_pickup:
          type: object
          required:
            - network
          properties:
            network:
              description: cashpickup network
              type: string
    name:
      type: object
      description: The Customer's full name.
      properties:
        first:
          type: string
          description: The Customer's first name.
          example: King
          pattern: ^(?![ ,.'-]*$)[A-Za-z ,.'-]{2,50}$
          x-pattern-message: >-
            must be between 2 and 50 characters long, cannot be empty, only
            spaces, or only symbols, and can only contain letters, spaces,
            commas, periods, apostrophes, or hyphens.
        middle:
          type: string
          description: The Customer's middle name.
          example: Leo
          pattern: ^(?![ ,.'-]*$)[A-Za-z ,.'-]{2,50}$
          x-pattern-message: >-
            must be between 2 and 50 characters long, cannot be empty, only
            spaces, or only symbols, and can only contain letters, spaces,
            commas, periods, apostrophes, or hyphens.
        last:
          type: string
          description: The Customer's last name.
          example: LeBron
          pattern: ^(?![ ,.'-]*$)[A-Za-z ,.'-]{2,50}$
          x-pattern-message: >-
            must be between 2 and 50 characters long, cannot be empty, only
            spaces, or only symbols, and can only contain letters, spaces,
            commas, periods, apostrophes, or hyphens.
    phone:
      type: object
      description: The customer's mobile number.
      required:
        - number
        - country_code
      example:
        country_code: '234'
        number: '08012345678'
      properties:
        country_code:
          description: ISO 3166 alpha-3 country code.
          type: string
          pattern: ^[0-9]{1,3}$
          example: '234'
          x-pattern-message: must be a valid ISO 3166 alpha-3 country code
        number:
          description: Unformatted 7-10-digit phone number without the country code.
          type: string
          pattern: ^[0-9]{7,10}$
          example: '8001122334'
          x-pattern-message: must be a digit containing between 7 and 10 characters
    email:
      type: string
      description: The Customer's email address.
      pattern: >-
        ^[a-zA-Z0-9_+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$
      example: cornelius@gmail.com
      x-pattern-message: must be an email format
    address:
      type: object
      description: Customer address information.
      required:
        - line1
        - city
        - state
        - country
        - postal_code
      properties:
        city:
          type: string
          description: The name of the city.
          example: New York
          pattern: ^.+$
          x-pattern-message: value must not be empty
        country:
          description: ISO2 country code
          type: string
          pattern: ^[A-Z]{2}$
          example: US
          x-pattern-message: must be a valid country ISO2 format
        line1:
          type: string
          description: The first line of the Customer's address.
          example: 123 Main Street
          pattern: ^.+$
          x-pattern-message: value must not be empty
        line2:
          type: string
          description: The second line of the Customer's address.
          example: Apt 4B
          pattern: ^.+$
          x-pattern-message: value must not be empty
        postal_code:
          type: string
          example: '10001'
          pattern: ^.+$
          x-pattern-message: value must not be empty
        state:
          type: string
          description: The state or region.
          example: New York
          pattern: ^.+$
          x-pattern-message: value must not be empty
    currency:
      description: ISO 4217 currency code.
      type: string
      example: NGN
      enum:
        - AED
        - AFN
        - ALL
        - AMD
        - ANG
        - AOA
        - AQD
        - ARS
        - AUD
        - AZN
        - BAM
        - BBD
        - BDT
        - BGN
        - BHD
        - BIF
        - BMD
        - BND
        - BOB
        - BRL
        - BSD
        - BWP
        - BYR
        - BZD
        - CAD
        - CDF
        - CHF
        - CLP
        - CNY
        - COP
        - CRC
        - CUP
        - CVE
        - CYP
        - CZK
        - DJF
        - DKK
        - DOP
        - DZD
        - ECS
        - EEK
        - EGP
        - ETB
        - EUR
        - FJD
        - FKP
        - GBP
        - GEL
        - GGP
        - GHS
        - GIP
        - GMD
        - GNF
        - GTQ
        - GYD
        - HKD
        - HNL
        - HRK
        - HTG
        - HUF
        - IDR
        - ILS
        - INR
        - IQD
        - IRR
        - ISK
        - JMD
        - JOD
        - JPY
        - KES
        - KGS
        - KHR
        - KMF
        - KPW
        - KRW
        - KWD
        - KYD
        - KZT
        - LAK
        - LBP
        - LKR
        - LRD
        - LSL
        - LTL
        - LVL
        - LYD
        - MAD
        - MDL
        - MGA
        - MKD
        - MMK
        - MNT
        - MOP
        - MRO
        - MTL
        - MUR
        - MVR
        - MWK
        - MXN
        - MYR
        - MZN
        - NAD
        - NGN
        - NIO
        - NOK
        - NPR
        - NZD
        - OMR
        - PAB
        - PEN
        - PGK
        - PHP
        - PKR
        - PLN
        - PYG
        - QAR
        - RON
        - RSD
        - RUB
        - RWF
        - SAR
        - SBD
        - SCR
        - SDG
        - SEK
        - SGD
        - SKK
        - SLL
        - SOS
        - SRD
        - STD
        - SVC
        - SYP
        - SZL
        - THB
        - TJS
        - TMT
        - TND
        - TOP
        - TRY
        - TTD
        - TWD
        - TZS
        - UAH
        - UGX
        - USD
        - UYU
        - UZS
        - VEF
        - VND
        - VUV
        - XAF
        - XCD
        - XOF
        - XPF
        - YER
        - ZAR
        - ZMK
        - ZWD
        - ZMW
    national_identification:
      type: object
      properties:
        type:
          type: string
          enum:
            - PASSPORT
            - DRIVERS_LICENSE
            - NATIONAL_ID
        identifier:
          type: string
          example: FLY5869798686
          minLength: 4
          maxLength: 40
        expiration_date:
          type: string
          example: '2029-07-08'
          pattern: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
          x-pattern-message: must match YYYY-MM-DD format
    date_of_birth:
      type: string
      description: The customer's birthdate in ISO 8601 (YYYY-MM-DD) format.
      pattern: ^(0[1-9]|[12]\d|3[01])-(0[1-9]|1[0-2])-(19|20)\d{2}$
      x-pattern-message: must match YYYY-MM-DD format
    bank:
      type: object
      required:
        - account_number
        - code
      properties:
        account_number:
          description: The Recipient's account number.
          type: string
          pattern: ^[a-zA-Z0-9]*$
        account_type:
          description: The Recipient's account type.
          type: string
          enum:
            - checking
            - savings
            - individual
            - corporate
        code:
          description: The Recipient's bank code.
          type: string
          pattern: ^[a-zA-Z0-9]*$
        branch:
          description: The Recipient's bank branch.
          type: string
        name:
          description: The Recipient's bank name.
          type: string
        routing_number:
          description: The Recipient bank routing number.
          type: string
          pattern: ^[a-zA-Z0-9]*$
        swift_code:
          description: The Recipient bank swift code.
          type: string
          pattern: ^[a-zA-Z0-9]*$
        sort_code:
          description: The Recipient bank sort code.
          type: string
          pattern: ^[a-zA-Z0-9]*$
    wallet:
      type: object
      required:
        - provider
        - identifier
      properties:
        provider:
          type: string
          enum:
            - flutterwave
          description: >-
            Specifies the payment or service provider. Currently, only
            "flutterwave" is supported
        identifier:
          description: >-
            A unique identifier assigned to the merchant by the payment or
            service provider.
          type: string
          example: '00118468'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````