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: 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