PayU Refund API

The PayU system fully supports refunds for the processed payments, the balance of which is transferred directly to the buyer's account.

OpenAPI Specification

payu-refund-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 2.1.0
  title: PayU GPO Europe REST Authorize Refund API
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  x-logo:
    url: https://poland.payu.com/wp-content/themes/global-website/assets/src/images/payu-logo.svg
  description: '# Overview


    This reference is designed to assist you in effectively utilizing the PayU REST API to enhance your online payment capabilities. Whether you''re running an e-commerce store or developing applications that require secure and seamless payment processing, our API offers a range of features to meet your needs.


    Our API offers a comprehensive set of endpoints to empower you with full control over your payment processes. With these endpoints, you can seamlessly create, capture, cancel, and retrieve orders, conduct payouts, and access essential reports.


    For more details on the integration, please refer to the official <a href="/europe/docs/">PayU documentation</a>. It provides comprehensive explanations, code samples, and best practices for seamless integration of the PayU API into your applications.


    ## Testing


    ### Production Environment


    For a basic integration, including only a redirection to PayU hosted payment page, it is perfectly enough to use the public test point of sale. However, if you would like to test a full set of endpoints, including e.g. refunds, consider registering for a sandbox account.


    **Public Test POS (point of sale)**


    | Key name                       |                            Value |

    | ------------------------------ | -------------------------------: |

    | POS ID (pos_id)                |                           145227 |

    | OAuth protocol - client_id     |                           145227 |

    | Second key (MD5)               | 13a980d4f851f3d9a1cfc792fb1f5e50 |

    | OAuth protocol - client_secret | 12f071174cb7eb79d4aac5bc2f07563f |


    ### Sandbox Environment


    Sandbox is an almost identical copy of PayU production system. It can be used for integration and testing purposes.


    **Public Test POS (Point of Sale)**


    Although it is best to <a href="https://registration-merch-prod.snd.payu.com/boarding/#/registerSandbox/" target="_blank">create your own account</a> to later be able to configure it as needed, you may also use a public sandbox test POS without registering:


    | Key name                       |                            Value |

    | ------------------------------ | -------------------------------: |

    | POS ID (pos_id)                |                           300746 |

    | OAuth protocol - client_id     |                           300746 |

    | Second key (MD5)               | b6ca15b0d1020e8094d9b5f8d163db54 |

    | OAuth protocol - client_secret | 2ee86a66e5d97e3fadc400c9f19b065d |


    The availability of the sandbox environment can be checked on the <a href="https://status.snd.payu.com/" target="_blank">Status page</a>.


    **Testing Card Payments**


    In order to test card payments on sandbox, please use credentials displayed on the <a href="/europe/docs/testing/sandbox/" target="_blank">Sandbox</a> documentation page.'
servers:
- url: https://secure.payu.com
  description: Production Server
- url: https://secure.snd.payu.com
  description: Sandbox Test Server
security:
- Bearer:
  - client_credentials
tags:
- name: Refund
  description: The PayU system fully supports refunds for the processed payments, the balance of which is transferred directly to the buyer's account.
