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

> Create a refund



## OpenAPI

````yaml Flutterwave_v4_Open_API.json post /refunds
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:
  /refunds:
    post:
      tags:
        - Refunds
      summary: Create a refund
      description: Create a refund
      operationId: refunds_post
      parameters:
        - $ref: '#/components/parameters/trace_id'
        - $ref: '#/components/parameters/idempotency_key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/refund_in'
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/status'
                  message:
                    type: string
                  data:
                    $ref: '#/components/schemas/refund'
        '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
    refund_in:
      description: A refund of a previously created charge
      required:
        - amount
        - charge_id
        - reason
      type: object
      properties:
        amount:
          allOf:
            - $ref: '#/components/schemas/amount'
          description: Amount of the refund
        charge_id:
          description: ID of the charge to refund
          type: string
        meta:
          $ref: '#/components/schemas/meta'
        reason:
          type: string
          enum:
            - duplicate
            - fraudulent
            - requested_by_customer
            - expired_uncaptured_charge
          description: Reason for the refund
          example: requested_by_customer
    status:
      type: string
      nullable: false
      enum:
        - success
        - failed
    refund:
      description: A refund of a previously created charge
      type: object
      properties:
        id:
          description: ID of the refund
          type: string
        amount_refunded:
          allOf:
            - $ref: '#/components/schemas/amount'
          description: Amount of the refund
        meta:
          $ref: '#/components/schemas/meta'
        reason:
          type: string
          enum:
            - duplicate
            - fraudulent
            - requested_by_customer
            - expired_uncaptured_charge
          description: Reason for the refund
          example: requested_by_customer
        status:
          type: string
          enum:
            - pending
            - requires_action
            - succeeded
            - failed
            - cancelled
            - completed
            - new
          description: Status of the refund
          example: new
        charge_id:
          type: string
          description: ID of the charge tied to this refund
          example: chg_VnUihmASmF
        created_datetime:
          type: string
    amount:
      type: number
      format: decimal
      description: The payment amount in decimals.
      example: 12.34
      minimum: 0.01
    meta:
      type: object
      additionalProperties:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````