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 PayU documentation. 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 create your own account 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 Status page.
**Testing Card Payments**
In order to test card payments on sandbox, please use credentials displayed on the Sandbox 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:
- REFUND_PAYMENT_STANDARD – The standard refund procedure.
- FAST – An expedited refund process that may incur higher fees. Available only to merchants operating through PayU GPO Romania.
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
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
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
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