paths:
  /api/v2_1/orders/{orderId}/refunds:
    post:
      tags:
      - Refund
      summary: Create a Refund
      description: Create new refund - this request is idempotent, so if exactly same data will be provided, response will return data of already previously created refund instead of creating new refund.
      operationId: create-a-refund
      parameters:
      - name: orderId
        in: path
        example: WZGF5FFDRJ140731GUEST000P01
        description: Order ID generated by the PayU system
        required: true
        schema:
          type: string
        content:
          application/json:
            schema:
              type: string
      - name: Content-Type
        in: header
        description: Content type
        required: true
        schema:
          type: string
        style: simple
        example: application/json
      - name: Authorization
        in: header
        description: Auth token
        required: true
        schema:
          type: string
        style: simple
        example: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - refund
              properties:
                refund:
                  type: object
                  required:
                  - description
                  description: Contains detailed information about a refund.
                  properties:
                    description:
                      type: string
                      description: Refund description.
                      example: Test refund
                    amount:
                      type: string
                      description: "Amount of the refund. If this is left blank, all funds will be returned to the buyer. \n\nSpecify prices using the **lowest currency unit**. For instance, in the case of PLN (Polish Złoty), the lowest currency unit is the penny, which equals 1/100 PLN. Therefore, if the price is 1000 in the lowest currency unit, it would be equivalent to 10 PLN. However, HUF (Hungarian Forint) is an exception to this rule. For HUF, you should multiply the amount by 100.\n"
                      example: '10000'
                    extRefundId:
                      type: string
                      description: External refund ID.
                      example: 3e5cac39-7e38-4139-8fd6-30adc06a61bd
                    currencyCode:
                      type: string
                      description: Currency code compliant with ISO 4217.
                      example: PLN
                    bankDescription:
                      type: string
                      description: Bank operation description.
                      example: Bank transfer refund
                    type:
                      type: string
                      description: Specifies the method by which the refund will be processed:<ul> <li><b>REFUND_PAYMENT_STANDARD</b> – The standard refund procedure.</li> <li><b>FAST</b> – An expedited refund process that may incur higher fees. <b>Available only to merchants operating through PayU GPO Romania</b>.</li> </ul>
                      enum:
                      - REFUND_PAYMENT_STANDARD
                      - FAST
                      default: REFUND_PAYMENT_STANDARD
                      example: REFUND_PAYMENT_STANDARD
      responses:
        '200':
          x-summary: OK
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  orderId:
                    type: string
                    description: ID of refunded order.
                    example: WZGF5FFDRJ140731GUEST000P01
                  refund:
                    type: object
                    description: Refund details.
                    properties:
                      refundId:
                        type: string
                        description: Refund identifier.
                        example: '5000000142'
                      description:
                        type: string
                        description: Refund description
                        example: Test refund
                      amount:
                        type: string
                        description: Amount of the refund. If this is left blank, all funds will be returned to the buyer.
                        example: '10000'
                      extRefundId:
                        type: string
                        description: External refund ID.
                        example: 3e5cac39-7e38-4139-8fd6-30adc06a61bd
                      currencyCode:
                        type: string
                        description: Currency code compliant with ISO 4217.
                        example: PLN
                      bankDescription:
                        type: string
                        description: Bank operation description.
                        example: Bank transfer refund
                      creationDateTime:
                        type: string
                        description: Date of refund creation.
                        example: '2020-07-02T09:19:03.896+02:00'
                      status:
                        type: string
                        description: Refund status code.
                        enum:
                        - PENDING
                        - CANCELED
                        - FINALIZED
                        example: PENDING
                      statusDatetime:
                        type: string
                        description: Timestamp of the status.
                        example: '2020-07-02T09:19:04.013+02:00'
                  status:
                    type: object
                    properties:
                      statusCode:
                        type: string
                        description: Status of the refund.
                        example: SUCCESS
                      statusDesc:
                        type: string
                        description: Description og given status.
                        example: Refund queued for processing
        '400':
          x-summary: Bad request
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400'
        '401':
          x-summary: Unauthorized
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404'
    get:
      tags:
      - Refund
      summary: Retrieve ALL Refunds Data for the Specified Order
      operationId: retrieve-all-refunds-for-the-specified-order
      parameters:
      - name: orderId
        in: path
        example: WZHF5FFDRJ140731GUEST000P01
        description: Order ID generated by the PayU system
        required: true
        schema:
          type: string
        content:
          application/json:
            schema:
              type: string
      - name: Content-Type
        in: header
        description: Content type
        required: true
        schema:
          type: string
        style: simple
        example: application/json
      - name: Authorization
        in: header
        description: Auth token
        required: true
        schema:
          type: string
        style: simple
        example: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd
      responses:
        '200':
          x-summary: OK
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                - $ref: '#/components/schemas/refundRetrievePending'
                - $ref: '#/components/schemas/refundRetrieveCanceled'
        '404':
          x-summary: Not Found
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: object
                    properties:
                      statusCode:
                        type: string
                        description: Error type.
                      severity:
                        type: string
                      statusDesc:
                        type: string
                        description: Error description.
  /api/v2_1/orders/{orderId}/refunds/{refundId}:
    get:
      tags:
      - Refund
      summary: Retrieve Specific Refund Data
      operationId: retrieve-specific-refund
      parameters:
      - name: orderId
        in: path
        example: WZHF5FFDRJ140731GUEST000P01
        description: Order ID generated by the PayU system
        required: true
        schema:
          type: string
        content:
          application/json:
            schema:
              type: string
      - name: refundId
        in: path
        example: '5000000142'
        description: Refund identifier in the PayU system.
        required: true
        schema:
          type: string
        content:
          application/json:
            schema:
              type: string
      - name: Content-Type
        in: header
        description: Content type
        required: true
        schema:
          type: string
        style: simple
        example: application/json
      - name: Authorization
        in: header
        description: Auth token
        required: true
        schema:
          type: string
        style: simple
        example: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd
      responses:
        '200':
          x-summary: OK
          description: ''
          content:
            application/json:
              schema:
                type: object
                discriminator:
                  propertyName: status
                  mapping:
                    FINALIZED: '#/components/schemas/refundRetrieveFinalized'
                    PENDING: '#/components/schemas/refundRetrievePending'
                    CANCELED: '#/components/schemas/refundRetrieveCanceled'
                anyOf:
                - $ref: '#/components/schemas/refundRetrieveFinalized'
                - $ref: '#/components/schemas/refundRetrievePending'
                - $ref: '#/components/schemas/refundRetrieveCanceled'
        '401':
          x-summary: Unauthorized
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404'
        '404':
          x-summary: Not Found
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: object
                    properties:
                      statusCode:
                        type: string
                        description: Error type.
                      severity:
                        type: string
                      statusDesc:
                        type: string
                        description: Error description.
