openapi: 3.1.0 info: version: 2.1.0 title: PayU GPO Europe REST Authorize Marketplace-Verification 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: Marketplace-Verification x-displayName: Marketplace Verification description: PayU is required by the Anti-Money Laundering Act to verify customers in this context. For this purpose, we provide a collection of endpoints to make it easier for you to verify sellers. paths: /api/aml-verification/v1/verification-advice: get: tags: - Marketplace-Verification summary: Retrieve Verification Advice description: Verify, on the basis of a Personal Identification Number or NIP number, whether a given individual/company has already been registered in the PayU system. operationId: retrieve-marketplace-verification-advice parameters: - name: companyTaxId in: query required: true description: Company tax id of a entity. Required if you want to check a status of a company. content: application/json: schema: type: string - name: pesonalIdentificationNumber in: query required: true description: Personal identification number of individual. Required if you want to check a status of a private person. 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: Advised verify action. content: application/json: schema: type: object properties: advice: type: string enum: - FULL_ONBOARDING_REQUIRED - BANK_ACCOUNT_VERIFICATION_REQUIRED description: '* **FULL_ONBOARDING_REQUIRED** - full boarding process required, * **BANK_ACCOUNT_VERIFICATION_REQUIRED** - only a verification transfer is required for verification purposes. ' '400': x-summary: Bad request description: Invalid input query values. content: application/json: schema: $ref: '#/components/schemas/400' '404': x-summary: Not found description: Marketplace not found. content: application/json: schema: $ref: '#/components/schemas/401' /api/aml-verification/v1/verification: get: tags: - Marketplace-Verification summary: Retrieve Marketplace Verification Status description: Retrieve the status of the verification with the specific `Id`. operationId: retrieve-marketplace-verification-status parameters: - name: id in: query description: Value of the query `id` parameter is the same as the `verificationId`. example: aZl6Ja required: true 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: Verification found. Http 200 will return body which will contain one of below statuses. content: application/json: schema: $ref: '#/components/schemas/200' '404': x-summary: Not found description: Verification not found. content: application/json: schema: $ref: '#/components/schemas/404' post: tags: - Marketplace-Verification summary: Create Marketplace Verification description: Initialize the verification process of the seller. operationId: create-marketplace-verification parameters: - 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: - sellerId - type properties: sellerId: type: string description: Unique id of seller (submerchant) given by marketplace side. This id must be constant for every verification concerning the same seller (submerchant). maxLength: 50 type: type: string description: 'Verification type. Possible values descriptions:
fileId of translation of documents (Polish or English documents do not need to be translated).
format: String[]
items:
type: string
responses:
'204':
x-summary: No Content
description: SUCCESS
'400':
x-summary: Bad request
description: Invalid input. Reason specified in content.
content:
application/json:
schema:
$ref: '#/components/schemas/400'
'404':
x-summary: Not found
description: Verification not found.
content:
application/json:
schema:
$ref: '#/components/schemas/404'
'409':
x-summary: Conflict
description: Verification state does not allow operation.
content:
application/json:
schema:
$ref: '#/components/schemas/409'
/api/aml-verification/v1/dataloading/associates/documents:
post:
tags:
- Marketplace-Verification
summary: Add Associates Documents
description: Upload required documents for associates (representatives or beneficiaries).
operationId: add-associates-documents
parameters:
- 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:
- verificationId
- associateId
- type
- files
- documentId
properties:
verificationId:
type: string
description: Unique id of the verification provided by PayU.
maxLength: 18
associateId:
type: string
description: Unique id of an associate assigned by the Marketplace.
maxLength: 100
type:
type: string
description: Document type.
enum:
- ID_CARD
- PASSPORT
- DRIVING_LICENCE
- RESIDENCE_PERMIT
- OTHER_DOCUMENT
- PEP_STATEMENT
files:
type: array
description: List of file ids given in a response to the dataloading/files request. Can be many IDs in this field when one document contains many files.
format: String[]
items:
type: string
documentId:
type: string
description: Unique document ID assigned by the Marketplace.
maxLength: 100
documentNumber:
type: string
description: Serial number of the provided document.
maxLength: 100
issueDate:
type: string
description: Issue date of the document.
format: YYYY-MM-DD
expireDate:
type: string
description: Expiry date of the document.
format: YYYY-MM-DD
note:
type: string
description: ''
maxLength: 255
translationFiles:
type: array
description: '`fileId` of translation of documents (Polish or English documents do not need to be translated)'
format: String[]
items:
type: string
responses:
'204':
x-summary: No Content
description: SUCCESS
'400':
x-summary: Bad request
description: Invalid input. Reason specified in content.
content:
application/json:
schema:
$ref: '#/components/schemas/400'
'404':
x-summary: Not found
description: Verification not found.
content:
application/json:
schema:
$ref: '#/components/schemas/404'
'409':
x-summary: Conflict
description: Verification state does not allow operation.
content:
application/json:
schema:
$ref: '#/components/schemas/409'
/api/aml-verification/v1/verification-transfers/manual:
post:
tags:
- Marketplace-Verification
summary: Create Order for Verification Transfer
description: Create an order for the verification transfer service. In response you will be provided with the bank account details to make the transfer.
operationId: create-order-for-verification-transfer
parameters:
- 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:
- verificationId
properties:
verificationId:
type: string
description: Unique id of the verification provided by PayU.
maxLength: 18
example: verification-123
transferCurrency:
type: string
description: ''
example: PLN
email:
type: string
description: ''
example: user@example.com
language:
type: string
description: Changes the language of the sent email message. Possible values you can find in languages table.
responses:
'201':
x-summary: Created
description: Details for bank transfer.
content:
application/json:
schema:
type: object
properties:
verificationTransferId:
type: string
description: ''
example: 5f7007da-8e05-4f0f-9503-05c053034bde
expirationTime:
type: string
description: ''
example: '2020-08-20T14:03:44.473Z'
transferData:
type: object
description: ''
properties:
bankName:
type: string
description: ''
example: mBank S.A.
accountNumber:
type: string
description: ''
example: PL12114011243630011718031748
swiftCode:
type: string
description: ''
example: BREXPLPW
recipientName:
type: string
description: ''
example: PayU S.A.
recipientAddress:
type: string
description: ''
example: ul. Grunwaldzka 186, 60-166 Poznań
transferTitle:
type: string
description: ''
example: Verification transfer XX1718031748XX
transferAmount:
type: integer
description: ''
example: 101
transferCurrency:
type: string
description: ''
example: PLN
'400':
x-summary: Bad request
description: Error encountered during posting the data for verification.
content:
application/json:
schema:
$ref: '#/components/schemas/400'
'403':
x-summary: Forbidden
description: Error encountered during posting the data for verification.
content:
application/json:
schema:
$ref: '#/components/schemas/403'
'404':
x-summary: Not found
description: Error encountered during posting the data for verification.
content:
application/json:
schema:
$ref: '#/components/schemas/404'
/api/aml-verification/v1/dataloading/payouts/bankAccountData:
post:
tags:
- Marketplace-Verification
summary: Add Bank Account for Payouts
description: Send bank account data for the payouts.
operationId: add-bank-account-for-payouts
parameters:
- 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:
oneOf:
- $ref: '#/components/schemas/PayoutWithVerificationTransfer'
- $ref: '#/components/schemas/PayoutWithoutVerificationTransfer'
- $ref: '#/components/schemas/PayoutBankStatement'
responses:
'204':
x-summary: No Content
description: SUCCESS
'400':
x-summary: Bad request
description: Error encountered during posting the data for verification
content:
application/json:
schema:
$ref: '#/components/schemas/400'
'403':
x-summary: Forbidden
description: Error encountered during posting the data for verification
content:
application/json:
schema:
$ref: '#/components/schemas/403'
'404':
x-summary: Not found
description: Error encountered during posting the data for verification
content:
application/json:
schema:
$ref: '#/components/schemas/404'
'409':
x-summary: Conflict
description: Verification state does not allow operation.
content:
application/json:
schema:
$ref: '#/components/schemas/409'
/api/aml-verification/v1/dataloading/payouts/payoneer:
post:
tags:
- Marketplace-Verification
summary: Add Payoneer Account for Payouts
description: Send bank account data for the payouts. Method is reserved for the users who have verified Payoneer account.
operationId: add-payoneer-account-for-payouts
parameters:
- 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:
- bankDataId
- verificationId
- payoneerId
properties:
bankDataId:
type: string
description: Id of the bank account details assigned by marketplace.
maxLength: 100
example: acc1sd
verificationId:
type: string
description: Unique id of the verification provided by PayU.
maxLength: 18
example: hfs6sfa
payoneerId:
type: string
maxLength: 50
description: Id of the account of the submerchant in the Payoneer.
responses:
'204':
x-summary: No Content
description: SUCCESS
'400':
x-summary: Bad request
description: Invalid input. Reason specified in content.
content:
application/json:
schema:
$ref: '#/components/schemas/400'
'404':
x-summary: Forbidden
description: Verification not found.
content:
application/json:
schema:
$ref: '#/components/schemas/404'
'409':
x-summary: Conflict
description: Verification state does not allow operation.
content:
application/json:
schema:
$ref: '#/components/schemas/409'
/api/aml-verification/v1/dataloading/payouts/worldfirst:
post:
tags:
- Marketplace-Verification
summary: Add Worldfirst Account for Payouts
description: Send bank account data for the payouts. Method is reserved for the users who have verified Worldfirst account.
operationId: add-worldfirst-account-for-payouts
parameters:
- 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:
- bankDataId
- verificationId
- referenceCustomerId
properties:
bankDataId:
type: string
description: Id of the bank account details assigned by marketplace.
maxLength: 100
example: acc1sd
verificationId:
type: string
description: Unique id of the verification provided by PayU.
maxLength: 18
example: hfs6sfa
referenceCustomerId:
type: string
description: Id of the account binding between the marketplace and the WorldFirst.
responses:
'204':
x-summary: No Content
description: SUCCESS
'400':
x-summary: Bad request
description: Invalid input. Reason specified in content.
content:
application/json:
schema:
$ref: '#/components/schemas/400'
'404':
x-summary: Forbidden
description: Verification not found.
content:
application/json:
schema:
$ref: '#/components/schemas/404'
'409':
x-summary: Conflict
description: Verification state does not allow operation.
content:
application/json:
schema:
$ref: '#/components/schemas/409'
/api/aml-verification/v1/verification/complete:
post:
tags:
- Marketplace-Verification
summary: Complete Marketplace Verification
description: Inform PayU about completing verification process.
operationId: complete-marketplace-verification
parameters:
- 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:
- verificationId
properties:
verificationId:
type: string
description: Unique id of the verification provided by PayU.
maxLength: 18
example: hfs6sfa
responses:
'204':
x-summary: No Content
description: SUCCESS
'400':
x-summary: Bad request
description: Invalid input. Reason specified in content.
content:
application/json:
schema:
$ref: '#/components/schemas/400'
'404':
x-summary: Not found
description: Verification not found.
content:
application/json:
schema:
$ref: '#/components/schemas/404'
'409':
x-summary: Conflict
description: Verification state does not allow operation.
content:
application/json:
schema:
$ref: '#/components/schemas/409'
/api/aml-verification/v1/verification/cancel:
post:
tags:
- Marketplace-Verification
summary: Cancel Verification
description: Cancel verification on every step of verification providing the reason.
operationId: cancel-marketplace-verification
parameters:
- 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:
- verificationId
properties:
verificationId:
type: string
description: Unique id of the verification provided by PayU.
maxLength: 18
example: hfs6sfa
rejectionReasonComment:
type: string
description: Reason for cancelling verification.
responses:
'204':
x-summary: No Content
description: SUCCESS
'404':
x-summary: Not found
description: Verification not found.
content:
application/json:
schema:
$ref: '#/components/schemas/404'
'409':
x-summary: Conflict
description: Verification state does not allow cancel.
content:
application/json:
schema:
$ref: '#/components/schemas/409'
components:
schemas:
'401':
type: object
properties:
status:
type: object
properties:
statusCode:
type: string
description: Error type.
code:
type: string
description: Identification code of specific error.
codeLiteral:
type: string
description: Cause of the error.
statusDesc:
type: string
description: Error description.
CompanyData:
type: object
description: Submerchant's data (if submerchant is a company).
required:
- verificationId
- sellerId
- companyName
- taxId
- legalForm
- address
- email
properties:
verificationId:
type: string
description: Unique id of the verification provided by PayU.
maxLength: 18
example: aZx65uY
sellerId:
type: string
description: Unique id of seller (submerchant) given by marketplace side. This id must be constant for every verification concerning the same (submerchant).
maxLength: 50
example: seller_1"
email:
type: string
description: Contact email.
minLength: 5
maxLength: 80
example: company@test.com
phone:
type: string
description: Contact phone.
maxLength: 40
example: '111222333'
taxId:
type: string
description: Tax id.
format: no spaces, eg. 1122334455
maxLength: 60
example: '1122334455'
companyName:
type: string
description: Name of the company.
maxLength: 80
example: Company 1
legalForm:
type: string
description: FOREIGN_COMPANY type has been deprecated.
enum:
- AGENCY_OF_FOREIGN_COMPANY
- ASSOCIATION
- CHURCH_LEGAL_PERSON
- CIVIL_LAW_PARTNERSHIP
- COOPERATIVE
- EDUCATIONAL_INSTITUTION
- FOUNDATION
- GENERAL_PARTNERSHIP
- JOINT_STOCK_COMPANY
- LIMITED_JOINT_STOCK_PARTNERSHIP
- LIMITED_LIABILITY_COMPANY
- LIMITED_LIABILITY_PARTNERSHIP
- LIMITED_PARTNERSHIP
- LOCAL_GOVERNMENT_UNIT
- PRIVATE_PERSON
- PROFESSIONAL_PARTNERSHIP
- LOCAL_GOVERNMENT_CULTURE_INSTITUTION
- RESEARCH_INSTITUTE
- SOLE_TRADER
- OTHER
example: CIVIL_LAW_PARTNERSHIP
gusCode:
type: string
description: Code relating to the legal form. For more information see the site of the Główny Urząd Statystyczny.
maxLength: 50
registryNumber:
type: string
description: Company registry number (eg REGON in Poland).
maxLength: 40
registrationDate:
type: string
format: YYYY-MM-DD
description: Company registration date in the registries.
example: '2019-07-07'
address:
type: object
description: Address of the company.
required:
- country
properties:
street:
type: string
description: Street with building and apartment number. Required for full verification.
maxLength: 255
example: Grunwaldzka 186
zipcode:
type: string
description: Company's address zipcode. Required for full verification.
maxLength: 20
example: 60-166
city:
type: string
description: Required for full verification.
maxLength: 40
example: Poznan
country:
type: string
description: Two letter ISO country code.
maxLength: 80
example: PL
'200':
type: object
description: ''
properties:
verificationId:
type: string
description: ''
example: 5002500000BVmycAAD
verificationType:
type: string
description: ''
example: FULL
verificationTransferStatus:
type: string
description: 'Indicates status of the verification transfer.
* **Success** - transfer was received by PayU.
* **Failure** - PayU did not received funds
* **Matched** - transfer has been matched properly.
* **null** - did not have enough information about the transfer.
'
enum:
- Success
- Failure
- Matched
- 'null'
example: 'null'
processType:
type: string
description: Type of the process.
enum:
- OCCASIONAL
- REGULAR
example: OCCASIONAL
status:
type: string
description: 'Possible statuses: endpoint.