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

# Refund Payin

> Initiate a refund request on a completed payin (with `received` status). 
Before initiating the refund, check if the transaction is refundable (`is_refundable == true`).
___

**Note:**  

If you initiate a refund immediately after a successful payin, the refund must be full. Partial refunds are only supported 30 minutes to 1 hour after the payin. Please keep this in mind when implementing your refund flow.



## OpenAPI

````yaml /api/openapi/v2-reference.yaml post /v2/payins/refund
openapi: 3.0.2
info:
  title: Multi-currency Payment APIs
  description: >-
    ## Introduction

    The Multi-currency Payment API Solution provides developers with a unified
    API schema to support multiple currencies efficiently. These APIs enable
    seamless transactions for both payin and payout operations, ensuring a
    robust, reliable, and scalable payment infrastructure for businesses dealing
    with various currencies.

    ### Key Features

    - **Single API Schema**: A single schema supports all currencies in your
    account, simplifying integration and management.

    - **Payin and Payout Process**:
      - **Step 1**: Call the **Get payin method list** to retrieve the list of supported methods.
      - **Step 2**: Call the **Get payin required fields** to get specific required fields for each method.
      - **Step 3**: Create the payment using the method and required fields from the previous step.
      - **Step 4**: On the sandbox environment, you can call the **Simulate payin** to simulate the payment.

    <div class="gst-note-red">
      Please note: GST should only be set to <code>true</code> for AU Merchants for <b>AUD</b> currency only. For all other currencies, set GST to <code>false</code>.
    </div>

    This documentation provides detailed guidance for integrating these
    capabilities into your application.
  version: 2.0.0
  termsOfService: https://helloclever.co/terms
  contact:
    email: support@helloclever.co
servers:
  - url: https://api.cleverhub.co/api
    description: Sandbox Environment
  - url: https://api-merchant.helloclever.co/api
    description: Production Environment
security:
  - app-id: []
    secret-key: []
paths:
  /v2/payins/refund:
    post:
      tags:
        - Payin
      summary: Refund Payin
      description: >-
        Initiate a refund request on a completed payin (with `received`
        status). 

        Before initiating the refund, check if the transaction is refundable
        (`is_refundable == true`).

        ___


        **Note:**  


        If you initiate a refund immediately after a successful payin, the
        refund must be full. Partial refunds are only supported 30 minutes to 1
        hour after the payin. Please keep this in mind when implementing your
        refund flow.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - uuid
                - description
              properties:
                uuid:
                  type: string
                  description: Payment request ID
                  example: APU221YS
                amount:
                  type: number
                  description: >-
                    Refund amount, must be numeric. If not specified, the refund
                    amount will be the same as the total amount.
                  example: 10
                description:
                  type: string
                  description: Partial refund reason, must be at least 5 characters long
                  example: Partial Refund Reason
      responses:
        '200':
          description: Refund Started
          content:
            application/json:
              schema:
                type: object
                properties:
                  uuid:
                    type: string
                    example: TYK80AI9
                  name:
                    type: string
                    example: Hello Clever
                  email:
                    type: string
                    example: test@example.com
                  external_id:
                    type: string
                    nullable: true
                    example: null
                  status:
                    type: string
                    example: partially_refunded
                  pay_code:
                    type: object
                    example: {}
                  currency:
                    type: string
                    example: VND
                  amount:
                    type: string
                    example: '1000000.0'
                  total:
                    type: string
                    example: '1000000.0'
                  paid_amount:
                    type: string
                    example: '1000000.0'
                  is_refundable:
                    type: boolean
                    example: true
                  payment_method:
                    type: string
                    example: vn_other_vietqr_vnd
                  expired_at:
                    type: string
                    example: ''
                  webhook_notification:
                    type: object
                    properties:
                      endpoint_url:
                        type: string
                        example: >-
                          https://webhook.site/789d4a41-9a6a-4cd7-925e-6db7bddb13c3
                      authorization_header:
                        type: string
                        example: '****'
                  description:
                    type: string
                    example: Test Payin
                  gst:
                    type: boolean
                    example: false
                  gst_amount:
                    type: number
                    example: 0
                  pay_by:
                    type: string
                    format: date-time
                    example: 2025-06-06T07:57:20.464+0000
                  sender_details:
                    nullable: true
                    example: null
                  stage:
                    type: string
                    example: normal_stage
                  refund_information:
                    type: object
                    properties:
                      total_amount:
                        type: string
                        example: '1000000.0'
                      refund_amount:
                        type: string
                        example: '10.0'
                      description:
                        type: string
                        example: '1234566'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      code:
                        type: string
                        example: REQUIRE_LOGIN
                      message:
                        type: string
                        example: Not Authorised
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      payment_request_id:
                        type: string
                        example: is invalid
                      refund_amount:
                        type: string
                        example: can't be blank
                      reason:
                        type: string
                        example: can't be blank
components:
  securitySchemes:
    app-id:
      type: apiKey
      in: header
      name: app-id
      description: |
        A unique identifier assigned to each application.
    secret-key:
      type: apiKey
      in: header
      name: secret-key
      description: |
        A secure token associated with the `app-id`.

````

## Related topics

- [Refund Payin](/api/gateway3/payin/refund-payin.md)
- [Multi-Currency Payin API Reference](/api/v2/payin.md)
- [Handle Multi-Currency Payins and Payouts](/developer-reference/api-use-cases/handle-multi-currency-payins-and-payouts.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.