components:
  schemas:
    refundRetrieveCanceled:
      type: object
      properties:
        refundId:
          type: string
          description: ID of the refund
          example: '5000000142'
        extRefundId:
          type: string
          description: External refund ID.
          example: hdjJduUEEH2
        amount:
          type: string
          description: Amount of the refund. If this is left blank, all funds will be returned to the buyer.
          example: 10000
        description:
          type: string
          description: Refund description
          example: Refund for order <orderId>
        creationDateTime:
          type: string
          description: Date of refund creation.
          example: '2020-07-02T09:19:03.896+02:00'
        currencyCode:
          type: string
          description: Currency code compliant with ISO 4217.
        statusDatetime:
          type: string
          description: Timestamp of the status.
          example: '2020-07-02T09:19:04.016+02:00'
        status:
          type: string
          description: Refund status code.
        statusError:
          type: object
          description: Information about error.
          properties:
            code:
              type: string
              description: Error type.
            description:
              type: string
              description: Error information.
    '400':
      type: object
      properties:
        status:
          type: object
          properties:
            statusCode:
              type: string
              description: Error type.
            severity:
              type: string
              description: error severity type.
            code:
              type: string
              description: Identification code of specific error.
            codeLiteral:
              type: string
              description: Cause of the error.
            statusDesc:
              type: string
              description: Error description.
    refundRetrievePending:
      type: object
      properties:
        refundId:
          type: string
          description: ID of the refund
          example: '5000000142'
        extRefundId:
          type: string
          description: External refund ID.
          example: hdjJduUEEH2
        amount:
          type: string
          description: Amount of the refund. If this is left blank, all funds will be returned to the buyer.
          example: 10000
        description:
          type: string
          description: Refund description
          example: Refund for order <orderId>
        creationDateTime:
          type: string
          description: Date of refund creation.
          example: '2020-07-02T09:19:03.896+02:00'
        currencyCode:
          type: string
          description: Currency code compliant with ISO 4217.
        statusDatetime:
          type: string
          description: Timestamp of the status.
          example: '2020-07-02T09:19:04.016+02:00'
        status:
          type: string
          description: Refund status code.
          example: PENDING
    '404':
      type: object
      properties:
        status:
          type: object
          properties:
            statusCode:
              type: string
              description: Error type.
            severity:
              type: string
              description: error severity type.
            statusDesc:
              type: string
              description: Error description.
    refundRetrieveFinalized:
      type: object
      properties:
        refundId:
          type: string
          description: ID of the refund
          example: '5000000142'
        extRefundId:
          type: string
          description: External refund ID.
          example: hdjJduUEEH2
        amount:
          type: string
          description: Amount of the refund. If this is left blank, all funds will be returned to the buyer.
          example: 10000
        description:
          type: string
          description: Refund description
          example: Refund for order <orderId>
        creationDateTime:
          type: string
          description: Date of refund creation.
          example: '2020-07-02T09:19:03.896+02:00'
        currencyCode:
          type: string
          description: Currency code compliant with ISO 4217.
        statusDatetime:
          type: string
          description: Timestamp of the status.
          example: '2020-07-02T09:19:04.016+02:00'
        status:
          type: string
          description: Refund status code.
          example: FINALIZED
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
    Basic:
      type: http
      scheme: basic