Introduction
The PGW payment gateway provides both an API and Hosted payment page solutions. This documentation shows how to operate with our web services(SOAP) and REST API. By using our API, you can handle payments on your website without re-direction to a gateway hosted payment page. Transaction requests are sent online, in real-time.
- SOAP Endpoit:
https://{$GATEWAY}/merchant-processing-1/MerchantService- text/xml
- REST Endpoint:
https://{$GATEWAY}/merchant-processing-1/{operation}- application/json
- application/xml
- application/fastinfoset
Authentication
API users are authenticated using HTTP Basic authentication.
Example of using the API via curl
curl \
--data "$SOAP_REQUEST" \
-H "Content-Type: text/xml" \
--user {$API_USERNAME}:{$API_PASSWORD} \
https://{$SOAP_ENDPOINT}
curl \
--data "$JSON_REQUEST" \
-H 'Accept: application/json' -H "Content-Type: application/json" \
--user {$API_USERNAME}:{$API_PASSWORD} \
https://{$REST_ENDPOINT}
curl \
--data "$XML_REQUEST" \
-H 'Accept: application/xml' -H "Content-Type: application/xml" \
--user {$API_USERNAME}:{$API_PASSWORD} \
https://{$REST_ENDPOINT}
curl \
--data "$FI_REQUEST" \
-H 'Accept: application/fastinfoset' -H "Content-Type: application/fastinfoset" \
--user {$API_USERNAME}:{$API_PASSWORD} \
https://{$REST_ENDPOINT}
Operations
authorization
Allows the merchant to request the desired amount from the card, which is then invoiced for the transaction. This method gives the bank authorization to collect the funds from the customer.
Request parameters:
| Parameter | Type | Size | Comment | Requirement |
|---|---|---|---|---|
| merchant-transaction-id | string | 1…32 | ID of the transaction in the merchant's system | Required |
| description | string | 5…512 | Description of the transaction. This field is required only for certain acquirers | Conditional Required |
| customer | Customer | Some information about the client of the merchant (buyer) | Required | |
| amount | Amount | > 0 | Amount | Required |
| card | Card | Card data | Required | |
| order | Order | Order details | Required | |
| shipping | Shipping | Shipping information | Optional | |
| recurring-type | string | Indicator of the recurring transaction. Can be INITIAL or REPEATED | Optional | |
| parent-transaction-id | string | ID of the parent pgw transaction. Example: 7bb2bafb-fbc0-410f-9965-81489a2b3bf2 | Optional | |
| threed | ThreeDResponse or ThreeDInfo | 3D Secure verification information. Use this field if you are using external 3DS provider. | Optional | |
| return-url | string | In case of asynchronous transaction, buyer will be redicted to this URL. Example: https://example.com/return | Optional | |
| notification-url | string | Merchant will be notified about the status of this transaction to this URL. Example: https://example.com/notify. If you want to use this field, please contact us to whitelist your domain. | Optional |
Response parameters:
See Response.
authorization request:
{
"description": "Test transaction 1491398548846",
"merchant-transaction-id": "729016fb-a7f3-467e-a2b0-72d0554b263d",
"customer": {
"id": "a48481d5-4ee3-4be2-a9bf-e38e514ed8c9",
"ip": "192.168.1.98"
},
"amount": {
"value": 4.25,
"currency": "EUR"
},
"card": {
"number": "4111111111111111",
"holder": "John Test",
"expiration-date": "2021-01",
"security-code": "123"
},
"order": {
"name": "Jonh Test",
"country": "US",
"region": "US-GA",
"city": "Macon",
"postal-code": "20815",
"street-line1": "71 Pilgrim Avenue",
"phone": "+1-541-754-3010",
"email": "test@test.com"
},
"return-url": "https://example.site/webhook"
}
preauthorization
Reserves the desired amount on the card of the buyer. The amount will be blocked on the card. It will remain in that state until captured or until the block expires.
Request parameters:
Parameters of this method are the same as Authorization().
Response parameters:
See Response.
capture
Collects the funds due from previously completed pre-authorizations. In other words it finalizes pre-authorizations.
Request parameters:
| Parameter | Type | Size | Comment | Requirement |
|---|---|---|---|---|
| merchant-transaction-id | string | 1…32 | ID of the transaction in the merchant's system | Required |
| description | string | 5…512 | Description of the transaction | Required |
| amount | decimal | > 0 | Amount | Optional |
capture request:
{
"description": "capture transaction TEST1491398548846",
"merchant-transaction-id": "729016fb-a7f3-467e-a2b0-72d0554b263d"
}
Response parameters:
See Response.
capture response:
{
"status-code": "SUCCESS",
"transaction-id": "7bb2bafb-fbc0-410f-9965-81489a2b3bf2",
"merchant-transaction-id": "729016fb-a7f3-467e-a2b0-72d0554b263d"
}
refund
Returns funds to the buyer's card that were already collected by an authorization() or a capture().
| Parameter | Type | Size | Comment | Requirement |
|---|---|---|---|---|
| merchant-transaction-id | string | 1…32 | ID of the transaction in the merchant's system | Required |
| description | string | 5…512 | Description of the transaction | Required |
| amount | decimal | > 0 | Amount | Optional |
| card | Card | Credit card data. Can be used if the card with authorization is already expired. | Optional |
Response parameters:
See Response.
refund request:
{
"description": "capture transaction TEST1491398548846",
"merchant-transaction-id": "729016fb-a7f3-467e-a2b0-72d0554b263d"
}
refund response:
{
"status-code": "SUCCESS",
"transaction-id": "7bb2bafb-fbc0-410f-9965-81489a2b3bf2",
"merchant-transaction-id": "729016fb-a7f3-467e-a2b0-72d0554b263d"
}
void
Cancels an existing transaction. Must be submitted before any transaction settlement has taken place.
| Parameter | Type | Size | Comment | Requirement |
|---|---|---|---|---|
| merchant-transaction-id | string | 1…32 | ID of the transaction in the merchant's system | Required |
| description | string | 5…512 | Description of the transaction | Required |
| transaction-id | string | PGW transaction id. Example: 7bb2bafb-fbc0-410f-9965-81489a2b3bf2 | Optional | |
| transaction-type | string | Any TransactionType except VOID | Optional |
Response parameters:
See Response.
void request:
{
"merchant-transaction-id": "4c2cf5fd-6984-4700-98fa-9f29ff716e8c",
"description": "Payment 22",
"transaction-id": "7bb2bafb-fbc0-410f-9965-81489a2b3bf2",
"transaction-type": "AUTHORIZATION"
}
void response:
{
"status-code": "SUCCESS",
"transaction-id": "7bb2bafb-fbc0-410f-9965-81489a2b3bf2",
"merchant-transaction-id": "729016fb-a7f3-467e-a2b0-72d0554b263d"
}
get-status
Checks transaction status. Returns the result of the transaction.
One of:
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| merchant-transaction-id | string | 1…32 | ID of the transaction in the merchant's system | Required |
| transaction-type | string | TransactionType | Optional |
Or:
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| transaction-id | string | PGW transaction id. Example: 7bb2bafb-fbc0-410f-9965-81489a2b3bf2 | Required |
Response parameters:
See Response.
get-status request:
{
"merchant-transaction-id": "4c2cf5fd-6984-4700-98fa-9f29ff716e8c",
"description": "Payment 22",
"transaction-id": "7bb2bafb-fbc0-410f-9965-81489a2b3bf2",
"transaction-type": "AUTHORIZATION"
}
get-status response:
{
"status-code": "SUCCESS",
"transaction-id": "7bb2bafb-fbc0-410f-9965-81489a2b3bf2",
"merchant-transaction-id": "729016fb-a7f3-467e-a2b0-72d0554b263d"
}
Response
Describes the answer of the gateway for the request sent to PGW via API.
Common response fields
| Name | Data Type | Comment | Requirement |
|---|---|---|---|
| status-code | string | Status code: SUCCESS, WARNING, FAILURE, IN_PROGRESS | Required |
| transaction-id | string | PGW transaction id. Example: 7bb2bafb-fbc0-410f-9965-81489a2b3bf2 | Required |
| merchant-transaction-id | string | ID of the transaction in the merchant's system | Required |
| error | Array of TransactionError | Complex field describing the error | Optional |
| acquirer-transaction-id | string | Transaction ID in the acquirer system | Optional |
| redirect-url | string | In case of 3D secure transaction it can happen that you'll have to redirect the buyer to 3D secure checikng page. This parameter shows where to redirect your buyer in order to proceed with the transaction. | Optional |
| post-url | string | In some case the acquirer doesn't support redirect-url schema and it is required to POST a form on the client side in order to be redirected to the 3D secure challange page. This parameter shows the URL to submit POST client’s browser form. |
Optional |
| post-params | Array of {name:string, value:string} | Form parameters to submit to post-url. |
Optional |
Successful transaction:
{
"status-code": "SUCCESS",
"transaction-id": "7bb2bafb-fbc0-410f-9965-81489a2b3bf2",
"merchant-transaction-id": "729016fb-a7f3-467e-a2b0-72d0554b263d"
}
Failed transaction:
{
"status-code": "FAILURE",
"transaction-id": "7bb2bafb-fbc0-410f-9965-81489a2b3bf2",
"merchant-transaction-id": "729016fb-a7f3-467e-a2b0-72d0554b263d",
"error": [
{
"code": "05",
"message": "Do not honor",
"type": "ERROR"
}
]
}
Transaction in progress. Example with
redirect-url. You can redirect client via Location header:
{
"status-code": "IN_PROGRESS",
"transaction-id": "7bb2bafb-fbc0-410f-9965-81489a2b3bf2",
"merchant-transaction-id": "729016fb-a7f3-467e-a2b0-72d0554b263d",
"redirect-url": "https://redirect-client-to.site/",
}
HTTP/2.0 303
Location: https://redirect-client-to.site/
Transaction in progress. Example with
post-url. You have to submit the form topost-urlwithpost-paramsfields:
{
"status-code": "IN_PROGRESS",
"transaction-id": "7bb2bafb-fbc0-410f-9965-81489a2b3bf2",
"merchant-transaction-id": "729016fb-a7f3-467e-a2b0-72d0554b263d",
"post-params": [
{
"name": "param1",
"value": "1002230405120427"
},
{
"name": "param2",
"value": "1121230419121442"
},
{
"name": "param3",
"value": "32B70DA186480E10A7374BA3D68047C059FB82F277BBBD9AC741"
}
],
"post-url": "https://post-url.site/capturePayment",
}
Example of the form to be created on the client's side to submit with
post-urlandpost-params.
<form name=request method=POST action="https://post-url.site/capturePayment">
<input type=hidden name=param1 value=1002230405120427>
<input type=hidden name=param2 value=1121230419121442>
<input type=hidden name=param3 value=32B70DA186480E10A7374BA3D68047C059FB82F277BBBD9AC741>
</form>
<script type=module>
document.forms.request.submit();
</script>
status-code legend
SUCCESS: transaction has passed successfully without any warnings. In that case the<error>block is not presented in the response.WARNING: transaction has passed successfully, but with warnings. Possible warning reason: the transaction type has been changed from authorization to preauthorization, because of the risk filters. PGW thinks that this transaction is risky and changes the type to pre-auth. In this case, the operator should capture or decline the transaction either manually or via the API).FAILURE: transaction has failed for whatever reason (bad data, risk filters, blocked by acquirer, etc.)IN_PROGRESS: transaction status is in progress. This can happen when the buyer was redirected to the page where they enter their 3-D secure credentials, but instead of doing that, they just closed the browser.
Data Types
Date
string of the following format "YYYY-MM-DD". Example "2023-12-25" for December 25, 2023.
Card
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| holder | string | 4…40 | Card holder | Required |
| number | string | 12…20 | Card number. Only numbers, without punctuation. | Required |
| security-code | string | 3…4 | The CVV (or CVC) is a sequence of 3-4 digits on the back of the card | Required |
| expiration-date | string | 7 | Card expiration date. YearMonth: yyyy-mm | Required |
TransactionType
TransactionType is a string with one of the following values: "AUTHORIZATION", "PREAUTHORIZATION", "REFUND", "CAPTURE", "REVERSAL", "CHARGEBACK", "ENROLLMENT", "VOID".
ChargebackType
ChargebackType is a string with one of the following values:
| Type | Description |
|---|---|
| Retrieval request | A Retrieval Request is a request for information concerning a specific payment transaction. The Issuer requests details on a disputed transaction from the merchant on behalf of the Cardholder. |
| Represented retrieval | A representment has been processed on your behalf. One possible reason might be that a credit has already been processed on the Retrieval's sales transaction. |
| 1st chargeback | First Chargeback. A retrieval request cab also be converted into a first Chargeback. Money is gone from the merchant account. |
| Represented | The Chargeback has been represented by a merchant. One possible reason might be that a credit has already been processed on the Retrieval's sales transaction. |
| Successfully represented | Representment was accepted. |
| Unsuccessfully represented | Representment was not accepted. |
| 2nd chargeback | Successful representment of the first Chargeback can turn into an Arbitration Chargeback (second Chargeback). |
| Represented cb2 | The second chargeback has been represented by a merchant. |
| Successfully represented cb2 | Representment of the second chargeback was accepted. |
| Unsuccessfully represented cb2 | Representment of the second chargeback was not accepted. |
See: https://en.wikipedia.org/wiki/Email_address. Example: name@example.com
Phone
A phone is a sequence of characters. Recommended format: +xxxyyyzzzzzzzppp.
xxx = Country code, yyy = Area or city code, zzzzzzz = Local number, ppp = Often used to denominate an extension.
You can use a plus symbol +, spaces and brackets ().
Goods
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| code | string | 1…20 | ID of goods | Required |
| name | string | 1…128 | Name of goods | Required |
| description | string | 1…255 | Description of goods | Required |
| group | string | 1…64 | Group ID | Required |
| price | decimal | 0–100000 | Price per unit | Required |
| currency | string | 3 | Currency code (ISO 4217 alpha-3) of the goods. Example: USD, EUR, … | Required |
| quantity | integer | 1–99999999 | Quantity of purchased goods | Required |
| tax | decimal | 0–999 | Sales tax | Optional |
Order
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| name | string | 4…40 | Buyer name | Required |
| birthday | Date | 10 | Buyer birthday | Optional |
| organization | string | 1…64 | Buyer organization. | Optional |
| country | string | 2 | Buyer country code (ISO 3166-1 alpha-2) of the country. Example: DE | Required |
| region | string | 4…16 | Buyer region code (ISO 3166-2). Example: FR-NC | Optional |
| city | string | 2…40 | Buyer city | Required |
| postal-code | string | 1…16 | Buyer postal code | Required |
| cedex | string | 1…16 | Buyer CEDEX | Optional |
| street-line1 | string | 1…64 | Buyer street address line 1 | Optional |
| street-line2 | string | 1…64 | Buyer street address line 2 | Optional |
| phone | string | 1…32 | Buyer phone number. | Optional |
| string | 3…64 | Buyer email. | Optional | |
| date | DateTime | Order date | Optional | |
| goods | Goods | Merchandise data | Optional |
Shipping
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| name | string | 4…40 | Recipient name | Required |
| country | string | 2 | Shipping country code (ISO 3166-1 alpha-2) of the country (such as DE) | Required |
| region | string | 4…16 | Shipping region code (ISO 3166-2). Example: FR-NC | Optional |
| city | string | 2…40 | Shipping city | Required |
| postal-code | string | 1…16 | Shipping postal code | Required |
| cedex | string | 1…16 | Shipping CEDEX | Optional |
| street-line1 | string | 1…64 | Shipping street address line 1 | Optional |
| street-line2 | string | 1…64 | Shipping street address line 2 | Optional |
| phone | string | 1…32 | Recipient phone number | Optional |
| string | 3…64 | Recipient email | Optional |
Customer
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| user-agent | string | 1…255 | HTTP Header "User-Agent" | Optional, but can be a mandatory requirement for 3D secure transactions with some acquirers. |
| accept | string | 1…1024 | HTTP Header "Accept" | Optional, but can be a mandatory requirement for 3D secure transactions with some acquirers. |
| ip | string | 7…39 | IP Address of the buyer | Optional, but can be a mandatory requirement for 3D secure transactions with some acquirers. |
Amount
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| value | decimal | 0..100000 | Amount of money. Example: 11.22 | Required |
| currency | string | 3 | Currency code (ISO 4217 alpha-3). Example: USD | Required |
ThreeDRequest
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| enrolled | string | 1 | Indicator of the 3-D Secure enrollment check. Can be: Y — Card is enrolled; N — Card is not enrolled; U — Unable to determine if card is enrolled. | Required |
| acs-url | string | …1024 | The URL of the issuing bank, where the merchant must re-direct the enrollment check request via the cardholder’s browser. It is returned only in case the cardholder is enrolled in 3-D secure program. | Required, if enrolled = Y |
| pa-req | string | …2048 | A base64-encoded request message created for cards participating in the 3-D secure program. The PaReq is returned by the issuer’s ACS via the VISA or MasterCard directory to the payment gateway and from here passed on to the merchant. | Required, if enrolled = Y |
| eci | string | 2 | Indicates the status of the veRes. | Optional |
ThreeDResponse
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| pa-res | string | …2048 | A base-64 encoded XML message containing the issuing bank's response to the payment authentication request | Required |
ThreeDInfo
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| enrolled | string | 1 | Indicator of the 3-D Secure enrollment. Can be: Y — Card is enrolled; N — Card is not enrolled; U — Unable to determine if card is enrolled. | Required |
| status | string | 1 | Indicates the authentication final outcome. Can be: Y — Authentication process was successful; A — Authentication process was attempted; N — Authentication process failed; U — Unable to authenticate. | Required |
| eci | string | 2 | Indicates the status of the veRes. | Optional |
| xid | string | 1…255 | A unique transaction identifier | Optional |
| cavv | string | 32 | The CAVV is a a cryptographic value generated by the Issuer. For Visa transaction it is called CAVV (Cardholder Authentication Verification Value) for MasterCard it is either called Accountholder Authentication Value (AAV) or Universal Cardholder Authentication Field (UCAF) Optional | Optional |
| transaction-id | string | Mandatory transaction ID for 3D Secure 2 | Optional |
TransactionError
| Name | Data Type | Comment |
|---|---|---|
| message | string | Error message |
| code | string | Error code |
| type | string | Error type: WARNING, ERROR |
| advice | string | Optional advice |
Result codes
| Code | Description |
|---|---|
| 00 | Approved and completed successfully |
| 01 | Refer to card issuer |
| 02 | Refer to card issuer, special condition |
| 03 | Invalid merchant |
| 04 | Pick up card (no fraud) |
| 05 | Do not honor |
| 06 | Error. Invalid Transaction for Terminal |
| 07 | Pick up card, special condition (fraud account) |
| 10 | Partial approval |
| 11 | Approved (V.I.P). Partial Approval |
| 12 | Invalid transaction |
| 13 | Invalid amount or currency conversion field overflow |
| 14 | Invalid card number |
| 15 | No such issuer |
| 19 | Re-enter transaction |
| 21 | No action taken |
| 25 | Unable to locate record in file |
| 28 | File temporarily not available for update or inquiry |
| 30 | Format error. Validation failed |
| 39 | No credit account |
| 41 | Lost card, pick up (fraud account) |
| 43 | Stolen card, pick up (fraud account) |
| 50 | Invalid currency |
| 51 | Not sufficient funds |
| 52 | No checking account |
| 53 | No savings account |
| 54 | Expired card, expiration date is missing or wrong |
| 55 | Incorrect PIN or PIN missing |
| 57 | Transaction not permitted to cardholder |
| 59 | Suspected fraud |
| 61 | Exceeds approval amount limit |
| 62 | Restricted card (card invalid in this region or country) |
| 63 | Security violation (source is not correct issuer) |
| 64 | Transaction does not fulfill AML requirement |
| 65 | Exceeds withdrawal frequency limit |
| 75 | Allowable number of PIN entry tries exceeded |
| 76 | Unsolicited reversal |
| 79 | Already reversed (by Switch) |
| 80 | No financial impact |
| 81 | Cryptographic error found in PIN |
| 82 | Negative CAM, dCVV, iCVV, or CVV results |
| 85 | No reason to decline a request for address verification, CVV2 verification, or a credit voucher or merchandise return |
| 86 | Cannot verify PIN; for example, no PVV |
| 89 | Ineligible to receive financial position information (GIV) |
| 91 | Issuer or switch inoperative and STIP not applicable or not available for this transaction; Time-out when no stand-in; POS Check Service: Destination unavailable; Credit Voucher and Merchandise Return Authorizations: V.I.P. sent the transaction to the issuer, but the issuer was unavailable. |
| 92 | Financial institution or intermediate network facility cannot be found for routing (receiving institution ID is invalid) |
| 93 | Transaction cannot be completed - violation of law |
| 99 | Fraud, max monthly credit amount |
| B2 | Surcharge amount not supported by debit network issuer. |
| N0 | Force STIP |
| N3 | Cash service not available |
| N4 | Cash request exceeds issuer or approved limit |
| N5 | Ineligible for resubmission |
| N7 | Decline for CVV2 failure |
| N8 | Transaction amount exceeds preauthorized approval amount |
| Q1 | Card Authentication failed |
| R0 | Stop Payment Order |
| R1 | Revocation of Authorization Order |
| 100 | Internal error. Status unknown |
| 101 | Transaction in Progress |
| 102 | Error communicating to the acquirers |
| 103 | Merchant not fount |
| 104 | transaction not found |
| 105 | Transaction declined |
| 106 | Initial transaction for recurring not found |
| 107 | Operation not supported |
| 108 | Merchant transaction id already exist. I must be unique |
| 109 | No acquirer defined |
| 110 | Card not enrolled to 3D Secure |
| 111 | Card is enrolled to 3D secure. Send authorization() to finish the transaction |
| 112 | 3D secure required |
| 113 | No permission for that card type |
| 114 | Blocked/blacklisted card |
| 115 | Blocked by acquirer risk filters |
| 116 | Unknown error. Transaction rejected |
| 117 | Unable to do 3D authentication |
| 118 | 3D secure authentication failed |
| 119 | Refund cannot be issued as requested |
| 120 | Acquirer upstream communication error |
| 121 | Card email limit |
| 122 | Expired on capture |
| 123 | Expired on confirmation |
| 124 | Identification required |
| 125 | Card is not allowed |
| 126 | Cancelled by timeout |
| 127 | Cancelled by customer |
| 128 | Blocked country |
| 129 | Customer email blacklisted |
| 2xx | Transaction success. It was considered to be risky, so the type of transaction was changed from authorization to preauthorization and the acquirer received PREAUTHORIZATION. To complete purchase you need to make capture transaction. `xx is a risk filter ID. |
| 3xx | Transaction failed. It was considered to be too risky xx is a risk filter ID. |
Frequent result codes
Here are our most frequent result codes. These might be useful for other gateways who would like to integrate with us:
| Code | Description | Code | Description |
|---|---|---|---|
| 00 | Approved and completed successfully | 04 | Pick up card |
| 05 | Do not honor | 30 | Format error. Validation failed |
| 41 | Lost card, pick up (fraud account) | 43 | Stolen card, pick up (fraud account) |
| 51 | Not sufficient funds | 54 | Expired card |
| 57 | Transaction not permitted | 62 | Restricted card |
| R1 | Revocation of Authorization Order | 102 | Error communicating to the acquirers |
| 105 | Transaction declined | 114 | Blacklisted card |
| 115 | Blocked by acquirer risk filters | 116 | Unknown error. Transaction declined |
Recurring transactions
Recurring (repeated) transaction describes a payment process where the cardholder’s account is periodically charged for a repeated delivery or use of a product or service. A recurring transaction consists of an initial request and one or several repeated transaction requests. The initial recurring request contains all relevant cardholder data, while the subsequent repeated requests (which can be authorization only) simply references an identifier.
Initial transaction
Parameter recurring-type=INITIAL should be set to authorization().
Repeated transaction
recurring-type=REPEATED and parent-transaction-id are required (gateway transaction id, not merchant transaction id), credit-card and order are optional for repeated authorization().
Reconciliation
The purpose of reconciliation is to compare transactions and verify that payments have been processed correctly. This can be very useful when you receive timeout from the PGW gateway, result codes 100,101 and 102. Besides that reconciliation API helps you to get disputes (chargebacks).
- SOAP Endpoit:
https://{$GATEWAY}/pgw-rp/Reporting1Service- text/xml
- REST Endpoint:
https://{$GATEWAY}/pgw-rp/reporting-1/{operation}- application/json
- application/xml
- application/fastinfoset
Authentication is the same as for the processing operation. You can read about that here.
Get Transactions
Returns transaction statuses for the given period of time.
Request:
| Name | Type | Size | Comment | Requirement |
|---|---|---|---|---|
| start-date | Date | 10 | Start transaction date | Mandatory |
| end-date | Date | 10 | End transaction date | Mandatory |
get-transactions request:
GET transactions?start-date=2017-12-04&end-date=2017-12-04
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<getTransactions xmlns="urn:pgw:reporting">
<start-date>2017-12-04</start-date>
<end-date>2017-12-04</end-date>
</getTransactions>
</Body>
</Envelope>
Response:
Array of transactions of the following type:
| Name | Type | Comment |
|---|---|---|
| merchant-id | xs:string | Merchant ID |
| merchant-transaction-id | xs:string | ID of the transaction in the merchant's system |
| date | DateTime | Transaction processing dateTime |
| status-code | xs:string | Status-code: SUCCESS, WARNING, FAILURE, IN_PROGRESS |
| error/code | xs:string | Error code |
| error/message | xs:string | Error message |
| transaction-id | xs:unsignedLong | PGW transaction ID |
| transaction-type | TransactionTypes | Type of the transaction |
get-transactions response:
{
"transactions": [
{
"merchant-id": "9003",
"merchant-transaction-id": "TEST1491398548846",
"transaction-id": 2264899038395,
"transaction-type": "AUTHORIZATION",
"date": "2017-10-10T12:10:00Z",
"status-code": "SUCCESS"
},
{
"merchant-id": "9003",
"merchant-transaction-id": "TEST1491398548846",
"transaction-id": 2264899038396,
"transaction-type": "AUTHORIZATION",
"date": "2017-10-10T12:10:00Z",
"status-code": "FAULURE",
"error": {
"code": "05",
"message": "Do not honor"
}
}
]
}
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<getTransactionsResponse xmlns="urn:pgw:reporting">
<result>
<transaction>
<merchant-id>9003</merchant-id>
<merchant-transaction-id>TEST1491398548846</merchant-transaction-id>
<transaction-id>2264902173183</transaction-id>
<transaction-type>AUTHORIZATION</transaction-type>
<date>2017-10-10T12:10:00Z</date>
<status-code>SUCCESS</status-code>
</transaction>
<transaction>
<merchant-id>9003</merchant-id>
<merchant-transaction-id>TEST1491398548847</merchant-transaction-id>
<transaction-id>2264902173184</transaction-id>
<transaction-type>AUTHORIZATION</transaction-type>
<date>2017-10-10T12:10:00Z</date>
<status-code>FAILURE</status-code>
<error>
<code>05</code>
<message>Do not honor</message>
</error>
</transaction>
</result>
</getTransactionsResponse>
</Body>
</Envelope>
Get Chargebacks
Request:
| Name | Data Type | Size | Comment | Requirement |
|---|---|---|---|---|
| start-date | Date | 10 | From that Arrival to acquirer date. | Mandatory |
| end-date | Date | 10 | Till that Arrival to acquirer date. | Mandatory |
get-chargebacks request:
GET chargebacks?start-date=2017-12-04&end-date=2017-12-04
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<getChargebacks xmlns="urn:pgw:reporting">
<start-date>2017-12-04</start-date>
<end-date>2017-12-04</end-date>
</getChargebacks>
</Body>
</Envelope>
Response:
Array of chargebacks of the following type:
| Name | Data Type | Comment |
|---|---|---|
| merchant-id | xs:string | Merchant ID |
| merchant-transaction-id | xs:string | ID of the transaction in the merchant's system |
| chargeback-amount | xs:decimal | Chargeback amount |
| chargeback-amount/@currency | xs:string | Chargeback currency code (ISO 4217 alpha-3). Example: USD, EUR |
| chargeback-date | DateTime | Date when the chargeback was registered in PGW |
| chargeback-id | xs:string | PGW Chargeback ID |
| chargeback-status | xs:string | Chargeback status |
| chargeback-type | ChargebackType | Chargeback type |
| case-id | xs:string | Chargeback case ID |
| arn | xs:string | Chargeback ARN |
| arrival-to-acquirer | Date | Date when the chargeback arrived to acquirer |
| exp-date | Date | Representment of the chargeback should be fulfilled until that date |
| reason-code | xs:string | Chargeback reason code |
| reason-message | xs:string | Chargeback reason code message |
| transaction-amount | xs:decimal | Transaction amount |
| transaction-amount/@currency | xs:string | Transaction currency code (ISO 4217 alpha-3). Example: USD, EUR |
| transaction-date | DateTime | Transaction processing date |
| transaction-id | xs:unsignedLong | PGW transaction ID |
| card-network | xs:string | Card network name: VISA, MC, AMEX, ... |
| card-number | xs:string | Credit card number (first 6 and 4 last digits) |
| acquirer | xs:string | Acquirer name |
get-chargebacks response:
{
"chargebacks": [
{…},
{…}
]
}
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<getChargebacksResponse xmlns="urn:pgw:reporting">
<result>
<chargeback/>
<chargeback/>
</result>
</getChargebacksResponse>
</Body>
</Envelope>
Chargeback reason codes
| Network | Code | Description |
|---|---|---|
| VISA | 30 | Services Not Provided or Merchandise Not Received |
| VISA | 41 | Cancelled Recurring Transaction |
| VISA | 53 | Not as Described or Defective Merchandise |
| VISA | 57 | Fraudulent Multiple Transactions |
| VISA | 60 | Requested copy illegible or Invalid |
| VISA | 62 | Counterfeit Transaction Reason Code |
| VISA | 71 | Declined Authorization Reason Code |
| VISA | 72 | No Authorization Reason Code |
| VISA | 73 | Expired Card |
| VISA | 74 | Late Presentment |
| VISA | 75 | Transaction Not Recognized |
| VISA | 76 | Incorrect Currency or Transaction Code or Domestic Transaction Processing Violation |
| VISA | 77 | Non-Matching Account Number |
| VISA | 78 | Service Code Violation |
| VISA | 79 | Requested transaction information not |
| VISA | 80 | Incorrect Transaction Amount or Account Number Reason Code |
| VISA | 81 | Fraud—Card-Present Environment |
| VISA | 82 | Duplicate Processing |
| VISA | 83 | Fraud—Card-Absent Environment |
| VISA | 85 | Credit Not Processed |
| VISA | 86 | Paid by Other Means |
| VISA | 90 | Non-Receipt of Cash or Load Transaction Value at ATM or Load Device |
| VISA | 93 | Merchant Fraud Performance Program |
| VISA | 96 | Transaction exceeds limited amount |
| MC | 03 | Correction of a Chargeback |
| MC | 06 | Correction of a Representment |
| MC | 10 | Correction of a Terminal Malfunction |
| MC | 17 | Cash Dispute-ATM Only |
| MC | 20 | Returned Item (U.S. Shared Deposits Only) |
| MC | 24 | Empty Deposit Envelope (U.S. Shared Deposits Only) |
| MC | 25 | Error in Addition (U.S. Shared Deposits Only) |
| MC | 26 | Error in Settlement (U.S. Shared Deposits Only) |
| MC | 27 | Customer Keyed Wrong Amount (U.S. Shared Deposits Only) |
| MC | 28 | Non-Cash Item Deposited (U.S. Shared Deposits Only) |
| MC | 29 | Foreign/Counterfeit Currency Deposited (U.S. Shared Deposits Only) |
| MC | 30 | Cardholder Disputed Amount (U.S. Shared Deposits Only) |
| MC | 53 | Defective/Not as Described—Intra-U.S. Region and U.S. Territories Only |
| MC | 70 | Chip Liability Shift |
| MC | 71 | Transaction Amount Differs |
| MC | 73 | Duplicate Transaction |
| MC | 74 | No Cardholder Authorization |
| MC | 75 | Credit Not Received |
| MC | 79 | Goods or Services Not Provided |
| MC | 80 | Late Presentment |
| MC | 85 | Adjustment Reversal |
| MC | 95 | Invalid Adjustment: Account Closed |
| MC | 96 | Invalid Adjustment: Insufficient Funds |
| MC | 2001 | Invalid Acquirer Reference Data; documentation was neither required nor received |
| MC | 2002 | Nonreceipt of required documentation to support chargeback |
| MC | 2003 | Correct transaction date provided |
| MC | 2004 | Invalid Acquirer Reference Data on chargeback; documentation was received. |
| MC | 2005 | Correct merchant location/description provided Issuer authorized transaction |
| MC | 2008 | Issuer authorized transaction |
| MC | 2011 | Credit Previously Issued |
| MC | 2700 | Chargeback Remedied |
| MC | 2701 | Duplicate Chargeback |
| MC | 2702 | Past Chargeback Time Limit |
| MC | 2703 | Requested transaction document provided (requires hardship variance) |
| MC | 2704 | Invalid Data Record Text |
| MC | 2705 | Correct MCC provided |
| MC | 2706 | Authorization advised suspicious |
| MC | 2707 | No authorization request required or attempted |
| MC | 2708 | Account was not listed on the applicable Electronic Warning Bulletin as of the transaction date |
| MC | 2709 | Documentation received was illegible. |
| MC | 2710 | Scanning error—unrelated documents or partial scan |
| MC | 2713 | Invalid Chargeback |
| MC | 2870 | Chip Liability Shift |
| MC | 2871 | Chip/PIN Liability Shift |
| MC | 4801 | Requested Transaction Information not Received |
| MC | 4802 | Requested / Required information illegible or missing |
| MC | 4804 | Multiple Processing |
| MC | 4807 | Warning Bulletin File |
| MC | 4808 | Transaction Not Authorized |
| MC | 4809 | Transaction not reconciled |
| MC | 4811 | Stale Transaction |
| MC | 4812 | Account Number Not on File |
| MC | 4831 | Transaction Amount Differs |
| MC | 4835 | Card not valid or expired |
| MC | 4834 | Duplicate Processing of Transaction |
| MC | 4837 | No Cardholder Authorization |
| MC | 4840 | Fraudulent Processing of Transactions |
| MC | 4841 | Canceled Recurring or Digital Goods Transactions |
| MC | 4842 | Late Presentment |
| MC | 4846 | Correct Transaction Currency Code Not Provided |
| MC | 4847 | Requested/Required Authorization Not Obtained and Fraudulent Transaction |
| MC | 4849 | Questionable Merchant Activity |
| MC | 4850 | Installment Billing Dispute (Participating Countries Only) |
| MC | 4853 | Cardholder Dispute |
| MC | 4854 | Cardholder Dispute—Not Elsewhere Yes Classified (U.S. Region Only) |
| MC | 4855 | Goods or Services Not Provided Yes |
| MC | 4857 | Card activated telephone transactions |
| MC | 4859 | Addendum, No-show, or ATM Dispute1 |
| MC | 4860 | Credit Not Processed Sometimes |
| MC | 4862 | Counterfeit Transaction – Magnetic stripe |
| MC | 4863 | Cardholder Does Not Recognize—Potential Sometimes Fraud |
| MC | 4870 | Chip Liability Shift |
| MC | 4871 | Chip/PIN Liability Shift |
| MC | 4880 | Late Presentment (Maestro only) |
| MC | 4901 | Required documentation not received to support previous Second Presentment/1240. |
| MC | 4902 | Documentation received was illegible. |
| MC | 4903 | Scanning error—Unrelated documents or partial scan. |
| MC | 4904 | Reserved |
| MC | 4905 | Invalid Acquirer Reference Data on Second Presentment/1240 (required documentation). Must be used when Message 2001 is received from the acquirer |
| MC | 4908 | Invalid Acquirer Reference Data on Second Presentment/1240 (required documentation). Must be used when Message 2004 is received from the acquirer |
| MC | 4999 | Domestic Chargeback Dispute (Europe Yes region Only) |