> ## 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.

# Retry or Duplicate a transfer

> Retry a failed transfer or duplicate a successful transfer



## OpenAPI

````yaml Flutterwave_v4_Open_API.json post /transfers/{id}/retries
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/{id}/retries:
    post:
      tags:
        - Transfers
      summary: Retry or Duplicate a transfer
      description: Retry a failed transfer or duplicate a successful transfer
      operationId: transfer_post_retry
      parameters:
        - $ref: '#/components/parameters/trace_id'
        - $ref: '#/components/parameters/idempotency_key'
        - $ref: '#/components/parameters/scenario_key'
        - in: path
          required: true
          name: id
          schema:
            description: ID of the initial transfer
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/transfer_retry_in'
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  message:
                    type: string
                  data:
                    $ref: '#/components/schemas/transfer'
        '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
    scenario_key:
      in: header
      name: X-Scenario-Key
      schema:
        type: string
        minimum: 1
        maximum: 1000
      description: >-
        An optional scenario key that can be used to simulate specific behaviors
        or test different scenarios within the API. Providing this header allows
        you to trigger predefined responses or alter data based on the key's
        value, which can be useful for testing, development, or demonstrating
        specific functionalities. The key should be a string of 1 to 1000
        characters.
      example: scenario:auth_redirect
  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
    transfer_retry_in:
      type: object
      properties:
        action:
          type: string
          description: >-
            The action to be performed on the transfer. It can be `retry` or
            `duplicate`.
          enum:
            - retry
            - duplicate
        reference:
          $ref: '#/components/schemas/reference'
        meta:
          $ref: '#/components/schemas/meta'
        callback_url:
          type: string
          description: The URL where the transfer status updates will be sent.
          example: https://neue.trf.io
      required:
        - action
    status:
      type: string
      nullable: false
      enum:
        - success
        - failed
    transfer:
      type: object
      properties:
        id:
          description: The unique identifier for the transfer
          type: string
          example: trf_yuK89vb
        type:
          type: string
          description: The type of transfer, indicating the method used to transfer funds.
          enum:
            - bank
            - mobile_money
            - wallet
            - cash_pickup
          example: bank
        action:
          description: Whether to process the transfer instantly or at a later date.
          type: string
          enum:
            - instant
            - deferred
            - scheduled
            - retry
            - duplicate
        reference:
          $ref: '#/components/schemas/reference'
        status:
          description: The status of the transfer.
          type: string
          enum:
            - NEW
            - PENDING
            - FAILED
            - SUCCESSFUL
            - CANCELLED
            - INITIATED
        reversal:
          type: object
          nullable: true
          properties:
            reversal_datetime:
              description: The transfer reversal date.
              type: string
              format: date-time
            initial_status:
              description: The original status of the transfer before reversal.
              type: string
              example: SUCCESSFUL
            reconciliation_status:
              description: The final status.
              type: string
              example: REVERSED
            reconciliation_type:
              description: Specifies either debit or credit.
              type: string
              enum:
                - D
                - C
        narration:
          type: string
          description: >-
            A brief description or message accompanying the transfer, provided
            by the sender to describe the purpose of the transfer.
          example: Salary payment for January
        source_currency:
          allOf:
            - $ref: '#/components/schemas/currency'
          description: The currency in which the transfer was debited.
          example: NGN
        destination_currency:
          allOf:
            - $ref: '#/components/schemas/currency'
          description: The currency in which the amount will be credited to the recipient.
          example: EUR
        amount:
          $ref: '#/components/schemas/transfer_amount'
        fee:
          type: object
          properties:
            currency:
              allOf:
                - $ref: '#/components/schemas/currency'
              description: The currency in which the fee is charged.
            value:
              type: number
              description: The amount charged as a fee for the transfer.
              format: double
              minimum: 0
              example: 10.35
        debit_information:
          type: object
          properties:
            currency:
              allOf:
                - $ref: '#/components/schemas/currency'
              description: >-
                The currency in which the fees and charges are applied for the
                transfer.
            actual_debit_amount:
              type: number
              description: >-
                The exact amount deducted for the transfer, including applicable
                fees.
              format: decimal
              minimum: 0
              example: 100.35
            rate_used:
              type: number
              description: The exchange rate applied to calculate the transfer amount.
              format: decimal
              minimum: 0
              example: 100.35
            vat:
              type: number
              description: The Value-Added Tax (VAT) amount charged for the transfer.
              format: decimal
              minimum: 0
              example: 100.35
        payment_information:
          type: object
          properties:
            proof:
              type: string
              description: Session ID
              example: '11000224070317345400001414441712312381'
        retry:
          allOf:
            - $ref: '#/components/schemas/parent_transfer_details'
          description: Contains the information of the initial transfer that was retried.
        duplicate:
          allOf:
            - $ref: '#/components/schemas/parent_transfer_details'
          description: >-
            Contains the information of the initial transfer that was
            duplicated.
        disburse_option:
          $ref: '#/components/schemas/disburse_option'
        callback_url:
          type: string
          description: A URL where callbacks or notifications will be sent.
          nullable: true
          example: https://example.com/flw/callback
        provider_response:
          $ref: '#/components/schemas/provider_response'
        recipient:
          allOf:
            - $ref: '#/components/schemas/recipient'
          description: The recipient details.
        sender:
          allOf:
            - $ref: '#/components/schemas/sender'
          description: The sender details.
        meta:
          $ref: '#/components/schemas/meta'
        created_datetime:
          type: string
          description: The date and time when the transfer was submitted for processing.
          format: date-time
    reference:
      type: string
      pattern: ^[a-zA-Z0-9\-]+$
      minLength: 6
      maxLength: 42
      description: >-
        A custom identifier to track the transaction, This must be unique across
        all your transactions.
      x-pattern-message: must be an alphanumeric string
    meta:
      type: object
      additionalProperties:
        type: string
    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
    transfer_amount:
      type: object
      required:
        - value
        - applies_to
      properties:
        value:
          description: >-
            Amount to be sent to the recipient. This is a positive integer in
            the smallest currency unit
          type: number
          format: decimal
          minimum: 1
          example: 3000.44
        applies_to:
          type: string
          enum:
            - destination_currency
            - source_currency
          description: >-
            Specifies whether the transfer amount is in destination_currency (no
            conversion) or source_currency (this will be converted to
            destination currency)
    parent_transfer_details:
      type: object
      properties:
        parent_id:
          type: string
          description: >-
            The unique identifier of the original transfer that is being
            retried.
          example: trf_HUQUYb1Sp5CkiIJFebk1Z
        parent_reference:
          type: string
          description: >-
            The external reference of the original transfer that is being
            retried.
          example: flw_z882wFGMjc
    disburse_option:
      type: object
      description: >-
        To specify the date and time for disbursement, this is required when
        action is set to scheduled.
      properties:
        date_time:
          type: string
          description: >-
            the scheduled date and time for when the transfer should be
            disbursed to the recipient's account. It should be in the
            'YYYY-MM-DD HH:MM:SS' 24hr format.
        timezone:
          type: string
          enum:
            - Africa/Cairo
            - Africa/Accra
            - Africa/Nairobi
            - Africa/Lagos
            - Africa/Freetown
            - Africa/Dar_es_Salaam
            - Africa/Kampala
            - Africa/Douala
            - Africa/Ndjamena
            - Africa/Kinshasa
            - Africa/Lubumbashi
            - Africa/Libreville
            - Africa/Porto-Novo
            - Africa/Abidjan
            - Africa/Dakar
            - Africa/Johannesburg
            - America/New_York
            - America/Los_Angeles
            - America/Sao_Paulo
            - Asia/Dubai
            - Asia/Kolkata
            - Asia/Tokyo
            - Australia/Sydney
            - Europe/London
            - Europe/Berlin
            - Europe/Moscow
            - Pacific/Auckland
            - Pacific/Honolulu
            - UTC
    provider_response:
      type: object
      required:
        - type
        - code
      description: >
        Represents payout error codes. The `type` and `code` fields are separate
        enums where:

        - `type` indicates the nature of the error.

        - `code` provides the specific error code associated with the error
        type.

        - `message` explains the meaning of the `type-code` pair
      properties:
        message:
          type: string
          description: The processor message for the transfer.
          example: 'DISBURSE FAILED: Insufficient wallet balance'
        type:
          type: string
          description: >
            The type of the payout error, representing the specific error
            scenario.
          enum:
            - transfer_amount_exceeds_limit
            - transfer_amount_below_limit
            - monthly_transfer_limit_exceeded
            - daily_transfer_limit_exceeded
            - transfer_limit_not_set_for_currency
            - payout_creation_failed
            - insufficient_balance
            - service_unavailable
            - transfer_failed
            - pricing_not_set
            - currency_conversion_not_set
            - rejected_recipient_merchant
            - invalid_bank_code
            - unable_to_determine_country
            - invalid_wallet_currency
        code:
          type: string
          description: >
            The unique code associated with the error type. This code follows a
            pattern of four digits.
          pattern: \d{4}
    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'
    sender:
      type: object
      properties:
        id:
          description: ID of the transfer sender
          type: string
        name:
          $ref: '#/components/schemas/name'
          description: The Sender's full name.
        national_identification:
          allOf:
            - $ref: '#/components/schemas/national_identification'
          description: The Sender's government identification.
        phone:
          $ref: '#/components/schemas/phone'
          description: The Sender's mobile number.
        date_of_birth:
          description: The Sender's date of birth.
          type: string
        email:
          $ref: '#/components/schemas/email'
          description: The Sender's email address.
        address:
          $ref: '#/components/schemas/address'
          description: The Sender's residential address.
    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.
    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
    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
    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

````