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

# Void Payment

> This endpoint voids a previously authorised card payment before it is captured.

Only payments in `authorised` status can be voided. Once voided, the status will be updated to `failed`.

⚠️ Voiding is only allowed **before capture**. If a payment has already been captured or is in a final state, this operation will return an error.




## OpenAPI

````yaml /api/openapi/card-reference.yaml post /v2/cards/void_payment
openapi: 3.0.2
info:
  title: Card APIs
  description: >
    ---

    ## Overview


    The Hello Clever Card APIs offer a secure and streamlined way to accept and
    manage card payments. With simple endpoints for creating charges, capturing
    funds, and issuing refunds, you can build payment flows that integrate
    cleanly into your system.


    **Integration Methods**

    Choose the integration approach that best fits your architecture and
    compliance needs:


    - **SDK Integration (Client-side)**
      **Supported currencies**: USD and AUD.
      Designed for web and mobile frontends. Integrate the Hello Clever JavaScript SDK to manage payment creation and frontend interactions through a lightweight, drop-in flow.

      > 💡 See the **[SDK Documentation](/guides/sdk-integration)** section below for setup, initialisation, payment creation, and callback handling.

    - **Server-to-Server (S2S) Integration (Server-side)**
      **Supported currency**: AUD.
      Intended for PCI DSS–compliant backend systems. This approach lets you submit raw card information (`card_info`) directly from your server to Hello Clever’s APIs, giving you full control over authorisation, capture, and other server-side payment operations.

      > 💡 See the **[S2S Documentation](/guides/s2s-integration)** section below for endpoint specs, authentication steps, and example payloads.

    Both methods share the same payment lifecycle, including authorisation, 3DS
    authentication, capture, refunds, and webhook notifications, ensuring
    consistent behaviour across SDK and S2S integrations.
  version: 1.0.0
  termsOfService: https://helloclever.co/terms
  contact:
    email: support@helloclever.co
servers:
  - url: https://sandbox-api.lightningpay.me/api
    description: Sandbox Environment
  - url: https://api.lightningpay.me/api
    description: Production Environment
security:
  - app-id: []
    secret-key: []
tags:
  - name: SDK Integration
    description: Integration guide for accepting card payments using JavaScript SDK
  - name: Cards
    description: >
      APIs to manage the entire card payment flow — from creation to refund —
      for full control over your checkout and post-purchase experience.


      **Supported use cases:**

      - Create card payments

      - Show payment status

      - Cancel or void payments (cancel full amount)

      - Partially or fully refund payments

      - Capture pre-authorised payments(full amount)


      **Additional features:**

      - Webhook notifications on payment status changes

      - Post-purchase payment flows for upsell scenarios


      Ideal for partners integrating custom checkout, upsell pages, or payment
      reconciliation flows.
paths:
  /v2/cards/void_payment:
    post:
      tags:
        - Cards
      summary: Void Payment
      description: >
        This endpoint voids a previously authorised card payment before it is
        captured.


        Only payments in `authorised` status can be voided. Once voided, the
        status will be updated to `failed`.


        ⚠️ Voiding is only allowed **before capture**. If a payment has already
        been captured or is in a final state, this operation will return an
        error.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - uuid
              properties:
                uuid:
                  type: string
                  description: The unique ID of the authorised payment (e.g., `VMMAOTFQ`).
                  example: PSADT5CE
      responses:
        '200':
          description: Void successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/void'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
              example:
                errors:
                  code: REQUIRE_LOGIN
                  message: Not Authorised
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      message:
                        type: string
              example:
                errors:
                  message: >-
                    Transaction must be in authorised status before it can be
                    voided.
components:
  schemas:
    void:
      type: object
      properties:
        uuid:
          type: string
          example: 7PPPMXIGH
        name:
          type: string
          example: Testing
        email:
          type: string
          example: test@example.com
        external_id:
          type: string
          example: wc_order_6C1hcvg4T7Pom
        status:
          type: string
          enum:
            - pending
            - authorised
            - waiting
            - received
            - expired
            - return_pending
            - return_expired
            - partially_refunded
            - return_received
            - return_rejected
            - failed
            - in_dispute
            - dispute_lost
          example: failed
        pay_code:
          type: object
          nullable: true
          properties:
            3ds_url:
              type: string
              example: https://3ds-auth.example.com/verify
        currency:
          type: string
          example: USD
        amount:
          type: number
          example: 10000
        total:
          type: number
          example: 10000
        paid_amount:
          type: number
          example: 0
        is_refundable:
          type: boolean
          example: false
        payment_method:
          type: string
          example: card
        expired_at:
          type: string
          example: ''
        webhook_notification:
          type: object
          properties:
            endpoint_url:
              type: string
              example: https://webhook.site/456adb8f-4407-4bce-90fe-2c431db19696
            authorization_header:
              type: string
              example: '****'
        refund_information:
          type: object
          properties:
            total_amount:
              type: number
            refund_amount:
              type: number
            description:
              type: string
        sender_details:
          type: object
          properties:
            card:
              type: object
              properties:
                card_type:
                  type: string
                  example: card
                card_brand:
                  type: string
                  example: visa
                card_last_4:
                  type: string
                  example: '4242'
                card_country:
                  type: string
                  example: US
        created_at:
          type: string
          format: date-time
          example: 2025-05-28T04:22:21.567+0000
  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

- [Issue and Manage Card Payments](/developer-reference/api-use-cases/issue-and-manage-cards.md)
- [How Card Payments Work](/platform-overview/payment-concepts/how-cards-work.md)
- [Card Payment API Overview](/api/card/overview.md)
