1. Changelog

Version Date Description

10.6

2024-04-18

Token payment support has been added to CoF Initial and Recurring Initial methods.

10.5

2024-04-10

Added webhook : Acquirer reconciliation date webhook + Acquirer reconciliation date webhook

10.4

2024-04-10

Added a new field in response: refundARN for method Details.

10.3

2024-03-28

New regexp for houseNumber

10.2

2024-03-25

Open banking payment release v1.0.

10.1

2024-02-27

New response code to payment methods: E0211 - Returned when transaction is rejected, because card country is blocked in Fenige System.

10.0

2023-01-25

New status E13000 - Transaction rejected, risk score exceeded.

9.9

2023-11-20

Adding information about Merchant Advice Codes. Changes in check transaction status response - new field merchantAdviceCode. Occurs only for Mastercard and for declined transactions if Mastercard returns this information

9.8

2023-10-27

Complete end of support for 3ds version 1.0

9.7

2023-06-30

Add new optional fields to request in payment methods: street, houseNumber, city, postalCode, province.

9.6

2023-06-28

Added new optional field: authMethod and tokenType for method Token payment.

9.5

2023-05-11

Deleted noCurrencyConversion field for payment methods.

9.4

2023-03-21

Added new optional fields for method /client/3ds/authentication regarding Cardholder Billing Card Information

9.3

2023-03-06

Added new optional field: phoneNumber to Recurring Initial, CoF Initial and Account status inquiry requests. New API status: E01607 - Transaction rejected, internal server error during authorization request generation added to all payment responses.

9.2

2023-01-30

Bugfix (adaptation to documentation) - make 3DS mandatory for 5.9.1 Recurring Payment - initial transaction

9.1

2022-12-16

New error status: E01606 - Transaction rejected, country of residence is not permitted

9.0

2020-12-15

New transaction status, min amount limit per terminal (E01605) + 2.6.4. Payment

8.9

2022-11-24

New field on payment method - country of residence required for merchants crypto

8.8

2022-10-20

PENDING prevent feature released, more information here: 6.4. Payment + 6.4. Payment

8.7

2022-10-26

Removal from use 3DS 1 for all countries (except those configured in the system)

8.6

2022-10-24

Adding information about the withdrawal of 3DSv1.

8.5

2022-09-28

First BLIK release. New response codes to blik methods: E0164, E0165, E0166, E0167, E0189, E00180, E9800

8.4

2022-09-16

New terminal limits added: + E10000 Transaction rejected, terminal daily card transaction limit exceeded, + E10001 Transaction rejected, terminal daily transaction limit, + E10002 Transaction rejected, terminal monthly transaction limit exceeded, + 2.6.4. Payment

8.3

2022-08-29

New API fields in authorization response - cardBlockadeAdditionalData.blockType, cardBlockadeAdditionalData.blockedUntil present when transaction was rejected because card was blocked. Example response is available in authorize response sections.

8.2

2022-08-22

New fields on payment method - there are data address sender required for crypto or wallet

8.1

2022-08-01

New response fields on 3DS 2.X Response: 'errorCode', 'errorCodeDetails', Request: challengeWindowSize

8.0

2022-05-05

New response codes to payment methods: E209 - sender name contains fraudulent phrase, E0210 - Transaction rejected, suspicious sender name

7.9

2022-04-08

New response fields to transaction details method added: terminalSettlementCurrency, amountInTerminalSettlementCurrency, commissionFenigeInTerminalSettlementCurrency

7.8

2022-03-21

Monitoring status added (E0208) 2.7.9. Monitoring

7.7

2021-03-18

New API method: Payment JWE. New response statuses: E8009, E8010. E8011.

7.6

2022-03-11

Remove Terminal/Merchant management from Fenige Ecommerce API

7.5

2022-03-01

Monitoring status added (E0207) 2.7.9. Monitoring

7.4

2021-12-30

New transaction status defined for terminal based restricted transaction amounts (E0159) + 6.4 Payments

7.3

2021-12-17

New transaction status added (E01602) for all transactions type to indicate blocked transaction in specific geographic scope + 6.10 Details

7.2

2021-12-16

Added responseCode - new field in Payment API - Reversal error response (422 UNPROCESSABLE ENTITY with status E0161).

7.1

2021-12-06

Updated validation for purchaseAmount in Authentication request in 3DS 2.X verification methods

7.0

2021-11-22

Add new response code(E01584, E01585) and change validation for outside3ds.eci

6.9

2021-11-04

Add noCurrencyConversion field for payment methods. For more information please refer to 6.4 Payments

6.8

2021-10-26

New transaction status added (E01596) for installment payment performed using terminal restricted card country + 6.9. Installment Payment

6.7

2021-10-19

Added new optional field 'receiverAmount' in payment methods

6.6

2021-10-18

Added description of the use case of the Google pay method.

6.5

2021-10-14

Added new types: DOMESTIC_PL, INTRA_EU, INTER to geographicScope field in 6.10 Details

6.4

2021-08-17

New error status: E01601 - terminal is blocked for provider

6.3

2021-06-09

Added Payment API field 'transactionRef' for determining merchant additional transaction identifier

6.2

2021-05-18

New filed on 3DS 1.0 Initialize method to process Token PAN transaction

6.1

2021-05-05

An implementation of CODE_65(Mastercard)/CODE_1A(Visa) transaction rejection logic for MASTERCARD and VISA. More details can be found here: 6.4 Payments

6.0

2021-04-19

New error status: E01600 in response for 3DS 2.X payment method

5.9

2021-04-09

Added card Id support from Datacenter for methods with 3ds 2.x/3ds 1.0

5.8

2021-04-09

Monitoring status added (E0206) 2.7.9. Monitoring

5.7

2021-04-01

Introduction of a new webhook functionality. Now it is possible to handle information about transaction status without polling API. 9. Webhooks

5.6

2021-03-10

Remove status E01595 and allow processing of all types of payment transactions using quasi-cash terminals

5.5

2021-01-20

Internal functionality to restrict access to specific method for PSP.

5.4

2021-01-18

New field 'terminalUrl' in Ecommerce Payment requests added. The field is optional now, but it is recommended to include it in your request body. From 2021-05-03 the 'terminalUrl' and 'addressIp' fields will be required.

5.3

2021-01-15

Update for 3DS 1.0 Add merchantUuid for verify and initialize method. Optional fields to get merchant configuration.

5.2

2021-01-01

New status E8004 for Clearing and Reversal method. Locks the method call until the ongoing task for a given Request Uuid is completed.

5.1

2020-12-30

Update for 3DS 2.X

5.0

2020-12-06

DataCenter card transaction functionality release for Payment API methods + 6.4. Payment + 6.5. MO/TO payment + 6.6. Token payment + 6.7. CoF payment + 6.8. Recurring payment + 6.9. Installment Payment

4.12

2020-11-20

Cards management methods added 5. Cards

4.11

2020-11-17

3DS version enforcement configuration

4.10

2020-11-06

Change in outside 3DS, authentication status required Y or A value

4.9

2020-11-06

Add Installment Payment API methods 5.10. Installment Payment

4.8

2020-10-26

New transaction status added (E01596) for transactions performed using terminal restricted card country + 5.5. Payment + 5.6. MO/TO payment + 5.7. Token payment + 5.7. CoF payment + 5.7. Recurring payment

4.7

2020-09-23

Add new VISA response code value 80

4.6

2020-09-16

Add new fields in details: authorizeRRN, authorizeStan, reversalRRN, reversalStan, arn

4.5

2020-09-1

Add new method Currency for card 5.3. Currency for card

4.4

2020-09-1

Add new method MO/TO payment 5.6. MO/TO Payment

4.3

2020-08-28

Add new response status E01595 - Returned when terminal MCC configuration is QUASI-CASH.

4.2

2020-07-23

Add new response status E0187 during refund processing to notify that chargeback was reported for transaction

4.1

2020-07-09

Add 3DS 2.X

4.0

2020-07-01

New method "Card Provider" added

3.9

2020-06-30

Update Mastercard statuses table

3.8

2020-06-18

Response status E0141 replaced with E0190 when currency rate cannot be found

3.7

2020-06-10

Documentation updated. Currency Rate method will be deprecated on 30.09.2020 and will be replaced by a new version of the Currency Rate method. 5.2. Currency Rate

3.6

2020-06-08

New status E0163 added + 2.6.6. Reversal

3.5

2020-06-05

Documentation updated. Change value and description about field "md" in Initialize and Finalize methods: + 6.2. Initialize + 6.3. Finalize

3.4

2020-05-13

New reversal status (S0005, S0006) and changed response + 5.11.2 Reversal - response

3.3

2020-04-27

Release API with Recurring Payments functionality + 5.9.1 Recurring Payment - initial transaction + 5.9.4 Recurring Payment - subsequent transaction

3.2

2020-03-26

Release API with Credential on File (CoF) functionality + 5.8.1 Cof payment - initial transaction + 5.8.4 Cof payment - subsequent transaction

3.1

2020-03-05

Monitoring status added (E0205) + 2.6.8. Monitoring + 5.5. Payment + 5.7. Token payment

3.0

2020-03-04

Removed commission and merchantCommission from transaction details response body.

2.9

2020-03-02

ERROR_MPI_CONNECTION status is replaced by the following statuses:

Error mpi - 3ds initialize failed

Error mpi connection

- the change will be available on production from 12.03.2020.

2.8

2020-02-28

3DS Verification method + 6. 3DS 1.0 verification methods - the change will be available on production from 12.03.2020.

2.7

2020-02-24

Outside 3DS transactions documentation added + 5.2. Payment - request

2.6

2020-02-18

Deleted refund status (S0012, S0013), changed refund status (E0184) and added new status (E0186) to refund. Changed response status for refund (2.6.7) + 2.6.7. Refund

2.5

2020-01-31

Information about certification process added

2.4

2020-01-30

New transaction status, amount limit per terminal (E0158) + 2.6.4. Payment

2.3

2019-11-26

Monitoring status added (E0204) + 2.6.8. Monitoring

2.2

2019-11-15

Monitoring status added (E0203) + 2.6.8. Monitoring

2.1

2019-09-26

Monitoring statuses added + 2.6.8. Monitoring

2.0

2019-09-23

New payment method with token description added

1.9

2019-09-10

A flow diagrams updated

1.8

2019-07-18

Clearing amount field has been added to the details method

1.7

2019-05-10

Methods descriptions modified and statuses description improved

1.6

2019-04-25

Endpoint (base url) changed to https://ecom-staging.fenige.pl

1.5

2019-03-20

Fields validation changes

1.4

2019-02-04

Optional IP address field added in transaction request body

1.3

2019-01-16

Fields validation changes

1.2

2018-12-18

Documentation update

1.1

2018-11-13

Partial clearing method describe added

1.0

2018-10-01

First release of documentation

2. Introduction

Fenige e-commerce API service allows to easily and safely perform operations realated to e-commerce. You can authorize payments and show details about completed transactions. Also you can make reversals, clearings and refunds.

Transaction process:

1. Fenige registers the PSP, Merchants and Terminals in his system.

2. The Partner can use all available methods in the API.

2.1. Endpoints

Environment Endpoint (base url)

Staging

https://ecom-staging.fenige.pl

2.2. HTTP verbs

RESTful notes tries to adhere as closely as possible to standard HTTP and REST conventions in its use of HTTP verbs.

Verb Usage

GET

Used to retrieve a resource

POST

Used to create a new resource

PUT

Used to update specific resource

DELETE

Used to delete a resource

2.3. Language

If you want to select your language, add Accept-Language header to request JSON and set its value to, for example, pl, en, cs or sk. In case of a successful transaction for the send money method you will receive a email confirmation in the language which you set.

Accept-Language

en

2.4. General methods

All api methods require the delivery of appropriate headers.

List of methods headers used in Fenige REST API:

Key Value Validation Description

Content-Type

application/json

Required

Used to indicate the media type of the resource

Authorization

Basic cHNwbmFtZTpwYXNzd29yZA==

Required

Used to resolve PSP context of user. Basic Auth from PSP data (PSP name and password). Consist of keyword Basic and string obtained from Base64 coding method for PSP name and password parameter

2.5. HTTP status codes

RESTful notes tries to adhere as closely as possible to standard HTTP and REST conventions in its use of HTTP status codes.

Status code Usage

200 OK

The request completed successfully

202 ACCEPTED

The request has been accepted for processing, but the processing has not been completed. The request might or might not eventually be acted upon, as it might be disallowed when processing actually takes place.

400 BAD REQUEST

The request was malformed. The response body will include an error providing further information

404 NOT FOUND

The requested resource did not exist

500 INTERNAL SERVER ERROR

Message occur when an unexpected condition was encountered

2.5.1. Currency rate

Table 1. Response status for Currency rate method
Code Messages HTTP Code HTTP STATUS

E0190

Failed to get currency rates

500

INTERNAL_SERVER_ERROR

2.5.2. Currency for card

Table 2. Response status for Currency for card method
Code Messages HTTP Code HTTP STATUS

E0400

Failed to get currency for card

500

INTERNAL_SERVER_ERROR

E0401

Issuer card is not supported

422

UNPROCESSABLE_ENTITY

2.5.3. Payment

Table 3. Response status for Payment
Code Messages HTTP Code HTTP STATUS

S0000

SUCCESS

200

OK

S0001

SUCCESS

204

NO CONTENT

S0002

Success transaction

200

OK

S0003

Transaction declined, check response code for reason

200

OK

S0004

PENDING

202

ACCEPTED

E0150

Transaction rejected

422

UNPROCESSABLE ENTITY

E0151

Transaction rejected, currency not supported

422

UNPROCESSABLE ENTITY

E0152

Transaction rejected, issuer not supported

422

UNPROCESSABLE ENTITY

E0153

Transaction declined, problem with MIP connection

500

INTERNAL SERVER ERROR

E0154

Failed to fetch transaction details

500

INTERNAL SERVER ERROR

E0155

Transaction not exist

404

NOT FOUND

E0156

Transaction rejected, terminal not supported 3ds

422

UNPROCESSABLE ENTITY

E0157

Transaction rejected, card not supported 3ds

422

UNPROCESSABLE ENTITY

E0158

Transaction rejected, maximum transaction amount limit exceeded

422

UNPROCESSABLE ENTITY

E01605

Transaction rejected, minimum transaction amount limit exceeded

422

UNPROCESSABLE ENTITY

E01607

Transaction rejected, internal server error during authorization

422

UNPROCESSABLE ENTITY

E0159

Transaction rejected, restricted transaction amount has occurred

422

UNPROCESSABLE ENTITY

E8009

Merchant RSA keys not found

404

NOT FOUND

E8010

Merchant RSA key expired

422

UNPROCESSABLE ENTITY

E8011

Internal error during card decrypting

500

INTERNAL SERVER ERROR

E01580

Transaction rejected. Card is expired.

422

UNPROCESSABLE ENTITY

E01581

Transaction rejected. Not found Card Authentication (3DS 2.X)

422

UNPROCESSABLE ENTITY

E01582

Transaction rejected. Card Authentication not match to transaction type (3DS 2.X)

422

UNPROCESSABLE ENTITY

E01583

Transaction rejected. Outside 3ds is required for terminal

422

UNPROCESSABLE ENTITY

E01584

Transaction rejected, 3DS 2.X flow invoked for other card number than specified in the request

422

UNPROCESSABLE ENTITY

E01585

Transaction rejected, Outside 3ds values are not valid for Card Authentication.

422

UNPROCESSABLE ENTITY

E01590

Transaction rejected, cof card not found in db

422

UNPROCESSABLE ENTITY

E01591

Transaction rejected, initial cof transaction not approved

422

UNPROCESSABLE ENTITY

E01592

Transaction rejected, recurring card not found in db

422

UNPROCESSABLE ENTITY

E01593

Transaction rejected, initial recurring transaction not approved

422

UNPROCESSABLE ENTITY

E01594

Transaction rejected, transactionXId parameter had registered for another transaction

422

UNPROCESSABLE ENTITY

E01596

Transaction rejected, terminal blocks transactions with card issued in given card country

422

UNPROCESSABLE ENTITY

E01597

Transaction rejected, 3DS version of terminal are not compatible with 3DS version defined in request

422

UNPROCESSABLE ENTITY

E01598

Transaction rejected, ECI value is not available for card provider

422

UNPROCESSABLE ENTITY

E01599

Transaction declined, processing timeout

500

INTERNAL_SERVER_ERROR

E01600

Transaction rejected, 3DS 2.X flow invoked for other card number than specified in the request

422

UNPROCESSABLE ENTITY

E01601

Transaction rejected, terminal is blocked for provider

422

UNPROCESSABLE ENTITY

E01602

Transaction rejected, geographic scope is not permitted for this transaction

422

UNPROCESSABLE ENTITY

E01603

Transaction rejected, Transactions without 3ds above 30 EUR (the blockade applies only to EU countries)

422

UNPROCESSABLE ENTITY

E01604

Transaction rejected, transactions 3DS 1.X not supported for given country

422

UNPROCESSABLE ENTITY

E01606

Transaction rejected, country of residence is not permitted

422

UNPROCESSABLE ENTITY

E10000

Transaction rejected, terminal daily card transaction limit exceeded

422

UNPROCESSABLE ENTITY

E10001

Transaction rejected, terminal daily transaction limit exceeded

422

UNPROCESSABLE ENTITY

E10002

Transaction rejected, terminal monthly transaction limit exceeded

422

UNPROCESSABLE ENTITY

E11000

Transaction rejected, time for transaction processing exceeded

422

UNPROCESSABLE ENTITY

E05000

Installment Payment initial not found

500

INTERNAL SERVER ERROR

E05001

Installment Payment already confirmed

500

INTERNAL SERVER ERROR

E05002

Installment Payment already cancelleded

500

INTERNAL SERVER ERROR

E05003

Installment Payment already pay in full

500

INTERNAL SERVER ERROR

E05004

Installment Payment not confirmed in required time

500

INTERNAL SERVER ERROR

E05005

Installment Payment Initial was failed

500

INTERNAL SERVER ERROR

E05006

Installment Payment could not find valid installment plan for requested uuid

500

INTERNAL SERVER ERROR

E05007

Installment Payment Option not allowed for transaction

500

INTERNAL SERVER ERROR

E05008

Installment Payment missing plan uuid

500

INTERNAL SERVER ERROR

E05009

Installment Payment missing request number of installments

500

INTERNAL SERVER ERROR

E05010

Installment Payment requested number of installments is outside of allowed range

500

INTERNAL SERVER ERROR

E05011

Installment Payment operation not allowed, installment type allows ISSUER_FINANCED installments

500

INTERNAL SERVER ERROR

E05014

Installment Payment outside 3ds request is required for terminal

500

INTERNAL SERVER ERROR

E05015

Installment Payment unsupported card provider VISA

500

INTERNAL SERVER ERROR

2.5.4. Clearing

Table 4. Response status for Clearing
Code Messages HTTP Code HTTP STATUS

E0170

Clearing of the payment is procesing

422

UNPROCESSABLE ENTITY

E0171

Can’t clear payment

422

UNPROCESSABLE ENTITY

E0172

Can’t clear payment, the time is over

422

UNPROCESSABLE ENTITY

E0173

Payment is automatically cleared

422

UNPROCESSABLE ENTITY

E0174

Payment is already cleared

422

UNPROCESSABLE ENTITY

E0175

Can’t clear payment, clearing amount is to low

503

UNPROCESSABLE ENTITY

E0176

Can’t clear payment, clearing amount is to high

503

UNPROCESSABLE ENTITY

2.5.5. Reversal

Table 5. Response status for Reversal
Code Messages HTTP Code HTTP STATUS

S0005

Success reverse transaction

200

OK

S0006

Reverse transaction declined, check response code for reason

200

OK

E0160

Reversal of the payment is procesing

422

UNPROCESSABLE ENTITY

E0161

Can’t reversal payment

422

UNPROCESSABLE ENTITY

E0162

Payment is already reversed

422

UNPROCESSABLE ENTITY

E0163

Payment is already refunded

422

UNPROCESSABLE ENTITY

E05012

Installment Payment reverse not allowed

500

INTERNAL SERVER ERROR

2.5.6. Refund

Table 6. Response status for Refund
Code Messages HTTP Code HTTP STATUS

E0180

Refund rejected, no MC/VISA response

500

INTERNAL SERVER ERROR

E0181

Refund rejected by MC/VISA

500

INTERNAL SERVER ERROR

E0182

Refund transaction amount to low

400

BAD REQUEST

E0183

Refund transaction amount to high

400

BAD REQUEST

E0184

Transaction is refunded

422

UNPROCESSABLE ENTITY

E0185

Transaction not cleared, can’t refund

422

UNPROCESSABLE ENTITY

E0186

Refund is already processing

422

UNPROCESSABLE ENTITY

E0187

Transaction is chargeback reported

422

UNPROCESSABLE ENTITY

E05013

Installment Payment refund not allowed

500

INTERNAL SERVER ERROR

2.5.7. Monitoring

Table 7. Monitoring response status
Code Messages HTTP Code HTTP STATUS

E0200

Transaction rejected, card is blocked

422

UNPROCESSABLE ENTITY

E0201

Transaction rejected, bin is blocked

422

UNPROCESSABLE ENTITY

E0202

Transaction rejected, terminal is blocked

422

UNPROCESSABLE ENTITY

E0203

Transaction rejected, token is blocked

422

UNPROCESSABLE ENTITY

E0204

Transaction rejected, user is on aml list

422

UNPROCESSABLE ENTITY

E0205

Transaction rejected, bank is blocked

422

UNPROCESSABLE ENTITY

E0206

Transaction rejected, to many reject transactions and card is blocked

422

UNPROCESSABLE ENTITY

E0207

Transaction rejected, to many attempts declined and card is blocked

422

UNPROCESSABLE ENTITY

E0208

Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days

422

UNPROCESSABLE ENTITY

E0209

Returned when sender or receiver name contains fraudulent phrase

422

UNPROCESSABLE ENTITY

E0210

Returned when sender has suspicious name

422

UNPROCESSABLE ENTITY

E0211

Returned when transaction is rejected, because card country is blocked in Fenige System.

422

UNPROCESSABLE ENTITY

2.5.8. 3DS 2.X

Table 8. Response status for 3DS 2.X
Code Messages HTTP Code HTTP STATUS

S0000

SUCCESS

200

OK

E0300

Error mpi V2 - failed internal

500

INTERNAL_SERVER_ERROR

E0301

Three DS Method Data mismatch

422

UNPROCESSABLE_ENTITY

E0302

Error on parsing Three DS Method Data

422

UNPROCESSABLE_ENTITY

E0303

Card number not Enrolled in 3DS v2

422

UNPROCESSABLE_ENTITY

E0304

Invalid card authentication id

422

UNPROCESSABLE_ENTITY

E0305

Issuer card is not supported

422

UNPROCESSABLE_ENTITY

E0306

Invalid card number

422

UNPROCESSABLE_ENTITY

E0307

Card Authentication not found

404

NOT_FOUND

E0132

Terminal not exists

404

NOT_FOUND

E0309

Protocol version is not supported

422

UNPROCESSABLE_ENTITY

E0310

Invalid Three DS Method Data

422

UNPROCESSABLE_ENTITY

E0311

Google Pay token payment with PAN_ONLY authMethod parameter - 3DS is required

422

UNPROCESSABLE_ENTITY

2.5.9. 3DS 2.X more details Error Code

Table 9. More details Error Code for 3DS 2.X
Code Description

E1001

Three DS Method Data mismatch

E1002

Error on parsing Three DS Method Data

E1003

Card number not Enrolled in 3DS v2

E1004

Read file exception

E1005

Invalid card authentication id

E1006

Issuer card is not supported

E1007

Can not fetch provider configuration

E1008

Invalid card number

E1009

Card Authentication not found

E1010

Protocol version is not supported

E1011

Protocol version is not supported

E601

Could not create ephemeral key.

E602

Invalid certificate.

E603

Invalid operation.

E604

Invalid ClientAuth data.

E605

The errorCode element in Error message is invalid.

E606

Invalid index.

E700

Unknown host exception.

E1101

Protocol error. Received invalid message.

E1102

Protocol error. Invalid message version.

E1201

Protocol error. Missing data element.

E1202

Protocol error. Unrecognized critical extension.

E1203

Data element value is invalid.

E1204

Duplicate Data Element.

E1286

Error while sending to DS.

E1301

Protocol error. Unrecognized transaction Id.

E1302

Decryption failed.

E1303

Access Denied, Invalid Endpoint

E1304

ISO Code Invalid.

E1305

Transaction Data Not Valid.

E1306

MCC Not Valid for Payment System.

E1307

Serial Number Not Valid.

E1402

Transaction Timed Out.

E1403

Transient System Failure.

E1404

Permanent system failure.

E1405

System Connection Failure.

E118

Firewall Error. Error description contains detailed message.

E143

Busy executing current method.

E151

HTTP protocol error. The error message has the server response.

E152

No server specified in URL

E153

Specified URLScheme is invalid.

E155

Range operation is not supported by server.

E156

Invalid cookie index (out of range).

E301

Interrupted.

E302

Can’t open AttachedFile.

E100

You cannot change the RemotePort at this time. A connection is in progress.

E101

You cannot change the RemoteHost (Server) at this time. A connection is in progress.

E102

The RemoteHost address is invalid (X.X.X.X).

E104

Already connected. If you want to reconnect, close the current connection first.

E106

You cannot change the LocalPort at this time. A connection is in progress.

E107

You cannot change the LocalHost at this time. A connection is in progress.

E112

You cannot change MaxLineLength at this time. A connection is in progress.

E116

RemotePort cannot be zero. Please specify a valid service port number.

E117

Cannot change UseConnection option while the bean is Active.

E135

Operation would block.

E201

Timeout.

E211

Action impossible in control’s present state.

E212

Action impossible while not connected.

E213

Action impossible while listening.

E303

Could not open file.

E434

Unable to convert string to selected CodePage

E1105

Already connecting. If you want to reconnect, close the current connection first.

E1117

You need to connect first.

E1119

You cannot change the LocalHost at this time. A connection is in progress.

E1120

Connection dropped by remote host.

E270

Cannot load specified security library.

E271

Cannot open certificate store.

E272

Cannot find specified certificate.

E273

Cannot acquire security credentials.

E274

Cannot find certificate chain.

E275

Cannot verify certificate chain.

E276

Error during handshake.

E280

Error verifying certificate.

E281

Could not find client certificate.

E282

Could not find server certificate.

E283

Error encrypting data.

E284

Error decrypting data.

E10004

Interrupted system call.

E10009

Bad file number.

E10013

Access denied.

E10014

Bad address.

E10022

Invalid argument.

E10024

Too many open files.

E10035

Operation would block.

E10036

Operation now in progress.

E10037

Operation already in progress.

E10038

Socket operation on non-socket.

E10039

Destination address required.

E10040

Message too long.

E10041

Protocol wrong type for socket.

E10042

Bad protocol option.

E10043

Protocol not supported.

E10044

Socket type not supported.

E10045

Operation not supported on socket.

E10046

Protocol family not supported.

E10047

Address family not supported by protocol family.

E10048

Address already in use.

E10049

Can’t assign requested address.

E10050

Network is down.

E10051

Network is unreachable.

E10052

Net dropped connection or reset.

E10053

Software caused connection abort.

E10054

Connection reset by peer.

E10055

No buffer space available.

E10056

Socket is already connected.

E10057

Socket is not connected.

E10058

Can’t send after socket shutdown.

E10059

Too many references, can’t splice.

E10060

Connection timed out.

E10061

Connection refused.

E10062

Too many levels of symbolic links.

E10063

File name too long.

E10064

Host is down.

E10065

No route to host.

E10066

Directory not empty

E10067

Too many processes.

E10068

Too many users.

E10069

Disc Quota Exceeded.

E10070

Stale NFS file handle.

E10071

Too many levels of remote in path.

E10091

Network subsystem is unavailable.

E10092

WINSOCK DLL Version out of range.

E10093

Winsock not loaded yet.

E11001

Host not found.

E11002

Non-authoritative 'Host not found' (try again or check DNS setup).

E11003

Non-recoverable errors: FORMERR, REFUSED, NOTIMP.

E11004

Valid name, no data record (check DNS setup).

2.5.10. Global

Table 10. Global response status
Code Messages HTTP Code HTTP STATUS

E8000

Bad Request

400

BAD REQUEST

E8001

Forbidden

403

FORBIDDEN

E8002

Unauthorized

401

UNAUTHORIZED

E8003

Scale of amount is different than the scale of currency

422

UNPROCESSABLE ENTITY

E8004

Some operation for this requestUuid is processing

422

UNPROCESSABLE ENTITY

2.5.11. Fatal Errors

Table 11. Fatal errors response status
Code Messages HTTP Code HTTP STATUS

E9000

Domain error

500

INTERNAL SERVER ERROR

E9001

Error acquirer connection

503

SERVICE UNAVAILABLE

E9002

Error mpi connection

503

SERVICE_UNAVAILABLE

E9003

Error monitoring connection

503

SERVICE_UNAVAILABLE

E9010

Error data center connection

503

SERVICE_UNAVAILABLE

2.6. Mastercard/VISA statuses

Table 12. Statuses in accordance with ISO-8583
Status code Usage

CODE_00

Approved or completed successfully

CODE_01

Refer to card issuer

CODE_02

Refer to card issuer’s special conditions

CODE_03

Invalid merchant

CODE_04

Pick up card (no fraud)

CODE_05

Do not honor

CODE_06

General error

CODE_07

Pick up card, special condition (fraud account)

CODE_08

Honor with ID

CODE_09

Request in progress

CODE_10

Approved for partial amount

CODE_11

Approved (V.I.P)

CODE_12

Invalid transaction

CODE_13

Invalid amount

CODE_14

Invalid account number (no such number)

CODE_15

No such issuer

CODE_16

Approved, update track 3

CODE_17

Customer cancellation

CODE_18

Customer dispute

CODE_19

Re-enter transaction

CODE_20

Invalid response

CODE_21

No action taken

CODE_22

Suspected malfunction

CODE_23

Unacceptable transaction fee

CODE_24

File update not supported by receiver

CODE_25

Unable to locate record in file

CODE_26

Duplicate file update record, old record replaced

CODE_27

File update field edit error

CODE_28

File update file locked out

CODE_29

File update not successful, contact acquirer

CODE_30

Format error

CODE_31

Bank not supported by switch

CODE_32

Completed partially

CODE_33

Expired card

CODE_34

Suspected fraud

CODE_35

Card acceptor contact acquirer

CODE_36

Restricted card

CODE_37

Card acceptor call acquirer security

CODE_38

Allowable PIN tries exceeded

CODE_39

No credit account

CODE_40

Requested function not supported

CODE_41

Lost card, pick up (fraud account)

CODE_42

No universal account

CODE_43

Stolen card, pick up (fraud account)

CODE_44

No investment account

CODE_51

Not sufficient funds

CODE_52

No checking account

CODE_53

No savings account

CODE_54

Expired card or expiration date is missing

CODE_55

Incorrect PIN or PIN missing

CODE_56

No card record

CODE_57

Transaction not permitted to cardholder

CODE_58

Transaction not permitted to acquirer/terminal

CODE_59

Suspected fraud

CODE_60

Card acceptor contact acquirer

CODE_61

Exceeds withdrawal amount limit

CODE_62

Restricted card (card invalid in this region or country)

CODE_63

Security violation (source is not correct issuer)

CODE_64

Original amount incorrect/Transaction does not fulfill AML requirement

CODE_65

Exceeds withdrawal frequency limit

CODE_66

Card acceptor call acquirer’s security department

CODE_67

Hard capture (requires that card be picked up at ATM)

CODE_68

Response received too late

CODE_70

Contact Card Issuer/PIN data required

CODE_71

PIN Not Changed

CODE_74

Different value than that used for PIN encryption errors

CODE_75

Allowable number of PIN tries exceeded

CODE_76

Invalid/nonexistent “To Account” specified/Unsolicited reversal

CODE_77

Invalid/nonexistent “From Account” specified

CODE_78

Invalid/nonexistent account specified (general)/“Blocked, first used”—Transaction from new cardholder, and card not properly unblocked

CODE_79

Life cycle/Already reversed (by Switch)

CODE_80

System not available/No financial impact

CODE_81

Domestic Debit Transaction Not Allowed (Regional use only)/Cryptographic error found in PIN

CODE_82

Policy (Mastercard use only)/Negative CAM, dCVV, iCVV, or CVV results

CODE_83

Fraud/Security (Mastercard use only)

CODE_84

Invalid Authorization Life Cycle

CODE_85

Not declined/No reason to decline a request for address verification, CVV2 verification, or a credit voucher or merchandise return

CODE_86

PIN Validation not possible

CODE_87

Purchase Amount Only, No Cash Back Allowed

CODE_88

Cryptographic failure

CODE_89

Unacceptable PIN—Transaction Declined—Retry/Ineligible to receive financial position information (GIV)

CODE_90

Cutoff is in process (switch ending a day’s business and starting the next. Transaction can be sent again in a few minutes)

CODE_91

Issuer or switch is inoperative/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.

CODE_92

Financial institution or intermediate network facility cannot be found for routing

CODE_93

Transaction cannot be completed. Violation of law

CODE_94

Duplicate transmission

CODE_95

Reconcile error

CODE_96

System malfunction or certain field error conditions

CODE_A1

Additional customer authentication required

CODE_B1

Surcharge amount not permitted on Visa cards (U.S. acquirers only)

CODE_B2

Surcharge amount not supported by debit network issuer.

CODE_N0

Force STIP

CODE_N3

Cash service not available

CODE_N4

Cashback request exceeds issuer limit or appoved limit

CODE_N5

Ineligible for resubmission

CODE_N7

Decline for CVV2 failure

CODE_N8

Transaction amount exceeds preauthorized approval amount

CODE_P2

Invalid biller information

CODE_P5

Denied PIN unblock—PIN change or unblock request declined by issuer

CODE_P6

Denied PIN change—requested PIN unsafe

CODE_Q1

Card Authentication failed

CODE_R0

Stop payment order

CODE_R1

Revocation of authorization order

CODE_R2

Transaction does not qualify for Visa PIN

CODE_R3

Revocation of all authorizations order

CODE_XA

Forward to issuer

CODE_XD

Forward to issuer

CODE_Z3

Unable to go online

CODE_TBA

Customer ID verification failed

CODE_1A

Additional customer authentication required (Europe Region only)

CODE_6P

Verification Failed (Cardholder Identification does not match issuer records)

2.7. Response statuses

2.7.1. Transaction statuses

Status Description

PENDING

Transaction is processing

APPROVED

Transaction complete successfully

DECLINED

Transaction was declined by Mastercard, look at response code

REVERSED

Transaction was reversed successfully - money will return to cardholder’s account

CLEARED

Transaction is cleared correctly

REJECTED

Something went wrong and some validation error occurred

2.7.2. Reversal statuses

Status Description

APPROVED

A reversal complete successfully

DECLINED

A reversal was declined by Mastercard, look at response code

ERROR

Something went wrong and reversal cannot be processed

CANNOT_REVERSAL

Reversal could not be processed and it is not possible

2.7.3. Clearing statuses

Status

Description

APPROVED

A clearing complete successfully

DECLINED

A clearing is declined

ERROR

Something went wrong and clearing cannot be processed

TO_CLEARING

Transaction was registered correctly and will processing soon

WAITING_FOR_SENDING_FILE_TO_MASTERCARD

Clearing was processed with success and now it is waiting for send to Mastercard

CANNOT_CLEAR

Clearing is not possible

CLEARING_TRANSACTION_NOT_FOUND

Clearing transaction is not found

TIME_IS_OVER

Time for clearing is over (7 days when manual clearing is enabled)

PENDING

Clearing is pending

PROCESSING

Clearing is processing

2.7.4. Refund statuses

Status Description

APPROVED

Refund complete successfully

DECLINED

A refund is declined by MasterCard, look at response code

REFUND_PROCESSING

An attempt to transaction refund was registered and refund is processing

REFUND_TRANSACTION_NOT_FOUND

Transaction not found

REFUND_ALREADY_APPROVED

Transaction is just correctly refund when user make request again with same requestUuid

TRANSACTION_NOT_CLEARED

Transaction in not cleared yet

CHARGEBACK_REPORTED

Transaction is chargeback reported

2.8. Merchant advice codes

Merchant Advice Codes (MACs) are introduced by Mastercard to clearly communicate to merchants the reason for declining transactions, and the course of action that merchants can take. Occurs only for declined transactions if Mastercard returns this information.

Merchant Advice Code Merchant Advice Code Text

01

New account information available

02

Cannot approve at this time, try again later

03

Do not try again

04

Token not supported

21

Stop recurring payment

24

Retry after 1 hour

25

Retry after 24 hours

26

Retry after 2 days

27

Retry after 4 days

28

Retry after 6 days

29

Retry after 8 days

30

Retry after 10 days

40

Consumer non-reloadable prepaid card

41

Consumer single-use virtual card number

3. Merchants

3.1. Get merchant for uuid

GET /merchants/{uuid} Authorization: Basic Auth
Using this method, we can get a merchant with a unique uuid. We send uuid in url as a param. In response, we receive detailed information about the merchant.

3.1.1. Request

HTTP Request
GET /merchants/6bd8d512-7248-4cae-9431-9e6ce727e0de HTTP/1.1
accept-encoding: gzip
user-agent: ReactorNetty/1.0.38
Authorization: Basic dXNlcjpwYXNzd29yZA==
Accept: application/json
Host: ecom-staging.fenige.pl
Table 13. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 14. merchants/{uuid}
Parameter Description

uuid

Merchant’s unique uuid in system

3.1.2. Response

Response status
Status Description

200 OK

Returned when the merchant is already existing. In response are details about the merchant.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant not exist.

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown.

200 OK
HTTP Response
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:32 GMT
Content-Length: 560

{
  "uuid" : "6bd8d512-7248-4cae-9431-9e6ce727e0de",
  "name" : "merchant_name",
  "companyName" : "merchant_company_name",
  "companyBusinessName" : "merchant_company_business_name",
  "email" : "merchant_mail@example.com",
  "merchantStatus" : "ACTIVE",
  "address" : {
    "city" : "Lublin",
    "country" : "PL",
    "homeNumber" : "10",
    "street" : "Karola Olszewskiego",
    "streetNumber" : "11",
    "postalCode" : "24-110"
  },
  "accountNumber" : "11124000013372880300945921",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Table 15. Hateoas links
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

uuid

String

Merchant’s unique uuid in system

name

String

The merchant’s name

companyName

String

The merchant’s company name

companyBusinessName

String

The merchant’s company business name

email

String

The merchant’s email

address.city

String

The merchant’s city

address.country

String

The merchant’s country in accordance with ISO 3166-1 Alpha-2

address.homeNumber

String

The merchant’s home number

address.street

String

The merchant’s street

address.streetNumber

String

The merchant’s street number

address.postalCode

String

The merchant’s postal code

httpStatus

String

Response http status

merchantStatus

String

The merchant’s status

accountNumber

String

The merchant’s account number

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:32 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "fbcc0604-9b93-46f2-acd1-3f52bdd410b4"
}
Table 16. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:33 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "c2ab1825-5faa-4b9d-b40c-8e0a4619996d"
}
Table 17. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:32 GMT
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "77598821-7bb6-46f2-8a29-ef27c44e1031"
}
Table 18. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:32 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "1df78c0b-d2f9-4257-888f-ccb5b50690c9"
}
Table 19. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

3.2. Get merchant list

GET /merchants Authorization: Basic Auth
Using this method, we can get a list of merchants who are assigned to the authenticated PSP.

3.2.1. Request

HTTP Request
GET /merchants HTTP/1.1
accept-encoding: gzip
user-agent: ReactorNetty/1.0.38
Authorization: Basic dXNlcjpwYXNzd29yZA==
Accept: application/json
Host: ecom-staging.fenige.pl
Table 20. Request headers
Name Description

Authorization

Basic auth credentials for PSP

3.2.2. Response

Response status
Status Description

200 OK

Returned when the authorized PSP has at least one merchant. In response, he receives a list of merchants with details about each of them.

200 OK empty list

STATUS: E0123 - Returned when merchant list is empty.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown.

200 OK
HTTP Response
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:31 GMT
Content-Length: 1173

{
  "merchants" : {
    "content" : [ {
      "uuid" : "779efd30-8257-4189-ae87-8853061ffce3",
      "name" : "merchant_name",
      "companyName" : "merchant_company_name",
      "companyBusinessName" : "merchant_company_business_name",
      "email" : "merchant_mail@example.com",
      "merchantStatus" : "ACTIVE",
      "address" : {
        "city" : "Lublin",
        "country" : "PL",
        "homeNumber" : "10",
        "street" : "Karola Olszewskiego",
        "streetNumber" : "11",
        "postalCode" : "24-110"
      },
      "accountNumber" : "11124000013372880300945921"
    } ],
    "pageable" : {
      "sort" : {
        "empty" : true,
        "sorted" : false,
        "unsorted" : true
      },
      "offset" : 0,
      "pageNumber" : 0,
      "pageSize" : 20,
      "paged" : true,
      "unpaged" : false
    },
    "last" : true,
    "totalElements" : 1,
    "totalPages" : 1,
    "first" : true,
    "size" : 20,
    "number" : 0,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "numberOfElements" : 1,
    "empty" : false
  },
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Table 21. Hateoas links
Path Type Description

merchants.content.[].name

String

The merchant’s name

merchants.content.[].companyName

String

The merchant’s company name

merchants.content.[].companyBusinessName

String

The merchant’s company business name

merchants.content.[].email

String

The merchant’s email

merchants.content.[].merchantStatus

String

The merchant’s status

merchants.content.[].uuid

String

Merchant’s unique uuid in system

merchants.content.[].address.city

String

The merchant’s city

merchants.content.[].address.country

String

The merchant’s country in accordance with ISO 3166-1 Alpha-2

merchants.content.[].address.homeNumber

String

The merchant’s home number

merchants.content.[].address.street

String

The merchant’s street

merchants.content.[].address.streetNumber

String

The merchant’s street number

merchants.content.[].address.postalCode

String

The merchant’s postal code

merchants.content.[].accountNumber

String

The merchant’s account number

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

200 OK empty list
HTTP Response - STATUS: E0123
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:31 GMT
Content-Length: 91

{
  "status" : "E0123",
  "message" : "List of Merchant is empty.",
  "httpStatus" : "OK"
}
Table 22. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:31 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "b6b1bef3-cb75-45c5-9f83-cd2e03edeaac"
}
Table 23. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:32 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "afb37bfd-a63e-4e68-8b9c-33d5e2cc88ed"
}
Table 24. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:31 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "390289d1-9908-4032-8756-ddadd8935156"
}
Table 25. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

4. Terminals

4.1. Get terminal for uuid

GET /merchants/{merchantUUID}/terminals/{uuid} Authorization: Basic Auth
Using this method, we can get a terminal with a unique uuid. We send merchant uuid and terminal uuid in url as a params. In response, we receive detailed information about the
terminal.

4.1.1. Request

HTTP Request
GET /merchants/75ec7b23-9170-4d33-82b2-13259b01c1da/terminals/16705475-23c5-4f6b-b46f-581fde1a4c6e HTTP/1.1
accept-encoding: gzip
user-agent: ReactorNetty/1.0.38
Authorization: Basic dXNlcjpwYXNzd29yZA==
Accept: application/json
Host: ecom-staging.fenige.pl
Table 26. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 27. merchants/{merchantUUID}/terminals/{uuid}
Parameter Description

merchantUUID

Merchant’s unique uuid in system

uuid

Terminal’s unique uuid in system

4.1.2. Response

Response status
Status Description

200 OK

Returned when the terminal is already existing. In response are details about the terminal.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant not exist.

STATUS: E0132 - Returned when terminal not exist.

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown.

200 OK
HTTP Response
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:47 GMT
Content-Length: 357

{
  "uuid" : "16705475-23c5-4f6b-b46f-581fde1a4c6e",
  "name" : "terminal_name",
  "merchantUUID" : "75ec7b23-9170-4d33-82b2-13259b01c1da",
  "terminalStatus" : "ACTIVE",
  "settlementCurrency" : "PLN",
  "calculateCommissionType" : "STANDARD",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "default" : true,
  "3dsEnable" : true
}
Table 28. Hateoas links
Path Type Description

merchantUUID

String

The merchant’s identifier in the database

name

String

The terminal’s name

uuid

String

The terminal’s identifier in the database

3dsEnable

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

terminalStatus

String

The terminals’s status (NEW - terminal is waiting for activation in Fenige system, ACTIVE - terminal is active, INACTIVE - terminal is not active)

default

Boolean

Is default terminal. Default if true, is not default if false

calculateCommissionType

String

Commission type for terminal (STANDARD - percentage commission, SUMMARIZE - percentage commission and fixed amount)

settlementCurrency

String

Settlement currency for terminal (in accordance with ISO-4217)

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:47 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "181e9b05-bc80-4d84-808b-ae9e89066bc3"
}
Table 29. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:48 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "2f6d367c-99c7-466b-89c7-92f1bfb94071"
}
Table 30. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:47 GMT
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "69a4ff3d-f506-47c6-bc40-8430547618af"
}
HTTP Response - STATUS: E0136
HTTP/1.1 404 Not Found
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:46 GMT
Content-Length: 146

{
  "status" : "E0136",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "184f1166-a0c9-4263-bb4a-8902900285b8"
}
Table 31. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:46 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "18a3cc30-05e1-4c0f-a6b0-c4e086c8ed9d"
}
Table 32. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

4.2. Get terminals list

GET /merchants/{merchantUUID}/terminals Authorization: Basic Auth
Using this method, we can get a list of terminals who are assigned to the merchant.

4.2.1. Request

HTTP Request
GET /merchants/0085d644-86b1-475d-9bd9-e1c663ceccd2/terminals HTTP/1.1
accept-encoding: gzip
user-agent: ReactorNetty/1.0.38
Authorization: Basic dXNlcjpwYXNzd29yZA==
Accept: application/json
Host: ecom-staging.fenige.pl
Table 33. Request headers
Name Description

Authorization

Basic auth credentials for PSP

4.2.2. Response

Response status
Status Description

200 OK

Returned when the merchant has at least one terminal. In response, he receives a list of terminals with details about each of them.

200 OK

STATUS: E0133 - Returned when terminal list is empty.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant not exist.

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown.

200 OK
HTTP Response
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:46 GMT
Content-Length: 896

{
  "terminals" : {
    "content" : [ {
      "uuid" : "a3eb96b9-139f-4236-a4dc-c2766697bd65",
      "name" : "terminal_name",
      "merchantUUID" : "0085d644-86b1-475d-9bd9-e1c663ceccd2",
      "terminalStatus" : "ACTIVE",
      "settlementCurrency" : "PLN",
      "default" : true,
      "3dsEnable" : true
    } ],
    "pageable" : {
      "sort" : {
        "empty" : true,
        "sorted" : false,
        "unsorted" : true
      },
      "offset" : 0,
      "pageNumber" : 0,
      "pageSize" : 20,
      "paged" : true,
      "unpaged" : false
    },
    "last" : true,
    "totalElements" : 1,
    "totalPages" : 1,
    "first" : true,
    "size" : 20,
    "number" : 0,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "numberOfElements" : 1,
    "empty" : false
  },
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Table 34. Hateoas links
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

terminals.content.[].uuid

String

The terminal’s identifier in the database

terminals.content.[].name

String

The terminal’s name

terminals.content.[].merchantUUID

String

Merchant’s unique uuid in system

terminals.content.[].3dsEnable

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

terminals.content.[].terminalStatus

String

The terminals’s status (NEW - terminal is waiting for activation in Fenige system, ACTIVE - terminal is active, INACTIVE - terminal is not active)

terminals.content.[].default

Boolean

Is default terminal. Default if true, is not default if false

terminals.content.[].settlementCurrency

String

Settlement currency for terminal (in accordance with ISO-4217)

200 OK empty list
HTTP Response - STATUS: E0133
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:45 GMT
Content-Length: 150

{
  "merchantUuid" : "0bcc6be0-f9b9-453e-97af-a642092189d3",
  "status" : "E0133",
  "message" : "List of Terminal is empty.",
  "httpStatus" : "OK"
}
Table 35. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

merchantUuid

String

The merchant’s identifier in the database

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:45 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "90b0c18d-3e92-4e80-989d-494dc0998f57"
}
Table 36. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:46 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "1b0b5bc6-bc72-4cec-9dea-a28042b73572"
}
Table 37. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0136
HTTP/1.1 404 Not Found
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:45 GMT
Content-Length: 146

{
  "status" : "E0136",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "a2b36346-36b3-434c-b3d4-b0ef92487cc8"
}
Table 38. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:45 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "ee9359af-282c-4961-bb26-801122525329"
}
Table 39. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

5. Cards

5.1. Add card

POST /client/card Content Type: application/json, Authorization: Basic Auth
Using this method, we can create a new Card in Fenige Datacenter.
Cards in the Ecommerce system are stored securely and are assigned to the PSP object.
Each PSP (object you authenticate in API with) has access to store cards in separated secure database.

5.1.1. Request

HTTP Request
POST /client/card HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 149
Host: ecom-staging.fenige.pl

{
  "cardNumber" : "5453131785534417",
  "expirationDate" : "10/24",
  "firstName" : "John",
  "lastName" : "Doe",
  "email" : "john.doe@fenige.pl"
}
Table 40. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 41. Add Card request fields
Path Type Constraints Description

cardNumber

String

@Card number length must be between 12 and 19, @Must not be blank, @Must not be null

Full cardholder’s card number must be between 12-digits and 19-digits

expirationDate

String

@Must match the regular expression ^(0[1-9]|1[0-2])\/?([0-9]{2})$, @Must not be empty, @Must not be null

Expiration date of card mm/yy

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null, @Must not be empty

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null, @Must not be empty

Last name of cardholder

email

String

@Length must be between 1 and 128 inclusive, @Must be a well-formed email address, @Must not be blank, @Must not be null, @Must not be empty

Cardholder’s email

5.1.2. Response

Response status
Status Description

200 OK

Returned when terminal was successfully create.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

422 UNPROCESSABLE ENTITY

STATUS: E06007 - Returned when there was issue with internal Datacenter flow.

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown. + STATUS: E06000 - Critical error occurred while connecting to Datacenter.

200 OK
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 88

{
  "cardId" : 1,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Table 42. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

cardId

Number

Id numeric value of added card

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 483

{
  "errors" : {
    "lastName" : [ "length must be between 2 and 35" ],
    "firstName" : [ "length must be between 2 and 35" ],
    "cardNumber" : [ "card number length must be between 12 and 19", "card number must be numeric", "invalid card number" ],
    "email" : [ "must be a well-formed email address" ],
    "expirationDate" : [ "invalid card expiration date" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "12bc722c-4e9d-4362-881f-b3eae2a194e6"
}
Table 43. Response fields
Path Type Description

errors.firstName

Array

First name validation error

errors.lastName

Array

Last name validation error

errors.email

Array

Email validation error

errors.cardNumber

Array

Card number validation error

errors.expirationDate

Array

Expiration date validation error

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:43 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "a3bb147e-14ad-4fc3-bf95-f48236c6438a"
}
Table 44. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E06007
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 191

{
  "status" : "E06007",
  "message" : "Exception occurred while trying to add ecommerce card",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4bf01806-af2b-422d-ab1d-a6807cb7a96a"
}
Table 45. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
HTTP Response - STATUS: E06000
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 197

{
  "status" : "E06000",
  "message" : "Unrecognized error occurred while connection to Datacenter",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "7008efa1-f570-45f8-809e-ffed339bca36"
}
Table 46. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

5.2. Get card

GET /client/card/{cardId} Content Type: application/json, Authorization: Basic Auth
This method can be use for fetch Card object by 'cardId' parameter.

5.2.1. Request

HTTP Request
GET /client/card/1 HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Host: ecom-staging.fenige.pl
Table 47. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 48. /client/card/{cardId}
Parameter Description

cardId

Id numeric value of card existing in database

5.2.2. Response

Response status
Status Description

200 OK

Returned when card was successfully fetched.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown.

200 OK
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 308

{
  "cardId" : 1,
  "hiddenCardNumber" : "545313******4417",
  "firstName" : "John",
  "lastName" : "Doe",
  "email" : "john.doe@fenige.pl",
  "createdDate" : "2024-04-26T14:52:44.787Z",
  "lastModifiedDate" : "2024-04-26T14:52:44.787Z",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Table 49. Response fields
Path Type Description

hiddenCardNumber

String

Full cardholder’s masked card number must be between 12-digits and 19-digits

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

createdDate

String

Card creation date

lastModifiedDate

String

Last card edit date

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

cardId

Number

Id numeric value of added card

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:43 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "a3bb147e-14ad-4fc3-bf95-f48236c6438a"
}
Table 50. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

404 NOT FOUND
HTTP Response - STATUS: E06003
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 152

{
  "status" : "E06003",
  "message" : "Datacenter card not found",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "ae7b6aed-07fb-4f5e-a977-cb218b2ee864"
}
Table 51. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
HTTP Response - STATUS: E06000
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 197

{
  "status" : "E06000",
  "message" : "Unrecognized error occurred while connection to Datacenter",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "7008efa1-f570-45f8-809e-ffed339bca36"
}
Table 52. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

5.3. Update card

PUT /client/card Content Type: application/json, Authorization: Basic Auth
This method allows you to edit the details of a Card that has been added previously.
The request body requires a 'cardId' and any data set. All data is optional.

5.3.1. Request

HTTP Request
PUT /client/card HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 165
Host: ecom-staging.fenige.pl

{
  "cardId" : 1,
  "cardNumber" : "5453131785534417",
  "expirationDate" : "10/24",
  "firstName" : "John",
  "lastName" : "Doe",
  "email" : "john.doe@fenige.pl"
}
Table 53. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 54. Update Card request fields
Path Type Constraints Description

cardId

Number

@Must not be null, @Numeric value

Id numeric value of card existing in database

cardNumber

String

@Card number length must be between 12 and 19, @Must not be blank, @Must not be null

Full cardholder’s card number must be between 12-digits and 19-digits

expirationDate

String

@Must match the regular expression ^(0[1-9]|1[0-2])\/?([0-9]{2})$, @Must not be empty, @Must not be null

Expiration date of card mm/yy

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null, @Must not be empty

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null, @Must not be empty

Last name of cardholder

email

String

@Length must be between 1 and 128 inclusive, @Must be a well-formed email address, @Must not be blank, @Must not be null, @Must not be empty

Cardholder’s email

5.3.2. Response

Response status
Status Description

200 OK

Returned when card was successfully updated.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown.

200 OK
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 88

{
  "cardId" : 1,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Table 55. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

cardId

Number

Id numeric value of added card

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 690

{
  "errors" : {
    "firstName" : [ "must not be blank", "must match \"^[^0-9\\n]+$\"", "length must be between 2 and 35", "must be null" ],
    "lastName" : [ "must match \"^[^0-9\\n]+$\"", "must not be blank", "must be null", "length must be between 2 and 35" ],
    "cardId" : [ "must not be null" ],
    "email" : [ "must be a well-formed email address", "must be null" ],
    "cardNumber" : [ "invalid card number", "card number length must be between 12 and 19", "card number must be numeric", "must be null" ],
    "expirationDate" : [ "invalid card expiration date" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "227517e6-63f2-40f3-bf50-02472f8da3c3"
}
Table 56. Response fields
Path Type Description

errors.cardId

Array

cardId validation error

errors.firstName

Array

First name validation error

errors.lastName

Array

Last name validation error

errors.email

Array

Email validation error

errors.cardNumber

Array

Card number validation error

errors.expirationDate

Array

Expiration date validation error

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:43 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "a3bb147e-14ad-4fc3-bf95-f48236c6438a"
}
Table 57. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E06005
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 185

{
  "status" : "E06005",
  "message" : "Update of ecommerce card failed, card not found",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "5c20c4cd-2df6-4e11-b96d-f18dfbba8f24"
}
Table 58. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
HTTP Response - STATUS: E06000
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 197

{
  "status" : "E06000",
  "message" : "Unrecognized error occurred while connection to Datacenter",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "7008efa1-f570-45f8-809e-ffed339bca36"
}
Table 59. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

5.4. Delete card

DELETE /client/card/{cardId} Content Type: application/json, Authorization: Basic Auth
This method is used to remove a card from the Datacenter database that is assigned to the PSP with which you have logged in.

5.4.1. Request

HTTP Request
DELETE /client/card/1 HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Host: ecom-staging.fenige.pl
Table 60. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 61. /client/card/{cardId}
Parameter Description

cardId

Id numeric value of card existing in database

5.4.2. Response

Response status
Status Description

200 OK

Returned when card was successfully removed.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown.

200 OK
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 96

{
  "cardRemoved" : true,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Table 62. Response fields
Path Type Description

cardRemoved

Boolean

Indicates is card was removed or not

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:43 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "a3bb147e-14ad-4fc3-bf95-f48236c6438a"
}
Table 63. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E06004
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 185

{
  "status" : "E06004",
  "message" : "Delete of ecommerce card failed, card not found",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "c074438d-c232-4c74-ac60-7305a36cb569"
}
Table 64. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
HTTP Response - STATUS: E06000
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 197

{
  "status" : "E06000",
  "message" : "Unrecognized error occurred while connection to Datacenter",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "7008efa1-f570-45f8-809e-ffed339bca36"
}
Table 65. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

6. Payment API

6.1. Currency rate

POST /client/payments/currency-rate Content Type: application/json, Authorization: Basic Auth
This method can be used for calculate Mastercard/Visa currency rates between two values depends on terminal and provider.
Notice that `higherRate` is used to transaction processing.

6.1.1. Request

Mastercard
HTTP request
POST /client/payments/currency-rate HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 124
Host: ecom-staging.fenige.pl

{
  "terminalUuid" : "788e3e54-d2e0-4938-a6e3-2302de966c82",
  "provider" : "MASTERCARD",
  "from" : "USD",
  "to" : "PLN"
}
Table 66. CURRENCY RATE REQUEST FIELDS
Path Type Constraints Description

terminalUuid

String

@Must not be null

Terminal’s unique uuid in system

provider

String

@Must not be null

VISA or MASTERCARD or MAESTRO

from

String

@Must not be null

Currency code for conversion

to

String

@Must not be null

Target currency of conversion

VISA
HTTP request
POST /client/payments/currency-rate HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 118
Host: ecom-staging.fenige.pl

{
  "terminalUuid" : "788e3e54-d2e0-4938-a6e3-2302de966c82",
  "provider" : "VISA",
  "from" : "USD",
  "to" : "PLN"
}
Table 67. CURRENCY RATE REQUEST FIELDS
Path Type Constraints Description

terminalUuid

String

@Must not be null

Terminal’s unique uuid in system

provider

String

@Must not be null

VISA or MASTERCARD or MAESTRO

from

String

@Must not be null

Currency code for conversion

to

String

@Must not be null

Target currency of conversion

6.1.2. Response

200 OK
HTTP Response - STATUS: S0000
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 129

{
  "lowerRate" : 0.88000011,
  "higherRate" : 0.89801726,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Table 68. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

lowerRate

Number

Lower currency rate

higherRate

Number

Higher currency rate used for process transaction

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "994f15b2-6231-41a7-9010-1bd341351d6f"
}
Table 69. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Id of trace

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0190
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 166

{
  "status" : "E0190",
  "message" : "Failed to get currency rates",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "45d4008d-eb84-4da0-9a1e-11ea53bd313e"
}
Table 70. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Id of trace

6.2. Currency for card

POST /client/currency-for-card Content Type: application/json, Authorization: Basic Auth
Method is used to determine currencies applied for given card. If merchant has stored card in DataCenter can you use this method by cardId rather than cardNumber.

6.2.1. Request

Plain card Mastercard
Table 71. CURRENCY FOR CARD REQUEST FIELDS
Path Type Constraints Description

cardNumber

String

@Card number length must be between 12 and 19, @Luhn, @Must not be blank, @Must not be null

Card number

HTTP request
POST /client/currency-for-card HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 39
Host: ecom-staging.fenige.pl

{
  "cardNumber" : "5575168861324712"
}
Table 72. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Plain card Visa
Table 73. CURRENCY FOR CARD REQUEST FIELDS
Path Type Constraints Description

cardNumber

String

@Card number length must be between 12 and 19, @Luhn, @Must not be blank, @Must not be null

Card number

HTTP request
POST /client/currency-for-card HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 39
Host: ecom-staging.fenige.pl

{
  "cardNumber" : "4761340000000050"
}
Table 74. Request headers
Name Description

Authorization

Basic auth credentials for PSP

DataCenter card
Table 75. CURRENCY FOR CARD REQUEST FIELDS
Path Type Constraints Description

cardId

Number

@Must not be null, @Numeric

DataCenter card id.

HTTP request
POST /client/currency-for-card HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 18
Host: ecom-staging.fenige.pl

{
  "cardId" : 1
}
Table 76. Request headers
Name Description

Authorization

Basic auth credentials for PSP

6.2.2. Response

Response status
Status Description

200 OK

STATUS: S0000 Returned when SUCCESS.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

422 UNPROCESSABLE ENTITY

STATUS: E0401 - Issuer card is not supported.

500 INTERNAL SERVER ERROR

STATUS: E0400 - Returned when failed to get currency for card.

200 OK
HTTP Response - STATUS: S0000
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 207

{
  "defaultCurrency" : "PLN",
  "currencyCodes" : [ "PLN", "EUR", "USD" ],
  "provider" : "MASTERCARD",
  "countryCodeNumeric" : "616",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 199

{
  "defaultCurrency" : "UNDEFINED",
  "currencyCodes" : [ "UNDEFINED" ],
  "provider" : "VISA",
  "countryCodeNumeric" : "616",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 173

{
  "defaultCurrency" : "UNDEFINED",
  "currencyCodes" : [ "UNDEFINED" ],
  "provider" : "MASTERCARD",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Table 77. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

currencyCodes

Array

Currencies supported by card

defaultCurrency

String

Default currency code for card

provider

String

Card’s provider: MASTERCARD, MAESTRO, VISA, UNKNOWN

countryCodeNumeric

String

Country code numeric for Mastercard/Visa:

- ISO 3166-1 Numeric

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:50 GMT
Connection: close
Content-Length: 214

{
  "errors" : {
    "cardNumber" : [ "must not be null", "must not be empty", "must not be blank" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "ff0502f4-236d-4ca9-a6be-faa7882fa72e"
}
Table 78. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "0870fd9a-b752-46c0-afef-22f2e3655c03"
}
Table 79. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Id of trace

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E8002
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json;charset=UTF-8
Content-Length: 168

{
"status": "E0401",
"message": "Issuer card is not supported",
"httpStatus": "UNPROCESSABLE_ENTITY",
"traceId": "cf77afc8-f41b-425c-ab6a-de4eb9a69136",
"links" : [ ]
}
Table 80. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Id of trace

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
Table 81. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

6.3. Card provider

POST /client/card/provider Content Type: application/json, Authorization: Basic Auth
    This method is used to check the card provider, for example: VISA or MASTERCARD. If merchant has stored card in DataCenter can you use this method by cardId rather than
cardNumber.

6.3.1. Request

Plain card
Table 82. Request fields
Path Type Constraints Description

cardNumber

String

@Card number length must be between 12 and 19, @Luhn, @Must not be blank, @Must not be null

PAN card number

HTTP request
POST /client/card/provider HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 39
Host: ecom-staging.fenige.pl

{
  "cardNumber" : "5117964247989169"
}
Table 83. Request headers
Name Description

Authorization

Basic auth credentials for PSP

DataCenter card
Table 84. Request fields
Path Type Constraints Description

cardId

Number

@Must not be null, @Numeric

DataCenter card id.

HTTP request
POST /client/card/provider HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 20
Host: ecom-staging.fenige.pl

{
  "cardId" : 231
}
Table 85. Request headers
Name Description

Authorization

Basic auth credentials for PSP

6.3.2. Response

200 OK
HTTP Response - STATUS: S0000
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 101

{
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "provider" : "MASTERCARD"
}
Table 86. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

provider

String

Card’s provider: MASTERCARD, MAESTRO, VISA, UNKNOWN

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "4cf70d3b-7fdf-4b6d-aa65-bdaa6bd3e14e"
}
Table 87. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Id of trace

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "7c15a6a0-0b17-41c3-9dcd-b0bb8af83bfe"
}
Table 88. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Id of trace

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E90002
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 156

{
  "status" : "E9002",
  "message" : "Error mpi connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "f563280e-d760-4650-95fa-40b708dce20c"
}
Table 89. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Id of trace

6.4. Payment

POST /client/payments/auth Content Type: application/json, Authorization: Basic Auth
The method is used to charge the cardholder.
Using this method, we can authorize and process entire transaction. This method supports both 3DS and without 3DS transactions. You can also use this method using the outside 3ds authorization.
How the transaction will be initiated depends on the terminal settings (look at 'is3dsEnable' field).
This endpoint is idempotent so if you execute more than one requests with the same data even at the same time, only first registered transaction will be processed further. In
response, we receive transaction status.
Merchant has the ability to make a payment for goods which causes the cardholder to be debited in the currency of purchase, terminal or card currency based on the parameters provided: currency of transaction, different currency terminals held and currencies supported by the card.
The optional terminalUuid field provided during any of the authorisation methods forces the card to be debited in the currency of the terminal specified if the purchase currency is different from the terminal currency a currency conversion will take place.
The Fenige Payment API methods optionally allows merchants to store card data and sensitive personal data in order to allow performing subsequent transactions.
If merchant decides to use DataCenter transaction flow then is required to provide the card id of the card previously stored in the Fenige DataCenter, from which card the
relevant required parameters will be downloaded and used for authorization.
Card data and sensitive personal data according to the Fenige API specification are: cardNumber, expiryDate, firstName, lastName and email.
All card data are stored securely on Fenige DataCenter servers in accordance with applicable security requirements.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

Since October 2022, there is enabled feature for resolving PENDING status of transaction. Ecommerce system now measure time of processing transaction and rejects transaction which processing time exceeded. Default processing time is set as 120 seconds and in order to change this parameter please contact Fenige Sales Department. If transaction was sent to Mastercard/Visa and processing times up, then Fenige automatically makes reversal for this transaction.

Mastercard and Visa requires for intra-European Economic Area (EEA), plus United Kingdom, for which EMV 3DS must be used subsequent to a valid authorization soft decline DE39=65 (Mastercard)/1A(Visa).To perform a transaction for which the card has previously received CODE_65(Mastercard)/CODE_1A(Visa), the transaction must be processed with full EMV 3DS (3DS 2.x) and the authentication status must be 'Y'.

Correct flow:

  • 3DS 2.x → Challenge → Authentication status Y → Transaction (Recommended)

  • 3DS 2.x(Authentication status A) → Transaction → CODE_65/CODE_1A → 3DS 2.x → Challenge → Authentication status Y → Transaction (Recommended)

  • non3DS → Transaction → CODE_65/CODE_1A → 3DS 2.x → Challenge → Authentication status Y → Transaction (Available only to selected merchants)

When performing authorization, remember that there are currencies with different number of decimal places. For example: VND has no pennies and KWD has three decimal places. Please take this into account in the Amount field. For more information on other currencies, see ISO 4217.

soft decline Code 65 EMV 3DS
E-commerce payment flow
ecommerce trx flow with outside3ds
E-commerce payment with DataCenter card flow
ecommerce datacenter trx flow

6.4.1. Request

Request
HTTP Request
POST /client/payments/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 866
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "49922890-4f5d-49bd-b50e-ecbbfba672c9",
  "requestUuid" : "341648d8-d279-49ec-bcf9-c061e7f6caec",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "email" : "test@fenige.pl",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 90. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 91. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Last name of cardholder

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

cardNumber

String

@Card number length must be between 12 and 19, @Must not be blank, @Must not be null

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

@Must not be blank, @Must not be null

Expiration date of card mm/yy

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value.

outside3ds.transactionXId

String

Server transaction Id generated by DS. Required for 3DS 2.x version. The transactionXId is the field that defines the 3DS version. The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x. TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 00 or 01 or 02 or 05 or 06 or 07, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. More info.

outside3ds.authenticationStatus

String

@Must match Y or A or U, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt. U - (Technical or other problem) - No liability shift, consider whether to proceed with the transaction

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Request - forced Terminal
HTTP Request
POST /client/payments/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 925
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "49922890-4f5d-49bd-b50e-ecbbfba672c9",
  "terminalUuid" : "9f4054f0-197b-4869-92a9-f60f7946a268",
  "requestUuid" : "06b83fe7-3b30-45e3-b7c1-970773c0a431",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "email" : "test@fenige.pl",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 92. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 93. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

terminalUuid

String

Request’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Last name of cardholder

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

cardNumber

String

@Card number length must be between 12 and 19, @Must not be blank, @Must not be null

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

@Must not be blank, @Must not be null

Expiration date of card mm/yy

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value

outside3ds.transactionXId

String

Cardholder Authentication Verification Value. The transactionXId is the field that defines the 3DS version.The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x.TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 00 or 01 or 02 or 05 or 06 or 07, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. More info.

outside3ds.authenticationStatus

String

@Must match Y or A or U, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt. U - (Technical or other problem) - No liability shift, consider whether to proceed with the transaction

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03.

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Request - DataCenter card
HTTP Request
POST /client/payments/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 744
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "8338f43c-d52c-4c03-ae62-b1caa5ad84c8",
  "requestUuid" : "7bd7ebf3-f213-4cbe-87da-608a6f347002",
  "amount" : 1000,
  "currency" : "USD",
  "cardId" : 1906455,
  "cvc2" : "123",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 94. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 95. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

cardId

Number

@Must not be null, @Numeric

DataCenter card id. Required to obtain card information data from DataCenter such as (cardNumber, expiryDate, firstName, lastName, email)

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value

outside3ds.transactionXId

String

Cardholder Authentication Verification Value. The transactionXId is the field that defines the 3DS version.The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x.TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 01 or 02 or 05 or 06, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. Chargeback protection applies.

outside3ds.authenticationStatus

String

@Must match Y or A, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

6.4.2. Response

Response status
Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

STATUS: E0135 - Returned when terminal for merchant not exist or all of them are inactive.

STATUS: E0137 - Returned when there is not terminal marked as default

STATUS: E06003 - Returned when DataCenter card was not found.

422 UNPROCESSABLE ENTITY

STATUS: E0150 - Returned when transaction is rejected.

STATUS: E0151 - Returned when transaction is rejected, because currency is not supported.

STATUS: E0152 - Returned when transaction is rejected, because issuer is not supported.

STATUS: E01580 - Returned when transaction is rejected, because DataCenter card was expired.

STATUS: E01581 - Returned when transaction is rejected, because not found Card Authentication (3DS 2.X)

STATUS: E01582 - Returned when transaction is rejected, because Card Authentication not match to transaction type (3DS 2.X)

STATUS: E0159 - Returned when transaction is rejected, because restricted transaction amount has occurred

STATUS: E01594 - Returned when transaction is rejected, because transactionXId parameter had registered for another transaction

STATUS: E01596 - Returned when transaction is rejected, because terminal has blocked transaction with card issued in restricted country

STATUS: E01597 - Returned when transaction is rejected, because 3DS version of terminal are not compatible with 3DS version defined in request

STATUS: E01600 - Transaction rejected, 3DS 2.X flow invoked for other card number than specified in the request

STATUS: E01601 - Returned when transaction is rejected, because terminal is blocked for provider

STATUS: E01602 - Transaction rejected, geographic scope is not permitted for this transaction

STATUS: E01607 - Transaction rejected, internal server error during authorization request generation

STATUS: E10000 - Transaction rejected, terminal daily card transaction limit exceeded

STATUS: E10001 - Transaction rejected, terminal daily transaction limit exceeded

STATUS: E10002 - Transaction rejected, terminal monthly transaction limit exceeded

STATUS: E0200 - Returned when transaction is rejected, because card is blocked in Fenige System

STATUS: E0201 - Returned when transaction is rejected, because BIN is blocked in Fenige System

STATUS: E0202 - Returned when transaction is rejected, because Terminal is blocked in Fenige System

STATUS: E0204 - Returned when transaction is rejected, because user’s personal data was found on AML (sanctions) list

STATUS: E0205 - Returned when transaction is rejected, because Bank is blocked in Fenige System

STATUS: E0206 - Returned when transaction is rejected, because to many reject transactions and card is blocked

STATUS: E0207 - Returned when transaction is rejected, bacause to many attempts declined and card is blocked

STATUS: E0208 - Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days

STATUS: E0209 - Returned when sender or receiver name contains fraudulent phrase

STATUS: E0210 - Returned when sender has suspicious name

STATUS: E0211 - Returned when transaction is rejected, because card country is blocked in Fenige System.

STATUS: E11000 - Returned when transaction processing time set by terminal was exceeded

STATUS: E13000 - Returned when transaction risk score was exceeded

500 INTERNAL SERVER ERROR

STATUS: E0153 - Returned when transaction is declined, by problem with MIP connection.

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E0142 - Returned when commission configuration is not added for terminal.

STATUS: E0190 - Returned when currency rate is invalid.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

STATUS: E9002 - Returned when is error mpi connection.

STATUS: E9010 - Returned when is error DataCenter connection.

STATUS: E9011 - Returned when is error Limit connection.

200 OK
HTTP Response - transaction without 3DS and with outside3DS
{
  "requestUuid" : "6d256008-4c86-4a88-b776-69e85a19912b",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 96. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:10 GMT
Connection: close
Content-Length: 478

{
  "errors" : {
    "expiryDate" : [ "invalid card expiration date" ],
    "firstName" : [ "must not be blank", "must not be null" ],
    "lastName" : [ "must not be blank", "must not be null" ],
    "amount" : [ "must not be null" ],
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ],
    "currency" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "e808325f-9da1-4e1e-8309-428b5dfb8a68"
}
Table 97. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:10 GMT
Connection: close
Content-Length: 478

{
  "errors" : {
    "expiryDate" : [ "invalid card expiration date" ],
    "firstName" : [ "must not be blank", "must not be null" ],
    "lastName" : [ "must not be blank", "must not be null" ],
    "amount" : [ "must not be null" ],
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ],
    "currency" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "e808325f-9da1-4e1e-8309-428b5dfb8a68"
}
Table 98. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

HTTP Response - STATUS: E8000 - DataCenter Bad Request
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:10 GMT
Connection: close
Content-Length: 679

{
  "errors" : {
    "expiryDate" : [ "Card id was provided, expiryDate is obtained from data center card: 1906455" ],
    "lastName" : [ "Card id was provided, lastName is obtained from data center card: 1906455" ],
    "firstName" : [ "Card id was provided, firstName is obtained from data center card: 1906455" ],
    "cardId" : [ "Please provide cardId for DATACENTER transaction or fields: cardNumber, expiryDate, firstName, lastName for PLAIN transaction" ],
    "cardNumber" : [ "Card id was provided, cardNumber is obtained from data center card: 1906455" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "ca61b3cc-154a-424a-bca9-8260bc3e6ebe"
}
Table 99. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:10 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "653c0f82-21a5-4b0a-97f0-2cc40b0b0cd3"
}
Table 100. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:11 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "e4c363a4-9074-4ebe-a727-74a2b876dfd6"
}
Table 101. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "fc5ac22f-26a9-441c-88a9-af980aca23de"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "f78c53ae-a529-4569-b787-64e0810251d3"
}
Table 102. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E0135
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 163

{
  "status" : "E0137",
  "message" : "Default terminal not exist",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "7fe615aa-9bd2-4e36-bf30-a5c24f25bc93"
}
Table 103. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E0137
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 159

{
  "status" : "E0135",
  "message" : "Terminals for merchant not exists",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "de1842bd-7b81-4cd4-99c7-09d3bbec7c4c"
}
Table 104. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E06003
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 246

{
  "requestUuid" : "5113f94d-046d-49c2-b698-709545ec7cb1",
  "transactionStatus" : "REJECTED",
  "status" : "E06003",
  "message" : "Datacenter card not found",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "d33cb514-b032-42f9-a9ee-2ac3f2ae941a"
}
Table 105. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0150
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 251

{
  "requestUuid" : "d5ceb045-127b-415e-8545-6f6b4c49a8cb",
  "transactionStatus" : "REJECTED",
  "status" : "E0150",
  "message" : "Transaction rejected",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "564f1f7f-83b7-48dd-8d98-bfd19428bb00"
}
HTTP Response - STATUS: E0151
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 275

{
  "requestUuid" : "9dd49dfd-24e6-4b0b-9a2a-3738ee4c6b86",
  "transactionStatus" : "REJECTED",
  "status" : "E0151",
  "message" : "Transaction rejected, currency not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4ff6f366-b2c6-4ab1-90f8-ff3c88a9a649"
}
HTTP Response - STATUS: E0152
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "d0eee21f-fce8-4e1f-9edb-bbcfe4a9877a",
  "transactionStatus" : "REJECTED",
  "status" : "E0152",
  "message" : "Transaction rejected, issuer card not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "c4e54c22-af07-45cc-a209-ee56959ec9f7"
}
HTTP Response - STATUS: E01580
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 270

{
  "requestUuid" : "05ad3818-bd6b-4455-97a5-7f582f35f491",
  "transactionStatus" : "REJECTED",
  "status" : "E01580",
  "message" : "Transaction rejected. Card is expired.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9732a31e-c038-4301-a7f3-e1b40b766067"
}
HTTP Response - STATUS: E0159
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 295

{
  "requestUuid" : "fa68b605-d489-4143-a370-693787fb5899",
  "transactionStatus" : "REJECTED",
  "status" : "E0159",
  "message" : "Transaction rejected, restricted transaction amount has occurred",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "5b959c38-834d-4fe7-9ce6-83ef9b80052b"
}
HTTP Response - STATUS: E0201
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 267

{
  "requestUuid" : "adcb3308-64e6-45ca-bbb9-7c92b629692a",
  "transactionStatus" : "REJECTED",
  "status" : "E0201",
  "message" : "Transaction rejected, bin is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "31b92614-8fea-48a0-b6ca-7f39ebdcfb15"
}
HTTP Response - STATUS: E0202
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "8f1fc639-9da8-4e6f-8798-d018af6de45b",
  "transactionStatus" : "REJECTED",
  "status" : "E0202",
  "message" : "Transaction rejected, terminal is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "72d8a9d6-c8e2-453a-91e9-fd63222fbae0"
}
HTTP Response - STATUS: E0204
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "163c5141-4349-48de-80d3-49aff5d8e90c",
  "transactionStatus" : "REJECTED",
  "status" : "E0204",
  "message" : "Transaction rejected, user is on aml list",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "89ca88b4-1ed1-4583-a05d-cce6a10805bf"
}
HTTP Response - STATUS: E0205
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 268

{
  "requestUuid" : "e37693bc-2fbb-4030-a576-ab5bf0bdd4da",
  "transactionStatus" : "REJECTED",
  "status" : "E0205",
  "message" : "Transaction rejected, bank is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0ce15159-d009-4822-a7fc-43ecc003b6cc"
}
HTTP Response - STATUS: E0206
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 301

{
  "requestUuid" : "e1dacbda-fde3-4234-98bc-f10a924ce7d1",
  "transactionStatus" : "REJECTED",
  "status" : "E0206",
  "message" : "Transaction rejected, too many reject transactions and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0e90fba0-e14e-431b-a57e-24212e13f676"
}
HTTP Response - STATUS: E0207
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 299

{
  "requestUuid" : "16b3cc43-b8f8-4579-9c8f-505adb29999b",
  "transactionStatus" : "REJECTED",
  "status" : "E0207",
  "message" : "Transaction rejected, too many attempts declined and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "96afcaa9-24da-48fe-aed5-989db1faf389"
}
HTTP Response - STATUS: E0208
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "3a223d61-adb8-42f3-b95e-97afc333df97",
  "transactionStatus" : "REJECTED",
  "status" : "E0208",
  "message" : "Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e770cf95-8b42-4453-8a8c-771dc47ae98f"
}
HTTP Response - STATUS: E0209
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 292

{
  "requestUuid" : "5d7c8af3-7748-466a-a203-aec752256000",
  "transactionStatus" : "REJECTED",
  "status" : "E0209",
  "message" : "Transaction rejected, sender name contains fraudulent phrase.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4b53fe80-8dbc-49f6-a547-4350160f5460"
}
HTTP Response - STATUS: E0210
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 276

{
  "requestUuid" : "eee3ea27-8f43-4f5e-94b9-1f7efdc956c8",
  "transactionStatus" : "REJECTED",
  "status" : "E0210",
  "message" : "Transaction rejected, suspicious sender name.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "993d524b-326e-4221-927e-fa24bef2354e"
}
HTTP Response - STATUS: E0211
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 277

{
  "requestUuid" : "d67aa7d3-1cc7-4ce8-92e7-19ca54739acd",
  "transactionStatus" : "REJECTED",
  "status" : "E0211",
  "message" : "Transaction rejected, card country restricted.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "a46eb94e-b81f-4da3-99de-ffc672020197"
}
HTTP Response - STATUS: E01594
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 317

{
  "requestUuid" : "3a706942-5045-4fe6-9e1b-00eeb60e11c3",
  "transactionStatus" : "REJECTED",
  "status" : "E01594",
  "message" : "Transaction rejected, transactionXId parameter had registered for another transaction",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "3680b0cd-2dd3-45fc-b307-e644cf4d60b1"
}
HTTP Response - STATUS: E01596
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "5c019324-ffe3-4338-86d9-730cdcc3dd65",
  "transactionStatus" : "REJECTED",
  "status" : "E01596",
  "message" : "Transaction rejected, terminal blocks transactions with card issued in given card country",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "168589f5-a146-444f-9b38-466326597a9e"
}
HTTP Response - STATUS: E01597
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 369

{
  "requestUuid" : "4c031f79-3982-415d-9d20-87141e5e5650",
  "transactionStatus" : "REJECTED",
  "status" : "E01597",
  "message" : "Transaction rejected, 3DS version of terminal are not compatible with 3DS version defined in request. Please contact the sales department",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "df76332f-735f-4ef5-87b5-a4e2eee92c75"
}
HTTP Response - STATUS: E01607
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 315

{
  "requestUuid" : "9389b4e5-2e53-4f70-8d59-0fb7799a95fc",
  "transactionStatus" : "REJECTED",
  "status" : "E01607",
  "message" : "Transaction rejected, internal server error during authorization request generation",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1ab14cb7-c7b3-4af1-a730-a32386436243"
}
HTTP Response - STATUS: E01598
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 298

{
  "requestUuid" : "1bcdd538-c157-486b-a246-3354bda731aa",
  "transactionStatus" : "REJECTED",
  "status" : "E01598",
  "message" : "Transaction rejected, ECI value is not available for card provider",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9ab89736-eaed-4065-8384-353c93c6403b"
}
Table 106. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E0200
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 381

{
  "requestUuid" : "bee3214f-aa90-4608-a1cd-d6f794bdc600",
  "transactionStatus" : "REJECTED",
  "cardBlockadeAdditionalData" : {
    "blockType" : "TEMP",
    "blockedUntil" : "2022-11-01T12:51:32.000"
  },
  "status" : "E0200",
  "message" : "Transaction rejected, card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "afa61805-aac8-4908-9c4a-623a642a3580"
}
Table 107. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

cardBlockadeAdditionalData.blockType

String

Block type. Possible values: TEMP - temporary, PERMANENT - permanent.

cardBlockadeAdditionalData.blockedUntil

String

Date until card will be blocked in yyyy-MM-ddThh-mm-ss.SSS format.

HTTP Response - STATUS: E01600
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 326

{
  "requestUuid" : "394f573e-d6ca-419f-8e85-309893ac7efd",
  "transactionStatus" : "REJECTED",
  "status" : "E01584",
  "message" : "Transaction rejected, 3DS 2.X flow invoked for other card number than specified in the request",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "aa242dc6-db70-4d83-a4e7-71f04b41e4b5"
}
Table 108. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E01601
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 286

{
  "requestUuid" : "055c3e35-ffd5-4225-9f37-9f5b2a36d4b7",
  "transactionStatus" : "REJECTED",
  "status" : "E01601",
  "message" : "Transaction rejected, terminal is blocked for provider",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2d2ed1d9-bdfb-4a51-afcd-ca891957e553"
}
Table 109. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E01602
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 308

{
  "requestUuid" : "7ed1ec8a-1b4b-4996-81b6-f43e18dbfd18",
  "transactionStatus" : "REJECTED",
  "status" : "E01602",
  "message" : "Transaction rejected, geographic scope is not permitted for this transaction",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2f73bc8c-2ec6-4f2b-a5bf-c522ad8f6fcc"
}
Table 110. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E10000
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 300

{
  "requestUuid" : "771ea2b1-609d-4ea6-a451-405da1cafad6",
  "transactionStatus" : "REJECTED",
  "status" : "E10000",
  "message" : "Transaction rejected, terminal daily card transaction limit exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1c604154-de14-41a9-aaab-da9913bb2921"
}
Table 111. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E10001
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 295

{
  "requestUuid" : "5502dced-2d2b-4dbb-8e8d-5ca862e3a792",
  "transactionStatus" : "REJECTED",
  "status" : "E10001",
  "message" : "Transaction rejected, terminal daily transaction limit exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "c9d78972-1d2b-4768-a60b-d47717d924d2"
}
Table 112. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E10002
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 297

{
  "requestUuid" : "a9e3187b-3f2c-4862-bef3-d1212a9034e2",
  "transactionStatus" : "REJECTED",
  "status" : "E10002",
  "message" : "Transaction rejected, terminal monthly transaction limit exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "7caa051b-0d62-4403-a837-bf76427b3af6"
}
Table 113. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E13000
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "dad2ae3e-4819-4cb2-be08-bedfa07fc77b",
  "transactionStatus" : "REJECTED",
  "status" : "E13000",
  "message" : "Transaction rejected, risk score exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1851d40f-e71d-4b05-ade4-3c333614a425"
}
500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0142
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 183

{
  "status" : "E0142",
  "message" : "Commission configuration not add for terminal",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "09a52529-399f-4b7a-b32d-5f555dfecf52"
}
HTTP Response - STATUS: E0153
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 280

{
  "requestUuid" : "f437de95-ecc3-476b-b99c-ef42f39548d8",
  "transactionStatus" : "PENDING",
  "status" : "E0153",
  "message" : "Transaction declined, problem with MIP connection",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "541cad8f-2598-411d-9816-a84a381fcdb2"
}
HTTP Response - STATUS: E01599
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "de7c8f08-3669-49d4-ae26-e8ffc3e710bb",
  "transactionStatus" : "DECLINED",
  "status" : "E01599",
  "message" : "Transaction declined, processing timeout",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "34bb20c6-1d69-4e37-990e-432b47d13c19"
}
HTTP Response - STATUS: E0190
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 166

{
  "status" : "E0190",
  "message" : "Failed to get currency rates",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "92045e47-ca3f-40d8-9e32-4ad515a505c2"
}
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
HTTP Response - STATUS: E9008
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 265

{
  "requestUuid" : "372fd212-1164-4761-82a6-29eececbe313",
  "transactionStatus" : "DECLINED",
  "status" : "E9008",
  "message" : "Error mpi - 3ds initialize failed",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "acdb9c93-ba54-4baf-b421-c9aa1ce84bee"
}
Table 114. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
HTTP Response - STATUS: E9002
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 250

{
  "requestUuid" : "aaccb5d2-f3e1-40dc-89cb-bdff2e02d12a",
  "transactionStatus" : "DECLINED",
  "status" : "E9002",
  "message" : "Error mpi connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "c736c0da-31af-41b3-bbc4-03b6a63cb18a"
}
HTTP Response - STATUS: E9010
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 258

{
  "requestUuid" : "228e6d0c-e37d-46c4-975d-f14ffbd54568",
  "transactionStatus" : "REJECTED",
  "status" : "E9010",
  "message" : "Error data center connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "125d4847-34af-40c9-a850-234c683d4a6b"
}
HTTP Response - STATUS: E9011
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 249

{
  "requestUuid" : "509a3054-7a95-4649-bedf-9bf25a1a72e6",
  "transactionStatus" : "ERROR",
  "status" : "E9011",
  "message" : "Error limit connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "f4def6bd-1730-4b29-bdb6-2a7412119f21"
}
Table 115. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

6.5. MO/TO payment

POST /client/payments/moto/auth Content Type: application/json, Authorization: Basic Auth
MO/TO is a type of transaction where the customer makes a purchase in the merchant's shop by phone or e-mail. All required transactional data are obtained through a call to
the merchant's consultant and sensitive data, e.g. by typing cvc, expiry date, card number on the phone keypad.
The MO/TO transaction has two possible types of authentication: CVC (using the card's cvc) or AVS (using the cardholder's address - postcode and address e.g. house number).
Merchant has the ability to make a payment for goods which causes the cardholder to be debited in the currency of purchase, terminal or card currency based on the parameters provided: currency of transaction, different currency terminals held and currencies supported by the card.
The optional terminalUuid field provided during any of the authorisation methods forces the card to be debited in the currency of the terminal specified if the purchase currency is different from the terminal currency a currency conversion will take place.
The Fenige Payment API methods optionally allows merchants to store card data and sensitive personal data in order to allow performing subsequent transactions.
If merchant decides to use DataCenter transaction flow then is required to provide the card id of the card previously stored in the Fenige DataCenter, from which card the
relevant required parameters will be downloaded and used for authorization.
Card data and sensitive personal data according to the Fenige API specification are: cardNumber, expiryDate, firstName, lastName and email.
All card data are stored securely on Fenige DataCenter servers in accordance with applicable security requirements.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

When performing authorization, remember that there are currencies with different number of decimal places. For example: VND has no pennies and KWD has three decimal places. Please take this into account in the Amout field. For more information on other currencies, see ISO 4217.

MO/TO payment flow
ecommerce moto trx flow
MO/TO payment with DataCenter flow
ecommerce moto data center trx flow

6.5.1. Request

MO/TO CVC
HTTP Request
POST /client/payments/moto/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 677
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7c0cb9c4-2271-42e3-94f0-8977b23be4e4",
  "requestUuid" : "dea4a99f-600b-44aa-8908-31b534933efb",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "email" : "test@fenige.pl",
  "motoType" : "CVC",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 116. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 117. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Last name of cardholder

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

cardNumber

String

@Card number length must be between 12 and 19, @Must not be blank, @Must not be null

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

@Must not be blank, @Must not be null

Expiration date of card mm/yy

cvc2

String

@Length must be 3 characters, @Must not be null when MO/TO CVC @Must match regular expression: \d+

Cardholder’s card cvc2. Required only when moto verification type (motoType) is set to CVC value

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

motoType

String

@Must not be null

Allows to switch between CVC and AVS (Address Verification) methods of authentication

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

MO/TO CVC - forced Terminal
HTTP Request
POST /client/payments/moto/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 736
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "38e03922-a661-4175-95c1-a151678a2ca1",
  "terminalUuid" : "f36c4bdc-b8a4-4501-a4a2-aa89e9168002",
  "requestUuid" : "6b009097-e663-44f8-84ee-5e35e44d48d2",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "email" : "test@fenige.pl",
  "motoType" : "CVC",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "postalCode" : "24-110",
  "province" : "NY"
}
Table 118. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 119. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

terminalUuid

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Terminals’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Last name of cardholder

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

cardNumber

String

@Card number length must be between 12 and 19, @Must not be blank, @Must not be null

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

@Must not be blank, @Must not be null

Expiration date of card mm/yy

cvc2

String

@Length must be 3 characters, @Must not be null when MO/TO CVC @Must match regular expression: \d+

Cardholder’s card cvc2. Required only when moto verification type (motoType) is set to CVC value

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

motoType

String

@Must not be null

Allows to switch between CVC and AVS (Address Verification) methods of authentication

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

MO/TO AVS
HTTP Request
POST /client/payments/moto/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 690
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7c0cb9c4-2271-42e3-94f0-8977b23be4e4",
  "requestUuid" : "d053bae5-3ed6-4736-aa3e-f3907e420884",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "email" : "test@fenige.pl",
  "motoType" : "AVS",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "clientPostalCode" : "24-110",
  "clientAddress" : "5",
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY"
}
Table 120. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 121. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Last name of cardholder

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

cardNumber

String

@Card number length must be between 12 and 19, @Must not be blank, @Must not be null

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

@Must not be blank, @Must not be null

Expiration date of card mm/yy

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

motoType

String

@Must not be null

Allows to switch between CVC and AVS (Address Verification) methods of authentication

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

clientPostalCode

String

@Length must be between 1 and 10 inclusive, @Must not be blank, @Must not be null when AVS

Client postal code required in AVS service to authorize cardholder in bank issuer during MO/TO transaction

clientAddress

String

@Must not be null when AVS

Client address (e.g. house number) required in AVS service to authorize cardholder in bank issuer during MO/TO transaction

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

MO/TO AVS - forced Terminal
HTTP Request
POST /client/payments/moto/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 749
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "38e03922-a661-4175-95c1-a151678a2ca1",
  "terminalUuid" : "f36c4bdc-b8a4-4501-a4a2-aa89e9168002",
  "requestUuid" : "a04a2309-86e7-4a56-aef9-77aff9edcaae",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "email" : "test@fenige.pl",
  "motoType" : "AVS",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "clientPostalCode" : "24-110",
  "clientAddress" : "5",
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY"
}
Table 122. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 123. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

terminalUuid

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Terminals’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Last name of cardholder

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

cardNumber

String

@Card number length must be between 12 and 19, @Must not be blank, @Must not be null

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

@Must not be blank, @Must not be null

Expiration date of card mm/yy

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

motoType

String

@Must not be null

Allows to switch between CVC and AVS (Address Verification) methods of authentication

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

clientPostalCode

String

@Length must be between 1 and 10 inclusive, @Must not be blank, @Must not be null when AVS

Client postal code required in AVS service to authorize cardholder in bank issuer during MO/TO transaction

clientAddress

String

@Must not be null when AVS

Client address (e.g. house number) required in AVS service to authorize cardholder in bank issuer during MO/TO transaction

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

Request - DataCenter card
HTTP Request
POST /client/payments/moto/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 555
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7c0cb9c4-2271-42e3-94f0-8977b23be4e4",
  "requestUuid" : "12b9faff-19f8-4c6f-931d-aab7058f5273",
  "amount" : 1000,
  "currency" : "USD",
  "cardId" : 1906455,
  "cvc2" : "123",
  "motoType" : "CVC",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 124. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 125. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

cvc2

String

@Length must be 3 characters, @Must not be null when MO/TO CVC @Must match regular expression: \d+

Cardholder’s card cvc2. Required only when moto verification type (motoType) is set to CVC value

cardId

Number

@Must not be null, @Numeric

DataCenter card id. Required to obtain card information data from DataCenter such as (cardNumber, expiryDate, firstName, lastName, email)

motoType

String

@Must not be null

Allows to switch between CVC and AVS (Address Verification) methods of authentication

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

6.5.2. Response

Response status
Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

STATUS: E0135 - Returned when terminal for merchant not exist or all of them are inactive.

STATUS: E0137 - Returned when there is not terminal marked as default

STATUS: E06003 - Returned when DataCenter card was not found.

422 UNPROCESSABLE ENTITY

STATUS: E0150 - Returned when transaction is rejected.

STATUS: E0151 - Returned when transaction is rejected, because currency is not supported.

STATUS: E0152 - Returned when transaction is rejected, because issuer is not supported.

STATUS: E01580 - Returned when transaction is rejected, because DataCenter card was expired.

STATUS: E0159 - Returned when transaction is rejected, because restricted transaction amount has occurred

STATUS: E01596 - Returned when transaction is rejected, because terminal has blocked transaction with card issued in restricted country

STATUS: E01601 - Returned when transaction is rejected, because terminal is blocked for provider

STATUS: E01602 - Transaction rejected, geographic scope is not permitted for this transaction

STATUS: E01607 - Transaction rejected, internal server error during authorization request generation

STATUS: E0200 - Returned when transaction is rejected, because card is blocked in Fenige System

STATUS: E0201 - Returned when transaction is rejected, because BIN is blocked in Fenige System

STATUS: E0202 - Returned when transaction is rejected, because Terminal is blocked in Fenige System

STATUS: E0204 - Returned when transaction is rejected, because user’s personal data was found on AML (sanctions) list

STATUS: E0205 - Returned when transaction is rejected, because Bank is blocked in Fenige System

STATUS: E0206 - Returned when transaction is rejected, because to many reject transactions and card is blocked

STATUS: E0207 - Returned when transaction is rejected, bacause to many attempts declined and card is blocked

STATUS: E0208 - Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days

STATUS: E0209 - Returned when sender or receiver name contains fraudulent phrase

STATUS: E0210 - Returned when sender has suspicious name

STATUS: E0211 - Returned when transaction is rejected, because card country is blocked in Fenige System.

STATUS: E11000 - Returned when transaction processing time set by terminal was exceeded

STATUS: E13000 - Returned when transaction risk score was exceeded

500 INTERNAL SERVER ERROR

STATUS: E0153 - Returned when transaction is declined, by problem with MIP connection.

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E0142 - Returned when commission configuration is not added for terminal.

STATUS: E0190 - Returned when currency rate is invalid.

STATUS: E9000 - Returned when reason is unknown.

STATUS: E9010 - Returned when is error DataCenter connection.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

200 OK
HTTP Response - transaction
{
  "requestUuid" : "a3f2264c-af05-449b-8c2f-e80851f656df",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 126. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:10 GMT
Connection: close
Content-Length: 478

{
  "errors" : {
    "expiryDate" : [ "invalid card expiration date" ],
    "firstName" : [ "must not be blank", "must not be null" ],
    "lastName" : [ "must not be blank", "must not be null" ],
    "amount" : [ "must not be null" ],
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ],
    "currency" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "e808325f-9da1-4e1e-8309-428b5dfb8a68"
}
HTTP Response - transaction without specified motoType
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:48 GMT
Connection: close
Content-Length: 170

{
  "errors" : {
    "motoType" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "d3fcef27-a854-4631-af55-5f5efcdddff1"
}
Table 127. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

HTTP Response - STATUS: E8000 - DataCenter Bad Request
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:10 GMT
Connection: close
Content-Length: 679

{
  "errors" : {
    "expiryDate" : [ "Card id was provided, expiryDate is obtained from data center card: 1906455" ],
    "lastName" : [ "Card id was provided, lastName is obtained from data center card: 1906455" ],
    "firstName" : [ "Card id was provided, firstName is obtained from data center card: 1906455" ],
    "cardId" : [ "Please provide cardId for DATACENTER transaction or fields: cardNumber, expiryDate, firstName, lastName for PLAIN transaction" ],
    "cardNumber" : [ "Card id was provided, cardNumber is obtained from data center card: 1906455" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "ca61b3cc-154a-424a-bca9-8260bc3e6ebe"
}
Table 128. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:10 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "653c0f82-21a5-4b0a-97f0-2cc40b0b0cd3"
}
Table 129. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:11 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "e4c363a4-9074-4ebe-a727-74a2b876dfd6"
}
Table 130. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "fc5ac22f-26a9-441c-88a9-af980aca23de"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "f78c53ae-a529-4569-b787-64e0810251d3"
}
HTTP Response - STATUS: E0135
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 159

{
  "status" : "E0135",
  "message" : "Terminals for merchant not exists",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "de1842bd-7b81-4cd4-99c7-09d3bbec7c4c"
}
HTTP Response - STATUS: E0137
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 163

{
  "status" : "E0137",
  "message" : "Default terminal not exist",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "7fe615aa-9bd2-4e36-bf30-a5c24f25bc93"
}
Table 131. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E06003
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 246

{
  "requestUuid" : "5113f94d-046d-49c2-b698-709545ec7cb1",
  "transactionStatus" : "REJECTED",
  "status" : "E06003",
  "message" : "Datacenter card not found",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "d33cb514-b032-42f9-a9ee-2ac3f2ae941a"
}
Table 132. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0150
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 251

{
  "requestUuid" : "d5ceb045-127b-415e-8545-6f6b4c49a8cb",
  "transactionStatus" : "REJECTED",
  "status" : "E0150",
  "message" : "Transaction rejected",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "564f1f7f-83b7-48dd-8d98-bfd19428bb00"
}
HTTP Response - STATUS: E0151
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 275

{
  "requestUuid" : "9dd49dfd-24e6-4b0b-9a2a-3738ee4c6b86",
  "transactionStatus" : "REJECTED",
  "status" : "E0151",
  "message" : "Transaction rejected, currency not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4ff6f366-b2c6-4ab1-90f8-ff3c88a9a649"
}
HTTP Response - STATUS: E0152
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "d0eee21f-fce8-4e1f-9edb-bbcfe4a9877a",
  "transactionStatus" : "REJECTED",
  "status" : "E0152",
  "message" : "Transaction rejected, issuer card not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "c4e54c22-af07-45cc-a209-ee56959ec9f7"
}
HTTP Response - STATUS: E0159
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 295

{
  "requestUuid" : "fa68b605-d489-4143-a370-693787fb5899",
  "transactionStatus" : "REJECTED",
  "status" : "E0159",
  "message" : "Transaction rejected, restricted transaction amount has occurred",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "5b959c38-834d-4fe7-9ce6-83ef9b80052b"
}
HTTP Response - STATUS: E01580
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 270

{
  "requestUuid" : "05ad3818-bd6b-4455-97a5-7f582f35f491",
  "transactionStatus" : "REJECTED",
  "status" : "E01580",
  "message" : "Transaction rejected. Card is expired.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9732a31e-c038-4301-a7f3-e1b40b766067"
}
HTTP Response - STATUS: E0201
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 267

{
  "requestUuid" : "adcb3308-64e6-45ca-bbb9-7c92b629692a",
  "transactionStatus" : "REJECTED",
  "status" : "E0201",
  "message" : "Transaction rejected, bin is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "31b92614-8fea-48a0-b6ca-7f39ebdcfb15"
}
HTTP Response - STATUS: E0202
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "8f1fc639-9da8-4e6f-8798-d018af6de45b",
  "transactionStatus" : "REJECTED",
  "status" : "E0202",
  "message" : "Transaction rejected, terminal is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "72d8a9d6-c8e2-453a-91e9-fd63222fbae0"
}
HTTP Response - STATUS: E0204
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "163c5141-4349-48de-80d3-49aff5d8e90c",
  "transactionStatus" : "REJECTED",
  "status" : "E0204",
  "message" : "Transaction rejected, user is on aml list",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "89ca88b4-1ed1-4583-a05d-cce6a10805bf"
}
HTTP Response - STATUS: E0205
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 268

{
  "requestUuid" : "e37693bc-2fbb-4030-a576-ab5bf0bdd4da",
  "transactionStatus" : "REJECTED",
  "status" : "E0205",
  "message" : "Transaction rejected, bank is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0ce15159-d009-4822-a7fc-43ecc003b6cc"
}
HTTP Response - STATUS: E0206
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 301

{
  "requestUuid" : "e1dacbda-fde3-4234-98bc-f10a924ce7d1",
  "transactionStatus" : "REJECTED",
  "status" : "E0206",
  "message" : "Transaction rejected, too many reject transactions and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0e90fba0-e14e-431b-a57e-24212e13f676"
}
HTTP Response - STATUS: E0207
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 299

{
  "requestUuid" : "16b3cc43-b8f8-4579-9c8f-505adb29999b",
  "transactionStatus" : "REJECTED",
  "status" : "E0207",
  "message" : "Transaction rejected, too many attempts declined and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "96afcaa9-24da-48fe-aed5-989db1faf389"
}
HTTP Response - STATUS: E0208
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "3a223d61-adb8-42f3-b95e-97afc333df97",
  "transactionStatus" : "REJECTED",
  "status" : "E0208",
  "message" : "Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e770cf95-8b42-4453-8a8c-771dc47ae98f"
}
HTTP Response - STATUS: E0209
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 292

{
  "requestUuid" : "5d7c8af3-7748-466a-a203-aec752256000",
  "transactionStatus" : "REJECTED",
  "status" : "E0209",
  "message" : "Transaction rejected, sender name contains fraudulent phrase.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4b53fe80-8dbc-49f6-a547-4350160f5460"
}
HTTP Response - STATUS: E0210
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 276

{
  "requestUuid" : "eee3ea27-8f43-4f5e-94b9-1f7efdc956c8",
  "transactionStatus" : "REJECTED",
  "status" : "E0210",
  "message" : "Transaction rejected, suspicious sender name.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "993d524b-326e-4221-927e-fa24bef2354e"
}
HTTP Response - STATUS: E0211
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 277

{
  "requestUuid" : "d67aa7d3-1cc7-4ce8-92e7-19ca54739acd",
  "transactionStatus" : "REJECTED",
  "status" : "E0211",
  "message" : "Transaction rejected, card country restricted.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "a46eb94e-b81f-4da3-99de-ffc672020197"
}
HTTP Response - STATUS: E01607
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 315

{
  "requestUuid" : "9389b4e5-2e53-4f70-8d59-0fb7799a95fc",
  "transactionStatus" : "REJECTED",
  "status" : "E01607",
  "message" : "Transaction rejected, internal server error during authorization request generation",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1ab14cb7-c7b3-4af1-a730-a32386436243"
}
HTTP Response - STATUS: E01596
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "5c019324-ffe3-4338-86d9-730cdcc3dd65",
  "transactionStatus" : "REJECTED",
  "status" : "E01596",
  "message" : "Transaction rejected, terminal blocks transactions with card issued in given card country",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "168589f5-a146-444f-9b38-466326597a9e"
}
Table 133. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E0200
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 381

{
  "requestUuid" : "bee3214f-aa90-4608-a1cd-d6f794bdc600",
  "transactionStatus" : "REJECTED",
  "cardBlockadeAdditionalData" : {
    "blockType" : "TEMP",
    "blockedUntil" : "2022-11-01T12:51:32.000"
  },
  "status" : "E0200",
  "message" : "Transaction rejected, card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "afa61805-aac8-4908-9c4a-623a642a3580"
}
Table 134. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

cardBlockadeAdditionalData.blockType

String

Block type. Possible values: TEMP - temporary, PERMANENT - permanent.

cardBlockadeAdditionalData.blockedUntil

String

Date until card will be blocked in yyyy-MM-ddThh-mm-ss.SSS format.

HTTP Response - STATUS: E01601
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 286

{
  "requestUuid" : "055c3e35-ffd5-4225-9f37-9f5b2a36d4b7",
  "transactionStatus" : "REJECTED",
  "status" : "E01601",
  "message" : "Transaction rejected, terminal is blocked for provider",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2d2ed1d9-bdfb-4a51-afcd-ca891957e553"
}
Table 135. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E01602
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 308

{
  "requestUuid" : "7ed1ec8a-1b4b-4996-81b6-f43e18dbfd18",
  "transactionStatus" : "REJECTED",
  "status" : "E01602",
  "message" : "Transaction rejected, geographic scope is not permitted for this transaction",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2f73bc8c-2ec6-4f2b-a5bf-c522ad8f6fcc"
}
Table 136. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E13000
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "dad2ae3e-4819-4cb2-be08-bedfa07fc77b",
  "transactionStatus" : "REJECTED",
  "status" : "E13000",
  "message" : "Transaction rejected, risk score exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1851d40f-e71d-4b05-ade4-3c333614a425"
}
500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0142
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 183

{
  "status" : "E0142",
  "message" : "Commission configuration not add for terminal",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "09a52529-399f-4b7a-b32d-5f555dfecf52"
}
HTTP Response - STATUS: E0153
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 280

{
  "requestUuid" : "f437de95-ecc3-476b-b99c-ef42f39548d8",
  "transactionStatus" : "PENDING",
  "status" : "E0153",
  "message" : "Transaction declined, problem with MIP connection",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "541cad8f-2598-411d-9816-a84a381fcdb2"
}
HTTP Response - STATUS: E01599
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "de7c8f08-3669-49d4-ae26-e8ffc3e710bb",
  "transactionStatus" : "DECLINED",
  "status" : "E01599",
  "message" : "Transaction declined, processing timeout",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "34bb20c6-1d69-4e37-990e-432b47d13c19"
}
HTTP Response - STATUS: E0190
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 166

{
  "status" : "E0190",
  "message" : "Failed to get currency rates",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "92045e47-ca3f-40d8-9e32-4ad515a505c2"
}
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
Table 137. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
HTTP Response - STATUS: E9002
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 250

{
  "requestUuid" : "aaccb5d2-f3e1-40dc-89cb-bdff2e02d12a",
  "transactionStatus" : "DECLINED",
  "status" : "E9002",
  "message" : "Error mpi connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "c736c0da-31af-41b3-bbc4-03b6a63cb18a"
}
HTTP Response - STATUS: E9010
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 258

{
  "requestUuid" : "228e6d0c-e37d-46c4-975d-f14ffbd54568",
  "transactionStatus" : "REJECTED",
  "status" : "E9010",
  "message" : "Error data center connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "125d4847-34af-40c9-a850-234c683d4a6b"
}
Table 138. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

6.6. Token payment

POST /client/payments/token/auth Content Type: application/json, Authorization: Basic Auth
    The token payment method is a solution that allows merchant customers to make payments using mobile applications. The merchant uses a card number in the form of a token
(Apple pay) and dynamic cryptographic data to authenticate the cardholder. The merchant receives this data from the token requestor it uses.
    Then Fenige authorizes the transaction in Mastercard or VISA and depending on the result, returns the corresponding status to the merchant.
    An additional option not required is to send an additional authentication in the form of an outside3ds object containing the authentication data for the 3DS version 2.x
 execution confirmation.
Merchant has the ability to make a payment for goods which causes the cardholder to be debited in the currency of purchase, terminal or card currency based on the parameters provided: currency of transaction, different currency terminals held and currencies supported by the card.
The optional terminalUuid field provided during any of the authorisation methods forces the card to be debited in the currency of the terminal specified if the purchase currency is different from the terminal currency a currency conversion will take place.

Google pay - payment with Google pay is a standard ecommerce payment for which you can use the 6.4. Payment method except that there is no CVC2 field

This endpoint is idempotent so if you execute more than one requests with the same data even at the same time, only first registered transaction will be processed further. In
response, we receive transaction status.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

When performing authorization, remember that there are currencies with different number of decimal places. For example: VND has no pennies and KWD has three decimal places. Please take this into account in the Amout field. For more information on other currencies, see ISO 4217.

E-commerce payment with token flow
ecommerce token with outside3ds flow

6.6.1. Request

Request - with forced terminal outside 3DS 2.0
HTTP Request
POST /client/payments/token/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 1117
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "17d3e616-1857-424c-99dc-2a2ce56cd9d7",
  "terminalUuid" : "1de13501-6112-4eb2-9f88-7164a9d202d1",
  "requestUuid" : "14a5ea1b-f6c4-4b1f-8512-d190aba195ec",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 100,
  "currency" : "USD",
  "tokenPan" : "5127482301411937126",
  "authMethod" : "CRYPTOGRAM_3DS",
  "tokenType" : "GOOGLE_PAY",
  "expiryDate" : "11/26",
  "email" : "test@fenige.pl",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "terminalLocation" : "HOME",
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "paymentData" : {
    "onlinePaymentCryptogram" : "/0OL1zEABL+gk70RYJ8lMAABAAA=",
    "eciIndicator" : "02"
  },
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "receiverAmount" : 90,
  "countryOfResidence" : "PL",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 139. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 140. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Last name of cardholder

expiryDate

String

@Must not be blank, @Must not be null

Expiration date of card mm/yy

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

tokenPan

String

@Must be not null, @Must be not blank, @Length must be between 16 and 19

Token that is used in place of sender’s card number (PAN). Token form payment gateway or native apps from google, apple etc

terminalLocation

String

@Must not be null

Location of terminal - value must be set as HOME or PREMISES

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

paymentData

Object

Required payment tokenization data object.

Not required when tokenType = 'GOOGLE_PAY' and authMethod = 'PAN_ONLY'.

paymentData.onlinePaymentCryptogram

String

Payment secure cryptogram obtained during merchant card tokenization in mobile app (TAVV in GOOGLE_PAY case). Base64 encoded payment crypto value.

paymentData.eciIndicator

String

@Must match 01 or 02 or 05 or 06

Eci value returned only for tokens on the Visa card network. The value should be passed by merchant if present with payment cryptogram. Optional value.

If tokenType = 'GOOGLE_PAY' and authMethod = 'CRYPTOGRAM_3DS' and provider is 'VISA' then this field is required. Possible values for VISA are 05, 06.

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value

outside3ds.transactionXId

String

The transactionXId is the field that defines the 3DS version.The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x.TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 00 or 01 or 02 or 05 or 06 or 07, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. More info.

outside3ds.authenticationStatus

String

@Must match Y or A or U, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt. U - (Technical or other problem) - No liability shift, consider whether to proceed with the transaction

countryOfResidence

String

Country of residence is only required for merchants crypto

tokenType

String

@Optional

Token used - value may be set as GOOGLE_PAY or APPLE_PAY or OTHER.

authMethod

String

@Optional

Required only if tokenType is 'GOOGLE_PAY'.

Type of token transaction authorization - value may be set as CRYPTOGRAM_3DS or PAN_ONLY.

If authMethod is 'CRYPTOGRAM_3DS' then paymentData is required and outside3ds is optional.

If authMethod is 'PAN_ONLY' then outside3ds is required and there is no paymentData.

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

terminalUuid

String

Terminals’s unique uuid in system

Request
HTTP Request
POST /client/payments/token/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 847
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "ceafe037-8aef-4d99-8e76-4ffa02b2d54d",
  "requestUuid" : "14a5ea1b-f6c4-4b1f-8512-d190aba195ec",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 100,
  "currency" : "USD",
  "authMethod" : "CRYPTOGRAM_3DS",
  "tokenType" : "GOOGLE_PAY",
  "tokenPan" : "5127482301411937126",
  "expiryDate" : "11/26",
  "email" : "test@fenige.pl",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "terminalLocation" : "HOME",
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "paymentData" : {
    "onlinePaymentCryptogram" : "/0OL1zEABL+gk70RYJ8lMAABAAA=",
    "eciIndicator" : "02"
  },
  "receiverAmount" : 90,
  "countryOfResidence" : "PL",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 141. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 142. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Last name of cardholder

expiryDate

String

@Must not be blank, @Must not be null

Expiration date of card mm/yy

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

tokenPan

String

@Must be not null, @Must be not blank, @Length must be between 16 and 19

Token that is used in place of sender’s card number (PAN). Token form payment gateway or native apps from google, apple etc

terminalLocation

String

@Must not be null

Location of terminal - value must be set as HOME or PREMISES

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

paymentData

Object

Required payment tokenization data object.

Not required when tokenType = 'GOOGLE_PAY' and authMethod = 'PAN_ONLY'.

paymentData.onlinePaymentCryptogram

String

Payment secure cryptogram obtained during merchant card tokenization in mobile app (TAVV in GOOGLE_PAY case). Base64 encoded payment crypto value.

paymentData.eciIndicator

String

@Must match 01 or 02 or 05 or 06

Eci value returned only for tokens on the Visa card network. The value should be passed by merchant if present with payment cryptogram. Optional value.

If tokenType = 'GOOGLE_PAY' and authMethod = 'CRYPTOGRAM_3DS' and provider is 'VISA' then this field is required. Possible values for VISA are 05, 06.

countryOfResidence

String

Country of residence is only required for merchants crypto

tokenType

String

@Optional

Token used - value may be set as GOOGLE_PAY or APPLE_PAY or OTHER.

authMethod

String

@Optional

Required only if tokenType is 'GOOGLE_PAY'.

Type of token transaction authorization - value may be set as CRYPTOGRAM_3DS or PAN_ONLY.

If authMethod is 'CRYPTOGRAM_3DS' then paymentData is required and outside3ds is optional.

If authMethod is 'PAN_ONLY' then outside3ds is required and there is no paymentData.

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Request - forced Terminal
HTTP Request
POST /client/payments/token/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 906
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "17d3e616-1857-424c-99dc-2a2ce56cd9d7",
  "terminalUuid" : "1de13501-6112-4eb2-9f88-7164a9d202d1",
  "requestUuid" : "14a5ea1b-f6c4-4b1f-8512-d190aba195ec",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 100,
  "currency" : "USD",
  "authMethod" : "CRYPTOGRAM_3DS",
  "tokenType" : "GOOGLE_PAY",
  "tokenPan" : "5127482301411937126",
  "expiryDate" : "11/26",
  "email" : "test@fenige.pl",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "terminalLocation" : "HOME",
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "paymentData" : {
    "onlinePaymentCryptogram" : "/0OL1zEABL+gk70RYJ8lMAABAAA=",
    "eciIndicator" : "02"
  },
  "receiverAmount" : 90,
  "countryOfResidence" : "PL",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 143. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 144. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Last name of cardholder

expiryDate

String

@Must not be blank, @Must not be null

Expiration date of card mm/yy

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

tokenPan

String

@Must be not null, @Must be not blank, @Length must be between 16 and 19

Token that is used in place of sender’s card number (PAN). Token form payment gateway or native apps from google, apple etc

terminalLocation

String

@Must not be null

Location of terminal - value must be set as HOME or PREMISES

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

paymentData

Object

Required payment tokenization data object.

Not required when tokenType = 'GOOGLE_PAY' and authMethod = 'PAN_ONLY'.

paymentData.onlinePaymentCryptogram

String

Payment secure cryptogram obtained during merchant card tokenization in mobile app (TAVV in GOOGLE_PAY case). Base64 encoded payment crypto value.

paymentData.eciIndicator

String

@Must match 01 or 02 or 05 or 06

Eci value returned only for tokens on the Visa card network. The value should be passed by merchant if present with payment cryptogram. Optional value.

If tokenType = 'GOOGLE_PAY' and authMethod = 'CRYPTOGRAM_3DS' and provider is 'VISA' then this field is required. Possible values for VISA are 05, 06.

countryOfResidence

String

Country of residence is only required for merchants crypto

tokenType

String

@Optional

Token used - value may be set as GOOGLE_PAY or APPLE_PAY or OTHER.

authMethod

String

@Optional

Required only if tokenType is 'GOOGLE_PAY'.

Type of token transaction authorization - value may be set as CRYPTOGRAM_3DS or PAN_ONLY.

If authMethod is 'CRYPTOGRAM_3DS' then paymentData is required and outside3ds is optional.

If authMethod is 'PAN_ONLY' then outside3ds is required and there is no paymentData.

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

terminalUuid

String

Terminals’s unique uuid in system

6.6.2. Response

Response status
Status Description

200 OK

Returned when transaction was successfully authorized with Token.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when there was a problem with authorization to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorizeToken it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

STATUS: E0135 - Returned when terminal for merchant not exist or all of them are inactive.

STATUS: E0137 - Returned when there is not terminal marked as default

422 UNPROCESSABLE ENTITY

STATUS: E0150 - Returned when transaction is rejected.

STATUS: E0151 - Returned when transaction is rejected, because currency is not supported.

STATUS: E0152 - Returned when transaction is rejected, because issuer is not supported.

STATUS: E0156 - Returned where terminal used for process transaction do not support 3DS

STATUS: E0157 - Returned where card used for process transaction do not support 3DS

STATUS: E01583 - Returned when transaction is rejected, because outside3ds object was not provided in transaction request

STATUS: E0159 - Returned when transaction is rejected, because restricted transaction amount has occurred

STATUS: E01596 - Returned when transaction is rejected, because terminal has blocked transaction with card issued in restricted country

STATUS: E01597 - Transaction rejected, 3DS version of terminal are not compatible with 3DS version defined in request. Please contact the sales department

STATUS: E01598 - Transaction rejected, ECI value is not available for card provider

STATUS: E01600 - Transaction rejected, 3DS 2.X flow invoked for other card number than specified in the request

STATUS: E01601 - Returned when transaction is rejected, because terminal is blocked for provider

STATUS: E01602 - Transaction rejected, geographic scope is not permitted for this transaction

STATUS: E01607 - Transaction rejected, internal server error during authorization request generation

STATUS: E0200 - Returned when transaction is rejected, because card is blocked in Fenige System

STATUS: E0201 - Returned when transaction is rejected, because BIN is blocked in Fenige System

STATUS: E0202 - Returned when transaction is rejected, because Terminal is blocked in Fenige System

STATUS: E0203 - Returned when transaction is rejected, because Token is blocked in Fenige System

STATUS: E0204 - Returned when transaction is rejected, because user’s personal data was found on AML (sanctions) list

STATUS: E0205 - Returned when transaction is rejected, because Bank is blocked in Fenige System

STATUS: E0206 - Returned when transaction is rejected, because to many reject transactions and card is blocked

STATUS: E0207 - Returned when transaction is rejected, bacause to many attempts declined and card is blocked

STATUS: E0208 - Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days

STATUS: E0209 - Returned when sender or receiver name contains fraudulent phrase

STATUS: E0210 - Returned when sender has suspicious name

STATUS: E0211 - Returned when transaction is rejected, because card country is blocked in Fenige System.

STATUS: E11000 - Returned when transaction processing time set by terminal was exceeded

STATUS: E13000 - Returned when transaction risk score was exceeded

500 INTERNAL SERVER ERROR

STATUS: E0153 - Returned when transaction is declined, by problem with MIP connection.

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E0142 - Returned when commission configuration is not added for terminal.

STATUS: E0190 - Returned when currency rate is invalid.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

STATUS: E9002 - Returned when is error mpi connection.

200 OK
HTTP Response - transaction with outside3DS
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 208

{
  "requestUuid" : "177d40b6-59b7-427d-8b61-300f68b5e3e7",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 145. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:20 GMT
Connection: close
Content-Length: 481

{
  "errors" : {
    "expiryDate" : [ "ExpiryDate must not be null" ],
    "lastName" : [ "must not be null", "must not be blank" ],
    "firstName" : [ "must not be blank", "must not be null" ],
    "amount" : [ "must not be null" ],
    "terminalLocation" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ],
    "currency" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "9efffd33-d424-4656-bf6c-8406cef51c90"
}
Table 146. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:20 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "1c53bbd1-3bd1-4893-833f-107e6e82ab08"
}
Table 147. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:11 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "e4c363a4-9074-4ebe-a727-74a2b876dfd6"
}
Table 148. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "fb20bcca-6abe-4185-ba85-934e2ba75c0e"
}
HTTP Response - STATUS: E0137
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 159

{
  "status" : "E0135",
  "message" : "Terminals for merchant not exists",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "488069db-d1e7-4bbf-b9c8-1ea9a57073d2"
}
Table 149. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0150
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 251

{
  "requestUuid" : "5d3a7362-5cbf-4f21-b5e3-c5b3d513b00c",
  "transactionStatus" : "REJECTED",
  "status" : "E0150",
  "message" : "Transaction rejected",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4eca1026-1c88-43d1-bca7-74d1c58f0b70"
}
HTTP Response - STATUS: E0151
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 275

{
  "requestUuid" : "97a3d4c2-d5fd-48e5-8e81-594a29e6f8ea",
  "transactionStatus" : "REJECTED",
  "status" : "E0151",
  "message" : "Transaction rejected, currency not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9be30101-603b-4f80-8d67-f0ed16ffd770"
}

E01585 .HTTP Response - STATUS: E0152

HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "69f624f9-a081-4d74-8ae0-1869af53865e",
  "transactionStatus" : "REJECTED",
  "status" : "E0152",
  "message" : "Transaction rejected, issuer card not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "16c0a2a6-3a4a-4744-ac3e-81d341c2e7cb"
}
HTTP Response - STATUS: E0156
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 185

{
  "status" : "E0156",
  "message" : "Transaction rejected, terminal not supported 3ds",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0deb0ba9-4d60-422c-a2f1-3dd1296d87de"
}
HTTP Response - STATUS: E0157
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 181

{
  "status" : "E0157",
  "message" : "Transaction rejected, card not supported 3ds",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e8dc203c-1831-47e5-8fe8-19a9babd8508"
}
HTTP Response - STATUS: E0159
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 295

{
  "requestUuid" : "fa68b605-d489-4143-a370-693787fb5899",
  "transactionStatus" : "REJECTED",
  "status" : "E0159",
  "message" : "Transaction rejected, restricted transaction amount has occurred",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "5b959c38-834d-4fe7-9ce6-83ef9b80052b"
}
HTTP Response - STATUS: E01599
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "e91ba90b-3275-4f0c-9730-12f111985612",
  "transactionStatus" : "DECLINED",
  "status" : "E01599",
  "message" : "Transaction declined, processing timeout",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "fdbda03f-af1d-4ba7-babe-c0b4ebd533fd"
}
HTTP Response - STATUS: E0201
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 267

{
  "requestUuid" : "f8769e2a-7814-4fd5-b4e5-8b3cd24f68a9",
  "transactionStatus" : "REJECTED",
  "status" : "E0201",
  "message" : "Transaction rejected, bin is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "305179c8-98ea-4eb4-9b07-483fde96ad2c"
}
HTTP Response - STATUS: E0202
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "c2a80322-c8a5-42a2-a61e-3fb00dce4ed2",
  "transactionStatus" : "REJECTED",
  "status" : "E0202",
  "message" : "Transaction rejected, terminal is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "39b8ce33-f4ce-4821-999d-483f42cc43ae"
}
HTTP Response - STATUS: E0203
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 269

{
  "requestUuid" : "43b12b93-2b7c-4bed-9d3f-e1743fe056be",
  "transactionStatus" : "REJECTED",
  "status" : "E0203",
  "message" : "Transaction rejected, token is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "361b9475-bd07-4310-93a9-d0fa05977c00"
}
HTTP Response - STATUS: E0204
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "14755206-c67b-4973-a9da-bc7164f2b872",
  "transactionStatus" : "REJECTED",
  "status" : "E0204",
  "message" : "Transaction rejected, user is on aml list",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "d90f3872-7a7a-468f-b3bf-4ce645775e0d"
}
HTTP Response - STATUS: E0205
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 268

{
  "requestUuid" : "a03b1b79-997f-4a64-a527-b01087c09562",
  "transactionStatus" : "REJECTED",
  "status" : "E0205",
  "message" : "Transaction rejected, bank is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "31efe173-7b04-463e-8ab0-d956602103a4"
}
HTTP Response - STATUS: E0206
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 301

{
  "requestUuid" : "e1dacbda-fde3-4234-98bc-f10a924ce7d1",
  "transactionStatus" : "REJECTED",
  "status" : "E0206",
  "message" : "Transaction rejected, too many reject transactions and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0e90fba0-e14e-431b-a57e-24212e13f676"
}
HTTP Response - STATUS: E0207
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 299

{
  "requestUuid" : "16b3cc43-b8f8-4579-9c8f-505adb29999b",
  "transactionStatus" : "REJECTED",
  "status" : "E0207",
  "message" : "Transaction rejected, too many attempts declined and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "96afcaa9-24da-48fe-aed5-989db1faf389"
}
HTTP Response - STATUS: E0208
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "3a223d61-adb8-42f3-b95e-97afc333df97",
  "transactionStatus" : "REJECTED",
  "status" : "E0208",
  "message" : "Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e770cf95-8b42-4453-8a8c-771dc47ae98f"
}
HTTP Response - STATUS: E0209
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 292

{
  "requestUuid" : "5d7c8af3-7748-466a-a203-aec752256000",
  "transactionStatus" : "REJECTED",
  "status" : "E0209",
  "message" : "Transaction rejected, sender name contains fraudulent phrase.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4b53fe80-8dbc-49f6-a547-4350160f5460"
}
HTTP Response - STATUS: E0210
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 276

{
  "requestUuid" : "eee3ea27-8f43-4f5e-94b9-1f7efdc956c8",
  "transactionStatus" : "REJECTED",
  "status" : "E0210",
  "message" : "Transaction rejected, suspicious sender name.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "993d524b-326e-4221-927e-fa24bef2354e"
}
HTTP Response - STATUS: E0211
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 277

{
  "requestUuid" : "d67aa7d3-1cc7-4ce8-92e7-19ca54739acd",
  "transactionStatus" : "REJECTED",
  "status" : "E0211",
  "message" : "Transaction rejected, card country restricted.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "a46eb94e-b81f-4da3-99de-ffc672020197"
}
HTTP Response - STATUS: E01583
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 290

{
  "requestUuid" : "2bf5cc8f-3119-41cb-a6be-a7e73efd1cf4",
  "transactionStatus" : "REJECTED",
  "status" : "E01583",
  "message" : "Transaction rejected. Outside 3ds is required for terminal",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "5bd54c8d-8f5c-4faa-934d-42212667c48a"
}
HTTP Response - STATUS: E01596
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "5c019324-ffe3-4338-86d9-730cdcc3dd65",
  "transactionStatus" : "REJECTED",
  "status" : "E01596",
  "message" : "Transaction rejected, terminal blocks transactions with card issued in given card country",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "168589f5-a146-444f-9b38-466326597a9e"
}
HTTP Response - STATUS: E01597
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 369

{
  "requestUuid" : "4c031f79-3982-415d-9d20-87141e5e5650",
  "transactionStatus" : "REJECTED",
  "status" : "E01597",
  "message" : "Transaction rejected, 3DS version of terminal are not compatible with 3DS version defined in request. Please contact the sales department",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "df76332f-735f-4ef5-87b5-a4e2eee92c75"
}
HTTP Response - STATUS: E01607
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 315

{
  "requestUuid" : "9389b4e5-2e53-4f70-8d59-0fb7799a95fc",
  "transactionStatus" : "REJECTED",
  "status" : "E01607",
  "message" : "Transaction rejected, internal server error during authorization request generation",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1ab14cb7-c7b3-4af1-a730-a32386436243"
}
HTTP Response - STATUS: E01598
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 298

{
  "requestUuid" : "1bcdd538-c157-486b-a246-3354bda731aa",
  "transactionStatus" : "REJECTED",
  "status" : "E01598",
  "message" : "Transaction rejected, ECI value is not available for card provider",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9ab89736-eaed-4065-8384-353c93c6403b"
}
Table 150. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E0200
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 381

{
  "requestUuid" : "f6739255-e650-490f-91f3-def8570f072d",
  "transactionStatus" : "REJECTED",
  "cardBlockadeAdditionalData" : {
    "blockType" : "TEMP",
    "blockedUntil" : "2022-11-01T12:51:32.000"
  },
  "status" : "E0200",
  "message" : "Transaction rejected, card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4342fc7b-18b4-4109-a9be-0bd303266c29"
}
Table 151. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

cardBlockadeAdditionalData.blockType

String

Block type. Possible values: TEMP - temporary, PERMANENT - permanent.

cardBlockadeAdditionalData.blockedUntil

String

Date until card will be blocked in yyyy-MM-ddThh-mm-ss.SSS format.

HTTP Response - STATUS: E01600
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 326

{
  "requestUuid" : "394f573e-d6ca-419f-8e85-309893ac7efd",
  "transactionStatus" : "REJECTED",
  "status" : "E01584",
  "message" : "Transaction rejected, 3DS 2.X flow invoked for other card number than specified in the request",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "aa242dc6-db70-4d83-a4e7-71f04b41e4b5"
}
Table 152. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E01601
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 286

{
  "requestUuid" : "055c3e35-ffd5-4225-9f37-9f5b2a36d4b7",
  "transactionStatus" : "REJECTED",
  "status" : "E01601",
  "message" : "Transaction rejected, terminal is blocked for provider",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2d2ed1d9-bdfb-4a51-afcd-ca891957e553"
}
Table 153. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E01602
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 308

{
  "requestUuid" : "7ed1ec8a-1b4b-4996-81b6-f43e18dbfd18",
  "transactionStatus" : "REJECTED",
  "status" : "E01602",
  "message" : "Transaction rejected, geographic scope is not permitted for this transaction",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2f73bc8c-2ec6-4f2b-a5bf-c522ad8f6fcc"
}
Table 154. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E13000
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "dad2ae3e-4819-4cb2-be08-bedfa07fc77b",
  "transactionStatus" : "REJECTED",
  "status" : "E13000",
  "message" : "Transaction rejected, risk score exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1851d40f-e71d-4b05-ade4-3c333614a425"
}
500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0153
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 280

{
  "requestUuid" : "9f101c38-1c2c-472d-921b-22493f96cd45",
  "transactionStatus" : "PENDING",
  "status" : "E0153",
  "message" : "Transaction declined, problem with MIP connection",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "05d50e14-d9c5-4e41-9f3e-344872d7cc23"
}
HTTP Response - STATUS: E0142
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 183

{
  "status" : "E0142",
  "message" : "Commission configuration not add for terminal",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "f5f2494c-54d2-42de-aa28-1db7f12529d8"
}
HTTP Response - STATUS: E0190
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 166

{
  "status" : "E0190",
  "message" : "Failed to get currency rates",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "c775bd40-9c69-406f-af98-741d050620e1"
}
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
HTTP Response - STATUS: E9008
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 265

{
  "requestUuid" : "4cfef7f0-2ea7-4cf1-a3f4-ebe25aab80dc",
  "transactionStatus" : "DECLINED",
  "status" : "E9008",
  "message" : "Error mpi - 3ds initialize failed",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "44f857fa-13c1-4665-9c9e-0dc817b077bf"
}
Table 155. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
HTTP Response - STATUS: E9002
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 250

{
  "requestUuid" : "dadbe5f7-5f77-4110-9300-e542df1c7a62",
  "transactionStatus" : "DECLINED",
  "status" : "E9002",
  "message" : "Error mpi connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "cd9f6d97-0b03-4e41-838c-f8d61b32e897"
}
Table 156. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

6.7. CoF payment

A CoF (credential on file transaction) is a transaction where a cardholder authorizes a merchant to store account information such as (PAN and expiration date, and the
cardholder subsequently authorizes that same merchant to bill the cardholder’s stored account.
The method is used to charge the cardholder with no need to collect account data (PAN, exp date) from merchant at every transaction.
Using this method, we can authorize and process entire transaction using stored payment details. CoF supports both 3DS and without 3DS transactions. How the transaction will
be initiated depends on the terminal settings (look at 'is3dsEnable' field).
This endpoint is idempotent so if you execute more than one requests with the same data even at the same time, only first registered transaction will be processed further. In
response, we receive transaction status.
The cof transaction consists of two parts: initial and subsequent, which are discussed in detail below.
Please see detailed CoF transaction flow described on below listings.
Merchant has the ability to make a payment for goods which causes the cardholder to be debited in the currency of purchase, terminal or card currency based on the parameters provided: currency of transaction, different currency terminals held and currencies supported by the card.
The optional terminalUuid field provided during any of the authorisation methods forces the card to be debited in the currency of the terminal specified if the purchase currency is different from the terminal currency a currency conversion will take place.
The Fenige Payment API methods optionally allows merchants to store card data and sensitive personal data in order to allow performing subsequent transactions.
If merchant decides to use DataCenter transaction flow then is required to provide the card id of the card previously stored in the Fenige DataCenter, from which card the
relevant required parameters will be downloaded and used for authorization.
Card data and sensitive personal data according to the Fenige API specification are: cardNumber, expiryDate, firstName, lastName and email.
All card data are stored securely on Fenige DataCenter servers in accordance with applicable security requirements.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

When performing authorization, remember that there are currencies with different number of decimal places. For example: VND has no pennies and KWD has three decimal places. Please take this into account in the Amout field. For more information on other currencies, see ISO 4217.

CoF payment flow
cof trx with outside3ds flow
CoF payment with DataCenter flow
cof trx data center outside3ds flow

6.7.1. CoF Initial transaction

POST /client/payments/cof/initial Content Type: application/json, Authorization: Basic Auth
The first stage is a one-time initial transaction, which is a simple e-commerce payment but contains the customer's consent to store card data for subsequent purchases. Card
 data is stored in a secure FENIGE environment. After completing the initial merchant receives the unique cofInitialUuid identifier needed to perform subsequent CoF
 transactions without having to enter card data.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

Request
Request
HTTP Request
POST /client/payments/cof/initial HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 897
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7c0cb9c4-2271-42e3-94f0-8977b23be4e4",
  "requestUuid" : "0be5740f-ffaf-4ffc-9dc1-aa19aab70e7a",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "email" : "test@fenige.pl",
  "phoneNumber" : "500500500",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "postalCode" : "24-110",
  "province" : "NY"
}
Table 157. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 158. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

cardNumber

String

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

Expiration date of card mm/yy

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

amount

Number

@Must be positive or zero, @Must not be null

The total transfer amount (in pennies). If the amount is equal to zero there is sent account status inquiry to validate aspects of a cardholder account.

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

phoneNumber

String

@Optional @Must match regular expression [0-9]{3,14}

Cardholder’s phone number

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value

outside3ds.transactionXId

String

Cardholder Authentication Verification Value. The transactionXId is the field that defines the 3DS version.The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x.TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 01 or 02 or 05 or 06, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. Chargeback protection applies.

outside3ds.authenticationStatus

String

@Must match Y or A, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "^[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Request - forced Terminal
HTTP Request
POST /client/payments/cof/initial HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 745
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "a45ffdfc-ab52-4f97-808a-60fe150b04b5",
  "terminalUuid" : "67b470f9-42bc-40e9-b0fe-1bfd203c7e8d",
  "requestUuid" : "71f532f8-7e56-4179-a55b-821f58423eaa",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "email" : "test@fenige.pl",
  "phoneNumber" : "500500500",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "postalCode" : "24-110",
  "province" : "NY"
}
Table 159. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 160. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

cardNumber

String

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

Expiration date of card mm/yy

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

amount

Number

@Must be positive or zero, @Must not be null

The total transfer amount (in pennies). If the amount is equal to zero there is sent account status inquiry to validate aspects of a cardholder account.

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

phoneNumber

String

@Optional @Must match regular expression [0-9]{3,14}

Cardholder’s phone number

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "^[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

terminalUuid

String

Terminals’s unique uuid in system

Request - DataCenter card
HTTP Request
POST /client/payments/cof/initial HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 744
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7da2a79b-212a-4957-beb3-14de6d9fcc9f",
  "requestUuid" : "28b82905-648a-4cf1-9c7d-a828d773c703",
  "amount" : 1000,
  "currency" : "USD",
  "cardId" : 1906455,
  "cvc2" : "123",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 161. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 162. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

cardId

Number

@Must not be null, @Numeric

DataCenter card id. Required to obtain card information data from DataCenter such as (cardNumber, expiryDate, firstName, lastName, email)

amount

Number

@Must be positive or zero, @Must not be null

The total transfer amount (in pennies). If the amount is equal to zero there is sent account status inquiry to validate aspects of a cardholder account.

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value

outside3ds.transactionXId

String

Cardholder Authentication Verification Value. The transactionXId is the field that defines the 3DS version.The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x.TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 01 or 02 or 05 or 06, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. Chargeback protection applies.

outside3ds.authenticationStatus

String

@Must match Y or A, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "^[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Token request
HTTP Request
POST /client/payments/cof/initial HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 1108
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "26609e42-4a0e-4dab-916c-edf29c517ad3",
  "requestUuid" : "5e248297-23df-4ec5-acd3-964e408f03f9",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "authMethod" : "CRYPTOGRAM_3DS",
  "tokenType" : "GOOGLE_PAY",
  "terminalLocation" : "HOME",
  "paymentData" : {
    "onlinePaymentCryptogram" : "/0OL1zEABL+gk70RYJ8lMAABAAA=",
    "eciIndicator" : "02"
  },
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "email" : "test@fenige.pl",
  "phoneNumber" : "500500500",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "postalCode" : "24-110",
  "province" : "NY"
}
Table 163. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 164. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

cardNumber

String

Full cardholder’s Token Pan must be between 12-digits and 19-digits

expiryDate

String

Expiration date of card mm/yy

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

amount

Number

@Must be positive or zero, @Must not be null

The total transfer amount (in pennies). If the amount is equal to zero there is sent account status inquiry to validate aspects of a cardholder account.

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

tokenType

String

@Optional

Token used - value may be set as GOOGLE_PAY or APPLE_PAY or OTHER.

authMethod

String

@Optional

Required only if tokenType is 'GOOGLE_PAY'.

Type of token transaction authorization - value may be set as CRYPTOGRAM_3DS or PAN_ONLY.

If authMethod is 'CRYPTOGRAM_3DS' then paymentData is required and outside3ds is optional.

If authMethod is 'PAN_ONLY' then outside3ds is required and there is no paymentData.

terminalLocation

String

Location of terminal - value must be set as HOME or PREMISES

paymentData

Object

Required payment tokenization data object.

Not required when tokenType = 'GOOGLE_PAY' and authMethod = 'PAN_ONLY'.

paymentData.onlinePaymentCryptogram

String

Payment secure cryptogram obtained during merchant card tokenization in mobile app (TAVV in GOOGLE_PAY case). Base64 encoded payment crypto value.

paymentData.eciIndicator

String

@Must match 01 or 02 or 05 or 06

Eci value returned only for tokens on the Visa card network. The value should be passed by merchant if present with payment cryptogram. Optional value.

If tokenType = 'GOOGLE_PAY' and authMethod = 'CRYPTOGRAM_3DS' and provider is 'VISA' then this field is required. Possible values for VISA are 05, 06.

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

phoneNumber

String

@Optional @Must match regular expression [0-9]{3,14}

Cardholder’s phone number

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value

outside3ds.transactionXId

String

Cardholder Authentication Verification Value. The transactionXId is the field that defines the 3DS version.The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x.TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 01 or 02 or 05 or 06, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. Chargeback protection applies.

outside3ds.authenticationStatus

String

@Must match Y or A, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "^[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Response
Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

STATUS: E0135 - Returned when terminal for merchant not exist or all of them are inactive.

STATUS: E0137 - Returned when there is not terminal marked as default

STATUS: E06003 - Returned when DataCenter card was not found.

422 UNPROCESSABLE ENTITY

STATUS: E0150 - Returned when transaction is rejected.

STATUS: E0151 - Returned when transaction is rejected, because currency is not supported.

STATUS: E0152 - Returned when transaction is rejected, because issuer is not supported.

STATUS: E01580 - Returned when transaction is rejected, because DataCenter card was expired.

STATUS: E0159 - Returned when transaction is rejected, because restricted transaction amount has occurred

STATUS: E01596 - Returned when transaction is rejected, because terminal has blocked transaction with card issued in restricted country

STATUS: E01601 - Returned when transaction is rejected, because terminal is blocked for provider

STATUS: E01602 - Transaction rejected, geographic scope is not permitted for this transaction

STATUS: E01607 - Transaction rejected, internal server error during authorization request generation

STATUS: E0200 - Returned when transaction is rejected, because card is blocked in Fenige System

STATUS: E0201 - Returned when transaction is rejected, because BIN is blocked in Fenige System

STATUS: E0202 - Returned when transaction is rejected, because Terminal is blocked in Fenige System

STATUS: E0204 - Returned when transaction is rejected, because user’s personal data was found on AML (sanctions) list

STATUS: E0205 - Returned when transaction is rejected, because Bank is blocked in Fenige System

STATUS: E0206 - Returned when transaction is rejected, because to many reject transactions and card is blocked

STATUS: E0207 - Returned when transaction is rejected, bacause to many attempts declined and card is blocked

STATUS: E0208 - Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days

STATUS: E0209 - Returned when sender or receiver name contains fraudulent phrase

STATUS: E0210 - Returned when sender has suspicious name

STATUS: E0211 - Returned when transaction is rejected, because card country is blocked in Fenige System.

STATUS: E01600 - Returned when transaction is declined, because 3DS 2.X flow invoked for other card number than specified in the request

STATUS: E11000 - Returned when transaction processing time set by terminal was exceeded

STATUS: E13000 - Returned when transaction risk score was exceeded

500 INTERNAL SERVER ERROR

STATUS: E0142 - Returned when commission configuration is not added for terminal.

STATUS: E0153 - Returned when transaction is declined, by problem with MIP connection.

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E0190 - Returned when currency rate is invalid.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

STATUS: E9002 - Returned when is error mpi connection.

STATUS: E9010 - Returned when is error DataCenter connection.

200 OK
HTTP Response - transaction without 3DS or with outside3DS
{
  "requestUuid" : "f93789f0-d10a-45d3-b7b5-683e512deee8",
  "cofInitialUuid" : "dc07150b-5941-4b69-a5fa-c3d39f01c0d9",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 165. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

cofInitialUuid

String

CoF transaction unique uuid in system

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:02 GMT
Connection: close
Content-Length: 679

{
  "errors" : {
    "expiryDate" : [ "Card id was provided, expiryDate is obtained from data center card: 1906455" ],
    "lastName" : [ "Card id was provided, lastName is obtained from data center card: 1906455" ],
    "firstName" : [ "Card id was provided, firstName is obtained from data center card: 1906455" ],
    "cardId" : [ "Please provide cardId for DATACENTER transaction or fields: cardNumber, expiryDate, firstName, lastName for PLAIN transaction" ],
    "cardNumber" : [ "Card id was provided, cardNumber is obtained from data center card: 1906455" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "de546a43-9125-4e11-878d-219602d68694"
}
Table 166. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

HTTP Response - STATUS: E8000 - DataCenter Bad Request
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:02 GMT
Connection: close
Content-Length: 679

{
  "errors" : {
    "expiryDate" : [ "Card id was provided, expiryDate is obtained from data center card: 1906455" ],
    "lastName" : [ "Card id was provided, lastName is obtained from data center card: 1906455" ],
    "firstName" : [ "Card id was provided, firstName is obtained from data center card: 1906455" ],
    "cardId" : [ "Please provide cardId for DATACENTER transaction or fields: cardNumber, expiryDate, firstName, lastName for PLAIN transaction" ],
    "cardNumber" : [ "Card id was provided, cardNumber is obtained from data center card: 1906455" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "f2585b14-c2fc-4325-a664-4a4ef6fba0f6"
}
Table 167. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:02 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "16f7244f-c587-4c14-b870-c89334b465d2"
}
Table 168. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:03 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "26401acb-6e99-42ef-8769-4590f62e7d7b"
}
Table 169. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "bf7a3030-07b9-411c-9637-287b99ddba61"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "e42395ce-e21d-4fc3-b1ba-8768b3a50713"
}
Table 170. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E0135
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 163

{
  "status" : "E0137",
  "message" : "Default terminal not exist",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "8bcd1438-32fe-43ea-8f60-27782afda45f"
}
Table 171. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E0137
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 159

{
  "status" : "E0135",
  "message" : "Terminals for merchant not exists",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "8fb14fa5-407c-4730-a648-6439eeaec70c"
}
Table 172. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E06003
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 246

{
  "requestUuid" : "5113f94d-046d-49c2-b698-709545ec7cb1",
  "transactionStatus" : "REJECTED",
  "status" : "E06003",
  "message" : "Datacenter card not found",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "d33cb514-b032-42f9-a9ee-2ac3f2ae941a"
}
Table 173. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0150
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 251

{
  "requestUuid" : "4374eb02-c35c-4dca-aead-fc9b51a6a3f3",
  "transactionStatus" : "REJECTED",
  "status" : "E0150",
  "message" : "Transaction rejected",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2fa3be10-d327-480a-9545-c5917ae4a27e"
}
HTTP Response - STATUS: E0151
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 275

{
  "requestUuid" : "b86de49c-731f-44ce-aea2-c4ea7825049f",
  "transactionStatus" : "REJECTED",
  "status" : "E0151",
  "message" : "Transaction rejected, currency not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "6c054a01-27a5-4504-a0ec-c585fbc605b5"
}
HTTP Response - STATUS: E0152
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "645b056e-aaf5-4b80-90fd-86ecac109506",
  "transactionStatus" : "REJECTED",
  "status" : "E0152",
  "message" : "Transaction rejected, issuer card not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "76638e4f-a51f-4e0c-a05b-984db435c9ff"
}
HTTP Response - STATUS: E01580
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 270

{
  "requestUuid" : "05ad3818-bd6b-4455-97a5-7f582f35f491",
  "transactionStatus" : "REJECTED",
  "status" : "E01580",
  "message" : "Transaction rejected. Card is expired.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9732a31e-c038-4301-a7f3-e1b40b766067"
}
HTTP Response - STATUS: E0159
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 295

{
  "requestUuid" : "fa68b605-d489-4143-a370-693787fb5899",
  "transactionStatus" : "REJECTED",
  "status" : "E0159",
  "message" : "Transaction rejected, restricted transaction amount has occurred",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "5b959c38-834d-4fe7-9ce6-83ef9b80052b"
}
HTTP Response - STATUS: E0201
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 267

{
  "requestUuid" : "fe0d384f-db86-4a7c-aa10-f58dc4f4295f",
  "transactionStatus" : "REJECTED",
  "status" : "E0201",
  "message" : "Transaction rejected, bin is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2f9516cb-12ce-455c-901c-f4bc59decaf3"
}
HTTP Response - STATUS: E0202
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "f54bae0f-ce05-4b42-8512-ca11ed27e24c",
  "transactionStatus" : "REJECTED",
  "status" : "E0202",
  "message" : "Transaction rejected, terminal is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "b455cf49-45d8-4180-bd20-9dec885b6d28"
}
HTTP Response - STATUS: E0204
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "9aa99962-2790-47d7-b98c-d141ff54a1b6",
  "transactionStatus" : "REJECTED",
  "status" : "E0204",
  "message" : "Transaction rejected, user is on aml list",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "d995e5b5-ac3f-4eb6-9054-772318164932"
}
HTTP Response - STATUS: E0205
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 268

{
  "requestUuid" : "1d802737-02eb-4b26-8a99-f79878c07176",
  "transactionStatus" : "REJECTED",
  "status" : "E0205",
  "message" : "Transaction rejected, bank is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1621d6ac-3956-4429-9f36-fdb4476e296c"
}
HTTP Response - STATUS: E0206
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 301

{
  "requestUuid" : "e1dacbda-fde3-4234-98bc-f10a924ce7d1",
  "transactionStatus" : "REJECTED",
  "status" : "E0206",
  "message" : "Transaction rejected, too many reject transactions and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0e90fba0-e14e-431b-a57e-24212e13f676"
}
HTTP Response - STATUS: E0207
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 299

{
  "requestUuid" : "16b3cc43-b8f8-4579-9c8f-505adb29999b",
  "transactionStatus" : "REJECTED",
  "status" : "E0207",
  "message" : "Transaction rejected, too many attempts declined and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "96afcaa9-24da-48fe-aed5-989db1faf389"
}
HTTP Response - STATUS: E0208
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "3a223d61-adb8-42f3-b95e-97afc333df97",
  "transactionStatus" : "REJECTED",
  "status" : "E0208",
  "message" : "Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e770cf95-8b42-4453-8a8c-771dc47ae98f"
}
HTTP Response - STATUS: E0209
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 292

{
  "requestUuid" : "5d7c8af3-7748-466a-a203-aec752256000",
  "transactionStatus" : "REJECTED",
  "status" : "E0209",
  "message" : "Transaction rejected, sender name contains fraudulent phrase.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4b53fe80-8dbc-49f6-a547-4350160f5460"
}
HTTP Response - STATUS: E0210
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 276

{
  "requestUuid" : "eee3ea27-8f43-4f5e-94b9-1f7efdc956c8",
  "transactionStatus" : "REJECTED",
  "status" : "E0210",
  "message" : "Transaction rejected, suspicious sender name.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "993d524b-326e-4221-927e-fa24bef2354e"
}
HTTP Response - STATUS: E0211
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 277

{
  "requestUuid" : "d67aa7d3-1cc7-4ce8-92e7-19ca54739acd",
  "transactionStatus" : "REJECTED",
  "status" : "E0211",
  "message" : "Transaction rejected, card country restricted.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "a46eb94e-b81f-4da3-99de-ffc672020197"
}
HTTP Response - STATUS: E01596
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "5c019324-ffe3-4338-86d9-730cdcc3dd65",
  "transactionStatus" : "REJECTED",
  "status" : "E01596",
  "message" : "Transaction rejected, terminal blocks transactions with card issued in given card country",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "168589f5-a146-444f-9b38-466326597a9e"
}
HTTP Response - STATUS: E01597
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 369

{
  "requestUuid" : "4c031f79-3982-415d-9d20-87141e5e5650",
  "transactionStatus" : "REJECTED",
  "status" : "E01597",
  "message" : "Transaction rejected, 3DS version of terminal are not compatible with 3DS version defined in request. Please contact the sales department",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "df76332f-735f-4ef5-87b5-a4e2eee92c75"
}
HTTP Response - STATUS: E01607
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 315

{
  "requestUuid" : "9389b4e5-2e53-4f70-8d59-0fb7799a95fc",
  "transactionStatus" : "REJECTED",
  "status" : "E01607",
  "message" : "Transaction rejected, internal server error during authorization request generation",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1ab14cb7-c7b3-4af1-a730-a32386436243"
}
HTTP Response - STATUS: E01598
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 298

{
  "requestUuid" : "1bcdd538-c157-486b-a246-3354bda731aa",
  "transactionStatus" : "REJECTED",
  "status" : "E01598",
  "message" : "Transaction rejected, ECI value is not available for card provider",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9ab89736-eaed-4065-8384-353c93c6403b"
}
Table 174. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E0200
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 381

{
  "requestUuid" : "8082ed36-b0fe-4a92-85a2-5d03a3aa243f",
  "transactionStatus" : "REJECTED",
  "cardBlockadeAdditionalData" : {
    "blockType" : "TEMP",
    "blockedUntil" : "2022-11-01T12:51:32.000"
  },
  "status" : "E0200",
  "message" : "Transaction rejected, card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "ab3573ca-9455-4603-bf43-b328d9ac2583"
}
Table 175. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

cardBlockadeAdditionalData.blockType

String

Block type. Possible values: TEMP - temporary, PERMANENT - permanent.

cardBlockadeAdditionalData.blockedUntil

String

Date until card will be blocked in yyyy-MM-ddThh-mm-ss.SSS format.

HTTP Response - STATUS: E01600
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 326

{
  "requestUuid" : "394f573e-d6ca-419f-8e85-309893ac7efd",
  "transactionStatus" : "REJECTED",
  "status" : "E01584",
  "message" : "Transaction rejected, 3DS 2.X flow invoked for other card number than specified in the request",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "aa242dc6-db70-4d83-a4e7-71f04b41e4b5"
}
Table 176. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E01601
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 286

{
  "requestUuid" : "055c3e35-ffd5-4225-9f37-9f5b2a36d4b7",
  "transactionStatus" : "REJECTED",
  "status" : "E01601",
  "message" : "Transaction rejected, terminal is blocked for provider",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2d2ed1d9-bdfb-4a51-afcd-ca891957e553"
}
Table 177. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E01602
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 308

{
  "requestUuid" : "7ed1ec8a-1b4b-4996-81b6-f43e18dbfd18",
  "transactionStatus" : "REJECTED",
  "status" : "E01602",
  "message" : "Transaction rejected, geographic scope is not permitted for this transaction",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2f73bc8c-2ec6-4f2b-a5bf-c522ad8f6fcc"
}
Table 178. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E13000
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "dad2ae3e-4819-4cb2-be08-bedfa07fc77b",
  "transactionStatus" : "REJECTED",
  "status" : "E13000",
  "message" : "Transaction rejected, risk score exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1851d40f-e71d-4b05-ade4-3c333614a425"
}
500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0142
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 183

{
  "status" : "E0142",
  "message" : "Commission configuration not add for terminal",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "0dc916e1-fc1f-4410-9799-345b84db7aa2"
}
HTTP Response - STATUS: E0153
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 280

{
  "requestUuid" : "6627101e-b660-4526-801f-9b71a80d831d",
  "transactionStatus" : "PENDING",
  "status" : "E0153",
  "message" : "Transaction declined, problem with MIP connection",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "d3f66209-659c-46ca-a71f-be7607a04351"
}
HTTP Response - STATUS: E01599
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "198386a7-ff6c-40fb-acba-dc0a919864e1",
  "transactionStatus" : "DECLINED",
  "status" : "E01599",
  "message" : "Transaction declined, processing timeout",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "197b287e-2447-494e-9ab7-5da07a294c92"
}
HTTP Response - STATUS: E0190
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 166

{
  "status" : "E0190",
  "message" : "Failed to get currency rates",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "6fe6fce3-916f-42e8-be73-7043aff4b134"
}
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
Table 179. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
HTTP Response - STATUS: E9010
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 258

{
  "requestUuid" : "228e6d0c-e37d-46c4-975d-f14ffbd54568",
  "transactionStatus" : "REJECTED",
  "status" : "E9010",
  "message" : "Error data center connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "125d4847-34af-40c9-a850-234c683d4a6b"
}
Table 180. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

6.7.2. CoF Subsequent transaction

POST /client/payments/cof/subsequent Content Type: application/json, Authorization: Basic Auth
The second phase is the subsequent transaction, which requires a successful initial transaction containing the consent to store card data.
Merchant provides the cofInitialUuid parameter received in the initial transaction, which defines the customer's card data saved in the transaction.
Subsequent transactions are intended for multiple execution.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

Request
Simple request
HTTP Request
POST /client/payments/cof/subsequent HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 464
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7c0cb9c4-2271-42e3-94f0-8977b23be4e4",
  "requestUuid" : "3b87a8ab-1957-407e-a4bc-6104dada3687",
  "cofInitialUuid" : "4a404806-737b-41e7-ba5d-33783a16ffc9",
  "amount" : 1000,
  "currency" : "USD",
  "autoClear" : true,
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 181. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 182. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

cofInitialUuid

String

@Must not be null

CoF initial transaction identifier uuid

amount

Number

@Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "^[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Request - forced Terminal
HTTP Request
POST /client/payments/cof/subsequent HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 523
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "622d7136-92b4-4f86-8be7-7c2e7e5963a0",
  "terminalUuid" : "f637265e-681a-4d14-87d4-1df43dbb261c",
  "requestUuid" : "0dd2054b-ac19-4806-b6ba-96ac8932a343",
  "cofInitialUuid" : "622d7136-92b4-4f86-8be7-7c2e7e5963a0",
  "amount" : 1000,
  "currency" : "USD",
  "autoClear" : true,
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "postalCode" : "24-110",
  "province" : "NY"
}
Table 183. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 184. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

cofInitialUuid

String

@Must not be null

CoF initial transaction identifier uuid

amount

Number

@Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "^[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

terminalUuid

String

Terminals’s unique uuid in system

Response
Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

STATUS: E0135 - Returned when terminal for merchant not exist or all of them are inactive.

STATUS: E0137 - Returned when there is not terminal marked as default

422 UNPROCESSABLE ENTITY

STATUS: E0150 - Returned when transaction is rejected.

STATUS: E0151 - Returned when transaction is rejected, because currency is not supported.

STATUS: E0152 - Returned when transaction is rejected, because issuer is not supported.

STATUS: E0159 - Returned when transaction is rejected, because restricted transaction amount has occurred

STATUS: E01590 - Returned when transaction is rejected, because initial CoF card not found in DC.

STATUS: E01591 - Returned when transaction is rejected, because initial CoF transaction not approved.

STATUS: E01601 - Returned when transaction is rejected, because terminal is blocked for provider

STATUS: E01602 - Transaction rejected, geographic scope is not permitted for this transaction

STATUS: E01607 - Transaction rejected, internal server error during authorization request generation

STATUS: E0200 - Returned when transaction is rejected, because card is blocked in Fenige System

STATUS: E0201 - Returned when transaction is rejected, because BIN is blocked in Fenige System

STATUS: E0202 - Returned when transaction is rejected, because Terminal is blocked in Fenige System

STATUS: E0204 - Returned when transaction is rejected, because user’s personal data was found on AML (sanctions) list

STATUS: E0205 - Returned when transaction is rejected, because Bank is blocked in Fenige System

STATUS: E0206 - Returned when transaction is rejected, because to many reject transactions and card is blocked

STATUS: E0207 - Returned when transaction is rejected, bacause to many attempts declined and card is blocked

STATUS: E0208 - Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days

STATUS: E0209 - Returned when sender or receiver name contains fraudulent phrase

STATUS: E0210 - Returned when sender has suspicious name

STATUS: E0211 - Returned when transaction is rejected, because card country is blocked in Fenige System.

STATUS: E11000 - Returned when transaction processing time set by terminal was exceeded

STATUS: E13000 - Returned when transaction risk score was exceeded

500 INTERNAL SERVER ERROR

STATUS: E0142 - Returned when commission configuration is not added for terminal.

STATUS: E0153 - Returned when transaction is declined, by problem with MIP connection.

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E0190 - Returned when currency rate is invalid.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

STATUS: E9002 - Returned when is error mpi connection.

STATUS: E9010 - Returned when is error data center connection.

200 OK
HTTP Response - transaction
{
  "requestUuid" : "ecace63d-757c-4e00-b340-68769ff0d86d",
  "cofInitialUuid" : "561095d2-519a-437d-8ff0-d9cd3daa0593",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 185. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

cofInitialUuid

String

CoF transaction unique uuid in system

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:57 GMT
Connection: close
Content-Length: 345

{
  "errors" : {
    "amount" : [ "must not be null" ],
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ],
    "currency" : [ "must not be null" ],
    "cofInitialUuid" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "1a7f95e6-f990-461f-8fa3-dd41b9641990"
}
Table 186. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:51:57 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "92fb3fa0-c306-4b03-8650-f2ed289308ef"
}
Table 187. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:51:57 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "90852321-cbb8-4267-a388-38b947ec8746"
}
Table 188. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "927675a8-7470-4f34-87fb-3239de1a3f0f"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "c1f8e747-8f4e-4527-bed3-21bb4561be40"
}
HTTP Response - STATUS: E0135
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 163

{
  "status" : "E0137",
  "message" : "Default terminal not exist",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0df53e5a-8a2c-4ad8-a22c-c860bd5dd903"
}
HTTP Response - STATUS: E0137
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 159

{
  "status" : "E0135",
  "message" : "Terminals for merchant not exists",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "2cf04c61-25e3-4bf1-ba58-0dde6d66fe9c"
}
Table 189. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0150
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 251

{
  "requestUuid" : "a921cb71-a33b-420f-ae4a-e7bf7a43b17d",
  "transactionStatus" : "REJECTED",
  "status" : "E0150",
  "message" : "Transaction rejected",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "20bfc3fe-8f0f-4e4c-bcd0-1e62cc4d5a2d"
}
HTTP Response - STATUS: E0151
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 275

{
  "requestUuid" : "50528304-3d36-4b3c-b47b-538139450b9b",
  "transactionStatus" : "REJECTED",
  "status" : "E0151",
  "message" : "Transaction rejected, currency not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "74924af1-c4da-47cf-a054-ae687bcf10de"
}
HTTP Response - STATUS: E0152
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "909f833e-1b77-4c8f-9358-d54d1897450d",
  "transactionStatus" : "REJECTED",
  "status" : "E0152",
  "message" : "Transaction rejected, issuer card not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "82232d47-8732-461a-8ab7-ef51f3d23c34"
}
HTTP Response - STATUS: E0159
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 295

{
  "requestUuid" : "fa68b605-d489-4143-a370-693787fb5899",
  "transactionStatus" : "REJECTED",
  "status" : "E0159",
  "message" : "Transaction rejected, restricted transaction amount has occurred",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "5b959c38-834d-4fe7-9ce6-83ef9b80052b"
}
HTTP Response - STATUS: E01590
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "344c073d-616a-4ce2-9118-ae78d743d490",
  "transactionStatus" : "REJECTED",
  "status" : "E01590",
  "message" : "Transaction rejected, cof card not found in db",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "f5b13f6e-8920-4657-b846-c1e47f443382"
}
HTTP Response - STATUS: E01591
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "24f5558c-3f43-449e-a1e1-53f14402370f",
  "transactionStatus" : "REJECTED",
  "status" : "E01590",
  "message" : "Transaction rejected, cof card not found in db",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "87db56c4-e73f-40ac-8ca3-7eacf0b791d2"
}
HTTP Response - STATUS: E0200
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 381

{
  "requestUuid" : "213e7dad-aa13-4a5e-a230-bcae8d1e983f",
  "transactionStatus" : "REJECTED",
  "cardBlockadeAdditionalData" : {
    "blockType" : "TEMP",
    "blockedUntil" : "2022-11-01T12:51:32.000"
  },
  "status" : "E0200",
  "message" : "Transaction rejected, card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "427f3828-0b9a-4f35-9e91-4ab7692737aa"
}
HTTP Response - STATUS: E0201
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 267

{
  "requestUuid" : "70a527a2-26ea-4eaa-be91-881092d5f4e2",
  "transactionStatus" : "REJECTED",
  "status" : "E0201",
  "message" : "Transaction rejected, bin is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1ded4173-d418-4fe8-8f52-3f425d0f403c"
}
HTTP Response - STATUS: E0202
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "a4a96531-b248-4db8-a9d1-c4be9899729e",
  "transactionStatus" : "REJECTED",
  "status" : "E0202",
  "message" : "Transaction rejected, terminal is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "7ee91d94-004a-4d23-9e97-ed96e23e6c72"
}
HTTP Response - STATUS: E0204
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "149fe0eb-4123-4878-9c96-38bb751fbdd1",
  "transactionStatus" : "REJECTED",
  "status" : "E0204",
  "message" : "Transaction rejected, user is on aml list",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "3554746d-796c-4432-abf9-c314ce7b6ac4"
}
HTTP Response - STATUS: E0205
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 268

{
  "requestUuid" : "ccd6dd98-4800-40ee-bb88-ed8413d3e2fc",
  "transactionStatus" : "REJECTED",
  "status" : "E0205",
  "message" : "Transaction rejected, bank is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "5a89ecd3-6c36-4e42-84da-f7ba1035323e"
}
Table 190. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E0206
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 301

{
  "requestUuid" : "e1dacbda-fde3-4234-98bc-f10a924ce7d1",
  "transactionStatus" : "REJECTED",
  "status" : "E0206",
  "message" : "Transaction rejected, too many reject transactions and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0e90fba0-e14e-431b-a57e-24212e13f676"
}
HTTP Response - STATUS: E0207
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 299

{
  "requestUuid" : "16b3cc43-b8f8-4579-9c8f-505adb29999b",
  "transactionStatus" : "REJECTED",
  "status" : "E0207",
  "message" : "Transaction rejected, too many attempts declined and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "96afcaa9-24da-48fe-aed5-989db1faf389"
}
HTTP Response - STATUS: E0208
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "3a223d61-adb8-42f3-b95e-97afc333df97",
  "transactionStatus" : "REJECTED",
  "status" : "E0208",
  "message" : "Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e770cf95-8b42-4453-8a8c-771dc47ae98f"
}
HTTP Response - STATUS: E0209
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 292

{
  "requestUuid" : "5d7c8af3-7748-466a-a203-aec752256000",
  "transactionStatus" : "REJECTED",
  "status" : "E0209",
  "message" : "Transaction rejected, sender name contains fraudulent phrase.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4b53fe80-8dbc-49f6-a547-4350160f5460"
}
HTTP Response - STATUS: E0210
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 276

{
  "requestUuid" : "eee3ea27-8f43-4f5e-94b9-1f7efdc956c8",
  "transactionStatus" : "REJECTED",
  "status" : "E0210",
  "message" : "Transaction rejected, suspicious sender name.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "993d524b-326e-4221-927e-fa24bef2354e"
}
HTTP Response - STATUS: E0211
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 277

{
  "requestUuid" : "d67aa7d3-1cc7-4ce8-92e7-19ca54739acd",
  "transactionStatus" : "REJECTED",
  "status" : "E0211",
  "message" : "Transaction rejected, card country restricted.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "a46eb94e-b81f-4da3-99de-ffc672020197"
}
HTTP Response - STATUS: E01601
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 286

{
  "requestUuid" : "055c3e35-ffd5-4225-9f37-9f5b2a36d4b7",
  "transactionStatus" : "REJECTED",
  "status" : "E01601",
  "message" : "Transaction rejected, terminal is blocked for provider",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2d2ed1d9-bdfb-4a51-afcd-ca891957e553"
}
HTTP Response - STATUS: E01602
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 308

{
  "requestUuid" : "7ed1ec8a-1b4b-4996-81b6-f43e18dbfd18",
  "transactionStatus" : "REJECTED",
  "status" : "E01602",
  "message" : "Transaction rejected, geographic scope is not permitted for this transaction",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2f73bc8c-2ec6-4f2b-a5bf-c522ad8f6fcc"
}
HTTP Response - STATUS: E01607
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 315

{
  "requestUuid" : "9389b4e5-2e53-4f70-8d59-0fb7799a95fc",
  "transactionStatus" : "REJECTED",
  "status" : "E01607",
  "message" : "Transaction rejected, internal server error during authorization request generation",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1ab14cb7-c7b3-4af1-a730-a32386436243"
}
HTTP Response - STATUS: E13000
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "dad2ae3e-4819-4cb2-be08-bedfa07fc77b",
  "transactionStatus" : "REJECTED",
  "status" : "E13000",
  "message" : "Transaction rejected, risk score exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1851d40f-e71d-4b05-ade4-3c333614a425"
}
500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0142
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 183

{
  "status" : "E0142",
  "message" : "Commission configuration not add for terminal",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "5ae8bf9b-92f0-4de2-9326-3ed1d6d08703"
}
HTTP Response - STATUS: E0153
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 280

{
  "requestUuid" : "b4e1bf06-acea-4061-8485-eb04e586ac57",
  "transactionStatus" : "PENDING",
  "status" : "E0153",
  "message" : "Transaction declined, problem with MIP connection",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "66ddaf2b-6dc8-4832-a68a-14a6a551a089"
}
HTTP Response - STATUS: E01599
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "9cee1c3b-4008-49d8-84e4-30850a8e3a2b",
  "transactionStatus" : "DECLINED",
  "status" : "E01599",
  "message" : "Transaction declined, processing timeout",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "aeee692f-edf4-41e1-bdd8-06c3523668af"
}
HTTP Response - STATUS: E0190
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 166

{
  "status" : "E0190",
  "message" : "Failed to get currency rates",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "ed2ecb1f-cc7f-4e37-bf4b-1b232ea9d323"
}
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
Table 191. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
HTTP Response - STATUS: E9010
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 164

{
  "status" : "E9010",
  "message" : "Error data center connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "e4c81641-4a50-4b40-af64-7f8383284048"
}
Table 192. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

6.8. Recurring payment

    A Recurring Payment is a type of the transaction performed as a result of an agreement between a cardholder and a merchant in which the cardholder authorizes
the merchant to bill the cardholder’s Mastercard account, with no specified end date. Billing may occur periodically, such as monthly, quarterly or annually.
Each payment may be for a variable or a fixed amount.
    The method is used to charge the cardholder with no need to collect account data (PAN, exp date) from merchant at every transaction. Only initial transaction requires providing
card information which are saved in secure Fenige environment according to PCI-DSS Compliance.
    This endpoint is idempotent so if you execute more than one requests with the same data even at the same time, only first registered transaction will be processed further. In
response, we receive transaction status.
The Recurring Payment consists of two parts: initial and subsequent, which are discussed in detail below.
Please see detailed Recurring Payment with 3-DS flow described on below listing.
Merchant has the ability to make a payment for goods which causes the cardholder to be debited in the currency of purchase, terminal or card currency based on the parameters provided: currency of transaction, different currency terminals held and currencies supported by the card.
The optional terminalUuid field provided during any of the authorisation methods forces the card to be debited in the currency of the terminal specified if the purchase currency is different from the terminal currency a currency conversion will take place.
The Fenige Payment API methods optionally allows merchants to store card data and sensitive personal data in order to allow performing subsequent transactions.
If merchant decides to use DataCenter transaction flow then is required to provide the card id of the card previously stored in the Fenige DataCenter, from which card the
relevant required parameters will be downloaded and used for authorization.
Card data and sensitive personal data according to the Fenige API specification are: cardNumber, expiryDate, firstName, lastName and email.
All card data are stored securely on Fenige DataCenter servers in accordance with applicable security requirements.

When performing authorization, remember that there are currencies with different number of decimal places. For example: VND has no pennies and KWD has three decimal places. Please take this into account in the Amout field. For more information on other currencies, see ISO 4217.

Recurring payment flow
recurring trx outside3ds flow
Recurring payment with DataCenter flow
recurring trx datacenter outside3ds flow

6.8.1. Recurring Initial transaction

POST /client/payments/recurring/initial Content Type: application/json, Authorization: Basic Auth
    The start phase is a one-time initial transaction, which is a simple e-commerce payment with forced 3-DS authentication, but contains the customer's consent to store card data
for recurring subsequent purchases. Card data are stored in a secure FENIGE environment.
    After completing the recurring initial merchant receives the unique recurringInitialUuid identifier needed to perform subsequent Recurring Payments transactions without
    having to enter card data in the future.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

Request
Simple request
HTTP Request
POST /client/payments/recurring/initial HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 897
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7c0cb9c4-2271-42e3-94f0-8977b23be4e4",
  "requestUuid" : "aa51b08a-730b-47e9-9268-1df62d701f10",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "phoneNumber" : "500500500",
  "email" : "test@fenige.pl",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "postalCode" : "24-110",
  "province" : "NY"
}
Table 193. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 194. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

cardNumber

String

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

Expiration date of card mm/yy

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

amount

Number

@Must be positive or zero, @Must not be null

The total transfer amount (in pennies). If the amount is equal to zero there is sent account status inquiry to validate aspects of a cardholder account.

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

phoneNumber

String

@Optional @Must match regular expression [0-9]{3,14}

Cardholder’s phone number

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value

outside3ds.transactionXId

String

Cardholder Authentication Verification Value. The transactionXId is the field that defines the 3DS version.The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x.TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 01 or 02 or 05 or 06, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. Chargeback protection applies.

outside3ds.authenticationStatus

String

@Must match Y or A, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Request - forced Terminal
HTTP Request
POST /client/payments/recurring/initial HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 956
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7ce08b0a-4f8a-42c6-8a0d-163f9939052b",
  "terminalUuid" : "6e624f79-a3a6-4ced-bed0-7b430238c084",
  "requestUuid" : "702b9d47-2262-49c4-af38-8b156b7f24b4",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "phoneNumber" : "500500500",
  "email" : "test@fenige.pl",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "postalCode" : "24-110",
  "province" : "NY"
}
Table 195. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 196. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

cardNumber

String

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

Expiration date of card mm/yy

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

amount

Number

@Must be positive or zero, @Must not be null

The total transfer amount (in pennies). If the amount is equal to zero there is sent account status inquiry to validate aspects of a cardholder account.

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

phoneNumber

String

@Optional @Must match regular expression [0-9]{3,14}

Cardholder’s phone number

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value

outside3ds.transactionXId

String

Cardholder Authentication Verification Value. The transactionXId is the field that defines the 3DS version.The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x.TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 01 or 02 or 05 or 06, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. Chargeback protection applies.

outside3ds.authenticationStatus

String

@Must match Y or A, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

terminalUuid

String

Terminals’s unique uuid in system

Request - DataCenter card
HTTP Request
POST /client/payments/recurring/initial HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 744
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7c0cb9c4-2271-42e3-94f0-8977b23be4e4",
  "requestUuid" : "b79aa9fb-e24c-4a18-85b3-1f589d44d5ef",
  "cvc2" : "123",
  "cardId" : 1906455,
  "amount" : 1000,
  "currency" : "USD",
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 197. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 198. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

cardId

Number

@Must not be null, @Numeric

DataCenter card id. Required to obtain card information data from DataCenter such as (cardNumber, expiryDate, firstName, lastName, email)

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

amount

Number

@Must be positive or zero, @Must not be null

The total transfer amount (in pennies). If the amount is equal to zero there is sent account status inquiry to validate aspects of a cardholder account.

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value

outside3ds.transactionXId

String

Cardholder Authentication Verification Value. The transactionXId is the field that defines the 3DS version.The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x.TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 01 or 02 or 05 or 06, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. Chargeback protection applies.

outside3ds.authenticationStatus

String

@Must match Y or A, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Token request
HTTP Request
POST /client/payments/recurring/initial HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 1108
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7c0cb9c4-2271-42e3-94f0-8977b23be4e4",
  "requestUuid" : "17aa4a50-f47a-4eec-a241-9053af4b4966",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "authMethod" : "CRYPTOGRAM_3DS",
  "tokenType" : "GOOGLE_PAY",
  "terminalLocation" : "HOME",
  "paymentData" : {
    "onlinePaymentCryptogram" : "/0OL1zEABL+gk70RYJ8lMAABAAA=",
    "eciIndicator" : "02"
  },
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "phoneNumber" : "500500500",
  "email" : "test@fenige.pl",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "postalCode" : "24-110",
  "province" : "NY"
}
Table 199. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 200. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

cardNumber

String

Full cardholder’s Token Pan must be between 12-digits and 19-digits

expiryDate

String

Expiration date of card mm/yy

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

amount

Number

@Must be positive or zero, @Must not be null

The total transfer amount (in pennies). If the amount is equal to zero there is sent account status inquiry to validate aspects of a cardholder account.

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

tokenType

String

@Optional

Token used - value may be set as GOOGLE_PAY or APPLE_PAY or OTHER.

authMethod

String

@Optional

Required only if tokenType is 'GOOGLE_PAY'.

Type of token transaction authorization - value may be set as CRYPTOGRAM_3DS or PAN_ONLY.

If authMethod is 'CRYPTOGRAM_3DS' then paymentData is required and outside3ds is optional.

If authMethod is 'PAN_ONLY' then outside3ds is required and there is no paymentData.

terminalLocation

String

Location of terminal - value must be set as HOME or PREMISES

paymentData

Object

Required payment tokenization data object.

Not required when tokenType = 'GOOGLE_PAY' and authMethod = 'PAN_ONLY'.

paymentData.onlinePaymentCryptogram

String

Payment secure cryptogram obtained during merchant card tokenization in mobile app (TAVV in GOOGLE_PAY case). Base64 encoded payment crypto value.

paymentData.eciIndicator

String

@Must match 01 or 02 or 05 or 06

Eci value returned only for tokens on the Visa card network. The value should be passed by merchant if present with payment cryptogram. Optional value.

If tokenType = 'GOOGLE_PAY' and authMethod = 'CRYPTOGRAM_3DS' and provider is 'VISA' then this field is required. Possible values for VISA are 05, 06.

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

phoneNumber

String

@Optional @Must match regular expression [0-9]{3,14}

Cardholder’s phone number

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value

outside3ds.transactionXId

String

Cardholder Authentication Verification Value. The transactionXId is the field that defines the 3DS version.The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x.TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 01 or 02 or 05 or 06, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. Chargeback protection applies.

outside3ds.authenticationStatus

String

@Must match Y or A, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Response
Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

STATUS: E0135 - Returned when terminal for merchant not exist or all of them are inactive.

STATUS: E0137 - Returned when there is not terminal marked as default

STATUS: E06003 - Returned when DataCenter card was not found.

422 UNPROCESSABLE ENTITY

STATUS: E0150 - Returned when transaction is rejected.

STATUS: E0151 - Returned when transaction is rejected, because currency is not supported.

STATUS: E0152 - Returned when transaction is rejected, because issuer is not supported.

STATUS: E0156 - Returned where terminal used for process transaction do not support 3DS

STATUS: E0157 - Returned where card used for process transaction do not support 3DS

STATUS: E01580 - Returned when transaction is rejected, because DataCenter card was expired.

STATUS: E0159 - Returned when transaction is rejected, because restricted transaction amount has occurred

STATUS: E01596 - Returned when transaction is rejected, because terminal has blocked transaction with card issued in restricted country

STATUS: E01601 - Returned when transaction is rejected, because terminal is blocked for provider

STATUS: E01602 - Transaction rejected, geographic scope is not permitted for this transaction

STATUS: E01607 - Transaction rejected, internal server error during authorization request generation

STATUS: E0200 - Returned when transaction is rejected, because card is blocked in Fenige System

STATUS: E0201 - Returned when transaction is rejected, because BIN is blocked in Fenige System

STATUS: E0202 - Returned when transaction is rejected, because Terminal is blocked in Fenige System

STATUS: E0204 - Returned when transaction is rejected, because user’s personal data was found on AML (sanctions) list

STATUS: E0205 - Returned when transaction is rejected, because Bank is blocked in Fenige System

STATUS: E0206 - Returned when transaction is rejected, because to many reject transactions and card is blocked

STATUS: E0207 - Returned when transaction is rejected, bacause to many attempts declined and card is blocked

STATUS: E0208 - Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days

STATUS: E0209 - Returned when sender or receiver name contains fraudulent phrase

STATUS: E0210 - Returned when sender has suspicious name

STATUS: E0211 - Returned when transaction is rejected, because card country is blocked in Fenige System.

STATUS: E01600 - Returned when transaction is declined, because 3DS 2.X flow invoked for other card number than specified in the request

STATUS: E11000 - Returned when transaction processing time set by terminal was exceeded

STATUS: E13000 - Returned when transaction risk score was exceeded

500 INTERNAL SERVER ERROR

STATUS: E0142 - Returned when commission configuration is not added for terminal.

STATUS: E0153 - Returned when transaction is declined, by problem with MIP connection.

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E0190 - Returned when currency rate is invalid.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

STATUS: E9002 - Returned when is error mpi connection.

STATUS: E9010 - Returned when is error DataCenter connection.

200 OK
HTTP Response - transaction with outside3DS
{
  "requestUuid" : "539eff87-4471-4fe8-8d6d-f7bd738799bf",
  "recurringInitialUuid" : "0e5e81d0-b751-41f2-bc91-5f29fbf02082",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 201. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

recurringInitialUuid

String

Recurring transaction unique uuid in system

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:27 GMT
Connection: close
Content-Length: 679

{
  "errors" : {
    "expiryDate" : [ "Card id was provided, expiryDate is obtained from data center card: 1906455" ],
    "lastName" : [ "Card id was provided, lastName is obtained from data center card: 1906455" ],
    "firstName" : [ "Card id was provided, firstName is obtained from data center card: 1906455" ],
    "cardId" : [ "Please provide cardId for DATACENTER transaction or fields: cardNumber, expiryDate, firstName, lastName for PLAIN transaction" ],
    "cardNumber" : [ "Card id was provided, cardNumber is obtained from data center card: 1906455" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "f218d968-c8d7-4581-89d1-2e56200598ba"
}
Table 202. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

HTTP Response - STATUS: E8000 - DataCenter Bad Request
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:27 GMT
Connection: close
Content-Length: 679

{
  "errors" : {
    "expiryDate" : [ "Card id was provided, expiryDate is obtained from data center card: 1906455" ],
    "firstName" : [ "Card id was provided, firstName is obtained from data center card: 1906455" ],
    "lastName" : [ "Card id was provided, lastName is obtained from data center card: 1906455" ],
    "cardId" : [ "Please provide cardId for DATACENTER transaction or fields: cardNumber, expiryDate, firstName, lastName for PLAIN transaction" ],
    "cardNumber" : [ "Card id was provided, cardNumber is obtained from data center card: 1906455" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "2a399450-378e-48c5-9d91-c312e43e440f"
}
Table 203. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:27 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "6b1d51ec-74d6-4422-8024-d8ee8c58fce9"
}
Table 204. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:28 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "2677ed9a-dcab-4f37-8277-184d1c496f9a"
}
Table 205. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "cc0bcdb3-a5fe-44ab-80e1-853afc218c5f"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "52a1d29d-2e84-4c65-8d9f-ec3271253e60"
}
HTTP Response - STATUS: E0135
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 163

{
  "status" : "E0137",
  "message" : "Default terminal not exist",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "816835a9-84c5-4af2-9d14-280a2671d187"
}
HTTP Response - STATUS: E0137
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 159

{
  "status" : "E0135",
  "message" : "Terminals for merchant not exists",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "80a08f51-5610-43cf-b9a3-dd66cddd41b6"
}
Table 206. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E06003
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 246

{
  "requestUuid" : "5113f94d-046d-49c2-b698-709545ec7cb1",
  "transactionStatus" : "REJECTED",
  "status" : "E06003",
  "message" : "Datacenter card not found",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "d33cb514-b032-42f9-a9ee-2ac3f2ae941a"
}
Table 207. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0150
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 251

{
  "requestUuid" : "bbcad2e8-0275-4837-b5a6-6a0e0402a664",
  "transactionStatus" : "REJECTED",
  "status" : "E0150",
  "message" : "Transaction rejected",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2bb92b3b-9749-486e-86dd-c4aa5a3c00c6"
}
HTTP Response - STATUS: E0151
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 275

{
  "requestUuid" : "44d89e1b-be20-40d0-a0eb-86404e407270",
  "transactionStatus" : "REJECTED",
  "status" : "E0151",
  "message" : "Transaction rejected, currency not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9385c93f-85f4-4afc-b61c-d3d6707d628a"
}
HTTP Response - STATUS: E0152
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "a7d1ed1f-87c4-4ac6-afc4-cb9df2d07708",
  "transactionStatus" : "REJECTED",
  "status" : "E0152",
  "message" : "Transaction rejected, issuer card not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "b6d5a44a-cf7e-4743-8f7b-0a3aeb7ce66c"
}
HTTP Response - STATUS: E0156
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 185

{
  "status" : "E0156",
  "message" : "Transaction rejected, terminal not supported 3ds",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "49c6e895-84d4-403a-8dab-70cf06042877"
}
HTTP Response - STATUS: E0157
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 181

{
  "status" : "E0157",
  "message" : "Transaction rejected, card not supported 3ds",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "c227705d-1d4f-4252-becf-1563ea6ac0bd"
}
HTTP Response - STATUS: E01580
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 270

{
  "requestUuid" : "05ad3818-bd6b-4455-97a5-7f582f35f491",
  "transactionStatus" : "REJECTED",
  "status" : "E01580",
  "message" : "Transaction rejected. Card is expired.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9732a31e-c038-4301-a7f3-e1b40b766067"
}
HTTP Response - STATUS: E0159
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 295

{
  "requestUuid" : "fa68b605-d489-4143-a370-693787fb5899",
  "transactionStatus" : "REJECTED",
  "status" : "E0159",
  "message" : "Transaction rejected, restricted transaction amount has occurred",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "5b959c38-834d-4fe7-9ce6-83ef9b80052b"
}
HTTP Response - STATUS: E0201
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 267

{
  "requestUuid" : "3cffef6d-e3b5-410e-90ae-ca69c4259f45",
  "transactionStatus" : "REJECTED",
  "status" : "E0201",
  "message" : "Transaction rejected, bin is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "8f3394b8-5615-452b-b07e-e556870f5132"
}
HTTP Response - STATUS: E0202
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "5c5279a5-2f6a-4c1a-980c-b5ddb2ac485e",
  "transactionStatus" : "REJECTED",
  "status" : "E0202",
  "message" : "Transaction rejected, terminal is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "339de741-9a8a-414c-b3aa-2c6498bc3d5e"
}
HTTP Response - STATUS: E0204
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "493d200d-f141-45ff-9e77-595b8c3de1e1",
  "transactionStatus" : "REJECTED",
  "status" : "E0204",
  "message" : "Transaction rejected, user is on aml list",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "ccaadc55-3ab6-4d4d-a360-a2ff687b97e5"
}
HTTP Response - STATUS: E0205
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 268

{
  "requestUuid" : "7cf3db84-e8f5-4538-8e17-f09c6bee9503",
  "transactionStatus" : "REJECTED",
  "status" : "E0205",
  "message" : "Transaction rejected, bank is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "eb7ed6b0-d075-42f2-97fa-b98206ce1ab4"
}
HTTP Response - STATUS: E0206
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 301

{
  "requestUuid" : "e1dacbda-fde3-4234-98bc-f10a924ce7d1",
  "transactionStatus" : "REJECTED",
  "status" : "E0206",
  "message" : "Transaction rejected, too many reject transactions and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0e90fba0-e14e-431b-a57e-24212e13f676"
}
HTTP Response - STATUS: E0207
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 299

{
  "requestUuid" : "16b3cc43-b8f8-4579-9c8f-505adb29999b",
  "transactionStatus" : "REJECTED",
  "status" : "E0207",
  "message" : "Transaction rejected, too many attempts declined and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "96afcaa9-24da-48fe-aed5-989db1faf389"
}
HTTP Response - STATUS: E0208
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "3a223d61-adb8-42f3-b95e-97afc333df97",
  "transactionStatus" : "REJECTED",
  "status" : "E0208",
  "message" : "Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e770cf95-8b42-4453-8a8c-771dc47ae98f"
}
HTTP Response - STATUS: E01596
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "5c019324-ffe3-4338-86d9-730cdcc3dd65",
  "transactionStatus" : "REJECTED",
  "status" : "E01596",
  "message" : "Transaction rejected, terminal blocks transactions with card issued in given card country",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "168589f5-a146-444f-9b38-466326597a9e"
}
HTTP Response - STATUS: E01597
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 369

{
  "requestUuid" : "4c031f79-3982-415d-9d20-87141e5e5650",
  "transactionStatus" : "REJECTED",
  "status" : "E01597",
  "message" : "Transaction rejected, 3DS version of terminal are not compatible with 3DS version defined in request. Please contact the sales department",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "df76332f-735f-4ef5-87b5-a4e2eee92c75"
}
HTTP Response - STATUS: E01607
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 315

{
  "requestUuid" : "9389b4e5-2e53-4f70-8d59-0fb7799a95fc",
  "transactionStatus" : "REJECTED",
  "status" : "E01607",
  "message" : "Transaction rejected, internal server error during authorization request generation",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1ab14cb7-c7b3-4af1-a730-a32386436243"
}
HTTP Response - STATUS: E01598
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 298

{
  "requestUuid" : "1bcdd538-c157-486b-a246-3354bda731aa",
  "transactionStatus" : "REJECTED",
  "status" : "E01598",
  "message" : "Transaction rejected, ECI value is not available for card provider",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9ab89736-eaed-4065-8384-353c93c6403b"
}
Table 208. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E0200
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 381

{
  "requestUuid" : "30cc7401-127d-4091-a1e1-21e57565ad7d",
  "transactionStatus" : "REJECTED",
  "cardBlockadeAdditionalData" : {
    "blockType" : "TEMP",
    "blockedUntil" : "2022-11-01T12:51:32.000"
  },
  "status" : "E0200",
  "message" : "Transaction rejected, card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "28b11b6a-28b0-4add-93ea-7b3d191c1802"
}
Table 209. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

cardBlockadeAdditionalData.blockType

String

Block type. Possible values: TEMP - temporary, PERMANENT - permanent.

cardBlockadeAdditionalData.blockedUntil

String

Date until card will be blocked in yyyy-MM-ddThh-mm-ss.SSS format.

HTTP Response - STATUS: E01600
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 326

{
  "requestUuid" : "394f573e-d6ca-419f-8e85-309893ac7efd",
  "transactionStatus" : "REJECTED",
  "status" : "E01584",
  "message" : "Transaction rejected, 3DS 2.X flow invoked for other card number than specified in the request",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "aa242dc6-db70-4d83-a4e7-71f04b41e4b5"
}
Table 210. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E01601
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 286

{
  "requestUuid" : "055c3e35-ffd5-4225-9f37-9f5b2a36d4b7",
  "transactionStatus" : "REJECTED",
  "status" : "E01601",
  "message" : "Transaction rejected, terminal is blocked for provider",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2d2ed1d9-bdfb-4a51-afcd-ca891957e553"
}
Table 211. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E01602
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 308

{
  "requestUuid" : "7ed1ec8a-1b4b-4996-81b6-f43e18dbfd18",
  "transactionStatus" : "REJECTED",
  "status" : "E01602",
  "message" : "Transaction rejected, geographic scope is not permitted for this transaction",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2f73bc8c-2ec6-4f2b-a5bf-c522ad8f6fcc"
}
Table 212. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E13000
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "dad2ae3e-4819-4cb2-be08-bedfa07fc77b",
  "transactionStatus" : "REJECTED",
  "status" : "E13000",
  "message" : "Transaction rejected, risk score exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1851d40f-e71d-4b05-ade4-3c333614a425"
}
500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0142
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 183

{
  "status" : "E0142",
  "message" : "Commission configuration not add for terminal",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "5ab25edf-4c12-48e5-a3e2-d0a01779c1f7"
}
HTTP Response - STATUS: E0153
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 280

{
  "requestUuid" : "d732d1e2-0806-4bf0-b804-59066233d19d",
  "transactionStatus" : "PENDING",
  "status" : "E0153",
  "message" : "Transaction declined, problem with MIP connection",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "e7a111f9-6699-49ed-97a2-90ad5c29e44e"
}
HTTP Response - STATUS: E01599
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "ffe0fd46-f585-4ac8-8332-dad2dfb3fd78",
  "transactionStatus" : "DECLINED",
  "status" : "E01599",
  "message" : "Transaction declined, processing timeout",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "38bce451-a697-42b5-a735-6b1e7200a332"
}
HTTP Response - STATUS: E0190
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 166

{
  "status" : "E0190",
  "message" : "Failed to get currency rates",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "66fb39c6-cc0c-4902-8e16-e0f0dfc72be9"
}
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
HTTP Response - STATUS: E9008
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 265

{
  "requestUuid" : "3214615d-6f41-4cd2-9f03-709a3f128e27",
  "transactionStatus" : "DECLINED",
  "status" : "E9008",
  "message" : "Error mpi - 3ds initialize failed",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "79e05d3a-e540-4224-8757-803233879187"
}
Table 213. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
HTTP Response - STATUS: E9010
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 258

{
  "requestUuid" : "228e6d0c-e37d-46c4-975d-f14ffbd54568",
  "transactionStatus" : "REJECTED",
  "status" : "E9010",
  "message" : "Error data center connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "125d4847-34af-40c9-a850-234c683d4a6b"
}
Table 214. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

6.8.2. Recurring Subsequent transaction

POST /client/payments/recurring/subsequent Content Type: application/json, Authorization: Basic Auth
    The next phase is the Recurring Payment subsequent transaction, which requires a successful and cleared initial transaction containing the consent to store card data.
Merchant provides the recurringInitialUuid parameter received in the initial transaction, which defines the customer's card data saved in the transaction.
    Recurring Payment subsequent transactions are intended for multiple execution by merchant at any time intervals defined in the contract with the customer also the amount of
the transaction may change over time.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

Request
Simple request
HTTP Request
POST /client/payments/recurring/subsequent HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 470
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7c0cb9c4-2271-42e3-94f0-8977b23be4e4",
  "requestUuid" : "d444297a-28ec-4f07-a10d-0abb3e8d022c",
  "recurringInitialUuid" : "d046047e-cc78-4521-8392-ef43e5e987f5",
  "amount" : 1000,
  "currency" : "USD",
  "autoClear" : true,
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 215. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 216. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

recurringInitialUuid

String

@Must not be null

Recurring initial transaction identifier uuid

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Request - forced Terminal
HTTP Request
POST /client/payments/recurring/subsequent HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 529
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "80588f45-4b36-4066-a69f-bcf23a89700c",
  "terminalUuid" : "08e167ec-bb22-49c9-bd68-023de9b259f3",
  "requestUuid" : "3ec6a8fe-ff07-4c25-a1d2-b7e3ff98479f",
  "recurringInitialUuid" : "80588f45-4b36-4066-a69f-bcf23a89700c",
  "amount" : 1000,
  "currency" : "USD",
  "autoClear" : true,
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "postalCode" : "24-110",
  "province" : "NY"
}
Table 217. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 218. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

recurringInitialUuid

String

@Must not be null

Recurring initial transaction identifier uuid

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

terminalUuid

String

Terminals’s unique uuid in system

Response
Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

STATUS: E0135 - Returned when terminal for merchant not exist or all of them are inactive.

STATUS: E0137 - Returned when there is not terminal marked as default

422 UNPROCESSABLE ENTITY

STATUS: E0150 - Returned when transaction is rejected.

STATUS: E0151 - Returned when transaction is rejected, because currency is not supported.

STATUS: E0152 - Returned when transaction is rejected, because issuer is not supported.

STATUS: E0159 - Returned when transaction is rejected, because restricted transaction amount has occurred

STATUS: E01592 - Returned when transaction is rejected, because initial Recurring card not found in DC.

STATUS: E01593 - Returned when transaction is rejected, because initial Recurring transaction not cleared.

STATUS: E01601 - Returned when transaction is rejected, because terminal is blocked for provider

STATUS: E01602 - Transaction rejected, geographic scope is not permitted for this transaction

STATUS: E01607 - Transaction rejected, internal server error during authorization request generation

STATUS: E0200 - Returned when transaction is rejected, because card is blocked in Fenige System

STATUS: E0201 - Returned when transaction is rejected, because BIN is blocked in Fenige System

STATUS: E0202 - Returned when transaction is rejected, because Terminal is blocked in Fenige System

STATUS: E0204 - Returned when transaction is rejected, because user’s personal data was found on AML (sanctions) list

STATUS: E0205 - Returned when transaction is rejected, because Bank is blocked in Fenige System

STATUS: E0206 - Returned when transaction is rejected, because to many reject transactions and card is blocked

STATUS: E0207 - Returned when transaction is rejected, bacause to many attempts declined and card is blocked

STATUS: E0208 - Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days

STATUS: E0209 - Returned when sender or receiver name contains fraudulent phrase

STATUS: E0210 - Returned when sender has suspicious name

STATUS: E0211 - Returned when transaction is rejected, because card country is blocked in Fenige System.

STATUS: E11000 - Returned when transaction processing time set by terminal was exceeded

STATUS: E13000 - Returned when transaction risk score was exceeded

500 INTERNAL SERVER ERROR

STATUS: E0142 - Returned when commission configuration is not added for terminal.

STATUS: E0153 - Returned when transaction is declined, by problem with MIP connection.

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E0190 - Returned when currency rate is invalid.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

STATUS: E9002 - Returned when is error mpi connection.

STATUS: E9010 - Returned when is error data center connection.

200 OK
HTTP Response - transaction
{
  "requestUuid" : "f954eb25-5a5b-45e1-ab0f-0acfc4dcdae0",
  "recurringInitialUuid" : "7219114b-683e-4eaf-b597-b220b23fa8eb",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 219. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

recurringInitialUuid

String

Recurring transaction unique uuid in system

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:23 GMT
Connection: close
Content-Length: 351

{
  "errors" : {
    "amount" : [ "must not be null" ],
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ],
    "currency" : [ "must not be null" ],
    "recurringInitialUuid" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "d5ff44fa-74b0-4745-9a63-152a6a30ff8b"
}
Table 220. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:23 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "b0649329-504e-4548-b1ed-80831d9a6ba8"
}
Table 221. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:25 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "572a7355-b98c-4507-9f48-cd636e313481"
}
Table 222. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "fe9349ce-3e57-4540-a846-308b901e25e2"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "a497ca64-fc0c-40c0-a2c5-6dba7e17b1b3"
}
HTTP Response - STATUS: E0135
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 163

{
  "status" : "E0137",
  "message" : "Default terminal not exist",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9666f678-a36a-4bee-8703-35bb9327f168"
}
HTTP Response - STATUS: E0137
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 159

{
  "status" : "E0135",
  "message" : "Terminals for merchant not exists",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "d0f20962-9d7f-40e4-85b2-3b79b2118589"
}
Table 223. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0150
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 251

{
  "requestUuid" : "0b1b7b43-028e-44d1-ba5b-06a98bc9b0d8",
  "transactionStatus" : "REJECTED",
  "status" : "E0150",
  "message" : "Transaction rejected",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "3b60872c-d02b-47b7-8522-55c625fc653e"
}
HTTP Response - STATUS: E0151
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 275

{
  "requestUuid" : "3dc9263a-28d4-452e-8643-08804e5912dc",
  "transactionStatus" : "REJECTED",
  "status" : "E0151",
  "message" : "Transaction rejected, currency not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "cb500d30-046b-4f00-8d0f-985501adcd4e"
}
HTTP Response - STATUS: E0152
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "614d6208-4f21-4df6-a7d9-8c3dcda4ee64",
  "transactionStatus" : "REJECTED",
  "status" : "E0152",
  "message" : "Transaction rejected, issuer card not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e25ce420-1d9d-44f5-9c37-191422bb4f84"
}
HTTP Response - STATUS: E0159
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 295

{
  "requestUuid" : "fa68b605-d489-4143-a370-693787fb5899",
  "transactionStatus" : "REJECTED",
  "status" : "E0159",
  "message" : "Transaction rejected, restricted transaction amount has occurred",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "5b959c38-834d-4fe7-9ce6-83ef9b80052b"
}
HTTP Response - STATUS: E01592
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "c3195071-2980-4a9d-8e82-f8c490cedd69",
  "transactionStatus" : "REJECTED",
  "status" : "E01590",
  "message" : "Transaction rejected, cof card not found in db",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "08a60965-2720-42e3-8064-e42d9bc621fd"
}
HTTP Response - STATUS: E01593
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 295

{
  "requestUuid" : "0c3235a5-45c4-409d-a134-bcffffd5f5c7",
  "transactionStatus" : "REJECTED",
  "status" : "E01593",
  "message" : "Transaction rejected, initial recurring transaction not cleared",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "47a49bab-a418-4c7b-bf4d-e838fffed0af"
}
HTTP Response - STATUS: E0200
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 381

{
  "requestUuid" : "09b864dd-d2f0-4236-a165-350934d10028",
  "transactionStatus" : "REJECTED",
  "cardBlockadeAdditionalData" : {
    "blockType" : "TEMP",
    "blockedUntil" : "2022-11-01T12:51:32.000"
  },
  "status" : "E0200",
  "message" : "Transaction rejected, card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "dfdd6ce3-e7b1-4eff-8132-71a1b5c80ce7"
}
HTTP Response - STATUS: E0201
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 267

{
  "requestUuid" : "15c57aca-4983-4ee3-bb11-e616db0a1d14",
  "transactionStatus" : "REJECTED",
  "status" : "E0201",
  "message" : "Transaction rejected, bin is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e9a5be55-b4e4-4251-8e5b-a3fd468e7af7"
}
HTTP Response - STATUS: E0202
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "fc1c25ab-0108-4db6-87e0-9df10655cc4a",
  "transactionStatus" : "REJECTED",
  "status" : "E0202",
  "message" : "Transaction rejected, terminal is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "09f21827-b56b-4f69-b41e-e97c04e78285"
}
HTTP Response - STATUS: E0204
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "d283ba80-af47-4466-af1c-7ecbc353ce51",
  "transactionStatus" : "REJECTED",
  "status" : "E0204",
  "message" : "Transaction rejected, user is on aml list",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2df36d70-fd97-4fce-837f-43d5bae62d60"
}
HTTP Response - STATUS: E0205
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 268

{
  "requestUuid" : "20882b36-de4c-4361-a6e6-12b2a22f4f06",
  "transactionStatus" : "REJECTED",
  "status" : "E0205",
  "message" : "Transaction rejected, bank is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "37d7910a-1594-471d-94d8-ba15b98fed3e"
}
Table 224. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E0206
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 301

{
  "requestUuid" : "e1dacbda-fde3-4234-98bc-f10a924ce7d1",
  "transactionStatus" : "REJECTED",
  "status" : "E0206",
  "message" : "Transaction rejected, too many reject transactions and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0e90fba0-e14e-431b-a57e-24212e13f676"
}
HTTP Response - STATUS: E0207
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 299

{
  "requestUuid" : "16b3cc43-b8f8-4579-9c8f-505adb29999b",
  "transactionStatus" : "REJECTED",
  "status" : "E0207",
  "message" : "Transaction rejected, too many attempts declined and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "96afcaa9-24da-48fe-aed5-989db1faf389"
}
HTTP Response - STATUS: E0208
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "3a223d61-adb8-42f3-b95e-97afc333df97",
  "transactionStatus" : "REJECTED",
  "status" : "E0208",
  "message" : "Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e770cf95-8b42-4453-8a8c-771dc47ae98f"
}
HTTP Response - STATUS: E0209
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 292

{
  "requestUuid" : "5d7c8af3-7748-466a-a203-aec752256000",
  "transactionStatus" : "REJECTED",
  "status" : "E0209",
  "message" : "Transaction rejected, sender name contains fraudulent phrase.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4b53fe80-8dbc-49f6-a547-4350160f5460"
}
HTTP Response - STATUS: E0210
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 276

{
  "requestUuid" : "eee3ea27-8f43-4f5e-94b9-1f7efdc956c8",
  "transactionStatus" : "REJECTED",
  "status" : "E0210",
  "message" : "Transaction rejected, suspicious sender name.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "993d524b-326e-4221-927e-fa24bef2354e"
}
HTTP Response - STATUS: E0211
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 277

{
  "requestUuid" : "d67aa7d3-1cc7-4ce8-92e7-19ca54739acd",
  "transactionStatus" : "REJECTED",
  "status" : "E0211",
  "message" : "Transaction rejected, card country restricted.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "a46eb94e-b81f-4da3-99de-ffc672020197"
}
HTTP Response - STATUS: E01601
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 286

{
  "requestUuid" : "055c3e35-ffd5-4225-9f37-9f5b2a36d4b7",
  "transactionStatus" : "REJECTED",
  "status" : "E01601",
  "message" : "Transaction rejected, terminal is blocked for provider",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2d2ed1d9-bdfb-4a51-afcd-ca891957e553"
}
HTTP Response - STATUS: E01602
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 308

{
  "requestUuid" : "7ed1ec8a-1b4b-4996-81b6-f43e18dbfd18",
  "transactionStatus" : "REJECTED",
  "status" : "E01602",
  "message" : "Transaction rejected, geographic scope is not permitted for this transaction",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2f73bc8c-2ec6-4f2b-a5bf-c522ad8f6fcc"
}
HTTP Response - STATUS: E01607
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 315

{
  "requestUuid" : "9389b4e5-2e53-4f70-8d59-0fb7799a95fc",
  "transactionStatus" : "REJECTED",
  "status" : "E01607",
  "message" : "Transaction rejected, internal server error during authorization request generation",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1ab14cb7-c7b3-4af1-a730-a32386436243"
}
HTTP Response - STATUS: E13000
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "dad2ae3e-4819-4cb2-be08-bedfa07fc77b",
  "transactionStatus" : "REJECTED",
  "status" : "E13000",
  "message" : "Transaction rejected, risk score exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1851d40f-e71d-4b05-ade4-3c333614a425"
}
500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0142
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 183

{
  "status" : "E0142",
  "message" : "Commission configuration not add for terminal",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "9835465a-6369-4590-bd86-3ebce226283c"
}
HTTP Response - STATUS: E0153
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 280

{
  "requestUuid" : "54da49b3-e438-455e-82fc-56a55eb02d02",
  "transactionStatus" : "PENDING",
  "status" : "E0153",
  "message" : "Transaction declined, problem with MIP connection",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "96633458-3237-4c01-b033-901b391afc9c"
}
HTTP Response - STATUS: E01599
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "9e2379d1-3ff0-4fc2-a261-f13deb33b739",
  "transactionStatus" : "DECLINED",
  "status" : "E01599",
  "message" : "Transaction declined, processing timeout",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "0fa26c2a-4876-4be1-9154-9e24e5d756a9"
}
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
Table 225. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
HTTP Response - STATUS: E9010
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 164

{
  "status" : "E9010",
  "message" : "Error data center connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "f0596e5f-70fc-4532-94fc-fcddd0a3f4c4"
}
Table 226. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

6.9. Installment Payment

Installment Payment is an API method that allows users to make payments for online purchases in the form of monthly installments. Installlment plan is an offer of the bank to spread the payment in installments and may vary depending on the bank of the card issuer.
API methods offers decision whether user wants to make payment in installments, pay in full or cancel.
In case of payment in installments, the customer is presented with a plan of possible payment options. Depending on the configuration
the customer decides how many installments he wants to make the payment in. The user's goal is to choose the right plan that best suits his requirements.
In case of payment in full at the moment of authorization the transaction is treated as an ordinary e-commerce payment.
In case of cancel, the whole payment is immediately rejected.
After completing the initialization method and receiving possible installment plans for the transaction, the user has a limited time to decide on the choice of installments.
 The decision and sending of the confirmation method must be executed within 15 minutes, otherwise the transaction is immediately accepted and cleared in full.
The Installment Payment functionality is only possible for users of cards issued by Mastercard.
Merchant has the ability to make a payment for goods which causes the cardholder to be debited in the currency of purchase, terminal or card currency based on the parameters provided: currency of transaction, different currency terminals held and currencies supported by the card.
The optional terminalUuid field provided during any of the authorisation methods forces the card to be debited in the currency of the terminal specified if the purchase currency is different from the terminal currency a currency conversion will take place.
The Fenige Payment API methods optionally allows merchants to store card data and sensitive personal data in order to allow performing subsequent transactions.
If merchant decides to use DataCenter transaction flow then is required to provide the card id of the card previously stored in the Fenige DataCenter, from which card the
relevant required parameters will be downloaded and used for authorization.
Card data and sensitive personal data according to the Fenige API specification are: cardNumber, expiryDate, firstName, lastName and email.
All card data are stored securely on Fenige DataCenter servers in accordance with applicable security requirements.
Installment Payment flow
installment payment with outside3ds flow
Installment Payment with DataCenter flow
installment payment with datacenter outside3ds flow
Initial Installment Payment
initial installment payment

6.9.1. Installment Initial

POST /client/payments/installment/initial Content Type: application/json, Authorization: Basic Auth
The method is used as a request to spread payments into installments and is a request to present a list of installment possibilities depending on whether a given bank offers
 such functionality. The transaction may be a transaction with outside 3ds.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

When performing authorization, remember that there are currencies with different number of decimal places. For example: VND has no pennies and KWD has three decimal places. Please take this into account in the Amout field. For more information on other currencies, see ISO 4217.

Request
Request
HTTP Request
POST /client/payments/installment/initial HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 844
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7c0cb9c4-2271-42e3-94f0-8977b23be4e4",
  "requestUuid" : "0f1faff2-570f-4d6d-bfdb-e182741bf6b0",
  "firstName" : "user",
  "lastName" : "testUser",
  "amount" : 1000,
  "currency" : "USD",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "email" : "test@fenige.pl",
  "addressIp" : "192.0.0.1",
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 227. HTTP Request
Name Description

Authorization

Basic auth credentials for PSP

Table 228. Installment Initial request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

cardNumber

String

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

Expiration date of card mm/yy

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Cardholder Authentication Verification Value.

outside3ds.transactionXId

String

Server transaction Id generated by DS. Required for 3DS 2.x version. The transactionXId is the field that defines the 3DS version. The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x. TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 01 or 02 or 05 or 06, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. More info.

outside3ds.authenticationStatus

String

@Must match Y or A or U, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Request - DataCenter card
HTTP Request
POST /client/payments/installment/initial HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 722
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "7c0cb9c4-2271-42e3-94f0-8977b23be4e4",
  "requestUuid" : "db335440-569e-48fd-a347-e6f91c75a36d",
  "amount" : 1000,
  "currency" : "USD",
  "cardId" : 1906455,
  "cvc2" : "123",
  "addressIp" : "192.0.0.1",
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 900,
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 229. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 230. Installment Initial request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

receiverAmount

Number

@Optional field, @Must be greater or equals 0 if exists

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

outside3ds

Object

There are outside 3ds data authorization that have been send to our API

outside3ds.cavv

String

Server transaction Id generated by DS. Required for 3DS 2.x version

outside3ds.transactionXId

String

Cardholder Authentication Verification Value

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 01 or 02 or 05 or 06, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. More info.

outside3ds.authenticationStatus

String

@Must match Y or A, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

cardId

Number

@Must not be null, @Numeric

DataCenter card id. Required to obtain card information data from DataCenter such as (cardNumber, expiryDate, firstName, lastName, email)

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Response
Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

STATUS: E0135 - Returned when terminal for merchant not exist or all of them are inactive.

STATUS: E0137 - Returned when there is not terminal marked as default

STATUS: E06003 - Returned when DataCenter card was not found.

422 UNPROCESSABLE ENTITY

STATUS: E0150 - Returned when transaction is rejected.

STATUS: E0151 - Returned when transaction is rejected, because currency is not supported.

STATUS: E0152 - Returned when transaction is rejected, because issuer is not supported.

STATUS: E01580 - Returned when transaction is rejected, because DataCenter card was expired.

STATUS: E0159 - Returned when transaction is rejected, because restricted transaction amount has occurred

STATUS: E0200 - Returned when transaction is rejected, because card is blocked in Fenige System

STATUS: E0201 - Returned when transaction is rejected, because BIN is blocked in Fenige System

STATUS: E0202 - Returned when transaction is rejected, because Terminal is blocked in Fenige System

STATUS: E0204 - Returned when transaction is rejected, because user’s personal data was found on AML (sanctions) list

STATUS: E0205 - Returned when transaction is rejected, because Bank is blocked in Fenige System

STATUS: E0206 - Returned when transaction is rejected, because to many reject transactions and card is blocked

STATUS: E0207 - Returned when transaction is rejected, bacause to many attempts declined and card is blocked

STATUS: E0208 - Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days

STATUS: E0209 - Returned when sender or receiver name contains fraudulent phrase

STATUS: E0210 - Returned when sender has suspicious name

STATUS: E0211 - Returned when transaction is rejected, because card country is blocked in Fenige System.

STATUS: E01600 - Returned when transaction is declined, because 3DS 2.X flow invoked for other card number than specified in the request

STATUS: E01596 - Returned when transaction is rejected, because terminal has blocked transaction with card issued in restricted country

500 INTERNAL SERVER ERROR

STATUS: E0142 - Returned when commission configuration is not added for terminal.

STATUS: E0153 - Returned when transaction is declined, by problem with MIP connection.

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E0190 - Returned when currency rate is invalid.

STATUS: E9000 - Returned when reason is unknown.

STATUS: E05015 - Returned when VISA card was used (VISA cards are not supported).

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

STATUS: E9010 - Returned when is error DataCenter connection.

200 OK WAITING_FOR_CONFIRMATION FORMAT_1
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1656

{
  "requestUuid" : "98484397-37b9-483a-b38e-92ee3c060740",
  "installmentPaymentInitialUuid" : "84db7293-0ffc-45e2-a105-0bdf06398ab7",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "installmentStatus" : "WAITING_FOR_CONFIRMATION",
  "installmentPaymentType" : "ISSUER_FINANCED",
  "installmentPaymentOptions" : [ "PAY_IN_INSTALLMENTS", "PAY_IN_FULL", "CANCEL" ],
  "installmentPaymentFormat1" : [ {
    "uuid" : "e410f5b7-7f88-40b9-8804-095432fed454",
    "installmentPaymentFormat" : "FORMAT_1",
    "numberOfInstallments" : "03",
    "interestRate" : "00000",
    "installmentFee" : "000000001215",
    "annualPercentageRate" : "     ",
    "firstInstallmentAmount" : "000000013905",
    "subsequentInstallmentAmount" : "000000013905",
    "totalAmountDue" : "000000041715"
  }, {
    "uuid" : "81469d5e-a270-4203-b367-1da461eb2de9",
    "installmentPaymentFormat" : "FORMAT_1",
    "numberOfInstallments" : "06",
    "interestRate" : "00000",
    "installmentFee" : "000000002430",
    "annualPercentageRate" : "     ",
    "firstInstallmentAmount" : "000000007155",
    "subsequentInstallmentAmount" : "000000007155",
    "totalAmountDue" : "000000042930"
  }, {
    "uuid" : "b97828ee-1d64-46cd-9659-9a849a5d2ec9",
    "installmentPaymentFormat" : "FORMAT_1",
    "numberOfInstallments" : "12",
    "interestRate" : "00000",
    "installmentFee" : "000000004860",
    "annualPercentageRate" : "     ",
    "firstInstallmentAmount" : "000000003780",
    "subsequentInstallmentAmount" : "000000003780",
    "totalAmountDue" : "000000045360"
  } ],
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 231. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

installmentPaymentInitialUuid

String

Unique transaction uuid which, together with the merchantId, identifies transactions, is used in installment step 2 to identify initial transaction

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

installmentStatus

String

Transaction Installment Payment processing status

installmentPaymentType

String

Transaction Installment Payment type information, may be: ISSUER_FINANCED, MERCHANT_FINANCED, ACQUIRER_FINANCED, CO_BRANDED_MERCHANT_FINANCED, ISSUER_MERCHANT_CO_FINANCED

installmentPaymentOptions

Array

Transaction Installment Payment user possible options may be: PAY_IN_INSTALLMENTS, PAY_IN_FULL or CANCEL

installmentPaymentFormat1[].uuid

String

Unique plan uuid in system. Required to select in step 2 installment decision

installmentPaymentFormat1[].installmentPaymentFormat

String

Plan format label, may be FORMAT_1 for this configuration

installmentPaymentFormat1[].numberOfInstallments

String

Number of installments contains the number of installment payments provided by the issuer

installmentPaymentFormat1[].interestRate

String

Interest rate contains the rate (two decimal places) that the issuer assesses the cardholder for the installment payment

installmentPaymentFormat1[].installmentFee

String

Installment Fee contains the fee amount in cardholder billing currency that the issuer assesses the cardholder for the installment payments

installmentPaymentFormat1[].annualPercentageRate

String

Annual Percentage Rate contains the rate (two decimal places) that the issuer charges the cardholder for the installment payment

installmentPaymentFormat1[].firstInstallmentAmount

String

First Installment Amount contains the amount of the first installment in cardholder billing currency that the issuer will charge the cardholder for the installment payments

installmentPaymentFormat1[].subsequentInstallmentAmount

String

Subsequent Installment Amount contains the amount of the subsequent installments in cardholder billing currency that the issuer will charge the cardholder for the installment payments

installmentPaymentFormat1[].totalAmountDue

String

Total Amount Due contains the total amount due in cardholder billing currency that the issuer charges the cardholder for the installment payments

200 OK WAITING_FOR_CONFIRMATION FORMAT_2
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 818

{
  "requestUuid" : "e46aee53-46b8-41f4-a2ce-34e08ea25fa1",
  "installmentPaymentInitialUuid" : "fe40b69e-4f40-4405-95ab-6e6d257fafb9",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "installmentStatus" : "WAITING_FOR_CONFIRMATION",
  "installmentPaymentType" : "ISSUER_FINANCED",
  "installmentPaymentOptions" : [ "PAY_IN_INSTALLMENTS", "CANCEL" ],
  "installmentPaymentFormat2" : {
    "uuid" : "3aded0e3-2eb4-474c-a782-8eee2e5e1cc1",
    "installmentPaymentFormat" : "FORMAT_2",
    "minimumNumberOfInstallments" : "5",
    "maximumNumberOfInstallments" : "10",
    "interestRate" : "00010",
    "installmentFee" : "000000000010",
    "annualPercentageRate" : "00010",
    "totalAmountDue" : "000000001000"
  },
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 232. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

installmentPaymentInitialUuid

String

Unique transaction uuid which, together with the merchantId, identifies transactions, is used in installment step 2 to identify initial transaction

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

installmentStatus

String

Transaction Installment Payment processing status

installmentPaymentType

String

Transaction Installment Payment type information, may be: ISSUER_FINANCED, MERCHANT_FINANCED, ACQUIRER_FINANCED, CO_BRANDED_MERCHANT_FINANCED, ISSUER_MERCHANT_CO_FINANCED

installmentPaymentOptions

Array

Transaction Installment Payment user possible options may be: PAY_IN_INSTALLMENTS, PAY_IN_FULL or CANCEL

installmentPaymentFormat2.uuid

String

Unique plan uuid in system. Required to select in step 2 installment decision

installmentPaymentFormat2.installmentPaymentFormat

String

Plan format label, may be FORMAT_2 for this configuration

installmentPaymentFormat2.minimumNumberOfInstallments

String

Minimum number of installments contains the minimum number of installments payments provided by the issuer

installmentPaymentFormat2.maximumNumberOfInstallments

String

Maximum number of installments contains the maximum number of installments payments provided by the issuer

installmentPaymentFormat2.interestRate

String

Interest rate contains the rate (two decimal places) that the issuer assesses the cardholder for the installment payment

installmentPaymentFormat2.installmentFee

String

Installment Fee contains the fee amount in cardholder billing currency that the issuer assesses the cardholder for the installment payments

installmentPaymentFormat2.annualPercentageRate

String

Annual Percentage Rate contains the rate (two decimal places) that the issuer charges the cardholder for the installment payment

installmentPaymentFormat2.totalAmountDue

String

Total Amount Due contains the total amount due in cardholder billing currency that the issuer charges the cardholder for the installment payments

200 OK INSTALLMENT_PAYMENT_NOT_SUPPORTED_WAITING_FOR_CONFIRMATION
Table 233. HTTP Response
Path Type Description

requestUuid

String

Request unique uuid in system

installmentPaymentInitialUuid

String

Unique transaction uuid which, together with the merchantId, identifies transactions, is used in installment step 2 to identify initial transaction

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

installmentStatus

String

Transaction Installment Payment processing status

installmentPaymentOptions

Array

Transaction Installment Payment user possible options may be: PAY_IN_INSTALLMENTS, PAY_IN_FULL or CANCEL

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:16 GMT
Connection: close
Content-Length: 536

{
  "errors" : {
    "expiryDate" : [ "invalid card expiration date" ],
    "lastName" : [ "must not be blank", "must not be null" ],
    "firstName" : [ "must not be null", "must not be blank" ],
    "amount" : [ "must not be null" ],
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ],
    "currency" : [ "must not be null" ],
    "cvc2" : [ "must not be blank", "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "f5882d2d-668c-42f6-9ee9-2300d252fb26"
}
Table 234. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

HTTP Response - STATUS: E8000 - DataCenter Bad Request
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:16 GMT
Connection: close
Content-Length: 475

{
  "errors" : {
    "firstName" : [ "Card id was provided, firstName is obtained from data center card: 1906455" ],
    "lastName" : [ "Card id was provided, lastName is obtained from data center card: 1906455" ],
    "cardId" : [ "Please provide cardId for DATACENTER transaction or fields: cardNumber, expiryDate, firstName, lastName for PLAIN transaction" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "b6deee72-e276-4a02-aea3-4e01238bf575"
}
Table 235. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:16 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "6d5850e9-30b4-43db-82e0-9fe27d0d02b9"
}
Table 236. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:17 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "ebddff13-546f-4d10-a1fa-b52aa28eaa50"
}
Table 237. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "4fc5ef00-eb2d-4ed7-b19e-e7f9f0011187"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "0bc712ca-0d55-43d7-8121-a233abc52e19"
}
Table 238. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E0135
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 163

{
  "status" : "E0137",
  "message" : "Default terminal not exist",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "50b682f6-3201-46a1-9c88-697ab413c832"
}
Table 239. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E0137
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 159

{
  "status" : "E0135",
  "message" : "Terminals for merchant not exists",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "f69dc25f-29e5-4b6c-88d4-933fb336cf14"
}
Table 240. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E06003
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 246

{
  "requestUuid" : "5113f94d-046d-49c2-b698-709545ec7cb1",
  "transactionStatus" : "REJECTED",
  "status" : "E06003",
  "message" : "Datacenter card not found",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "d33cb514-b032-42f9-a9ee-2ac3f2ae941a"
}
Table 241. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0150
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 251

{
  "requestUuid" : "340baba6-ac2c-41b0-8b9f-bd68a975a97e",
  "transactionStatus" : "REJECTED",
  "status" : "E0150",
  "message" : "Transaction rejected",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "2b59104a-20a6-4045-b6d6-0586f6fa808a"
}
HTTP Response - STATUS: E0151
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 275

{
  "requestUuid" : "d522b9c4-6e11-4df9-90f4-8fbeef88550a",
  "transactionStatus" : "REJECTED",
  "status" : "E0151",
  "message" : "Transaction rejected, currency not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "d71ce2e7-75ce-4d26-bfa7-d30404e00034"
}
HTTP Response - STATUS: E0152
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "a212a859-f8cd-4a93-b0ef-62c2cd588882",
  "transactionStatus" : "REJECTED",
  "status" : "E0152",
  "message" : "Transaction rejected, issuer card not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "3f1acfe9-3713-4a04-8379-b0c1ab5a42f5"
}
HTTP Response - STATUS: E01580
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 270

{
  "requestUuid" : "05ad3818-bd6b-4455-97a5-7f582f35f491",
  "transactionStatus" : "REJECTED",
  "status" : "E01580",
  "message" : "Transaction rejected. Card is expired.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "9732a31e-c038-4301-a7f3-e1b40b766067"
}
HTTP Response - STATUS: E0159
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 295

{
  "requestUuid" : "fa68b605-d489-4143-a370-693787fb5899",
  "transactionStatus" : "REJECTED",
  "status" : "E0159",
  "message" : "Transaction rejected, restricted transaction amount has occurred",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "5b959c38-834d-4fe7-9ce6-83ef9b80052b"
}
HTTP Response - STATUS: E0200
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 381

{
  "requestUuid" : "1c821362-a6a5-4361-be6f-45324de4de3b",
  "transactionStatus" : "REJECTED",
  "cardBlockadeAdditionalData" : {
    "blockType" : "TEMP",
    "blockedUntil" : "2022-11-01T12:51:32.000"
  },
  "status" : "E0200",
  "message" : "Transaction rejected, card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "6bf914df-084e-4daa-a820-38351cd942d7"
}
HTTP Response - STATUS: E0201
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 267

{
  "requestUuid" : "63f57bd0-b2e9-48e5-91be-f488176d39c2",
  "transactionStatus" : "REJECTED",
  "status" : "E0201",
  "message" : "Transaction rejected, bin is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "09d4b457-e92f-408d-8373-07dfacfba2e4"
}
HTTP Response - STATUS: E0202
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "e74937b8-d349-4bb5-9377-0e74ad06ccde",
  "transactionStatus" : "REJECTED",
  "status" : "E0202",
  "message" : "Transaction rejected, terminal is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e96248b7-2fa7-48d1-84c5-342c6800d8ac"
}
HTTP Response - STATUS: E0204
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "cce98c6a-26f7-4ab2-a12e-02c8a064b9ff",
  "transactionStatus" : "REJECTED",
  "status" : "E0204",
  "message" : "Transaction rejected, user is on aml list",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "3d4327c7-e2ce-4d53-89e5-b0ff828c2ac2"
}
HTTP Response - STATUS: E0205
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 268

{
  "requestUuid" : "4c604b8e-c9ca-4d01-a16d-b8040d6753d2",
  "transactionStatus" : "REJECTED",
  "status" : "E0205",
  "message" : "Transaction rejected, bank is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4a8776fb-c9c2-41ae-ba28-0db21d1a14f6"
}
Table 242. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E0206
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 301

{
  "requestUuid" : "e1dacbda-fde3-4234-98bc-f10a924ce7d1",
  "transactionStatus" : "REJECTED",
  "status" : "E0206",
  "message" : "Transaction rejected, too many reject transactions and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0e90fba0-e14e-431b-a57e-24212e13f676"
}
HTTP Response - STATUS: E0207
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 299

{
  "requestUuid" : "16b3cc43-b8f8-4579-9c8f-505adb29999b",
  "transactionStatus" : "REJECTED",
  "status" : "E0207",
  "message" : "Transaction rejected, too many attempts declined and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "96afcaa9-24da-48fe-aed5-989db1faf389"
}
HTTP Response - STATUS: E0208
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "3a223d61-adb8-42f3-b95e-97afc333df97",
  "transactionStatus" : "REJECTED",
  "status" : "E0208",
  "message" : "Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e770cf95-8b42-4453-8a8c-771dc47ae98f"
}
HTTP Response - STATUS: E0209
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 292

{
  "requestUuid" : "5d7c8af3-7748-466a-a203-aec752256000",
  "transactionStatus" : "REJECTED",
  "status" : "E0209",
  "message" : "Transaction rejected, sender name contains fraudulent phrase.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4b53fe80-8dbc-49f6-a547-4350160f5460"
}
HTTP Response - STATUS: E0210
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 276

{
  "requestUuid" : "eee3ea27-8f43-4f5e-94b9-1f7efdc956c8",
  "transactionStatus" : "REJECTED",
  "status" : "E0210",
  "message" : "Transaction rejected, suspicious sender name.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "993d524b-326e-4221-927e-fa24bef2354e"
}
HTTP Response - STATUS: E0211
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 277

{
  "requestUuid" : "d67aa7d3-1cc7-4ce8-92e7-19ca54739acd",
  "transactionStatus" : "REJECTED",
  "status" : "E0211",
  "message" : "Transaction rejected, card country restricted.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "a46eb94e-b81f-4da3-99de-ffc672020197"
}
HTTP Response - STATUS: E01594
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 317

{
  "requestUuid" : "0cef9843-af4b-4b5a-aa93-e29d721acea4",
  "transactionStatus" : "REJECTED",
  "status" : "E01594",
  "message" : "Transaction rejected, transactionXId parameter had registered for another transaction",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "28f328c2-9830-4299-8ef1-026c941173e4"
}
Table 243. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E01600
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 326

{
  "requestUuid" : "394f573e-d6ca-419f-8e85-309893ac7efd",
  "transactionStatus" : "REJECTED",
  "status" : "E01584",
  "message" : "Transaction rejected, 3DS 2.X flow invoked for other card number than specified in the request",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "aa242dc6-db70-4d83-a4e7-71f04b41e4b5"
}
Table 244. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

HTTP Response - STATUS: E01596
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "5c019324-ffe3-4338-86d9-730cdcc3dd65",
  "transactionStatus" : "REJECTED",
  "status" : "E01596",
  "message" : "Transaction rejected, terminal blocks transactions with card issued in given card country",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "168589f5-a146-444f-9b38-466326597a9e"
}
HTTP Response - STATUS: E13000
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "dad2ae3e-4819-4cb2-be08-bedfa07fc77b",
  "transactionStatus" : "REJECTED",
  "status" : "E13000",
  "message" : "Transaction rejected, risk score exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1851d40f-e71d-4b05-ade4-3c333614a425"
}
500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0142
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 183

{
  "status" : "E0142",
  "message" : "Commission configuration not add for terminal",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "a53e9cfb-ce3a-4fe1-9a8c-882c358e8fe9"
}
HTTP Response - STATUS: E0153
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 187

{
  "status" : "E0153",
  "message" : "Transaction declined, problem with MIP connection",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "ae573dc3-8335-490e-8941-42054a932454"
}
HTTP Response - STATUS: E05015
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 283

{
  "requestUuid" : "ddbf47f9-1df5-4bd8-9669-420b350a88fa",
  "transactionStatus" : "REJECTED",
  "status" : "E05015",
  "message" : "Installment Payment unsupported card provider VISA",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "ae499b9b-7323-4432-9d05-7f936521e0ed"
}
HTTP Response - STATUS: E01599
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 179

{
  "status" : "E01599",
  "message" : "Transaction declined, processing timeout",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "f0e9b63d-fa82-4706-88d5-e9e23ff8564f"
}
HTTP Response - STATUS: E0190
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 166

{
  "status" : "E0190",
  "message" : "Failed to get currency rates",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "72aa889a-80fe-4e68-bf35-7fed857b8eb9"
}
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
Table 245. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
HTTP Response - STATUS: E9010
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 258

{
  "requestUuid" : "228e6d0c-e37d-46c4-975d-f14ffbd54568",
  "transactionStatus" : "REJECTED",
  "status" : "E9010",
  "message" : "Error data center connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "125d4847-34af-40c9-a850-234c683d4a6b"
}
Table 246. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

6.9.2. Installment Confirm

POST /client/payments/installment/confirm Content Type: application/json, Authorization: Basic Auth
The method is used to communicate the user's decision to start or reject installments the bank's proposal. If accept the installments, the user sends a specific uuid of the
plan to which he agrees and optional number of installments (depending on installment Format 1 or Format 2 bank returns). Format 2 of Mastercard installment plan requires
providing speciffic number of installments value which is in allowed range.
In case of full payment user selects PAY_IN_FULL option.
In case of cancellation it sends CANCEL.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

Request
Request
HTTP Request
POST /client/payments/installment/confirm HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 533
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "dc5f071f-3f8d-4813-90b0-c7d946e8ee6d",
  "requestUuid" : "f31c5a4d-fc23-450f-8377-4e0e8b745a86",
  "installmentPaymentInitialUuid" : "edee242c-428d-4761-9f4a-63ae14968336",
  "installmentPaymentOption" : "PAY_IN_INSTALLMENTS",
  "installmentPaymentPlanUuid" : "dcc027c3-87b8-4d9a-bd42-2cadf12f1131",
  "installmentPaymentNumberOfInstallments" : "12",
  "countryOfResidence" : "US",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "province" : "NY",
  "postalCode" : "24-110"
}
Table 247. HTTP Request
Name Description

Authorization

Basic auth credentials for PSP

Table 248. Installment Confirm request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

installmentPaymentInitialUuid

String

@Must not be null

Transaction uuid of initial Installment Payment transaction

installmentPaymentOption

String

@Must not be null

Transaction Installment Payment user possible options may be: PAY_IN_INSTALLMENTS, PAY_IN_FULL or CANCEL

installmentPaymentPlanUuid

String

Installment Payment plan uuid from previously returned plans. Required for PAY_IN_INSTALLMENTS. Required for FORMAT 1 and FORMAT 2 plans

installmentPaymentNumberOfInstallments

String

Number of installments from allowed range (minimumNumberOfInstallments and maximumNumberOfInstallments). Required for PAY_IN_INSTALLMENTS. Required for FORMAT 2 plan.

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "^[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

Response
Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E80000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E80002 - Returned when you are the problem with authorized to your PSP.

500 INTERNAL SERVER ERROR

STATUS: E001900 - Installment Payment initial not found.

STATUS: E001901 - Installment Payment already confirmed.

STATUS: E001902 - Installment Payment already cancelled.

STATUS: E001903 - Installment Payment already pay in full.

STATUS: E001904 - Installment Payment not confirmed in required time.

STATUS: E001905 - Installment Payment Initial was failed.

STATUS: E001906 - Installment Payment could not find valid installment plan for requested uuid.

STATUS: E001907 - Installment Payment Option not allowed for transaction.

STATUS: E001908 - Installment Payment missing plan uuid.

STATUS: E001909 - Installment Payment missing request number of installments.

STATUS: E001910 - Installment Payment requested number of installments is outside of allowed range.

STATUS: E90000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E90001 - Returned when is error acquirer connection.

STATUS: E90002 - Returned when is error mpi connection.

200 OK CONFIRMED
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 263

{
  "installmentPaymentInitialUuid" : "e2da1fcd-442a-43df-bc40-74a592271b93",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "installmentStatus" : "CONFIRMED",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 249. Response fields
Path Type Description

installmentPaymentInitialUuid

String

Unique transaction uuid which, together with the merchantId, identifies transactions

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

installmentStatus

String

Transaction Installment Payment processing status

200 OK CANCELLED
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 262

{
  "installmentPaymentInitialUuid" : "f4b063c9-305e-4bf4-9151-67803d7c7c9e",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "installmentStatus" : "CANCELED",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
200 OK PAY_IN_FULL
Table 250. HTTP Response
Path Type Description

installmentPaymentInitialUuid

String

Unique transaction uuid which, together with the merchantId, identifies transactions

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

installmentStatus

String

Transaction Installment Payment processing status

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:19 GMT
Connection: close
Content-Length: 337

{
  "errors" : {
    "installmentPaymentInitialUuid" : [ "must not be null" ],
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ],
    "installmentPaymentOption" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "4d4e2c3e-99c3-4356-a731-5844e74fc398"
}
Table 251. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:19 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "1228523c-87fc-4c12-95e0-0343af28a2f1"
}
Table 252. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:19 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "033ca1e5-2d63-486c-9d49-6e1fd393755e"
}
Table 253. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E05000
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 176

{
  "status" : "E05000",
  "message" : "Installment Payment initial not found",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "47c8e50c-1816-4115-9a0a-79ca5cbb9a61"
}
HTTP Response - STATUS: E05001
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 176

{
  "status" : "E05001",
  "message" : "Installment Payment already confirmed",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "9ffee574-5c3f-4819-8f2a-acd459ca7111"
}
HTTP Response - STATUS: E05002
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 176

{
  "status" : "E05002",
  "message" : "Installment Payment already cancelled",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "03b1b9df-1dc4-4a8e-b50d-76a16c71ef0b"
}
HTTP Response - STATUS: E05003
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 178

{
  "status" : "E05003",
  "message" : "Installment Payment already pay in full",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "470bc886-9551-4fc1-a415-09ba4ace269b"
}
HTTP Response - STATUS: E05004
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 189

{
  "status" : "E05004",
  "message" : "Installment Payment not confirmed in required time",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "a60d52c2-1443-4d4c-8f1d-9b4c69337d5c"
}
HTTP Response - STATUS: E05005
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 177

{
  "status" : "E05005",
  "message" : "Installment Payment Initial was failed",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "b12d748d-8fe7-4306-82fa-1dd774b59054"
}
HTTP Response - STATUS: E05006
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 215

{
  "status" : "E05006",
  "message" : "Installment Payment could not find valid installment plan for requested uuid",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bad9c796-f715-443b-a391-6f9915cb64ba"
}
HTTP Response - STATUS: E05007
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 193

{
  "status" : "E05007",
  "message" : "Installment Payment Option not allowed for transaction",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "79123a30-8de5-4475-ba36-b1e272d98009"
}
HTTP Response - STATUS: E05008
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 176

{
  "status" : "E05008",
  "message" : "Installment Payment missing plan uuid",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "d1e83f11-42cb-40c6-9540-cb3b2354343c"
}
HTTP Response - STATUS: E05009
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 197

{
  "status" : "E05009",
  "message" : "Installment Payment missing request number of installments",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "1e2beac8-0398-42a6-8714-43808964b30e"
}
HTTP Response - STATUS: E05010
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 219

{
  "status" : "E05010",
  "message" : "Installment Payment requested number of installments is outside of allowed range",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "2b3f16a6-3da6-446d-9fd6-d8a936ebac88"
}
HTTP Response - STATUS: E05011
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 234

{
  "status" : "E05011",
  "message" : "Installment Payment operation not allowed, installment type allows ISSUER_FINANCED installments",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "2b21a1e8-c074-418b-896e-67d266e999c6"
}
HTTP Response - STATUS: E05014
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 203

{
  "status" : "E05014",
  "message" : "Installment Payment outside 3ds request is required for terminal",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "5bcf18d0-6cb1-4cfb-a1b6-70568810b928"
}
503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
Table 254. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

6.9.3. Installment Payment Processing Test Cases

    There are some rules imposed by the Mastercard which are required to be able to properly test the Installment Payment flow on the staging environment.
    Test card. Based on the special Mastercard test documentation we know that to be able to test the IP flow correctly you have to use specially defined card numbers otherwise the
test environment of the Mastercard will not return proposals for monthly installments for approval. Allowed test card numbers are shown below.
    Terminal settlement currency. Mastercard requires you to enter and send the appropriate transaction amount to the test environment in order to call a specific test case. In
order to achieve this, currency conversions must be avoided during the execution of the transaction, which is possible when: card currency = terminal currency = transaction currency. The full list of test cases is presented below.
    Transaction currency. As described above, the transaction currency should be the same as the terminal and card currency.
Terminal settlement currency should be EUR. Card default currency = EUR. Transaction currency = EUR. Transaction amount must be one of the values described in below table.
Test Cases

Case ID

Transaction details

Response

1

"amount" : 95000,

"currency" : "EUR",

"cardNumber" : "5457210001000050",

Issuer does not offer installment payment plan

"installmentStatus": "INSTALLMENT_PAYMENT_NOT_SUPPORTED_WAITING_FOR_CONFIRMATION",

"installmentPaymentOptions": [ "PAY_IN_FULL", "CANCEL" ],

2

"amount" : 95100,

"currency" : "EUR",

"cardNumber" : "5457210001000050",

Issuer offers "Pay in Full Only", no installments.

"installmentStatus": "INSTALLMENT_PAYMENT_NOT_SUPPORTED_WAITING_FOR_CONFIRMATION",

"installmentPaymentOptions": [ "PAY_IN_FULL", "CANCEL" ],

3

"amount" : 95200,

"currency" : "EUR",

"cardNumber" : "5457210001000050",

Issuer offers "Pay in Installments Only"

"installmentStatus": "WAITING_FOR_CONFIRMATION",

"installmentPaymentType": "ISSUER_FINANCED",

"installmentPaymentOptions": [ "PAY_IN_INSTALLMENTS", "CANCEL" ],

"installmentPaymentFormat1": [ { "uuid": "42b37dc0-0bdb-42fe-b4a7-d02225ef32ea", "installmentPaymentFormat": "FORMAT_1", "numberOfInstallments": "05", "interestRate": "00100", "installmentFee": "000000000010", "annualPercentageRate": "00050", "firstInstallmentAmount": "000000001000", "subsequentInstallmentAmount": "000000001000", "totalAmountDue": "000000001000" } ],

4

"amount" : 95300,

"currency" : "EUR",

"cardNumber" : "5457210001000050",

Issuer offers "Pay in Full or Pay in Installments"

"installmentStatus": "WAITING_FOR_CONFIRMATION",

"installmentPaymentType": "ISSUER_FINANCED",

"installmentPaymentOptions": [ "PAY_IN_INSTALLMENTS", "PAY_IN_FULL", "CANCEL" ],

"installmentPaymentFormat1": [

{ "uuid": "4ee7c0b8-93c7-4a7b-8d81-3623c5907986", "installmentPaymentFormat": "FORMAT_1", "numberOfInstallments": "10", "interestRate": "00100", "installmentFee": "000000000010", "annualPercentageRate": "00050", "firstInstallmentAmount": "000000001000", "subsequentInstallmentAmount": "000000001000", "totalAmountDue": "000000100000" },

{ "uuid": "0ef86c37-7c2a-41fd-b2bf-71ec04e622e9", "installmentPaymentFormat": "FORMAT_1", "numberOfInstallments": "10", "interestRate": "00100", "installmentFee": "000000000010", "annualPercentageRate": "00050", "firstInstallmentAmount": "000000001000", "subsequentInstallmentAmount": "000000001000", "totalAmountDue": "000000090000" },

…​..

…​..

5

"amount" : 95400,

"currency" : "EUR",

"cardNumber" : "5457210001000050",

Issuer offers "Pay in Installments Only" - Format 2

"installmentStatus": "WAITING_FOR_CONFIRMATION",

"installmentPaymentType": "ISSUER_FINANCED",

"installmentPaymentOptions": [ "PAY_IN_INSTALLMENTS", "CANCEL" ],

"installmentPaymentFormat2": {

"uuid": "bfd6d122-0903-446d-9b26-c40973f82aea", "installmentPaymentFormat": "FORMAT_2", "minimumNumberOfInstallments": "10", "maximumNumberOfInstallments": "10", "interestRate": "00010", "installmentFee": "000000000010", "annualPercentageRate": "00010", "totalAmountDue": "000000001000" },

6

"amount" : 95500,

"currency" : "EUR",

"cardNumber" : "5457210001000050",

Issuer offers "Pay in Full or Pay in Installments" - Format 2

"installmentStatus": "WAITING_FOR_CONFIRMATION",

"installmentPaymentType": "ISSUER_FINANCED",

"installmentPaymentOptions": [ "PAY_IN_INSTALLMENTS", "PAY_IN_FULL", "CANCEL" ],

"installmentPaymentFormat2": { "uuid": "6479c6f3-2e39-4fb5-bd3b-9ee45437b80b", "installmentPaymentFormat": "FORMAT_2", "minimumNumberOfInstallments": "10", "maximumNumberOfInstallments": "10", "interestRate": "00010", "installmentFee": "000000000010", "annualPercentageRate": "00010", "totalAmountDue": "000000001000" },

7

"amount" : 95600,

"currency" : "EUR",

"cardNumber" : "5457210001000050",

Issuer offers "Pay in Full Only"

"installmentStatus": "WAITING_FOR_CONFIRMATION",

"installmentPaymentType": "ISSUER_FINANCED",

"installmentPaymentOptions": [ "PAY_IN_FULL", "CANCEL" ],

"installmentPaymentFormat1": [ { "uuid": "8e9e8afa-3e57-4e40-909e-b53aa475a4d2", "installmentPaymentFormat": "FORMAT_1", "numberOfInstallments": "10", "interestRate": "00100", "installmentFee": "000000000010", "annualPercentageRate": "00050", "firstInstallmentAmount": "000000001000", "subsequentInstallmentAmount": "000000001000", "totalAmountDue": "000000100000" } ],

"installmentPaymentFormat2": { "uuid": "7897ecb7-78b0-4243-99a5-87965ecb537f", "installmentPaymentFormat": "FORMAT_2", "minimumNumberOfInstallments": "10", "maximumNumberOfInstallments": "10", "interestRate": "00010", "installmentFee": "000000000010", "annualPercentageRate": "00010", "totalAmountDue": "000000001000" },

8

"amount" : 95600,

"currency" : "EUR",

"cardNumber" : "5457210001000050",

Issuer offers "Pay in Full Only"

"installmentStatus": "WAITING_FOR_CONFIRMATION",

"installmentPaymentType": "ISSUER_FINANCED",

"installmentPaymentOptions": [ "PAY_IN_FULL", "CANCEL" ],

"installmentPaymentFormat1": [ { "uuid": "8e9e8afa-3e57-4e40-909e-b53aa475a4d2", "installmentPaymentFormat": "FORMAT_1", "numberOfInstallments": "10", "interestRate": "00100", "installmentFee": "000000000010", "annualPercentageRate": "00050", "firstInstallmentAmount": "000000001000", "subsequentInstallmentAmount": "000000001000", "totalAmountDue": "000000100000" } ],

"installmentPaymentFormat2": { "uuid": "7897ecb7-78b0-4243-99a5-87965ecb537f", "installmentPaymentFormat": "FORMAT_2", "minimumNumberOfInstallments": "10", "maximumNumberOfInstallments": "10", "interestRate": "00010", "installmentFee": "000000000010", "annualPercentageRate": "00010", "totalAmountDue": "000000001000" },

Test Card numbers
Test Cards, default currency = EUR

5299050250000019, 5185520050000010, 5457210001000019, 5299050320000015, 5185520270000014, 5457210001000027, 5457210001000035, 5457210001000043, 5457210001000050

6.10. Details

GET /client/payments/query/{requestUuid} Authorization: Basic Auth
This method could be used for check transaction details. In response for the request you can find out more about registered transaction and check its status etc.

6.10.1. Request

HTTP Request
GET /client/payments/query/bfdb2e94-1f41-4ee8-8d99-996e2f86e7d6 HTTP/1.1
accept-encoding: gzip
user-agent: ReactorNetty/1.0.38
accept: */*
Authorization: Basic dXNlcjpwYXNzd29yZA==
Host: ecom-staging.fenige.pl
Table 255. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 256. /client/payments/query/{requestUuid}
Parameter Description

requestUuid

Request’s unique uuid in system

6.10.2. Response

Response status
Status Description

200 OK

Returned when transaction details was successfully returned.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

500 INTERNAL SERVER ERROR

STATUS: E0154 - Returned when failed to fetch transaction details.

STATUS: E9000 - Returned when reason is unknown.

200 OK
HTTP Response - transaction without 3DS
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:56 GMT
Content-Length: 1319

{
  "requestUuid" : "e58637b8-0476-49f4-9cf2-4cad30760315",
  "createdDate" : "2024-04-26T14:52:50.859Z",
  "transactionStatus" : "CLEARED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "clearingStatus" : "APPROVED",
  "clearingDate" : "2024-04-26T14:52:50.859Z",
  "arn" : "05411640143500000019325",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "6a412e4e-0d03-400b-9cbe-9bdf72d31873",
  "terminalUuid" : "d32d2c59-32ae-4130-9acd-4428ec67d779",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "refundAmount" : 1.0,
  "refundStatus" : "APPROVED",
  "refundArn" : "74350824095000000006387",
  "refundDate" : "2024-04-26T14:52:50.859Z",
  "clearingAmount" : 100.0,
  "authorizationType" : "ELECTRONIC_COMMERCE_PURCHASE",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "commissionFenigeInTerminalSettlementCurrency" : 10.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : false
}
Table 257. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

clearingStatus

String

Clearing status

clearingDate

String

Clearing creation date

arn

String

Acquirer Reference Number

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

responseCode

String

Response code

refundAmount

Number

The total refund amount

refundStatus

String

Refund status

refundArn

String

Refund Acquirer Reference Number

refundDate

String

Refund creation date

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

authorizationType

String

Authorization type: ECOMMERCE, COF, TOKEN

transactionRef

String

Merchant defined transaction reference identifier

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

commissionFenigeInTerminalSettlementCurrency

Number

Commission Fenige in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

200 OK (with 3DS)
HTTP Response - 3DS transaction
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:53 GMT
Content-Length: 1392

{
  "requestUuid" : "bfdb2e94-1f41-4ee8-8d99-996e2f86e7d6",
  "createdDate" : "2024-04-26T14:52:50.859Z",
  "transactionStatus" : "CLEARED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "clearingStatus" : "APPROVED",
  "clearingDate" : "2024-04-26T14:52:50.859Z",
  "arn" : "05411640143500000019325",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "9b0180e8-cbad-4486-a997-dfe8807de9e9",
  "terminalUuid" : "591c8175-2744-4248-933d-a7157e0f5622",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
  "mpiStatus" : "Finalize: Y",
  "refundAmount" : 1.0,
  "refundStatus" : "APPROVED",
  "refundArn" : "74350824095000000006387",
  "refundDate" : "2024-04-26T14:52:50.859Z",
  "clearingAmount" : 100.0,
  "authorizationType" : "ELECTRONIC_COMMERCE_PURCHASE",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "commissionFenigeInTerminalSettlementCurrency" : 10.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : true
}
Table 258. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

clearingStatus

String

Clearing status

clearingDate

String

Clearing creation date

arn

String

Acquirer Reference Number

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

cavv

String

Cardholder Authentication Verification Value

mpiStatus

String

MPI status

refundAmount

Number

The total refund amount

refundStatus

String

Refund status

refundArn

String

Refund Acquirer Reference Number

refundDate

String

Refund creation date

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

authorizationType

String

Authorization type: ELECTRONIC_COMMERCE_PURCHASE, ELECTRONIC_COMMERCE_PURCHASE_REFUND, ELECTRONIC_COMMERCE_TOKEN_AUTHORIZATION, CREDENTIAL_ON_FILE_AUTHORIZATION

transactionRef

String

Merchant defined transaction reference identifier

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

commissionFenigeInTerminalSettlementCurrency

Number

Commission Fenige in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

200 OK (with DataCenter card)
HTTP Response - transaction with DataCenter card
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:51 GMT
Content-Length: 1339

{
  "requestUuid" : "eadbf1b3-0809-4f19-8742-563e256c30d9",
  "createdDate" : "2024-04-26T14:52:50.859Z",
  "transactionStatus" : "CLEARED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "clearingStatus" : "APPROVED",
  "clearingDate" : "2024-04-26T14:52:50.859Z",
  "arn" : "05411640143500000019325",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "cardId" : 54604,
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "76975092-6a18-4a46-aaa2-6dc0f1b5d9d6",
  "terminalUuid" : "d8d38d1b-2f55-43dd-b585-cd603eac23aa",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "refundAmount" : 1.0,
  "refundStatus" : "APPROVED",
  "refundArn" : "74350824095000000006387",
  "refundDate" : "2024-04-26T14:52:50.859Z",
  "clearingAmount" : 100.0,
  "authorizationType" : "ELECTRONIC_COMMERCE_PURCHASE",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "commissionFenigeInTerminalSettlementCurrency" : 10.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : false
}
Table 259. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

clearingStatus

String

Clearing status

clearingDate

String

Clearing creation date

arn

String

Acquirer Reference Number

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

cardId

Number

DataCenter card identifier used to process transaction

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

responseCode

String

Response code

refundAmount

Number

The total refund amount

refundStatus

String

Refund status

refundArn

String

Refund Acquirer Reference Number

refundDate

String

Refund creation date

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

authorizationType

String

Authorization type: ECOMMERCE, COF, TOKEN

transactionRef

String

Merchant defined transaction reference identifier

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

commissionFenigeInTerminalSettlementCurrency

Number

Commission Fenige in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

200 OK (reverse)
HTTP Response - transaction reverse
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:55 GMT
Content-Length: 1251

{
  "requestUuid" : "af13e3c7-f1b4-4025-ba37-5c5e4efb629a",
  "createdDate" : "2024-04-26T14:52:55.488Z",
  "transactionStatus" : "REVERSED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "reversalStatus" : "APPROVED",
  "reversalResponseCode" : "CODE_00",
  "reversalDate" : "2024-04-26T14:52:50.859Z",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "53c9c481-e02d-4923-a0e1-af3b02b5c4c1",
  "terminalUuid" : "d90e798d-9b66-4e45-be47-f2a2b1945c7c",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
  "mpiStatus" : "Finalize: Y",
  "clearingAmount" : 100.0,
  "authorizationType" : "ELECTRONIC_COMMERCE_PURCHASE",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "commissionFenigeInTerminalSettlementCurrency" : 10.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : true
}
Table 260. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

reversalStatus

String

Reversal status

reversalResponseCode

String

Reversal response code

reversalDate

String

Reversal creation date

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

cavv

String

Cardholder Authentication Verification Value

mpiStatus

String

MPI status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

authorizationType

String

Authorization type: ECOMMERCE, COF, TOKEN

transactionRef

String

Merchant defined transaction reference identifier

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

commissionFenigeInTerminalSettlementCurrency

Number

Commission Fenige in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

200 OK (with Token)
HTTP Response - transaction with Token
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:52 GMT
Content-Length: 1434

{
  "requestUuid" : "3e0105ef-19e6-4836-a595-b344e9401286",
  "createdDate" : "2024-04-26T14:52:50.859Z",
  "transactionStatus" : "CLEARED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "clearingStatus" : "APPROVED",
  "clearingDate" : "2024-04-26T14:52:50.859Z",
  "arn" : "05411640143500000019325",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "ebb3503c-c125-419b-8065-fa5a7916a3b7",
  "terminalUuid" : "6895f0d8-18c7-4ea9-b57c-d4422b16b9d1",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
  "mpiStatus" : "Finalize: Y",
  "refundAmount" : 1.0,
  "refundStatus" : "APPROVED",
  "refundArn" : "74350824095000000006387",
  "refundDate" : "2024-04-26T14:52:50.859Z",
  "clearingAmount" : 100.0,
  "authorizationType" : "ELECTRONIC_COMMERCE_TOKEN_AUTHORIZATION",
  "terminalLocation" : "HOME",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "commissionFenigeInTerminalSettlementCurrency" : 10.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : true
}
Table 261. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

clearingStatus

String

Clearing status

clearingDate

String

Clearing creation date

arn

String

Acquirer Reference Number

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

cavv

String

Cardholder Authentication Verification Value

mpiStatus

String

MPI status

refundAmount

Number

The total refund amount

refundStatus

String

Refund status

refundArn

String

Refund Acquirer Reference Number

refundDate

String

Refund creation date

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

authorizationType

String

Authorization type: ELECTRONIC_COMMERCE_PURCHASE, ELECTRONIC_COMMERCE_PURCHASE_REFUND, ELECTRONIC_COMMERCE_TOKEN_AUTHORIZATION, CREDENTIAL_ON_FILE_AUTHORIZATION

terminalLocation

String

Location of the consumer at the time of the transaction (HOME, PREMISES)

transactionRef

String

Merchant defined transaction reference identifier

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

commissionFenigeInTerminalSettlementCurrency

Number

Commission Fenige in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

200 OK (reverse with Token)
HTTP Response - transaction reverse with Token
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:52 GMT
Content-Length: 1293

{
  "requestUuid" : "56628cc7-f432-4d94-bdc2-094f11113003",
  "createdDate" : "2024-04-26T14:52:52.340Z",
  "transactionStatus" : "REVERSED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "reversalStatus" : "APPROVED",
  "reversalResponseCode" : "CODE_00",
  "reversalDate" : "2024-04-26T14:52:50.859Z",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "ca8471a6-4aa7-4a37-9da3-08adbeaec1dc",
  "terminalUuid" : "b90088cd-6cca-4d1e-84a1-58056c765170",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
  "mpiStatus" : "Finalize: Y",
  "clearingAmount" : 100.0,
  "authorizationType" : "ELECTRONIC_COMMERCE_TOKEN_AUTHORIZATION",
  "terminalLocation" : "HOME",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "commissionFenigeInTerminalSettlementCurrency" : 10.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : true
}
Table 262. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

reversalStatus

String

Reversal status

reversalResponseCode

String

Reversal response code

reversalDate

String

Reversal creation date

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

cavv

String

Cardholder Authentication Verification Value

mpiStatus

String

MPI status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

authorizationType

String

Authorization type: ELECTRONIC_COMMERCE_PURCHASE, ELECTRONIC_COMMERCE_PURCHASE_REFUND, ELECTRONIC_COMMERCE_TOKEN_AUTHORIZATION, CREDENTIAL_ON_FILE_AUTHORIZATION

terminalLocation

String

Location of the consumer at the time of the transaction (HOME, PREMISES)

transactionRef

String

Merchant defined transaction reference identifier

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

commissionFenigeInTerminalSettlementCurrency

Number

Commission Fenige in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

200 OK (CoF Initial)
HTTP Response - transaction CoF Initial
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:53 GMT
Content-Length: 1378

{
  "requestUuid" : "d62d7eb9-7183-466d-b390-5f2a8208dae5",
  "cofInitialUuid" : "c93ca0d1-a4f2-4455-b6f8-93a77615fddb",
  "createdDate" : "2024-04-26T14:52:50.859Z",
  "transactionStatus" : "CLEARED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "clearingStatus" : "APPROVED",
  "clearingDate" : "2024-04-26T14:52:50.859Z",
  "arn" : "05411640143500000019325",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "81126806-3374-4b4c-9718-e0f6a9b6d104",
  "terminalUuid" : "b6fefa83-616f-40ec-a455-690fd0e2ee7f",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "refundAmount" : 1.0,
  "refundStatus" : "APPROVED",
  "refundArn" : "74350824095000000006387",
  "refundDate" : "2024-04-26T14:52:50.859Z",
  "clearingAmount" : 100.0,
  "authorizationType" : "CREDENTIAL_ON_FILE_INITIAL",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "commissionFenigeInTerminalSettlementCurrency" : 10.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : false
}
Table 263. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

cofInitialUuid

String

CoF Initial Uuid

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

clearingStatus

String

Clearing status

clearingDate

String

Clearing creation date

arn

String

Acquirer Reference Number

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

refundAmount

Number

The total refund amount

refundStatus

String

Refund status

refundArn

String

Refund Acquirer Reference Number

refundDate

String

Refund creation date

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

authorizationType

String

Authorization type: ECOMMERCE, COF, TOKEN

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

transactionRef

String

Merchant defined transaction reference identifier

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

commissionFenigeInTerminalSettlementCurrency

Number

Commission Fenige in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

200 OK (CoF Subsequent)
HTTP Response - transaction CoF Subsequent
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:56 GMT
Content-Length: 1381

{
  "requestUuid" : "81da5c8d-9a8e-4dfd-b2f0-dd5d19507f46",
  "cofInitialUuid" : "28bbfb7a-a728-4be5-9e72-d0921fdf8944",
  "createdDate" : "2024-04-26T14:52:50.859Z",
  "transactionStatus" : "CLEARED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "clearingStatus" : "APPROVED",
  "clearingDate" : "2024-04-26T14:52:50.859Z",
  "arn" : "05411640143500000019325",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "4a601013-fa79-4f17-af93-614db38fee2a",
  "terminalUuid" : "14bdbfb2-5556-43a6-967b-b78b1f8a1873",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "refundAmount" : 1.0,
  "refundStatus" : "APPROVED",
  "refundArn" : "74350824095000000006387",
  "refundDate" : "2024-04-26T14:52:50.859Z",
  "clearingAmount" : 100.0,
  "authorizationType" : "CREDENTIAL_ON_FILE_SUBSEQUENT",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "commissionFenigeInTerminalSettlementCurrency" : 10.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : false
}
Table 264. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

cofInitialUuid

String

CoF Initial Uuid

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

clearingStatus

String

Clearing status

clearingDate

String

Clearing creation date

arn

String

Acquirer Reference Number

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

refundAmount

Number

The total refund amount

refundStatus

String

Refund status

refundArn

String

Refund Acquirer Reference Number

refundDate

String

Refund creation date

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

authorizationType

String

Authorization type: ECOMMERCE, COF, TOKEN

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

transactionRef

String

Merchant defined transaction reference identifier

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

commissionFenigeInTerminalSettlementCurrency

Number

Commission Fenige in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

200 OK (Recurring Initial)
HTTP Response - transaction Recurring Initial
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:55 GMT
Content-Length: 1391

{
  "requestUuid" : "7cc2007b-8d3a-445b-a68e-8cc8762854aa",
  "recurringInitialUuid" : "e7ec970b-4b33-4834-b7b3-0e8742efb958",
  "createdDate" : "2024-04-26T14:52:50.859Z",
  "transactionStatus" : "CLEARED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "clearingStatus" : "APPROVED",
  "clearingDate" : "2024-04-26T14:52:50.859Z",
  "arn" : "05411640143500000019325",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "2b88cf86-5018-4948-9b64-c279c02e5c6b",
  "terminalUuid" : "25f06e27-57a5-49d4-a4e5-f9f6db86fb95",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
  "mpiStatus" : "Finalize: Y",
  "refundAmount" : 1.0,
  "refundStatus" : "APPROVED",
  "refundArn" : "74350824095000000006387",
  "refundDate" : "2024-04-26T14:52:50.859Z",
  "clearingAmount" : 100.0,
  "authorizationType" : "RECURRING_INITIAL",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : true
}
Table 265. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

recurringInitialUuid

String

Recurring Initial Uuid

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

clearingStatus

String

Clearing status

clearingDate

String

Clearing creation date

arn

String

Acquirer Reference Number

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

refundAmount

Number

The total refund amount

refundStatus

String

Refund status

refundArn

String

Refund Acquirer Reference Number

refundDate

String

Refund creation date

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

cavv

String

Cardholder Authentication Verification Value

mpiStatus

String

MPI status

authorizationType

String

Authorization type: ECOMMERCE, COF, TOKEN

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

transactionRef

String

Merchant defined transaction reference identifier

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

200 OK (Recurring Subsequent)
HTTP Response - transaction Recurring Subsequent
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:51 GMT
Content-Length: 1378

{
  "requestUuid" : "cce351be-104c-4dda-b3d6-a14369ea3ec9",
  "recurringInitialUuid" : "f4df25f6-be94-4b22-8fba-8859dc5a4fcc",
  "createdDate" : "2024-04-26T14:52:50.859Z",
  "transactionStatus" : "CLEARED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "clearingStatus" : "APPROVED",
  "clearingDate" : "2024-04-26T14:52:50.859Z",
  "arn" : "05411640143500000019325",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "4d8c94aa-c359-47ed-8f3f-34a9e4b221ce",
  "terminalUuid" : "581c2655-d1a9-4e4c-bc17-add7aa6627c5",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "refundAmount" : 1.0,
  "refundStatus" : "APPROVED",
  "refundArn" : "74350824095000000006387",
  "refundDate" : "2024-04-26T14:52:50.859Z",
  "clearingAmount" : 100.0,
  "authorizationType" : "RECURRING_SUBSEQUENT",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "commissionFenigeInTerminalSettlementCurrency" : 10.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : false
}
Table 266. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

recurringInitialUuid

String

Recurring Initial Uuid

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

clearingStatus

String

Clearing status

clearingDate

String

Clearing creation date

arn

String

Acquirer Reference Number

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

refundAmount

Number

The total refund amount

refundStatus

String

Refund status

refundArn

String

Refund Acquirer Reference Number

refundDate

String

Refund creation date

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

authorizationType

String

Authorization type: ECOMMERCE, COF, TOKEN

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

transactionRef

String

Merchant defined transaction reference identifier

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

commissionFenigeInTerminalSettlementCurrency

Number

Commission Fenige in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

200 OK (MO/TO)
HTTP Response - transaction MO/TO
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:51 GMT
Content-Length: 1317

{
  "requestUuid" : "fd67ab1c-63be-48a1-a515-b370eb427387",
  "createdDate" : "2024-04-26T14:52:50.859Z",
  "transactionStatus" : "CLEARED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "clearingStatus" : "APPROVED",
  "clearingDate" : "2024-04-26T14:52:50.859Z",
  "arn" : "05411640143500000019325",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "1b40d2d7-3301-4067-ba9a-45388ea5b825",
  "terminalUuid" : "6ece93e0-264d-4b1a-8bad-9a20a0fd8ed8",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "refundAmount" : 1.0,
  "refundStatus" : "APPROVED",
  "refundArn" : "74350824095000000006387",
  "refundDate" : "2024-04-26T14:52:50.859Z",
  "clearingAmount" : 100.0,
  "authorizationType" : "MANUAL_ENTRY_MOTO_PURCHASE",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "commissionFenigeInTerminalSettlementCurrency" : 10.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : false
}
Table 267. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

clearingStatus

String

Clearing status

clearingDate

String

Clearing creation date

arn

String

Acquirer Reference Number

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

refundAmount

Number

The total refund amount

refundStatus

String

Refund status

refundArn

String

Refund Acquirer Reference Number

refundDate

String

Refund creation date

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

authorizationType

String

Authorization type: ECOMMERCE, COF, TOKEN

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

transactionRef

String

Merchant defined transaction reference identifier

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

commissionFenigeInTerminalSettlementCurrency

Number

Commission Fenige in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

200 OK (Installment)
HTTP Response - transaction Installment Payment
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:56 GMT
Content-Length: 2260

{
  "requestUuid" : "06194518-df1a-4b44-ad7e-0bcf64a4cc84",
  "createdDate" : "2024-04-26T14:52:50.859Z",
  "transactionStatus" : "CLEARED",
  "responseCode" : "CODE_00",
  "authorizeRRN" : "014011103023",
  "authorizeStan" : "103023",
  "clearingStatus" : "APPROVED",
  "clearingDate" : "2024-04-26T14:52:50.859Z",
  "arn" : "05411640143500000019325",
  "autoClear" : true,
  "hiddenCardNumber" : "545313******4417",
  "amount" : 100.0,
  "currency" : "USD",
  "finalAmount" : 100.0,
  "finalCurrency" : "USD",
  "geographicScope" : "DOMESTIC",
  "pspUuid" : "b03292bb-41e9-4849-b058-6a5806fb696c",
  "merchantUuid" : "20917b5b-acfd-4a6b-a833-51eb6280f32e",
  "terminalUuid" : "cf9a0bf9-0f08-43a1-bebd-159783fdd862",
  "firstName" : "user",
  "lastName" : "testUser",
  "email" : "test@fenige.pl",
  "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
  "mpiStatus" : "Finalize: Y",
  "refundAmount" : 1.0,
  "refundStatus" : "APPROVED",
  "refundArn" : "74350824095000000006387",
  "refundDate" : "2024-04-26T14:52:50.859Z",
  "clearingAmount" : 100.0,
  "authorizationType" : "ELECTRONIC_COMMERCE_PURCHASE",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 1.0,
  "installmentStatus" : "CONFIRMED",
  "installmentPaymentType" : "ISSUER_FINANCED",
  "installmentPaymentOptions" : [ "PAY_IN_INSTALLMENTS", "CANCEL" ],
  "installmentPaymentFormat2" : {
    "uuid" : "5aa5bd61-aee8-44f4-868a-e13f088e12f5",
    "installmentPaymentFormat" : "FORMAT_2",
    "minimumNumberOfInstallments" : "5",
    "maximumNumberOfInstallments" : "10",
    "interestRate" : "00010",
    "installmentFee" : "000000000010",
    "annualPercentageRate" : "00010",
    "totalAmountDue" : "000000001000"
  },
  "installmentPaymentOptionIn" : "PAY_IN_INSTALLMENTS",
  "installmentPaymentPlanUuidIn" : "50f442f5-8dd7-4318-a0ca-7d914cb5f238",
  "instalmentNumberOfInstallmentsIn" : "10",
  "instalmentAuthorizationStatus" : "APPROVED",
  "instalmentResponseCode" : "CODE_00",
  "instalmentAuthorizeRRN" : "029612100126",
  "instalmentAuthorizeStan" : "100126",
  "terminalSettlementCurrency" : "USD",
  "amountInTerminalSettlementCurrency" : 100.0,
  "commissionFenigeInTerminalSettlementCurrency" : 10.0,
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "3DS" : true
}
Table 268. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

createdDate

String

Transaction creation date

transactionStatus

String

Transaction Status

authorizeRRN

String

Transaction Retrieval Reference Number

authorizeStan

String

Transaction System Trace Audit Number (STAN)

responseCode

String

Response code

clearingStatus

String

Clearing status

clearingDate

String

Clearing creation date

arn

String

Acquirer Reference Number

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

hiddenCardNumber

String

Hidden card number

amount

Number

The total transfer amount

receiverAmount

Number

Declared amount. Fenige Information field

currency

String

Currency for transaction. Example: USD

finalAmount

Number

The final total transfer amount

finalCurrency

String

Final currency for transaction. Example: USD

geographicScope

String

Type of transaction scope (DOMESTIC, CROSSBORDER, DOMESTIC_PL, INTRA_EU, INTER)

pspUuid

String

Psp’s unique uuid in system

merchantUuid

String

Merchant’s unique uuid in system

terminalUuid

String

Terminal’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

email

String

Cardholder’s email

cavv

String

Cardholder Authentication Verification Value

mpiStatus

String

MPI status

refundAmount

Number

The total refund amount

refundStatus

String

Refund status

refundArn

String

Refund Acquirer Reference Number

refundDate

String

Refund creation date

clearingAmount

Number

The clearing amount. This field is returned if this transaction has been cleared

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

3DS

Boolean

Is 3DS enabled for transaction. Enabled if true, is not enabled if false

transactionRef

String

Merchant defined transaction reference identifier

authorizationType

String

Authorization type: INSTALLMENT_PAYMENT_PURCHASE

terminalSettlementCurrency

String

Terminal settlement currency

amountInTerminalSettlementCurrency

Number

Amount in terminal settlement currency

commissionFenigeInTerminalSettlementCurrency

Number

Commission Fenige in terminal settlement currency

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

installmentStatus

String

Transaction Installment Payment processing status

installmentPaymentType

String

Transaction Installment Payment type information, may be: ISSUER_FINANCED, MERCHANT_FINANCED, ACQUIRER_FINANCED, CO_BRANDED_MERCHANT_FINANCED, ISSUER_MERCHANT_CO_FINANCED

installmentPaymentOptions

Array

Transaction Installment Payment user possible options may be: PAY_IN_INSTALLMENTS, PAY_IN_FULL or CANCEL

installmentPaymentFormat2.uuid

String

Unique plan uuid in system. Required to select in step 2 installment decision

installmentPaymentFormat2.installmentPaymentFormat

String

Plan format label, may be FORMAT_2 for this configuration

installmentPaymentFormat2.minimumNumberOfInstallments

String

Minimum number of installments contains the minimum number of installments payments provided by the issuer

installmentPaymentFormat2.maximumNumberOfInstallments

String

Maximum number of installments contains the maximum number of installments payments provided by the issuer

installmentPaymentFormat2.interestRate

String

Interest rate contains the rate (two decimal places) that the issuer assesses the cardholder for the installment payment

installmentPaymentFormat2.installmentFee

String

Installment Fee contains the fee amount in cardholder billing currency that the issuer assesses the cardholder for the installment payments

installmentPaymentFormat2.annualPercentageRate

String

Annual Percentage Rate contains the rate (two decimal places) that the issuer charges the cardholder for the installment payment

installmentPaymentFormat2.totalAmountDue

String

Total Amount Due contains the total amount due in cardholder billing currency that the issuer charges the cardholder for the installment payments

installmentPaymentOptionIn

String

Transaction Installment Payment user selected option may be: PAY_IN_INSTALLMENTS, PAY_IN_FULL or CANCEL

installmentPaymentPlanUuidIn

String

Installment Payment selected plan uuid from previously returned plans. Required for PAY_IN_INSTALLMENTS. Required for FORMAT 1 and FORMAT 2 plans

instalmentNumberOfInstallmentsIn

String

Number of installments selected during confirmation. Required for PAY_IN_INSTALLMENTS. Required for FORMAT 2 plan.

instalmentAuthorizationStatus

String

Installment Authorization Status

instalmentResponseCode

String

Installment Response Code

instalmentAuthorizeRRN

String

Installment RRN

instalmentAuthorizeStan

String

Installment STAN

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:52 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "19caebd4-9c6e-49da-b05a-5fbcee012b4d"
}
Table 269. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:57 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "6acb079f-682e-40df-9074-3bea28230790"
}
Table 270. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0155
HTTP/1.1 404 Not Found
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:55 GMT
Content-Length: 147

{
  "status" : "E0155",
  "message" : "Transaction not exist",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "4ef74109-96f6-4eae-a6f8-306e3b3c9256"
}
Table 271. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:50 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "5da12e21-acc6-4a8c-a56c-510b5dd15868"
}
Table 272. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

6.11. Reversal

POST /client/payments/reversal Content Type: application/json, Authorization: Basic Auth
This method could be used in order to cancel payment of correctly registered transaction in system before.
To process reversal method, the transaction must not be cleared. In response, we receive detailed information about the reversal.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

6.11.1. Request

HTTP Request
POST /client/payments/reversal HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 119
Host: ecom-staging.fenige.pl

{
  "requestUuid" : "4a0467df-b905-4ea4-a050-6913d5c4871c",
  "merchantUuid" : "aa60e330-cd75-40d4-a51c-057fddba746a"
}
Table 273. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 274. Reversal request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

6.11.2. Response

Response status
Status Description

200 OK

The request completed successfully

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0155 - Returned when payment not exist.

422 UNPROCESSABLE ENTITY

STATUS: E0160 - Returned when reversal of the payment is processing.

STATUS: E0161 - Returned when can’t reversal for payment.

STATUS: E0162 - Returned when payment is reversed.

STATUS: E0163 - Returned when payment is refunded.

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown.

STATUS: E05012 - Returned when installment payment reverse is not allowed.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

200 OK
HTTP Response - STATUS: S0005
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 213

{
  "requestUuid" : "602ea054-3664-4910-b226-8be40324da91",
  "reversalStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "status" : "S0005",
  "message" : "Success reverse transaction",
  "httpStatus" : "OK"
}
HTTP Response - STATUS: S0006
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 246

{
  "requestUuid" : "1417da96-c3be-437d-a44b-fbb255c58d8a",
  "reversalStatus" : "DECLINED",
  "responseCode" : "CODE_05",
  "status" : "S0006",
  "message" : "Reverse transaction declined, check response code for reason",
  "httpStatus" : "OK"
}
Table 275. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

reversalStatus

String

Reversal status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:34 GMT
Connection: close
Content-Length: 218

{
  "errors" : {
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "1dfe4c0f-7565-4b63-ad51-2706e9bcd17c"
}
Table 276. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:33 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "809321c8-cfc4-439c-8e94-33b26b21aa74"
}
Table 277. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:36 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "b5e1992e-aad7-4b5e-8550-c44d56c98ac6"
}
Table 278. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0161
HTTP/1.1 404 Not Found
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:34 GMT
Content-Length: 260

{
  "requestUuid" : "3311ccf0-47fe-4f3f-bf9f-1a3e8e222188",
  "reversalStatus" : "REVERSAL_TRANSACTION_NOT_FOUND",
  "status" : "E0155",
  "message" : "Transaction not exist",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "3e6a8e4a-2bd4-4729-929c-e4f404b153c6"
}
Table 279. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

reversalStatus

String

Reversal status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0160
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:34 GMT
Content-Length: 267

{
  "requestUuid" : "e49fdb3d-9fca-495d-9c00-e079c94aebd4",
  "reversalStatus" : "PROCESSING",
  "status" : "E0160",
  "message" : "Reversal of the payment is processing",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "c8bbb7d4-9c1c-4f40-8227-30b305c9b9c1"
}
HTTP Response - STATUS: E0161
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:33 GMT
Content-Length: 287

{
  "requestUuid" : "e49fdb3d-9fca-495d-9c00-e079c94aebd4",
  "reversalStatus" : "CANNOT_REVERSAL",
  "responseCode" : "CODE_05",
  "status" : "E0161",
  "message" : "Can't reversal payment",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "e163e685-ca1b-4c60-8c04-947ba76b846f"
}
HTTP Response - STATUS: E0162
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:34 GMT
Content-Length: 255

{
  "requestUuid" : "e49fdb3d-9fca-495d-9c00-e079c94aebd4",
  "reversalStatus" : "APPROVED",
  "status" : "E0162",
  "message" : "Payment is already reversed",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1592d725-9edb-493b-b2c0-4a5923d2ad8b"
}
Table 280. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

reversalStatus

String

Reversal status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

responseCode

String

Reversal response code, if any was declined for the same transaction.

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
HTTP Response - STATUS: E05012
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 178

{
  "status" : "E05012",
  "message" : "Installment Payment reverse not allowed",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "66fdf345-d413-4e47-a33b-06075c229a86"
}
Table 281. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
Table 282. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

6.12. Clearing

POST /client/payments/clearing Content Type: application/json, Authorization: Basic Auth
Clearing is the process where e-commerce and issuers exchanges information about transaction data. It includes sending information about transactions from the e-commerce to
the issuer for posting to the cardholder’s account. Using this method, we can just process transaction clearing.
It is possible to execute clearing with full payment amount and partial payment amount.
Notice that there is 7 (for VISA) or 30 (for Mastercard) days to execute clearing process if field 'autoClear' in payment request is set as 'false'.
In the case of Mastercard, false flag means that the transaction is treated as a pre-authorization and, according to the organization's requirements, the
clearing time is 30 days from the time of authorization.
clearing payment request

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

6.12.1. Full clearing

Request
HTTP Request for full clearing
POST /client/payments/clearing HTTP/1.1
Authorization: Basic VXNlcjpQYXNzd29yZA==
Content-Type: application/json
Content-Length: 119
Host: ecom-staging.fenige.pl

{
  "requestUuid" : "cc4f8997-7e67-4d8b-b38a-aa38fc531940",
  "merchantUuid" : "4064af89-5bc2-404c-bce0-1c716caad83a"
}
Table 283. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 284. Clearing request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

Response
Response status
Status Description

202 ACCEPTED

Returned when transaction was accepted.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0155 - Returned when payment not exist.

422 UNPROCESSABLE ENTITY

STATUS: E0170 - Returned when clearing of the payment is procesing.

STATUS: E0171 - Returned when can’t clear payment.

STATUS: E0172 - Returned when can’t clear payment, the time is over.

STATUS: E0173 - Returned when payment is automatically cleared.

STATUS: E0174 - Returned when payment is already cleared.

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

202 ACCEPTED
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 145

{
  "completion" : {
    "estimate" : "2024-04-26T14:54:47.789"
  },
  "status" : "S0004",
  "message" : "PENDING",
  "httpStatus" : "ACCEPTED"
}
Table 285. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

completion.estimate

String

Completion estimate for clearing

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:45 GMT
Connection: close
Content-Length: 218

{
  "errors" : {
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "ca94aa55-cbaf-4286-a81c-2544e9486d57"
}
Table 286. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:51:44 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "622b0296-7e99-458d-92dd-a4a803fdbfdf"
}
Table 287. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:51:47 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "11df2329-42bc-4a65-9fea-5442e01f3080"
}
Table 288. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0155
HTTP/1.1 404 Not Found
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:45 GMT
Content-Length: 260

{
  "requestUuid" : "529d74d6-14e0-4cfa-b1b2-c690f67ba8e6",
  "clearingStatus" : "CLEARING_TRANSACTION_NOT_FOUND",
  "status" : "E0155",
  "message" : "Transaction not exist",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "7bb43611-832c-43b9-95a7-e3f91b846c82"
}
Table 289. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

clearingStatus

String

Clearing status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0170
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:44 GMT
Content-Length: 267

{
  "requestUuid" : "e9c34354-fa10-4f05-8e61-702d47fb03fb",
  "clearingStatus" : "PROCESSING",
  "status" : "E0170",
  "message" : "Clearing of the payment is processing",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "acb47b6b-0d5c-4844-b45d-5212d5f46df0"
}
HTTP Response - STATUS: E0171
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:45 GMT
Content-Length: 251

{
  "requestUuid" : "e9c34354-fa10-4f05-8e61-702d47fb03fb",
  "clearingStatus" : "CANNOT_CLEAR",
  "status" : "E0171",
  "message" : "Can't clear payment",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "345a266b-9bac-4989-a618-b861a779e4bd"
}
HTTP Response - STATUS: E0172
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:46 GMT
Content-Length: 269

{
  "requestUuid" : "e9c34354-fa10-4f05-8e61-702d47fb03fb",
  "clearingStatus" : "TIME_IS_OVER",
  "status" : "E0172",
  "message" : "Can't clear payment, the time is over",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "903f7f1d-19e9-4a40-a526-3b6470eda6f1"
}
HTTP Response - STATUS: E0173
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:44 GMT
Content-Length: 260

{
  "requestUuid" : "e9c34354-fa10-4f05-8e61-702d47fb03fb",
  "clearingStatus" : "APPROVED",
  "status" : "E0173",
  "message" : "Payment is automatically cleared",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "932f3984-b0e9-411c-baaf-2b827b0510a3"
}
HTTP Response - STATUS: E0174
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:45 GMT
Content-Length: 254

{
  "requestUuid" : "e9c34354-fa10-4f05-8e61-702d47fb03fb",
  "clearingStatus" : "APPROVED",
  "status" : "E0174",
  "message" : "Payment is already cleared",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "ce4e9cac-029e-4f9d-ad3c-b3f7b62490a5"
}
Table 290. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

clearingStatus

String

Clearing status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
Table 291. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
Table 292. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

6.12.2. Partial clearing

Request
HTTP Request for partial clearing
POST /client/payments/clearing HTTP/1.1
Authorization: Basic VXNlcjpQYXNzd29yZA==
Content-Type: application/json
Content-Length: 145
Host: ecom-staging.fenige.pl

{
  "clearingAmount" : 700,
  "requestUuid" : "cc4f8997-7e67-4d8b-b38a-aa38fc531940",
  "merchantUuid" : "4064af89-5bc2-404c-bce0-1c716caad83a"
}
Table 293. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 294. Partial clearing request fields
Path Type Constraints Description

clearingAmount

Number

@Must be at least 1

Amount of payment (in pennies) to partial clearing

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

Response
Response status
Status Description

202 ACCEPTED

Returned when transaction was accepted.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0155 - Returned when payment not exist.

422 UNPROCESSABLE ENTITY

STATUS: E0170 - Returned when clearing of the payment is procesing.

STATUS: E0171 - Returned when can’t clear payment.

STATUS: E0172 - Returned when can’t clear payment, the time is over.

STATUS: E0173 - Returned when payment is automatically cleared.

STATUS: E0174 - Returned when payment is already cleared.

STATUS: E0175 - Returned when can’t clear payment, clearing amount is to low

STATUS: E0176 - Returned when can’t clear payment, clearing amount is to high

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

202 ACCEPTED
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 145

{
  "completion" : {
    "estimate" : "2024-04-26T14:54:47.861"
  },
  "status" : "S0004",
  "message" : "PENDING",
  "httpStatus" : "ACCEPTED"
}
Table 295. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

completion.estimate

String

Completion estimate for clearing

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:46 GMT
Connection: close
Content-Length: 283

{
  "errors" : {
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ],
    "clearingAmount" : [ "must be greater than or equal to 1" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "3f38dac6-8f5f-4edc-84b8-f75481527804"
}
Table 296. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:51:44 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "622b0296-7e99-458d-92dd-a4a803fdbfdf"
}
Table 297. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:51:47 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "11df2329-42bc-4a65-9fea-5442e01f3080"
}
Table 298. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0155
HTTP/1.1 404 Not Found
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:45 GMT
Content-Length: 260

{
  "requestUuid" : "529d74d6-14e0-4cfa-b1b2-c690f67ba8e6",
  "clearingStatus" : "CLEARING_TRANSACTION_NOT_FOUND",
  "status" : "E0155",
  "message" : "Transaction not exist",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "7bb43611-832c-43b9-95a7-e3f91b846c82"
}
Table 299. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

clearingStatus

String

Clearing status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0170
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:44 GMT
Content-Length: 267

{
  "requestUuid" : "e9c34354-fa10-4f05-8e61-702d47fb03fb",
  "clearingStatus" : "PROCESSING",
  "status" : "E0170",
  "message" : "Clearing of the payment is processing",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "acb47b6b-0d5c-4844-b45d-5212d5f46df0"
}
HTTP Response - STATUS: E0171
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:45 GMT
Content-Length: 251

{
  "requestUuid" : "e9c34354-fa10-4f05-8e61-702d47fb03fb",
  "clearingStatus" : "CANNOT_CLEAR",
  "status" : "E0171",
  "message" : "Can't clear payment",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "345a266b-9bac-4989-a618-b861a779e4bd"
}
HTTP Response - STATUS: E0172
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:46 GMT
Content-Length: 269

{
  "requestUuid" : "e9c34354-fa10-4f05-8e61-702d47fb03fb",
  "clearingStatus" : "TIME_IS_OVER",
  "status" : "E0172",
  "message" : "Can't clear payment, the time is over",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "903f7f1d-19e9-4a40-a526-3b6470eda6f1"
}
HTTP Response - STATUS: E0173
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:44 GMT
Content-Length: 260

{
  "requestUuid" : "e9c34354-fa10-4f05-8e61-702d47fb03fb",
  "clearingStatus" : "APPROVED",
  "status" : "E0173",
  "message" : "Payment is automatically cleared",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "932f3984-b0e9-411c-baaf-2b827b0510a3"
}
HTTP Response - STATUS: E0174
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:45 GMT
Content-Length: 254

{
  "requestUuid" : "e9c34354-fa10-4f05-8e61-702d47fb03fb",
  "clearingStatus" : "APPROVED",
  "status" : "E0174",
  "message" : "Payment is already cleared",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "ce4e9cac-029e-4f9d-ad3c-b3f7b62490a5"
}
HTTP Response - STATUS: E0175
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 09 Nov 2018 14:48:13 GMT
Content-Length: 253

{
  "requestUuid" : "1ea7f6b6-ad07-4962-ba7d-eb145a7de55c",
  "clearingStatus" : "CANNOT_CLEAR",
  "status" : "E0175",
  "message" : "Can’t clear payment, clearing amount is to low",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "d2868ef5-4da1-47f6-8808-5a9d19f2727f"
}
HTTP Response - STATUS: E0176
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:46 GMT
Content-Length: 275

{
  "requestUuid" : "e9c34354-fa10-4f05-8e61-702d47fb03fb",
  "clearingStatus" : "REJECTED",
  "status" : "E0176",
  "message" : "Can't clear payment, clearing amount is to high",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "aea6dac8-f60e-4e61-accc-e80653caecb5"
}
Table 300. Response fields
Path Type Description

requestUuid

String

Request’s unique uuid in system

clearingStatus

String

Clearing status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
Table 301. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
Table 302. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

6.13. Refund

POST /client/payments/refund Content Type: application/json, Authorization: Basic Auth
This method can be use for refund amount of a previously performed transaction.
Each one transaction can be refund once at least. Total amount of refund cannot exceed the payment amount.
It is important to know, that you can make a refund of transaction that is cleared for now.

From January 2021, there is an internal functionality to restrict access for the PSP to specific method. The Fenige employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. The PSP will be informed about each access restriction action.

6.13.1. Request

HTTP Request
POST /client/payments/refund HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 145
Host: ecom-staging.fenige.pl

{
  "requestUuid" : "88e24891-1d37-4270-a506-ee58e395855e",
  "merchantUuid" : "b68bc834-298b-408e-a256-42993556bf94",
  "amountToRefund" : 100
}
Table 303. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 304. Authorize request fields
Path Type Constraints Description

requestUuid

String

@Must not be null

Request’s uuid from payment response

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

amountToRefund

Number

@Must not be null

Amount to refund (in pennies)

6.13.2. Response

Response status
Status Description

200 OK

STATUS: S0010 - Returned when refund was accepted.

STATUS: S0011 - Returned when refund was declined

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

STATUS: E0182 - Returned when refund transaction amount is to low.

STATUS: E0183 - Returned when refund transaction amount is to high.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0155 - Returned when not found transaction or transaction not exist.

422 UNPROCESSABLE ENTITY

STATUS: E0184 - Returned when transaction is refunded.

STATUS: E0185 - Returned when cannot process refund because transaction is not cleared yet.

STATUS: E0186 - Returned when refund is already processing.

STATUS: E0187 - Returned when transaction has chargeback reported.

500 INTERNAL SERVER ERROR

STATUS: E0180 - Returned when there is no Mastercard response and refund was rejected.

STATUS: E0181 - Returned when refund was rejected by Mastercard.

STATUS: E0188 - Returned when refund was rejected. Merchant is not active.

STATUS: E9000 - Returned when refund was rejected by internal server error.

STATUS: E05013 - Returned when installment payment refund is not allowed.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

200 OK
HTTP Response - STATUS: S0010
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 191

{
  "requestUuid" : "810e1627-fd20-49d6-bd26-ec0a35b7eb4a",
  "refundStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "status" : "S0010",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
HTTP Response - STATUS: S0011
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 199

{
  "requestUuid" : "bb650672-c2ec-476b-b780-8fc210374737",
  "refundStatus" : "DECLINED",
  "responseCode" : "CODE_05",
  "status" : "S0011",
  "message" : "Refund declined",
  "httpStatus" : "OK"
}
Table 305. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

refundStatus

String

Refund status

responseCode

String

Response code

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:39 GMT
Connection: close
Content-Length: 265

{
  "errors" : {
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ],
    "amountToRefund" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "24103cd4-8df7-4635-a6a4-b4d23bac04b1"
}
Table 306. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

HTTP Response - STATUS: E0182
HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 160

{
  "status" : "E0182",
  "message" : "Refund transaction amount to low",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "c17b0cb4-a3fe-43cb-9e1e-1bf64ef4bf59"
}
HTTP Response - STATUS: E0183
HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 160

{
  "status" : "E0182",
  "message" : "Refund transaction amount to low",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "19a47c0a-eee5-490c-9595-46f04f9b4602"
}
Table 307. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:51:39 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "be17beab-7923-4ab7-99ef-90626b8818fa"
}
Table 308. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:51:39 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "f91c46c2-da76-40a9-b23e-e154b260f8f8"
}
Table 309. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0155
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 256

{
  "requestUuid" : "ce2f475e-16c4-4e16-9e3d-c721daa56366",
  "refundStatus" : "REFUND_TRANSACTION_NOT_FOUND",
  "status" : "E0155",
  "message" : "Transaction not exist",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "617c3c3d-0bcd-4c22-9548-fb17443a3bdc"
}
Table 310. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

refundStatus

String

Refund status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0184
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 264

{
  "requestUuid" : "d09dda41-39ca-4d88-a9e7-847ed732e93c",
  "refundStatus" : "REFUND_ALREADY_APPROVED",
  "status" : "E0184",
  "message" : "Transaction is refunded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "24891c37-7c24-4f0a-b21f-3d09e335cbd4"
}
HTTP Response - STATUS: E0185
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "fac04e7d-637e-4d94-a426-b4b6ae65fa24",
  "refundStatus" : "TRANSACTION_NOT_CLEARED",
  "status" : "E0185",
  "message" : "Transaction not cleared, can't refund",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "b0fdf326-b6d2-4967-8956-35db2f969609"
}
HTTP Response - STATUS: E0186
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 263

{
  "requestUuid" : "389ca188-7942-4607-bf43-5ccfcc3761f0",
  "refundStatus" : "REFUND_PROCESSING",
  "status" : "E0186",
  "message" : "Refund is already processing",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "f57327f4-376b-4245-b331-5426e675d00e"
}
HTTP Response - STATUS: E0187
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 271

{
  "requestUuid" : "00d894a5-6be4-483b-9b48-eeddc79b68ba",
  "refundStatus" : "CHARGEBACK_REPORTED",
  "status" : "E0187",
  "message" : "Transaction is chargeback reported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "14766f22-69fa-4340-82de-6bbad2bc357f"
}
Table 311. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

refundStatus

String

Refund status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0180
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 263

{
  "requestUuid" : "62c625d9-4b8e-4e07-b180-62099c840b29",
  "refundStatus" : "DECLINED",
  "status" : "E0180",
  "message" : "Refund rejected, no MC/VISA response",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "abc90547-003f-47aa-a5e5-9bc7d2a31737"
}
HTTP Response - STATUS: E0181
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 253

{
  "requestUuid" : "60851ae8-6210-4a83-b701-915d75404183",
  "refundStatus" : "DECLINED",
  "status" : "E0181",
  "message" : "Refund rejected by MC/VISA",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "51fa1b06-bf61-4fcb-8eb5-5418af9a93a3"
}
Table 312. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

refundStatus

String

Refund status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

HTTP Response - STATUS: E05013
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 177

{
  "status" : "E05013",
  "message" : "Installment Payment refund not allowed",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "56703aa4-4080-4764-9bed-1b4dccef872a"
}
503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
Table 313. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

6.14. Account status inquiry

POST /client/payments/asi Content Type: application/json, Authorization: Basic Auth
This method allows to send account status inquiry transaction to validate aspects of a cardholder account.

6.14.1. Request

Request
POST /client/payments/asi HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 461
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "a47d1263-55d8-4426-aa12-46f3aa8324bd",
  "terminalUuid" : "7b5fd3f3-c766-4c6c-b423-b087fd4f967c",
  "requestUuid" : "ee2da786-9574-47ab-8ce0-1d6d95d73df3",
  "firstName" : "user",
  "lastName" : "testUser",
  "cardNumber" : "5453131785534417",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "email" : "test@fenige.pl",
  "phoneNumber" : "500500500",
  "addressIp" : "192.0.0.1",
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments"
}
Table 314. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 315. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

terminalUuid

String

@Optional

Request’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

First name of cardholder

lastName

String

@Length must be between 2 and 35, @Must match the regular expression [0-9]+$, @Must not be blank, @Must not be null

Last name of cardholder

cardNumber

String

@Card number length must be between 12 and 19, @Must not be blank, @Must not be null

Full cardholder’s card number must be between 12-digits and 19-digits

expiryDate

String

@Must not be blank, @Must not be null

Expiration date of card mm/yy

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

phoneNumber

String

@Optional @Must match regular expression [0-9]{3,14}

Cardholder’s phone number

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03.

cipherCardNumber

String

@Optional

Cipher card number. More in Payment API - JWE chapter

keysVersion

Number

@Optional

Field informs about keys version that was used to encrypt card number in cipherCardNumber field. More in Payment API - JWE chapter

Request - DataCenter card
POST /client/payments/asi HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 369
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "a47d1263-55d8-4426-aa12-46f3aa8324bd",
  "terminalUuid" : "7b5fd3f3-c766-4c6c-b423-b087fd4f967c",
  "requestUuid" : "a10ecd85-1825-44e0-96c2-f68ec7f855a2",
  "cardId" : 1906455,
  "cvc2" : "123",
  "email" : "test@fenige.pl",
  "phoneNumber" : "500500500",
  "addressIp" : "192.0.0.1",
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments"
}
Table 316. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 317. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

terminalUuid

String

@Optional

Request’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

cardId

Number

@Must not be null

DataCenter card id. Required to obtain card information data from DataCenter such as (cardNumber, expiryDate, firstName, lastName, email)

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

email

String

Optional field, @Length(min = 1, max = 128)

Cardholder’s email

phoneNumber

String

@Optional @Must match regular expression [0-9]{3,14}

Cardholder’s phone number

addressIp

String

Optional field, @Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction. Optional field, mandatory from 2021-05-03

terminalUrl

String

@Optional

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout. Optional field, mandatory from 2021-05-03.

6.14.2. Response

Response status
Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

STATUS: E0135 - Returned when terminal for merchant not exist or all of them are inactive.

STATUS: E0137 - Returned when there is not terminal marked as default

422 UNPROCESSABLE ENTITY

STATUS: E0150 - Returned when transaction is rejected.

STATUS: E0152 - Returned when transaction is rejected, because issuer is not supported.

STATUS: E01596 - Returned when transaction is rejected, because terminal has blocked transaction with card issued in restricted country

STATUS: E0200 - Returned when transaction is rejected, because card is blocked in Fenige System

STATUS: E0201 - Returned when transaction is rejected, because BIN is blocked in Fenige System

STATUS: E0202 - Returned when transaction is rejected, because Terminal is blocked in Fenige System

STATUS: E0204 - Returned when transaction is rejected, because user’s personal data was found on AML (sanctions) list

STATUS: E0205 - Returned when transaction is rejected, because Bank is blocked in Fenige System

STATUS: E0206 - Returned when transaction is rejected, because to many reject transactions and card is blocked

STATUS: E0209 - Returned when sender or receiver name contains fraudulent phrase

STATUS: E0210 - Returned when sender has suspicious name

STATUS: E0211 - Returned when transaction is rejected, because card country is blocked in Fenige System.

STATUS: E11000 - Returned when transaction processing time set by terminal was exceeded

500 INTERNAL SERVER ERROR

STATUS: E0153 - Returned when transaction is declined, by problem with MIP connection.

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E0142 - Returned when commission configuration is not added for terminal.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

STATUS: E9002 - Returned when is error mpi connection.

200 OK
HTTP Response
{
  "requestUuid" : "6d256008-4c86-4a88-b776-69e85a19912b",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
{
  "requestUuid" : "c9438bc0-8baa-4b1e-9a22-dd92d284faac",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_85",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 318. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:23 GMT
Connection: close
Content-Length: 456

{
  "errors" : {
    "expiryDate" : [ "invalid card expiration date" ],
    "firstName" : [ "must not be blank", "must not be null" ],
    "lastName" : [ "must not be null", "must not be blank" ],
    "merchantUuid" : [ "must not be null" ],
    "requestUuid" : [ "must not be null" ],
    "cvc2" : [ "must not be null", "must not be blank" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "4d397209-a899-4179-a39b-09a390174737"
}
Table 319. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:10 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "653c0f82-21a5-4b0a-97f0-2cc40b0b0cd3"
}
Table 320. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:11 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "e4c363a4-9074-4ebe-a727-74a2b876dfd6"
}
Table 321. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "fc5ac22f-26a9-441c-88a9-af980aca23de"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "f78c53ae-a529-4569-b787-64e0810251d3"
}
Table 322. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E0135
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 163

{
  "status" : "E0137",
  "message" : "Default terminal not exist",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "7fe615aa-9bd2-4e36-bf30-a5c24f25bc93"
}
Table 323. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

HTTP Response - STATUS: E0137
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 159

{
  "status" : "E0135",
  "message" : "Terminals for merchant not exists",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "de1842bd-7b81-4cd4-99c7-09d3bbec7c4c"
}
Table 324. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E0150
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 251

{
  "requestUuid" : "d5ceb045-127b-415e-8545-6f6b4c49a8cb",
  "transactionStatus" : "REJECTED",
  "status" : "E0150",
  "message" : "Transaction rejected",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "564f1f7f-83b7-48dd-8d98-bfd19428bb00"
}
HTTP Response - STATUS: E0152
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 278

{
  "requestUuid" : "d0eee21f-fce8-4e1f-9edb-bbcfe4a9877a",
  "transactionStatus" : "REJECTED",
  "status" : "E0152",
  "message" : "Transaction rejected, issuer card not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "c4e54c22-af07-45cc-a209-ee56959ec9f7"
}
HTTP Response - STATUS: E0200
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 381

{
  "requestUuid" : "bee3214f-aa90-4608-a1cd-d6f794bdc600",
  "transactionStatus" : "REJECTED",
  "cardBlockadeAdditionalData" : {
    "blockType" : "TEMP",
    "blockedUntil" : "2022-11-01T12:51:32.000"
  },
  "status" : "E0200",
  "message" : "Transaction rejected, card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "afa61805-aac8-4908-9c4a-623a642a3580"
}
HTTP Response - STATUS: E0201
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 267

{
  "requestUuid" : "adcb3308-64e6-45ca-bbb9-7c92b629692a",
  "transactionStatus" : "REJECTED",
  "status" : "E0201",
  "message" : "Transaction rejected, bin is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "31b92614-8fea-48a0-b6ca-7f39ebdcfb15"
}
HTTP Response - STATUS: E0202
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "8f1fc639-9da8-4e6f-8798-d018af6de45b",
  "transactionStatus" : "REJECTED",
  "status" : "E0202",
  "message" : "Transaction rejected, terminal is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "72d8a9d6-c8e2-453a-91e9-fd63222fbae0"
}
HTTP Response - STATUS: E0204
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 272

{
  "requestUuid" : "163c5141-4349-48de-80d3-49aff5d8e90c",
  "transactionStatus" : "REJECTED",
  "status" : "E0204",
  "message" : "Transaction rejected, user is on aml list",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "89ca88b4-1ed1-4583-a05d-cce6a10805bf"
}
HTTP Response - STATUS: E0205
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 268

{
  "requestUuid" : "e37693bc-2fbb-4030-a576-ab5bf0bdd4da",
  "transactionStatus" : "REJECTED",
  "status" : "E0205",
  "message" : "Transaction rejected, bank is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0ce15159-d009-4822-a7fc-43ecc003b6cc"
}
HTTP Response - STATUS: E0206
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 301

{
  "requestUuid" : "e1dacbda-fde3-4234-98bc-f10a924ce7d1",
  "transactionStatus" : "REJECTED",
  "status" : "E0206",
  "message" : "Transaction rejected, too many reject transactions and card is blocked",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "0e90fba0-e14e-431b-a57e-24212e13f676"
}
HTTP Response - STATUS: E0209
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 292

{
  "requestUuid" : "5d7c8af3-7748-466a-a203-aec752256000",
  "transactionStatus" : "REJECTED",
  "status" : "E0209",
  "message" : "Transaction rejected, sender name contains fraudulent phrase.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "4b53fe80-8dbc-49f6-a547-4350160f5460"
}
HTTP Response - STATUS: E0210
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 276

{
  "requestUuid" : "eee3ea27-8f43-4f5e-94b9-1f7efdc956c8",
  "transactionStatus" : "REJECTED",
  "status" : "E0210",
  "message" : "Transaction rejected, suspicious sender name.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "993d524b-326e-4221-927e-fa24bef2354e"
}
HTTP Response - STATUS: E0211
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 277

{
  "requestUuid" : "d67aa7d3-1cc7-4ce8-92e7-19ca54739acd",
  "transactionStatus" : "REJECTED",
  "status" : "E0211",
  "message" : "Transaction rejected, card country restricted.",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "a46eb94e-b81f-4da3-99de-ffc672020197"
}
HTTP Response - STATUS: E01596
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 321

{
  "requestUuid" : "5c019324-ffe3-4338-86d9-730cdcc3dd65",
  "transactionStatus" : "REJECTED",
  "status" : "E01596",
  "message" : "Transaction rejected, terminal blocks transactions with card issued in given card country",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "168589f5-a146-444f-9b38-466326597a9e"
}
HTTP Response - STATUS: E01607
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 315

{
  "requestUuid" : "9389b4e5-2e53-4f70-8d59-0fb7799a95fc",
  "transactionStatus" : "REJECTED",
  "status" : "E01607",
  "message" : "Transaction rejected, internal server error during authorization request generation",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1ab14cb7-c7b3-4af1-a730-a32386436243"
}
HTTP Response - STATUS: E13000
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "dad2ae3e-4819-4cb2-be08-bedfa07fc77b",
  "transactionStatus" : "REJECTED",
  "status" : "E13000",
  "message" : "Transaction rejected, risk score exceeded",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "1851d40f-e71d-4b05-ade4-3c333614a425"
}
500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0142
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 183

{
  "status" : "E0142",
  "message" : "Commission configuration not add for terminal",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "09a52529-399f-4b7a-b32d-5f555dfecf52"
}
HTTP Response - STATUS: E0153
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 280

{
  "requestUuid" : "f437de95-ecc3-476b-b99c-ef42f39548d8",
  "transactionStatus" : "PENDING",
  "status" : "E0153",
  "message" : "Transaction declined, problem with MIP connection",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "541cad8f-2598-411d-9816-a84a381fcdb2"
}
HTTP Response - STATUS: E01599
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 273

{
  "requestUuid" : "de7c8f08-3669-49d4-ae26-e8ffc3e710bb",
  "transactionStatus" : "DECLINED",
  "status" : "E01599",
  "message" : "Transaction declined, processing timeout",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "34bb20c6-1d69-4e37-990e-432b47d13c19"
}
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9001
HTTP/1.1 503 Service Unavailable
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:48 GMT
Connection: close
Content-Length: 161

{
  "status" : "E9001",
  "message" : "Error acquirer connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "9103cc25-a5d7-4f2f-99a1-96a4e1d6dcdd"
}
HTTP Response - STATUS: E9002
HTTP/1.1 503 Service Unavailable
Content-Type: application/json
Content-Length: 250

{
  "requestUuid" : "aaccb5d2-f3e1-40dc-89cb-bdff2e02d12a",
  "transactionStatus" : "DECLINED",
  "status" : "E9002",
  "message" : "Error mpi connection",
  "httpStatus" : "SERVICE_UNAVAILABLE",
  "traceId" : "c736c0da-31af-41b3-bbc4-03b6a63cb18a"
}

7. 3DS 2.X verification methods

Mastercard and Visa requires for intra-European Economic Area (EEA), plus United Kingdom, for which EMV 3DS must be used subsequent to a valid authorization soft decline DE39=65 (Mastercard)/1A(Visa).To perform a transaction for which the card has previously received CODE_65(Mastercard)/CODE_1A(Visa), the transaction must be processed with full EMV 3DS (3DS 2.x) and the authentication status must be 'Y'.

Correct flow:

  • 3DS 2.x → Challenge → Authentication status Y → Transaction (Recommended)

  • 3DS 2.x(Authentication status A) → Transaction → CODE_65/CODE_1A → 3DS 2.x → Challenge → Authentication status Y → Transaction (Recommended)

  • non3DS → Transaction → CODE_65/CODE_1A → 3DS 2.x → Challenge → Authentication status Y → Transaction (Available only to selected merchants)

soft decline Code 65 EMV 3DS
3ds 2.X flow
Table 325. 3DS Status and liability shift
3DS status ECI(Mastercard) ECI(Visa) Liability Recommended Action

Y

02

05

Card Issuer

Proceed to Card Authorization

A

01

06

Card Issuer

Proceed to Card Authorization

N

00

07

Merchant

No liability shift, do not proceed with the transaction

U

00

07

Merchant

No liability shift, consider whether to proceed with the transaction

R

00

07

Merchant

No liability shift, do not proceed with the transaction

7.1. Pre Authentication

POST /client/3ds/preAuthentication Content Type: application/json, Authorization: Basic Auth
Method to initiate 3ds authentication.
If the card is in 3ds 2.X, you can proceed to the first stage of authentication. If 'threeDSMethodURL' is returned, make a hidden iframe and post form with field name
'threeDSMethodData' on address from 'threeDSMethodURL'. Insert 'threeDSMethodData' from response to form. You should receive a response on your endpoint 'methodNotificationUrl' with 'threeDSMethodData' too. Measure the response time, the time and response are required at the 'Authentication' method, based on the response time, set the field 'methodCompletionIndicator'.

'threeDSMethodData ' is Base64 encoded string json with fields 'threeDSMethodNotificationURL' and 'threeDSServerTransID'.

The range of card BINs that support 3DS 2.X for Mastercard is: 500000-549999. Use the following BINs below to generate cards for testing:
- 5375912476960515
- 5117962099480048
- 5117963095204135
- 5218572540397762
- 5375913862726080

The range of card BINs that support 3DS 2.X for Visa is: 400000-449999. Use the following BINs below to generate cards for testing:
- 4005520000000129
- 4164978855760477
- 4341500505113562
- 4280596505234682

7.1.1. Request

PLAIN - cardNumber
POST /client/3ds/preAuthentication HTTP/1.1
Authorization: Basic VXNlcjpQYXNzd29yZA==
Content-Type: application/json
Content-Length: 155
Host: ecom-staging.fenige.pl

{
  "cardNumber" : "5430149160516930",
  "methodNotificationUrl" : "methodNotificationUrl.com",
  "terminalUuid" : "5f00b7fa-5174-442c-8cb6-debe59ae961d"
}
Table 326. PRE AUTHENTICATION 3DS REQUEST FIELDS
Path Type Constraints Description

cardNumber

String

Card number

methodNotificationUrl

String

@Must not be empty

This field specifies the URL to which the ACS will post threeDSMethodData when the hidden iframe post form from browse

terminalUuid

String

@Must not be null

Terminal uuid

DATACORE - cardId
POST /client/3ds/preAuthentication HTTP/1.1
Authorization: Basic VXNlcjpQYXNzd29yZA==
Content-Type: application/json
Content-Length: 137
Host: ecom-staging.fenige.pl

{
  "cardId" : 1723,
  "methodNotificationUrl" : "methodNotificationUrl.com",
  "terminalUuid" : "b3754324-e943-4d73-93fd-3ae825a88700"
}
Table 327. PRE AUTHENTICATION 3DS REQUEST FIELDS
Path Type Constraints Description

cardId

Number

DataCenter card id. Required to obtain card information data from DataCenter such as (cardNumber, expiryDate)

methodNotificationUrl

String

@Must not be empty

This field specifies the URL to which the ACS will post threeDSMethodData when the hidden iframe post form from browse

terminalUuid

String

@Must not be null

Terminal uuid

7.1.2. Response

200 OK
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 532

{
  "cardAuthenticationId" : "f7a4e115-ac9d-40bb-97a8-5da95845c2c1",
  "threeDSMethodData" : "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly93ZWJob29rLnNpdGUvZDMyZTlkZTgtMGFiOC00ODZjLWJjNzEtMGU2Mzg2MmY4MDNhM2I1YTkzZTUtMjI1Ni00NGQ0LTg2YjItNWFkM2FhMDEyYTJhIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiIxNjNiZWMzOC1kOTM1LTQ0MGItYWYwYy01OWM3NDI3OTk2MGMifQ",
  "threeDSMethodURL" : "https:/acs.com",
  "protocolVersionStart" : "2.1.0",
  "protocolVersionEnd" : "2.2.0",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Path Type Description

cardAuthenticationId

String

Unique identifier for 3ds verification

threeDSMethodData

String

Encoded data used for request to ACS

threeDSMethodURL

String

ACS endpoint for hidden request. If endpoint is not present then request is not required.

protocolVersionStart

String

Protocol version start range

protocolVersionEnd

String

Protocol version end range

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

200 OK without threeDSMethodURL
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 491

{
  "cardAuthenticationId" : "aed4329a-51f4-4ec9-bed5-b9ad6f07ef26",
  "threeDSMethodData" : "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly93ZWJob29rLnNpdGUvZDMyZTlkZTgtMGFiOC00ODZjLWJjNzEtMGU2Mzg2MmY4MDNhM2I1YTkzZTUtMjI1Ni00NGQ0LTg2YjItNWFkM2FhMDEyYTJhIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiIxNjNiZWMzOC1kOTM1LTQ0MGItYWYwYy01OWM3NDI3OTk2MGMifQ",
  "protocolVersionStart" : "2.1.0",
  "protocolVersionEnd" : "2.2.0",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Path Type Description

cardAuthenticationId

String

Unique identifier for 3ds verification

threeDSMethodData

String

Encoded data used for request to ACS

protocolVersionStart

String

Protocol version start range

protocolVersionEnd

String

Protocol version end range

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

422 UNPROCESSABLE_ENTITY Card number not Enrolled in 3DS v2
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 171

{
  "status" : "E0303",
  "message" : "Card number not Enrolled in 3DS v2",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "ba5874d3-6e84-412f-9369-f87bb78ec283"
}
Path Type Description

traceId

String

Unique id for this http request register in system

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

7.2. Authentication

POST /client/3ds/authentication Content Type: application/json, Authorization: Basic Auth
Method initialize authentication process by sending required transaction data. Method can return final data like transactionXId, cavv, eci or challenge flow (showed in the diagram).
After challenge end your app get notification on 'notificationUrl'. This is a POST request with "cres" and "threeDSSessionData".

"threeDSSessionData" is a encoded in base64 "cardAuthenticationId". You must use it in 'Authentication Details' method to get authentication value cavv, transactionXId and eci.

'cres' is Base64 encoded string json with fields: 'threeDSServerTransID', 'acsTransID', 'challengeCompletionInd', 'messageVersion', 'transStatus'.
'threeDSServerTransID' - is same like in 'threeDSMethodData'.
'transStatus' - is same like 'transactionStatus' in response from 'Authentication' method.
In the test environment, you have the option of calling different transactionStatus, depending on the purchaseAmount field. Eg.
     (1, 1000) - Y,
     (1001, 2000) - A,
     (2001, 3000) - C,
     (3001, 4000) - N,
     (4001, 5000) - U,
     (5001, 6000) - I,
     (6001, 7000) - status: E0300 errorCode: E1203,
     (7001, 8000) - status: E0309 errorCode: E1010

7.2.1. Request

PLAIN - cardNumber
POST /client/3ds/authentication HTTP/1.1
Authorization: Basic VXNlcjpQYXNzd29yZA==
Content-Type: application/json
Content-Length: 1635
Host: ecom-staging.fenige.pl

{
  "terminalUuid" : "92e9263f-df23-4ad7-b1ee-22e1b88f3922",
  "cardAuthenticationId" : "787f7aae-4317-4a29-b52b-94f34aee54a8",
  "threeDSMethodData" : "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiSFRUUDQwYjgyNDQ3LTE0ODUtNDUwZi04ZGYxLTdhNGQwYmRiMWMzYiIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiNDE1MDQzY2UtYTNhMC00ODBjLTk0YTYtNzk2NGEzYTcxNWI2In0",
  "methodCompletionIndicator" : "Y",
  "cardNumber" : "5430149160516930",
  "cardExpirationDate" : "12/26",
  "cardholderName" : "John",
  "purchaseAmount" : "123",
  "purchaseCurrency" : "PLN",
  "challengeWindowSize" : "S_250X400",
  "browserAcceptHeader" : "Accept: application/json",
  "browserLanguage" : "PL",
  "browserScreenHeight" : "1500",
  "browserScreenWidth" : "1500",
  "browserTimeZone" : "60",
  "browserUserAgent" : "Mozilla/5.0",
  "browserScreenColorDepth" : "24",
  "cardholderEmail" : "john@example.com",
  "cardholderHomePhone" : "1-1234567899",
  "cardholderMobilePhone" : "1-1234567899",
  "cardholderWorkPhone" : "48-1234567899",
  "browserIPAddress" : "77.55.135.220",
  "browserJavaEnabledVal" : "ENABLED",
  "browserJavaScriptEnabled" : "ENABLED",
  "notificationUrl" : "notificationUrl.com",
  "authenticationType" : "PAYMENT",
  "requestorChallengeInd" : "CHALLENGE_REQUESTED_MANDATE",
  "protocolVersion" : "2.2.0",
  "cardholderBillingAddressCountry" : "US",
  "cardholderBillingAddressState" : "CA",
  "cardholderBillingAddressCity" : "Los Angeles",
  "cardholderBillingAddressLine1" : "4101 Supreme ct",
  "cardholderBillingAddressLine2" : "Chestnut Ave",
  "cardholderBillingAddressLine3" : "W 225TH ST",
  "cardholderBillingAddressPostalCode" : "90032-2537"
}
Table 328. AUTHENTICATION 3DS REQUEST FIELDS
Path Type Constraints Description

terminalUuid

String

@Must not be null

Terminal uuid

cardAuthenticationId

String

@Must not be null

Unique identifier for 3ds verification from preAuthentication request

cardNumber

String

Card number length must be between 12 and 19, @Must not be blank, @Must not be null or card id must be present

Card number

cardExpirationDate

String

@Length must be 5, @Must not be null or card id must be present

Expiration date of card mm/yy

cardholderName

String

@Length must be between 2 and 45 inclusive, @Must not be empty

This property contains the name of the cardholder. Name of the Cardholder. Must be ASCII characters. This is required to be set unless market or regional mandates restricts sending this information.

purchaseAmount

String

@Must match the regular expression \d{1,48}, @Must not be null

This field contains the purchase amount to be authorized. The transaction amount is to be presented with an implied decimal point. For example, US $10.00 must be represented as 1000, and $0.10 is likewise simply 10. The allowable number of significant digits as well as the positioning of any implied decimal point is dictated by the designated PurchaseExponent. This field may not contain a negative number.

purchaseCurrency

String

@Must not be null

Currency for transaction (in accordance with 3-digit ISO-4217), example: USD

threeDSMethodData

String

@Must not be empty

Response data from a hidden form from the Pre Authentication. If threeDSMethodURL is empty set threeDSMethodData

methodCompletionIndicator

String

@Must not be null

Y if response from hidden form from Pre Authentication is under 10s, N if response from hidden form from Pre Authentication is over 10s, U if threeDSMethodURL is empty

protocolVersion

String

@Must not be empty

This field indicates the protocol version. Now there are two versions: 2.1.0 and 2.2.0. It is recommended to use 2.2.0 if the card supports it. You will get it from the Pre Authentication method. Some configurations are only available for 2.2.0.

notificationUrl

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This property specifies the URL to which the final challenge response is POSTed.

requestorChallengeInd

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

Indicates whether a challenge is requested for this transaction. For authenticationType PAYMENT possible values are: NO_PREFERENCE, NO_CHALLENGE_REQUESTED, CHALLENGE_REQUESTED_MANDATE, CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE

For authenticationType ADD_CARD, VERIFY_CARDHOLDER, INSTALLMENT_PAYMENT, COF_INITIAL, RECURRING_INITIAL possible values are: CHALLENGE_REQUESTED_MANDATE, CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE

authenticationType

String

@Must not be null

Authentication Type configuration prepared for specific type. Possible values are:

Non payment authentication - Identity verification and account confirmation:

ADD_CARD

VERIFY_CARDHOLDER

Payment authentication - Cardholder authentication during an e-commerce transaction:

PAYMENT

COF_INITIAL

INSTALLMENT_PAYMENT

RECURRING_INITIAL

3DS Requestor Initiated (only for protocolVersion 2.2.0) - Confirmation of account information and Cardholder authentication with no direct Cardholder present. For example, a subscription-based e-commerce merchant confirming that an account is still valid:

MOTO

RECURRING_SUBSEQUENT

challengeWindowSize

String

Optional

This field indicates the dimensions of the challenge window that has been displayed to the cardholder. The ACS shall reply with content that is formatted to appropriately render in this window to provide the best possible user experience.

Preconfigured sizes are width x height in pixels of the window displayed in the cardholder browser. Possible values are:S_250X400

S_390X400

S_500X600

S_600X400

FULL_SCREEN

This value is included in the Challenge Request Message (CReq)

browserAcceptHeader

String

Max length: 2048.

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL.

This field contains the exact content of the HTTP accept header as sent to the merchant from the cardholder’s user agent. This field is required only if the cardholder’s user agent supplied a value. e.g Accept: application/json

browserLanguage

String

Min length: 1, Max length: 8

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the cardholder’s browser language as defined in IETF BCP 47.

browserScreenHeight

String

Min length: 1, Max length: 6

Regexp: ^[0-9]{1,6}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the total height of the cardholder’s screen in pixels.

browserScreenWidth

String

Min length: 1, Max length: 6

Regexp: ^[0-9]{1,6}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the total width of the cardholder’s screen in pixels.

browserTimeZone

String

Min length: 1, Max length: 5

Regexp: ^[+-]?[0-9]{1,4}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the difference between UTC time and the cardholder’s browser local time in minutes.

browserUserAgent

String

Max length: 2048

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the exact content of the HTTP User-Agent header.

browserJavaEnabledVal

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the ability of the cardholder’s browser to execute Java. Enumerated values: NOT_PRESENT, ENABLED, DISABLED.

Required if browserJavascriptEnabled is true

cardholderEmail

String

Optional, Max length: 256

This field contains the cardholder email address.

cardholderHomePhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the home phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

cardholderMobilePhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the mobile phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

cardholderWorkPhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the work phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

browserIPAddress

String

@Must not be null, Max length: 45

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the IP address of the cardholder’s browser as returned by the HTTP headers.

browserJavaScriptEnabled

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the ability of the cardholder’s browser to execute JavaScript. Enumerated values: ENABLED, DISABLED.

browserScreenColorDepth

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the bit depth of the color palette, in bits per pixel, for displaying images. Obtained from Cardholder browser using the screen.colorDepth property. Values accepted:

1 = 1 bit,

4 = 4 bits,

8 = 8 bits,

15 = 15 bits,

16 = 16 bits,

24 = 24 bits,

32 = 32 bits,

48 = 48 bits

cardholderBillingAddressCountry

String

@Max length: 3

Required if Cardholder Billing Address State is present.

The country of the Cardholder billing address associated with the card used for this purchase.

Shall be the ISO 3166-1 numeric three-digit country code, other than exceptions listed in Table A.5.

cardholderBillingAddressState

String

@Max length: 3

Country subdivision code defined in ISO 3166-2.

For example, using the ISO entry US-CA (California, United States), the correct value for this field = CA. Note that the country and hyphen are not included in this value.

cardholderBillingAddressCity

String

@Max length: 50

The city of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine1

String

@Max length: 50

First line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine2

String

@Max length: 50

Second line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine3

String

@Max length: 50

Third line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressPostalCode

String

@Max length: 16

ZIP or other postal code of the Cardholder billing address associated with the card used for this purchase.

DATACORE - cardId
POST /client/3ds/authentication HTTP/1.1
Authorization: Basic VXNlcjpQYXNzd29yZA==
Content-Type: application/json
Content-Length: 1512
Host: ecom-staging.fenige.pl

{
  "terminalUuid" : "45d38cb1-43ff-4875-9e17-f65fbebeba9e",
  "cardAuthenticationId" : "1ca88aa6-8dda-4da9-8f95-115277cc4171",
  "threeDSMethodData" : "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiSFRUUDQwYjgyNDQ3LTE0ODUtNDUwZi04ZGYxLTdhNGQwYmRiMWMzYiIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiNDE1MDQzY2UtYTNhMC00ODBjLTk0YTYtNzk2NGEzYTcxNWI2In0",
  "methodCompletionIndicator" : "Y",
  "cardId" : 1723,
  "purchaseAmount" : "123",
  "purchaseCurrency" : "PLN",
  "challengeWindowSize" : "S_250X400",
  "browserAcceptHeader" : "Accept: application/json",
  "browserLanguage" : "PL",
  "browserScreenHeight" : "1500",
  "browserScreenWidth" : "1500",
  "browserTimeZone" : "60",
  "browserUserAgent" : "Mozilla/5.0",
  "browserScreenColorDepth" : "24",
  "cardholderHomePhone" : "1-1234567899",
  "cardholderMobilePhone" : "1-1234567899",
  "cardholderWorkPhone" : "48-1234567899",
  "browserIPAddress" : "77.55.135.220",
  "browserJavaEnabledVal" : "ENABLED",
  "browserJavaScriptEnabled" : "ENABLED",
  "notificationUrl" : "notificationUrl.com",
  "authenticationType" : "PAYMENT",
  "requestorChallengeInd" : "CHALLENGE_REQUESTED_MANDATE",
  "protocolVersion" : "2.2.0",
  "cardholderBillingAddressCountry" : "US",
  "cardholderBillingAddressState" : "CA",
  "cardholderBillingAddressCity" : "Los Angeles",
  "cardholderBillingAddressLine1" : "4101 Supreme ct",
  "cardholderBillingAddressLine2" : "Chestnut Ave",
  "cardholderBillingAddressLine3" : "W 225TH ST",
  "cardholderBillingAddressPostalCode" : "90032-2537"
}
Table 329. AUTHENTICATION 3DS REQUEST FIELDS
Path Type Constraints Description

terminalUuid

String

@Must not be null

Terminal uuid

cardAuthenticationId

String

@Must not be null

Unique identifier for 3ds verification from preAuthentication request

cardId

Number

DataCenter card id. Required to obtain card information data from DataCenter such as (cardNumber, expiryDate)

purchaseAmount

String

@Must match the regular expression \d{1,48}, @Must not be null

This field contains the purchase amount to be authorized. The transaction amount is to be presented with an implied decimal point. For example, US $10.00 must be represented as 1000, and $0.10 is likewise simply 10. The allowable number of significant digits as well as the positioning of any implied decimal point is dictated by the designated PurchaseExponent. This field may not contain a negative number.

purchaseCurrency

String

@Must not be null

Currency for transaction (in accordance with 3-digit ISO-4217), example: USD

threeDSMethodData

String

@Must not be empty

Response data from a hidden form from the Pre Authentication. If threeDSMethodURL is empty set threeDSMethodData

methodCompletionIndicator

String

@Must not be null

Y if response from hidden form from Pre Authentication is under 10s, N if response from hidden form from Pre Authentication is over 10s, U if threeDSMethodURL is empty

protocolVersion

String

@Must not be empty

This field indicates the protocol version. Now there are two versions: 2.1.0 and 2.2.0. It is recommended to use 2.2.0 if the card supports it. You will get it from the Pre Authentication method. Some configurations are only available for 2.2.0.

notificationUrl

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This property specifies the URL to which the final challenge response is POSTed.

requestorChallengeInd

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

Indicates whether a challenge is requested for this transaction. For authenticationType PAYMENT possible values are: NO_PREFERENCE, NO_CHALLENGE_REQUESTED, CHALLENGE_REQUESTED_MANDATE, CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE

For authenticationType ADD_CARD, VERIFY_CARDHOLDER, INSTALLMENT_PAYMENT, COF_INITIAL, RECURRING_INITIAL possible values are: CHALLENGE_REQUESTED_MANDATE, CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE

authenticationType

String

@Must not be null

Authentication Type configuration prepared for specific type. Possible values are:

Non payment authentication - Identity verification and account confirmation:

ADD_CARD

VERIFY_CARDHOLDER

Payment authentication - Cardholder authentication during an e-commerce transaction:

PAYMENT

COF_INITIAL

INSTALLMENT_PAYMENT

RECURRING_INITIAL

3DS Requestor Initiated (only for protocolVersion 2.2.0) - Confirmation of account information and Cardholder authentication with no direct Cardholder present. For example, a subscription-based e-commerce merchant confirming that an account is still valid:

MOTO

RECURRING_SUBSEQUENT

challengeWindowSize

String

Max length: 2048.

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL.

This field indicates the dimensions of the challenge window that has been displayed to the cardholder. The ACS shall reply with content that is formatted to appropriately render in this window to provide the best possible user experience.

Preconfigured sizes are width x height in pixels of the window displayed in the cardholder browser. Possible values are:S_250X400

S_390X400

S_500X600

S_600X400

FULL_SCREEN

This value is included in the Challenge Request Message (CReq)

browserAcceptHeader

String

Max length: 2048.

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL.

This field contains the exact content of the HTTP accept header as sent to the merchant from the cardholder’s user agent. This field is required only if the cardholder’s user agent supplied a value. e.g Accept: application/json

browserLanguage

String

Min length: 1, Max length: 8

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the cardholder’s browser language as defined in IETF BCP 47.

browserScreenHeight

String

Regexp: ^[0-9]{1,6}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the total height of the cardholder’s screen in pixels.

browserScreenWidth

String

Regexp: ^[0-9]{1,6}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the total width of the cardholder’s screen in pixels.

browserTimeZone

String

Regexp: ^[+-]?[0-9]{1,4}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the difference between UTC time and the cardholder’s browser local time in minutes.

browserUserAgent

String

Max length: 2048

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the exact content of the HTTP User-Agent header.

browserJavaEnabledVal

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the ability of the cardholder’s browser to execute Java. Enumerated values: NOT_PRESENT, ENABLED, DISABLED.

Required if browserJavascriptEnabled is true

cardholderHomePhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the home phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

cardholderMobilePhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the mobile phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

cardholderWorkPhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the work phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

browserIPAddress

String

@Must not be null, Max length: 45Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the IP address of the cardholder’s browser as returned by the HTTP headers.

browserJavaScriptEnabled

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the ability of the cardholder’s browser to execute JavaScript. Enumerated values: ENABLED, DISABLED.

browserScreenColorDepth

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the bit depth of the color palette, in bits per pixel, for displaying images. Obtained from Cardholder browser using the screen.colorDepth property. Values accepted:

1 = 1 bit,

4 = 4 bits,

8 = 8 bits,

15 = 15 bits,

16 = 16 bits,

24 = 24 bits,

32 = 32 bits,

48 = 48 bits

cardholderBillingAddressCountry

String

@Max length: 3

Required if Cardholder Billing Address State is present.

The country of the Cardholder billing address associated with the card used for this purchase.

Shall be the ISO 3166-1 numeric three-digit country code, other than exceptions listed in Table A.5.

cardholderBillingAddressState

String

@Max length: 3

Country subdivision code defined in ISO 3166-2.

For example, using the ISO entry US-CA (California, United States), the correct value for this field = CA. Note that the country and hyphen are not included in this value.

cardholderBillingAddressCity

String

@Max length: 50

The city of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine1

String

@Max length: 50

First line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine2

String

@Max length: 50

Second line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine3

String

@Max length: 50

Third line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressPostalCode

String

@Max length: 16

ZIP or other postal code of the Cardholder billing address associated with the card used for this purchase.

PLAIN - recurring
POST /client/3ds/authentication HTTP/1.1
Authorization: Basic VXNlcjpQYXNzd29yZA==
Content-Type: application/json
Content-Length: 1788
Host: ecom-staging.fenige.pl

{
  "terminalUuid" : "54dc775c-63ed-4f69-a0a7-5041c2cf54eb",
  "cardAuthenticationId" : "0e0ec1af-0523-4476-8423-54a39c07102d",
  "threeDSMethodData" : "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiSFRUUDQwYjgyNDQ3LTE0ODUtNDUwZi04ZGYxLTdhNGQwYmRiMWMzYiIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiNDE1MDQzY2UtYTNhMC00ODBjLTk0YTYtNzk2NGEzYTcxNWI2In0",
  "methodCompletionIndicator" : "Y",
  "cardNumber" : "5430149160516930",
  "cardExpirationDate" : "12/26",
  "cardholderName" : "John",
  "purchaseAmount" : "123",
  "purchaseCurrency" : "PLN",
  "challengeWindowSize" : "S_250X400",
  "browserAcceptHeader" : "Accept: application/json",
  "browserLanguage" : "PL",
  "browserScreenHeight" : "1500",
  "browserScreenWidth" : "1500",
  "browserTimeZone" : "60",
  "browserUserAgent" : "Mozilla/5.0",
  "browserScreenColorDepth" : "24",
  "cardholderEmail" : "john@example.com",
  "cardholderHomePhone" : "1-1234567899",
  "cardholderMobilePhone" : "1-1234567899",
  "cardholderWorkPhone" : "48-1234567899",
  "browserIPAddress" : "77.55.135.220",
  "browserJavaEnabledVal" : "ENABLED",
  "browserJavaScriptEnabled" : "ENABLED",
  "recurringExpDate" : "20210815",
  "recurringFrequency" : "30",
  "recurringInitialTransactionXId" : "0e4243a9-e127-448b-a7eb-37d74d4e6a62",
  "notificationUrl" : "notificationUrl.com",
  "authenticationType" : "RECURRING_INITIAL",
  "requestorChallengeInd" : "CHALLENGE_REQUESTED_MANDATE",
  "protocolVersion" : "2.2.0",
  "cardholderBillingAddressCountry" : "US",
  "cardholderBillingAddressState" : "CA",
  "cardholderBillingAddressCity" : "Los Angeles",
  "cardholderBillingAddressLine1" : "4101 Supreme ct",
  "cardholderBillingAddressLine2" : "Chestnut Ave",
  "cardholderBillingAddressLine3" : "W 225TH ST",
  "cardholderBillingAddressPostalCode" : "90032-2537"
}
Table 330. AUTHENTICATION 3DS REQUEST FIELDS
Path Type Constraints Description

terminalUuid

String

@Must not be null

Terminal uuid

cardAuthenticationId

String

@Must not be null

Unique identifier for 3ds verification from preAuthentication request

cardNumber

String

Card number length must be between 12 and 19, @Must not be blank, @Must not be null or card id must be present

Card number

cardExpirationDate

String

@Length must be 5, @Must not be null or card id must be present

Expiration date of card mm/yy

cardholderName

String

@Length must be between 2 and 45 inclusive, @Must not be empty

This property contains the name of the cardholder. Name of the Cardholder. Must be ASCII characters. This is required to be set unless market or regional mandates restricts sending this information.

purchaseAmount

String

@Must match the regular expression \d{1,48}, @Must not be null

This field contains the purchase amount to be authorized. The transaction amount is to be presented with an implied decimal point. For example, US $10.00 must be represented as 1000, and $0.10 is likewise simply 10. The allowable number of significant digits as well as the positioning of any implied decimal point is dictated by the designated PurchaseExponent. This field may not contain a negative number.

purchaseCurrency

String

@Must not be null

Currency for transaction (in accordance with 3-digit ISO-4217), example: USD

threeDSMethodData

String

@Must not be empty

Response data from a hidden form from the Pre Authentication. If threeDSMethodURL is empty set threeDSMethodData

methodCompletionIndicator

String

@Must not be null

Y if response from hidden form from Pre Authentication is under 10s, N if response from hidden form from Pre Authentication is over 10s, U if threeDSMethodURL is empty

protocolVersion

String

@Must not be empty

This field indicates the protocol version. Now there are two versions: 2.1.0 and 2.2.0. It is recommended to use 2.2.0 if the card supports it. You will get it from the Pre Authentication method. Some configurations are only available for 2.2.0.

notificationUrl

String

Max length: 256Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This property specifies the URL to which the final challenge response is POSTed.

requestorChallengeInd

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

Indicates whether a challenge is requested for this transaction. For authenticationType PAYMENT possible values are: NO_PREFERENCE, NO_CHALLENGE_REQUESTED, CHALLENGE_REQUESTED_MANDATE, CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE

For authenticationType ADD_CARD, VERIFY_CARDHOLDER, INSTALLMENT_PAYMENT, COF_INITIAL, RECURRING_INITIAL possible values are: CHALLENGE_REQUESTED_MANDATE, CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE

challengeWindowSize

String

Optional

This field indicates the dimensions of the challenge window that has been displayed to the cardholder. The ACS shall reply with content that is formatted to appropriately render in this window to provide the best possible user experience.

Preconfigured sizes are width x height in pixels of the window displayed in the cardholder browser. Possible values are:S_250X400

S_390X400

S_500X600

S_600X400

FULL_SCREEN

This value is included in the Challenge Request Message (CReq)

authenticationType

String

@Must not be null

Authentication Type configuration prepared for specific type. Possible values are:

Non payment authentication - Identity verification and account confirmation:

ADD_CARD

VERIFY_CARDHOLDER

Payment authentication - Cardholder authentication during an e-commerce transaction:

PAYMENT

COF_INITIAL

INSTALLMENT_PAYMENT

RECURRING_INITIAL

3DS Requestor Initiated (only for protocolVersion 2.2.0) - Confirmation of account information and Cardholder authentication with no direct Cardholder present. For example, a subscription-based e-commerce merchant confirming that an account is still valid:

MOTO

RECURRING_SUBSEQUENT

browserAcceptHeader

String

Max length: 2048.

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL.

This field contains the exact content of the HTTP accept header as sent to the merchant from the cardholder’s user agent. This field is required only if the cardholder’s user agent supplied a value. e.g Accept: application/json

browserLanguage

String

Min length: 1, Max length: 8

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the cardholder’s browser language as defined in IETF BCP 47.

browserScreenHeight

String

Regexp: ^[0-9]{1,6}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the total height of the cardholder’s screen in pixels.

browserScreenWidth

String

Regexp: ^[0-9]{1,6}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the total width of the cardholder’s screen in pixels.

browserTimeZone

String

Regexp: ^[+-]?[0-9]{1,4}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the difference between UTC time and the cardholder’s browser local time in minutes.

browserUserAgent

String

Max length: 2048

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the exact content of the HTTP User-Agent header.

browserJavaEnabledVal

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the ability of the cardholder’s browser to execute Java. Enumerated values: NOT_PRESENT, ENABLED, DISABLED.

Required if browserJavascriptEnabled is true

cardholderEmail

String

Optional

This field contains the cardholder email address.

cardholderHomePhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the home phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

cardholderMobilePhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the mobile phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

cardholderWorkPhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the work phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

browserIPAddress

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the IP address of the cardholder’s browser as returned by the HTTP headers.

browserJavaScriptEnabled

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the ability of the cardholder’s browser to execute JavaScript. Enumerated values: ENABLED, DISABLED.

browserScreenColorDepth

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the bit depth of the color palette, in bits per pixel, for displaying images. Obtained from Cardholder browser using the screen.colorDepth property. Values accepted:

1 = 1 bit,

4 = 4 bits,

8 = 8 bits,

15 = 15 bits,

16 = 16 bits,

24 = 24 bits,

32 = 32 bits,

48 = 48 bits

recurringExpDate

String

@Must not be null only for authenticationType = RECURRING_INITIAL

This field contains the date after which no further authorizations shall be performed. The format of this field must be: YYYYMMDD

recurringFrequency

String

@Must not be null only for authenticationType = RECURRING_INITIAL

The number of days between recurring payments. This field indicates the minimum number of days between authorizations.

recurringInitialTransactionXId

String

@Must not be null only for authenticationType = RECURRING_SUBSEQUENT

This field indicates the transactionXid from recurring initial authentication.

cardholderBillingAddressCountry

String

@Max length: 3

Required if Cardholder Billing Address State is present.

The country of the Cardholder billing address associated with the card used for this purchase.

Shall be the ISO 3166-1 numeric three-digit country code, other than exceptions listed in Table A.5.

cardholderBillingAddressState

String

@Max length: 3

Country subdivision code defined in ISO 3166-2.

For example, using the ISO entry US-CA (California, United States), the correct value for this field = CA. Note that the country and hyphen are not included in this value.

cardholderBillingAddressCity

String

@Max length: 50

The city of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine1

String

@Max length: 50

First line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine2

String

@Max length: 50

Second line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine3

String

@Max length: 50

Third line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressPostalCode

String

@Max length: 16

ZIP or other postal code of the Cardholder billing address associated with the card used for this purchase.

PLAIN - installment
POST /client/3ds/authentication HTTP/1.1
Authorization: Basic VXNlcjpQYXNzd29yZA==
Content-Type: application/json
Content-Length: 1668
Host: ecom-staging.fenige.pl

{
  "terminalUuid" : "a46ce192-4148-4fc4-96d6-c5435230cfe9",
  "cardAuthenticationId" : "0d640401-77da-4481-8cf3-014eb8b868e1",
  "threeDSMethodData" : "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiSFRUUDQwYjgyNDQ3LTE0ODUtNDUwZi04ZGYxLTdhNGQwYmRiMWMzYiIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiNDE1MDQzY2UtYTNhMC00ODBjLTk0YTYtNzk2NGEzYTcxNWI2In0",
  "methodCompletionIndicator" : "Y",
  "cardNumber" : "5430149160516930",
  "cardExpirationDate" : "12/26",
  "cardholderName" : "John",
  "purchaseAmount" : "123",
  "purchaseCurrency" : "PLN",
  "challengeWindowSize" : "S_250X400",
  "browserAcceptHeader" : "Accept: application/json",
  "browserLanguage" : "PL",
  "browserScreenHeight" : "1500",
  "browserScreenWidth" : "1500",
  "browserTimeZone" : "60",
  "browserUserAgent" : "Mozilla/5.0",
  "browserScreenColorDepth" : "24",
  "cardholderEmail" : "john@example.com",
  "cardholderHomePhone" : "1-1234567899",
  "cardholderMobilePhone" : "1-1234567899",
  "cardholderWorkPhone" : "48-1234567899",
  "browserIPAddress" : "77.55.135.220",
  "browserJavaEnabledVal" : "ENABLED",
  "browserJavaScriptEnabled" : "ENABLED",
  "instalmentPaymentData" : "6",
  "notificationUrl" : "notificationUrl.com",
  "authenticationType" : "PAYMENT",
  "requestorChallengeInd" : "CHALLENGE_REQUESTED_MANDATE",
  "protocolVersion" : "2.2.0",
  "cardholderBillingAddressCountry" : "US",
  "cardholderBillingAddressState" : "CA",
  "cardholderBillingAddressCity" : "Los Angeles",
  "cardholderBillingAddressLine1" : "4101 Supreme ct",
  "cardholderBillingAddressLine2" : "Chestnut Ave",
  "cardholderBillingAddressLine3" : "W 225TH ST",
  "cardholderBillingAddressPostalCode" : "90032-2537"
}
Table 331. AUTHENTICATION 3DS REQUEST FIELDS
Path Type Constraints Description

terminalUuid

String

@Must not be null

Terminal uuid

cardAuthenticationId

String

@Must not be null

Unique identifier for 3ds verification from preAuthentication request

cardNumber

String

Card number length must be between 12 and 19, @Must not be blank, @Must not be null or card id must be present

Card number

cardExpirationDate

String

@Length must be 5, @Must not be null or card id must be present

Expiration date of card mm/yy

cardholderName

String

@Length must be between 2 and 45 inclusive, @Must not be empty

This property contains the name of the cardholder. Name of the Cardholder. Must be ASCII characters. This is required to be set unless market or regional mandates restricts sending this information.

purchaseAmount

String

@Must match the regular expression \d{1,48}, @Must not be null

This field contains the purchase amount to be authorized. The transaction amount is to be presented with an implied decimal point. For example, US $10.00 must be represented as 1000, and $0.10 is likewise simply 10. The allowable number of significant digits as well as the positioning of any implied decimal point is dictated by the designated PurchaseExponent. This field may not contain a negative number.

purchaseCurrency

String

@Must not be null

Currency for transaction (in accordance with 3-digit ISO-4217), example: USD

threeDSMethodData

String

@Must not be empty

Response data from a hidden form from the Pre Authentication. If threeDSMethodURL is empty set threeDSMethodData

methodCompletionIndicator

String

@Must not be null

Y if response from hidden form from Pre Authentication is under 10s, N if response from hidden form from Pre Authentication is over 10s, U if threeDSMethodURL is empty

protocolVersion

String

@Must not be empty

This field indicates the protocol version. Now there are two versions: 2.1.0 and 2.2.0. It is recommended to use 2.2.0 if the card supports it. You will get it from the Pre Authentication method. Some configurations are only available for 2.2.0.

notificationUrl

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This property specifies the URL to which the final challenge response is POSTed.

requestorChallengeInd

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

Indicates whether a challenge is requested for this transaction. For authenticationType PAYMENT possible values are: NO_PREFERENCE, NO_CHALLENGE_REQUESTED, CHALLENGE_REQUESTED_MANDATE, CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE

For authenticationType ADD_CARD, VERIFY_CARDHOLDER, INSTALLMENT_PAYMENT, COF_INITIAL, RECURRING_INITIAL possible values are: CHALLENGE_REQUESTED_MANDATE, CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE

authenticationType

String

@Must not be null

Authentication Type configuration prepared for specific type. Possible values are:

Non payment authentication - Identity verification and account confirmation:

ADD_CARD

VERIFY_CARDHOLDER

Payment authentication - Cardholder authentication during an e-commerce transaction:

PAYMENT

COF_INITIAL

INSTALLMENT_PAYMENT

RECURRING_INITIAL

3DS Requestor Initiated (only for protocolVersion 2.2.0) - Confirmation of account information and Cardholder authentication with no direct Cardholder present. For example, a subscription-based e-commerce merchant confirming that an account is still valid:

MOTO

RECURRING_SUBSEQUENT

challengeWindowSize

String

Optional

This field indicates the dimensions of the challenge window that has been displayed to the cardholder. The ACS shall reply with content that is formatted to appropriately render in this window to provide the best possible user experience.

Preconfigured sizes are width x height in pixels of the window displayed in the cardholder browser. Possible values are:S_250X400

S_390X400

S_500X600

S_600X400

FULL_SCREEN

This value is included in the Challenge Request Message (CReq)

browserAcceptHeader

String

Max length: 2048.

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL.

This field contains the exact content of the HTTP accept header as sent to the merchant from the cardholder’s user agent. This field is required only if the cardholder’s user agent supplied a value. e.g Accept: application/json

browserLanguage

String

Min length: 1, Max length: 8

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the cardholder’s browser language as defined in IETF BCP 47.

browserScreenHeight

String

Regexp: ^[0-9]{1,6}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the total height of the cardholder’s screen in pixels.

browserScreenWidth

String

Regexp: ^[0-9]{1,6}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the total width of the cardholder’s screen in pixels.

browserTimeZone

String

Regexp: ^[+-]?[0-9]{1,4}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the difference between UTC time and the cardholder’s browser local time in minutes.

browserUserAgent

String

Max length: 2048

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the exact content of the HTTP User-Agent header.

browserJavaEnabledVal

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the ability of the cardholder’s browser to execute Java. Enumerated values: NOT_PRESENT, ENABLED, DISABLED.

Required if browserJavascriptEnabled is true

cardholderEmail

String

Optional

This field contains the cardholder email address.

cardholderHomePhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the home phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

cardholderMobilePhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the mobile phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

cardholderWorkPhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the work phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

browserIPAddress

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the IP address of the cardholder’s browser as returned by the HTTP headers.

browserJavaScriptEnabled

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the ability of the cardholder’s browser to execute JavaScript. Enumerated values: ENABLED, DISABLED.

browserScreenColorDepth

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the bit depth of the color palette, in bits per pixel, for displaying images. Obtained from Cardholder browser using the screen.colorDepth property. Values accepted:

1 = 1 bit,

4 = 4 bits,

8 = 8 bits,

15 = 15 bits,

16 = 16 bits,

24 = 24 bits,

32 = 32 bits,

48 = 48 bits

instalmentPaymentData

String

@Must not be null only for authenticationType = INSTALLMENT_PAYMENT

Max authorizations permitted for installment payments Indicates maximum number of authorizations permitted for installment payments. Required in AReq messages if the Merchant and Cardholder have agree to installment payments ( authenticationType = INSTALLMENT_PAYMENT). Value must be greater than 1.

cardholderBillingAddressCountry

String

@Max length: 3

Required if Cardholder Billing Address State is present.

The country of the Cardholder billing address associated with the card used for this purchase.

Shall be the ISO 3166-1 numeric three-digit country code, other than exceptions listed in Table A.5.

cardholderBillingAddressState

String

@Max length: 50

Country subdivision code defined in ISO 3166-2.

For example, using the ISO entry US-CA (California, United States), the correct value for this field = CA. Note that the country and hyphen are not included in this value.

cardholderBillingAddressCity

String

@Max length: 3

The city of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine1

String

@Max length: 50

First line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine2

String

@Max length: 50

Second line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressLine3

String

@Max length: 50

Third line of the street address or equivalent local portion of the Cardholder billing address associated with the card used for this purchase.

cardholderBillingAddressPostalCode

String

@Max length: 16

ZIP or other postal code of the Cardholder billing address associated with the card used for this purchase.

7.2.2. Response

200 OK without challenge
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 221

{
  "transactionStatus" : "A",
  "transactionXId" : "8187862e-1588-4db5-bbfb-189e8b02c2e8",
  "cavv" : "B5gQCElHgQAAAAAKmFNEdQAAAAA=",
  "eci" : "06",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Path Type Description

transactionStatus

String

Indicates whether a transaction qualifies as an authenticated transaction or account verification. Possible values are:

Y Authentication/account verification successful.

N Not authenticated/account not verified; transaction denied.

U Authentication/account verification could not be performed; technical or other problem as indicated in ARes or RReq.

A Attempts processing performed; not authenticated/verified, but a proof of attempted authentication/verification is provided.

C Challenge required; additional authentication is required using the CReq/CRes.

R Authentication/account verification rejected; issuer is rejecting authentication/verification and request that authorization not be attempted.

D Challenge required; decoupled authentication confirmed.

I Informational only; 3DS Requestor challenge preference acknowledged.

Note: The CRes message can contain only a value of Y or N. Values of D and I are only applicable for 3DS version 2.2.0.

transactionXId

String

Server transaction Id generated by DS

cavv

String

This property is determined by the Access Control Server (ACS), and is filled after the call to SendAuthRequest (for a frictionless flow), or when the Results Request Message (RReq) is parsed using CheckResponse (for a challenge flow).

This property will be valid if the TransactionStatus is "Y" or "A". The value may be used to provide proof of authentication.

eci

String

This property is determined by the Access Control Server (ACS), and is filled after the call to SendAuthRequest (for a frictionless flow), or when the Results Request Message (RReq) is parsed using CheckResponse (for a challenge flow).

This property contains the two digit Electronic Commerce Indicator (ECI) value, which is to be submitted in a credit card authorization message. This value indicates to the processor that the customer data in the authorization message has been authenticated. The data contained within this property is only valid if the TransactionStatus is "Y" or "A".

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

200 OK with challenge
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 718

{
  "transactionStatus" : "C",
  "acsurl" : "acsurl.com",
  "creq" : "c29tZSBjcmVx",
  "challengeHtmlFormBase64" : "PGh0bWw+PFNDUklQVCBMQU5HVUFHRT0iSmF2YXNjcmlwdCI+ZnVuY3Rpb24gT25Mb2FkRXZlbnQoKXsgZG9jdW1lbnQuZG93bmxvYWRGb3JtLnN1Ym1pdCgpOyB9PC9TQ1JJUFQ+PGJvZHkgT25Mb2FkPSJPbkxvYWRFdmVudCgpOyI+PGZvcm0gbmFtZT0iZG93bmxvYWRGb3JtIiBhY3Rpb249Imh0dHBzOi8vYWNzdGVzdC5jb20iIG1ldGhvZD0iUE9TVCI+PElOUFVUIHR5cGU9ImhpZGRlbiIgbmFtZT0iY3JlcSIgdmFsdWU9ImNyZXEiPjxJTlBVVCB0eXBlPSJoaWRkZW4iIG5hbWU9InRocmVlRFNTZXNzaW9uRGF0YSIgdmFsdWU9InNvbWVFbmNvZGVkRGF0ZSI+PC9mb3JtPjwvYm9keT48L2h0bWw+",
  "threeDSSessionData" : "ZGY0NDJhODQtOGJkZS00MmQ3LWExMTUtMzUyNjNlZGY1MGFk",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Path Type Description

transactionStatus

String

Indicates whether a transaction qualifies as an authenticated transaction or account verification. Possible values are:

Y Authentication/account verification successful. N Not authenticated/account not verified; transaction denied. U Authentication/account verification could not be performed; technical or other problem as indicated in ARes or RReq. A Attempts processing performed; not authenticated/verified, but a proof of attempted authentication/verification is provided. C Challenge required; additional authentication is required using the CReq/CRes. R Authentication/account verification rejected; issuer is rejecting authentication/verification and request that authorization not be attempted. D Challenge required; decoupled authentication confirmed. I Informational only; 3DS Requestor challenge preference acknowledged. Note: The CRes message can contain only a value of Y or N. Values of D and I are only applicable for 3DS version 2.2.0.

acsurl

String

ACS Url - if challenge is required, data for building a form such as challengeHtmlFormBase64

creq

String

creq - if challenge is required, data for building a form such as challengeHtmlFormBase64

challengeHtmlFormBase64

String

This field is a BASE64 encrypted html source file containing the challenge 3-D Secure frame

threeDSSessionData

String

This field is a BASE64 encrypted cardAuthenticationId you can add this to challenge form to correlate notification

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

401 Unauthorized
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:10 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "653c0f82-21a5-4b0a-97f0-2cc40b0b0cd3"
}
Table 332. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

422 UNPROCESSABLE ENTITY
HTTP Response - STATUS: E9009
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json

{
    "errorCode": "E1010",
    "errorCodeDetails": "Protocol version is not supported",
    "status": "E0309",
    "message": "Protocol version is not supported",
    "httpStatus": "UNPROCESSABLE_ENTITY",
    "traceId": "2a3129b7-c6bb-4a8a-bd5c-d739246ec05d"
}
Path Type Description

errorCode

String

Response code for 3ds from Fenige system

errorCodeDetails

String

Extended response code

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E0300
HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
    "status": "E0300",
    "message": "Error mpi V2 - failed internal",
    "httpStatus": "INTERNAL_SERVER_ERROR",
    "traceId": "2a3129b7-c6bb-4a8a-bd5c-d739246ec05d"
}
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

503 SERVICE UNAVAILABLE
HTTP Response - STATUS: E9002
HTTP/1.1 503 Service Unavailable
Content-Type: application/json

{
    "status": "E9002",
    "message": "Error mpi connection",
    "httpStatus": "SERVICE_UNAVAILABLE",
    "traceId": "dcf1ba46-67a8-4570-847f-4ec4fa90a6c5"
}
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

7.3. Authentication Details

GET /client/3ds/details/{uuid} Content Type: application/json, Authorization: Basic Auth
Method return details for authentication.
Success 3-D Secure Authentication. MPI return status:
Y (Full Authentication) - The customer was successfully authenticated.

Attempt 3-D Secure Authentication. MPI return status:
A (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

Challenge required
C Cardholder challenge required.
D Challenge required; decoupled authentication confirmed.

Information only
I Informational only; 3DS Requestor challenge preference acknowledged.

Error 3-D Secure Authentication results. MPI return one of statuses:
N (Authentication Failed) - The customer failed authentication, and the transaction is denied. The cardholder’s password (or other authentication information) failed validation, thus, the issuer is not able to authenticate the cardholder.
U (Unable to Complete Authentication) - Authentication could not be performed due to technical or other problems.
R Not authenticated because the issuer is rejecting authentication.

7.3.1. Request

GET /client/3ds/details/f3bc9e98-5579-4361-8b09-f64b6fc4e2cc HTTP/1.1
Authorization: Basic VXNlcjpQYXNzd29yZA==
Host: ecom-staging.fenige.pl
Table 333. /client//3ds/details/{cardAuthenticationId}
Parameter Description

cardAuthenticationId

Unique identifier for 3ds verification

7.3.2. Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 410

{
  "cardAuthenticationId" : "a2c1f56b-b6a1-4401-a594-286a875ab240",
  "provider" : "MASTERCARD",
  "transactionStatus" : "Y",
  "cardAuthenticationStatus" : "AUTHENTICATION_FINISHED",
  "transactionXId" : "a0ea1bac-5c4b-4c10-8be7-33ccec38faa4",
  "cavv" : "jEu04WZns7pbARAApU4qgNdJTag",
  "eci" : "01",
  "transactionStatusReason" : "04",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Path Type Description

cardAuthenticationId

String

Unique identifier for 3ds verification

provider

String

Provider

transactionStatusReason

String

Provides information on why the Transaction Status field has the specified value. For MessageCategory 01 (PA), always included when TransactionStatus = N, U, or R. For MessageCategory 02 (NPA), as defined by the DS.

Possible values are:

01 - Card authentication failed, 02 - Unknown device, 03 - Unsupported device, 04 - Exceeds authentication frequency limit, 05 - Expired card, 06 - Invalid card number, 07 - Invalid transaction, 08 - No Card record, 09 - Security failure, 10 - Stolen card, 11 - Suspected fraud, 12 - Transaction not permitted to cardholder, 13 - Cardholder not enrolled in service, 14 - Transaction timed out at the ACS, 15 - Low confidence, 16 - Medium confidence, 17 - High confidence, 18 - Very high confidence, 19 - Exceeds ACS maximum challenges, 20 - Non-Payment transaction non supported, 21 - 3RI transaction not supported, 22 - ACS technical issue, 23 - Decoupled Authentication required by ACS but not requested by 3DS Requestor, 24 - 3DS Requestor Decoupled Max Expiry Time exceeded, 25 - Decoupled Authentication was provided insufficient time to authenticate cardholder. ACS will not make attempt, 26 - Authentication attempted but not performed by the cardholder, 27-79 - Reserved for future EMVCo use (values invalid until defined by EMVCo), 80-99 - Reserved for DS use

cardAuthenticationStatus

String

Card authentication statusPossible values are: INITIALIZED, PREAUTHENTICATION_INITIATED, PREAUTHENTICATION_CONFIRMED, AUTHENTICATION_REJECTED, AUTHENTICATION, AUTHENTICATION_FINISHED

transactionStatus

String

Indicates whether a transaction qualifies as an authenticated transaction or account verification. Possible values are:

Y Authentication/account verification successful. N Not authenticated/account not verified; transaction denied. U Authentication/account verification could not be performed; technical or other problem as indicated in ARes or RReq. A Attempts processing performed; not authenticated/verified, but a proof of attempted authentication/verification is provided. C Challenge required; additional authentication is required using the CReq/CRes. R Authentication/account verification rejected; issuer is rejecting authentication/verification and request that authorization not be attempted. D Challenge required; decoupled authentication confirmed. I Informational only; 3DS Requestor challenge preference acknowledged. Note: The CRes message can contain only a value of Y or N. Values of D and I are only applicable for 3DS version 2.2.0.

transactionXId

String

Server transaction Id generated by DS

cavv

String

This property is determined by the Access Control Server. This property will be valid if the TransactionStatus is "Y" or "A". The value may be used to provide proof of authentication.

eci

String

This property is determined by the Access Control Server. This property contains the two digit Electronic Commerce Indicator (ECI) value, which is to be submitted in a credit card authorization message. This value indicates to the processor that the customer data in the authorization message has been authenticated. The data contained within this property is only valid if the TransactionStatus is "Y" or "A".

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

8. BLIK

General information
BLIK payments are a fast, convenient and secure method of making online transactions. Customers increasingly appreciate such modern conveniences. So give them the opportunity to use them on an everyday basis. Be an entrepreneur who cares about the convenience of his customers and implements solutions to improve the shopping process.

How does it work
Customer choose the BLIK payment method, in order to complete the transaction he has to provide a BLIK code from bank application. The BLIK code is a one-off, 6-digit code, it is valid for 2 minutes. After that time, new one has to be generated. When code is provide it has to be also confirmed in bank app and that ends the transaction.

8.1. BLIK Payment

8.1.1. Overview

General information
BLIK is the simplest and most popular type of integration. Errors and retries of transaction are handled by BLIK. Merchants use BLIK payment form instead of implementing their own.

Example BLIK payment form

eblik payment form

For development purposes, please note the following special rule for BLIK codes: Use codes that begin with "777 xxx", to process payment successfully. For codes that begin with any other number, the transaction will be rejected.

BLIK payment transaction flow
eblik payment flow

8.1.2. Request

Request - BLIK authorization request
HTTP Request
POST /client/payments/blik HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 565
Host: ecom-staging.fenige.pl

{
  "requestUuid" : "9dbc5bfb-d67a-47e3-af81-4d84115f8a77",
  "amount" : 1000,
  "currency" : "PLN",
  "firstDescriptionLine" : "Shop description",
  "secondDescriptionLine" : "Second line of description",
  "thirdDescriptionLine" : "Third line of description",
  "fourthDescriptionLine" : "https://ecom-staging.fenige.pl/",
  "redirectUrlAuthorized" : "https://ecom-staging.fenige.pl/",
  "redirectUrlDenied" : "https://ecom-staging.fenige.pl/",
  "merchantUuid" : "ab57176f-7ab2-426c-9974-943b33b59830",
  "terminalUuid" : "5f30c42d-a8f5-4580-ac0b-25d3e894f7d0"
}
Table 334. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 335. Authorize request fields
Path Type Constraints Description

requestUuid

String

Request’s unique uuid in system

amount

Number

@Must be at least 100, @Must not be null

The total transfer amount (in pennies)

currency

String

@NotNull @Must be PLN

Currency for transaction (in accordance with ISO-4217), example: USD

redirectUrlAuthorized

String

@Must be a well-formed URL, @Must not be null

User redirect URL after the transaction is authorized.

redirectUrlDenied

String

@Must be a well-formed URL, @Must not be null

User redirect URL after the transaction is denied.

firstDescriptionLine

String

@Length must be between 1 and 35 inclusive, @Must not be blank

Description for order. It will be displayed on the BLIK website. 4 lines of description can be provided

secondDescriptionLine

String

@Length must be between 1 and 35 inclusive

Second line of description.

thirdDescriptionLine

String

@Length must be between 1 and 35 inclusive

Third line of description.

fourthDescriptionLine

String

@Length must be between 1 and 35 inclusive, @Must be a well-formed URL

Fourth line of description. Should contain shop address.

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

terminalUuid

String

@Must not be null

Terminal’s unique uuid in system

8.1.3. Response

Response status
Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

500 INTERNAL SERVER ERROR

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E9000 - Returned when reason is unknown.

200 OK
HTTP Response - Success transaction
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1761

{
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK",
  "base64Form" : "PGh0bWw+PFNDUklQVCBMQU5HVUFHRT0iSmF2YXNjcmlwdCI+ZnVuY3Rpb24gT25Mb2FkRXZlbnQoKSB7ZG9jdW1lbnQuZG93bmxvYWRGb3JtLnN1Ym1pdCgpO308L1NDUklQVD48Ym9keSBPbkxvYWQ9Ik9uTG9hZEV2ZW50KCk7Ij48Zm9ybSBuYW1lPSJkb3dubG9hZEZvcm0iIGFjY2VwdC1jaGFyc2V0PSJJU08tODg1OS0yIiBhY3Rpb249Imh0dHBzOi8vMTkzLjI3LjYuMjI1L2JsaWt3ZWIvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb25faW5pdC9zdWJtaXQiIG1ldGhvZD0iUE9TVCI+PElOUFVUIHR5cGU9ImhpZGRlbiIgbmFtZT0iVHlwZSIgdmFsdWU9IklwYXkyIj48SU5QVVQgdHlwZT0iaGlkZGVuIiBuYW1lPSJNZXJjaGFudElEIiB2YWx1ZT0iMTcxOTUiPjxJTlBVVCB0eXBlPSJoaWRkZW4iIG5hbWU9IkN1cnJlbmN5IiB2YWx1ZT0iUExOIj48SU5QVVQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBbW91bnQiIHZhbHVlPSIxMDAwIj48SU5QVVQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDdXN0b21QYXJhbSIgdmFsdWU9Ijg0MGY1ZjYzOGY0OTQwNGZiMGU1OGQwMDU1NTg1NzM4Ij48SU5QVVQgdHlwZT0iaGlkZGVuIiBuYW1lPSJEZXNjcmlwdGlvbiIgdmFsdWU9ImV4YW1wbGV8ZGVzY3JpcHRpb258w7PEhcWbxIfFm8SFfCI+PElOUFVUIHR5cGU9ImhpZGRlbiIgbmFtZT0iVGltZXN0YW1wIiB2YWx1ZT0iMjAyMi0wNi0yOVQxNTo0MDo1OC4zMjIrMDI6MDAiPjxJTlBVVCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik1DQyIgdmFsdWU9IjA3NDIiPjxJTlBVVCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbnRyb2xEYXRhIiB2YWx1ZT0iZDkyZjI2MTI1NmQwMWNiNjU4ZWI3MzIwZDczNDE2MjYyOGNhOTViNzRmYWRmY2UxOGFmMDliMDdkOWIwOGNjMCI+PC9mb3JtPjwvYm9keT48L2h0bWw+",
  "type" : "Ipay2",
  "merchantID" : "17195",
  "currency" : "PLN",
  "amount" : "1000",
  "customParam" : "9dbc5bfbd67a47e3af814d84115f8a77",
  "description" : "Shop description|Second line of description|Third line of description|Fourth line of description",
  "timestamp" : "2022-06-29T15:40:58.322+02:00",
  "mcc" : "0742",
  "controlData" : "74a0b0d45d60faf2d076567d77f7675cb6613fdcec41be3da8a181d2c55a0a1f",
  "requestUuid" : "9dbc5bfb-d67a-47e3-af81-4d84115f8a77"
}
Table 336. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

status

String

Response code from Fenige system

amount

String

Amount that will be send to BLIK system

currency

String

Currency that will be send to BLIK system

timestamp

String

Field that describe when transaction was created. After some time BLIK will not accept this transaction. (global parameter)

type

String

BLIK transaction type, Fenige defines which should be used. At this moment BLIK supports only Ipay2

mcc

String

Merchant category code

customParam

String

Unique transaction identifier

merchantID

String

Fenige identifier

controlData

String

Control data that would be used for BLIK to verify that transaction was made in Fenige

description

String

Description for order. It will be displayed on the BLIK website. 4 lines of description can be provided and each line has to be separated with | character.

base64Form

String

HTML page encoded base64 that includes all necessary data that has to be send to BLIK. Page can be simply decoded and used for making transactions.

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:11 GMT
Connection: close
Content-Length: 457

{
  "errors" : {
    "redirectUrlAuthorized" : [ "must not be null" ],
    "amount" : [ "must not be null" ],
    "merchantUuid" : [ "must not be null" ],
    "currency" : [ "must not be null" ],
    "redirectUrlDenied" : [ "must not be null" ],
    "terminalUuid" : [ "must not be null" ],
    "firstDescriptionLine" : [ "must not be blank" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "2420aadf-518f-474d-a57a-e2304e6991f6"
}
Table 337. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:11 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "1c338ed1-09ac-4ae2-86e8-6f348e656b9b"
}
Table 338. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:13 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "b1dedec1-c7c7-48d1-8184-3929ddcdd4c8"
}
Table 339. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "fc5ac22f-26a9-441c-88a9-af980aca23de"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "f78c53ae-a529-4569-b787-64e0810251d3"
}
Table 340. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}

8.2. Refund

8.2.1. Overview

POST /client/payments/blik/refund Content Type: application/json, Authorization: Basic Auth

General information
This method can be use for refund amount of a previously performed transaction that has to be APPROVED. Total amount of refund cannot exceed the payment amount. Refund may be made up to 13 months from the date of the transaction. Canceled and corrected transactions cannot be refunded.

Flow
The returns are processed asynchronously, which means that when the PSP perform the API request, result will be not present immediately. With the first API request PSP will know that transaction was accepted for processing or rejected. After the transaction has been processed on Fenige side the final refund result will be sent to address provided in terminal configuration.

Refund flow
blik refund flow

8.2.2. Request

Request - Refund request
HTTP Request
POST /client/payments/blik/refund HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 145
Host: ecom-staging.fenige.pl

{
  "requestUuid" : "569757ef-bfcb-4d0a-9a6e-9b68aa1631d6",
  "terminalUuid" : "a8229cb6-cd8c-4227-9694-c6705e551600",
  "amountToRefund" : 100
}
Table 341. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 342. Authorize request fields
Path Type Constraints Description

requestUuid

String

@Must not be null

Transaction request uuid

terminalUuid

String

Terminals’s unique uuid in system

amountToRefund

Number

@Must not be null

Amount to refund (in pennies)

8.2.3. Response

Response status
Status Description

200 OK

STATUS: S0004 - Returned when refund is declined

202 ACCEPTED

STATUS: S0004 - Returned when refund is accepted and already processing.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

STATUS: E0183 - Returned when sum of refunds exceed transaction value

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing. STATUS: E0155 - Returned when transaction does not exists

422 UNPROCESSABLE ENTITY

STATUS: E0189 - Returned when transaction was not approved.

STATUS: E00180 - Returned when time for making the refund has expired.

500 INTERNAL SERVER ERROR

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9800 - BLIK service is unavailable.

200 OK
HTTP Response - Refund declined
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 187

{
  "status" : "S0008",
  "message" : "Transaction declined.",
  "httpStatus" : "OK",
  "requestUuid" : "c0647b76-fa0f-45d3-b679-e5db1ac0b925",
  "declineReason" : "Internal BLIK error"
}
Table 343. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

requestUuid

String

Request unique uuid in system

declineReason

String

BLIK decline reason

202 ACCEPTED
HTTP Response - Refund accepted
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 136

{
  "status" : "S0004",
  "message" : "PENDING",
  "httpStatus" : "ACCEPTED",
  "requestUuid" : "3c4577a0-30f9-47e8-87bd-fdce3fc25ea6"
}
Table 344. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

requestUuid

String

Request unique uuid in system

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:51:41 GMT
Connection: close
Content-Length: 265

{
  "errors" : {
    "requestUuid" : [ "must not be null" ],
    "amountToRefund" : [ "must not be null" ],
    "terminalUuid" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "490ac020-8a6e-4190-ac2f-e8c5ca5321e8"
}
Table 345. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:51:41 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "cca7f64f-b23a-4d41-ad64-39b12182f650"
}
Table 346. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:51:41 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "6595d6eb-1962-4a37-80ae-41c833d38334"
}
Table 347. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "fc5ac22f-26a9-441c-88a9-af980aca23de"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "f78c53ae-a529-4569-b787-64e0810251d3"
}
Table 348. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}
Table 349. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

8.3. Cancel transaction

8.3.1. Overview

POST /client/payments/blik/cancel-transaction Content Type: application/json, Authorization: Basic Auth

General information
Cancellation of a previous Transaction (so-called full reverse). Requests are processed synchronously, which means that the PSP perform the API request, result will be present immediately in the response. Possible response statuses are: APPROVED when reversal is approved, REJECTED when Fenige reject reversal, DECLINED when BLIK refuses to perform reversal. Correct transaction method cannot be performed if any refund was made. Full or partial reversal may be performed only once up to 7 days after transaction. Canceled transactions cannot be refunded.

8.3.2. Request

Request - Cancel transaction request
HTTP Request
POST /client/payments/blik/cancel-transaction HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 149
Host: ecom-staging.fenige.pl

{
  "requestUuid" : "adc79bf9-adfe-4267-902c-f668eaf2e471",
  "terminalUuid" : "ca314d75-27cb-49a8-9864-e4111ba72a44",
  "reason" : "Cancel reason"
}
Table 350. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 351. Authorize request fields
Path Type Constraints Description

requestUuid

String

@Must not be null

Transaction request uuid

terminalUuid

String

@Must not be null

Terminal’s unique uuid in system

reason

String

@Optional @Length(min = 1, max = 35)

Cancel transaction reason

8.3.3. Response

Response status
Status Description

200 OK

STATUS: S0002 - Returned when reversal is approved

STATUS: S0008 - Returned when reversal is declined

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

STATUS: E0183 - Returned when sum of refunds exceed transaction value

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing. STATUS: E0155 - Returned when transaction does not exists

409 CONFLICT

STATUS: E0165 - Returned when reversal for transaction exists.

422 UNPROCESSABLE ENTITY

STATUS: E0189 - Returned when transaction was not approved.

E0164 - returned when attempts to refund was made. E0166 - returned when the time for making the reversal has expired. E0167 - returned when reversal amount exceed transaction amount.

500 INTERNAL SERVER ERROR

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9800 - BLIK service is unavailable.

200 OK
HTTP Response - Cancel transaction approved
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 142

{
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK",
  "requestUuid" : "9d7c00df-fb32-44a0-8c89-c261e8bd9ee9"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 187

{
  "status" : "S0008",
  "message" : "Transaction declined.",
  "httpStatus" : "OK",
  "requestUuid" : "38f4f4a8-66ba-4b89-9078-3fd0ba94b789",
  "declineReason" : "Internal BLIK error"
}
Table 352. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

requestUuid

String

Request unique uuid in system

declineReason

String

Decline reason

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:36 GMT
Connection: close
Content-Length: 218

{
  "errors" : {
    "requestUuid" : [ "must not be null" ],
    "terminalUuid" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "f2a5a328-3260-443c-8506-944f50d79284"
}
Table 353. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:36 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "30913bee-0f28-4c81-be2a-44e7f1def9ec"
}
Table 354. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:37 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "220764e3-8d14-4bff-ba6f-1519d97ceec3"
}
Table 355. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "fc5ac22f-26a9-441c-88a9-af980aca23de"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "f78c53ae-a529-4569-b787-64e0810251d3"
}
Table 356. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}

8.4. Correct transaction

8.4.1. Overview

POST /client/payments/blik/correct-transaction Content Type: application/json, Authorization: Basic Auth

General information
Correction of a previous Transaction (so-called partial reverse). Requests are processed synchronously, which means that the PSP perform the API request, result will be present immediately in the response. Possible response statuses are: APPROVED when reversal is approved, REJECTED when Fenige reject reversal, DECLINED when BLIK refuses to perform reversal. Correct transaction method cannot be performed if any refund was made. Full or partial reversal may be performed only once up to 7 days after transaction. Corrected transactions cannot be refunded.

8.4.2. Request

Request - Correct transaction request
HTTP Request
POST /client/payments/blik/correct-transaction HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 177
Host: ecom-staging.fenige.pl

{
  "requestUuid" : "cf9dae5b-a009-41ff-abc5-b9ace1265521",
  "terminalUuid" : "834666ca-1d01-4ee0-805d-e1bb5e3916c2",
  "amountToCorrect" : 100,
  "reason" : "Correct reason"
}
Table 357. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 358. Authorize request fields
Path Type Constraints Description

requestUuid

String

@Must not be null

Transaction request uuid

terminalUuid

String

@Must not be null

Terminal’s unique uuid in system

reason

String

@Optional @Length(min = 1, max = 35)

Correct transaction reason

amountToCorrect

Number

@Must be at least 1, @Must not be null

Amount that will reduce the transaction value

8.4.3. Response

Response status
Status Description

200 OK

STATUS: S0002 - Returned when reversal is approved

STATUS: S0008 - Returned when reversal is declined

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

STATUS: E0183 - Returned when sum of refunds is equal or exceed transaction value

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing. STATUS: E0155 - Returned when transaction does not exists

409 CONFLICT

STATUS: E0165 - Returned when reversal for transaction exists.

422 UNPROCESSABLE ENTITY

STATUS: E0189 - Returned when transaction was not approved.

E0164 - returned when attempts to refund was made. E0166 - returned when the time for making the reversal has expired. E0167 - returned when reversal amount exceed transaction amount.

500 INTERNAL SERVER ERROR

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9800 - BLIK service is unavailable.

200 OK
HTTP Response - Correct transaction approved
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 142

{
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK",
  "requestUuid" : "da34b499-ad98-41d9-b3b2-0752b6e44767"
}
HTTP Response - Correct transaction declined
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 187

{
  "status" : "S0008",
  "message" : "Transaction declined.",
  "httpStatus" : "OK",
  "requestUuid" : "5c77a251-3f02-418e-94ac-fbaf6b79a957",
  "declineReason" : "Internal BLIK error"
}
Table 359. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

requestUuid

String

Request unique uuid in system

declineReason

String

Decline reason

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:37 GMT
Connection: close
Content-Length: 266

{
  "errors" : {
    "requestUuid" : [ "must not be null" ],
    "amountToCorrect" : [ "must not be null" ],
    "terminalUuid" : [ "must not be null" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "21b0d167-c505-457b-b7c9-6157c1097bef"
}
Table 360. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:37 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "d5a9a90d-b29a-4fc7-8cc4-3031593b6207"
}
Table 361. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 135
Date: Fri, 26 Apr 2024 12:52:38 GMT

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "4bca9b45-4f09-42fd-95e1-5068c456718c"
}
Table 362. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

404 NOT FOUND
HTTP Response - STATUS: E0122
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0122",
  "message" : "Merchant not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "fc5ac22f-26a9-441c-88a9-af980aca23de"
}
HTTP Response - STATUS: E0132
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 146

{
  "status" : "E0132",
  "message" : "Terminal not exists.",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "f78c53ae-a529-4569-b787-64e0810251d3"
}
Table 363. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

500 INTERNAL SERVER ERROR
HTTP Response - STATUS: E9000
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:43 GMT
Connection: close
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "bf7fc4f9-6b91-4691-a03b-c16cdfb2506c"
}

8.5. Webhooks

General information about webhooks mechanism and signature verifying in Webhooks section

8.5.1. BLIK transaction status webhook request body

When transaction was approved
Content-Type: application/json
X-MERCHANT-SECRET: 3cbd17f561150a1394cabbe2b6031fd83f3f3081abe28c32b7fed16f32aebc4a
X-MERCHANT-TIMESTAMP: 1614800720

{
  "transactionStatus": "APPROVED",
  "requestUuid": "a513a4c5-1dd7-4606-bcbc-917c9c00d904",
  "controlUuid": "e634bf4b-7cb7-4220-86e8-95e986879a84"
}
When transaction was declined
Content-Type: application/json
X-MERCHANT-SECRET: 3cbd17f561150a1394cabbe2b6031fd83f3f3081abe28c32b7fed16f32aebc4a
X-MERCHANT-TIMESTAMP: 1614800720

{
  "transactionStatus": "DECLINED",
  "requestUuid": "7cc531e3-f2c1-4c90-9668-55567580255f",
  "controlUuid": "e28f7423-ae21-44bb-b27e-a2038cb29181"
}
Table 364. Headers description
Path Type Rule Description

X-MERCHANT-SECRET

String

Always present

SHA256 Hash string composed from controlUuid and secret token placed in request body of this webhook

X-MERCHANT-TIMESTAMP

Numeric string

Always present

Timestamp of server response in UNIX format for instance: 1614023731

Table 365. Request fields description
Path Type Rule Description

controlUuid

UUID

Always present

Unique identifier of request body, assigned by Fenige server for security purposes

requestUuid

UUID

Always present

Unique identifier of transaction.

transactionStatus

String

Always present

Internal transaction status in Fenige system

8.5.2. BLIK refund status webhook request body

When refund was approved
Content-Type: application/json
X-MERCHANT-SECRET: 3cbd17f561150a1394cabbe2b6031fd83f3f3081abe28c32b7fed16f32aebc4a
X-MERCHANT-TIMESTAMP: 1614800720

{
  "refundStatus": "APPROVED",
  "requestUuid": "a513a4c5-1dd7-4606-bcbc-917c9c00d904",
  "controlUuid": "e634bf4b-7cb7-4220-86e8-95e986879a84"
}
When refund was declined
Content-Type: application/json
X-MERCHANT-SECRET: 3cbd17f561150a1394cabbe2b6031fd83f3f3081abe28c32b7fed16f32aebc4a
X-MERCHANT-TIMESTAMP: 1614800720

{
  "refundStatus": "DECLINED",
  "requestUuid": "7cc531e3-f2c1-4c90-9668-55567580255f",
  "controlUuid": "e28f7423-ae21-44bb-b27e-a2038cb29181"
}
Table 366. Headers description
Path Type Rule Description

X-MERCHANT-SECRET

String

Always present

SHA256 Hash string composed from controlUuid and secret token placed in request body of this webhook

X-MERCHANT-TIMESTAMP

Numeric string

Always present

Timestamp of server response in UNIX format for instance: 1614023731

Table 367. Request fields description
Path Type Rule Description

controlUuid

UUID

Always present

Unique identifier of request body, assigned by Fenige server for security purposes

requestUuid

UUID

Always present

Unique identifier of transaction.

refundStatus

String

Always present

Internal refund status in Fenige system

9. Open banking

9.1. Open banking Payment

POST /client/payments/open-banking/initialize Content Type: application/json, Authorization: Basic Auth
    Method is used to generate open banking payment link.
Before first use this endpoint needs to be enabled for used PSP in admin panel by Customer Service. The way transaction is initiated depends on terminal configuration in admin
panel.
    This endpoint is idempotent so if you execute more than one request with the same request_uuid even at the same time, only the first registered transaction will be processed
further.
    Once initiated transaction can be refunded once only if it's already in status APPROVED

9.1.1. Request

Request - open banking payment
HTTP Request
POST /client/payments/open-banking/initialize HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 633
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "dc5f071f-3f8d-4813-90b0-c7d946e8ee6d",
  "terminalUuid" : "594c5c23-b08e-435c-b684-391d4a33cbeb",
  "requestUuid" : "b30781d1-4450-43ad-9131-2413258f50e7",
  "amount" : 1000,
  "currency" : "EUR",
  "email" : "test@fenige.pl",
  "firstName" : "user",
  "lastName" : "testUser",
  "receiverAmount" : 900,
  "countryOfResidence" : "DE",
  "street" : "Karola Olszewskiego",
  "houseNumber" : "10",
  "city" : "Lublin",
  "postalCode" : "24-110",
  "province" : "NY",
  "redirectUrlApproved" : "some.redirecturlapproved.com",
  "redirectUrlDeclined" : "some.redirecturldeclined.com",
  "addressIp" : "192.168.1.1"
}
Table 368. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 369. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

terminalUuid

String

@Must not be null

Terminal’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

amount

Number

@Must be at most 200000000, @Must be positive, @Must not be null

The total transfer amount (in pennies).

receiverAmount

Number

@Must be at most 200000000, @Must be positive, @Must not be null

Declared amount. Fenige Information field (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), for now only EUR is enabled

firstName

String

@Length must be between 2 and 128 inclusive, @Must not be empty

First name of payer

lastName

String

@Length must be between 2 and 128 inclusive, @Must not be empty

Last name of payer

email

String

@Must be a well-formed email address, @Must not be blank

Payer’s email

addressIp

String

@Must match the IP address format

The IP address of the order creator. Optional field, mandatory from 2021-05-03

countryOfResidence

String

@Must not be null

Sender country of residence

city

String

@Length must be between 2 and 128 inclusive, @Must not be blank, @Must not be empty

Sender city

street

String

@Length must be between 0 and 128 inclusive

Optional street name of sender

province

String

@Length must be between 0 and 128 inclusive

Optional USA state or CAN province code of sender

houseNumber

String

@Length must be between 0 and 128 inclusive, @Must not be blank, @Must not be empty

Sender house number

postalCode

String

@Length must be between 5 and 128 inclusive, @Must not be empty

Postal code of sender

redirectUrlApproved

String

@Length must be between 5 and 254 inclusive, @Must not be empty

Required redirect url approved

redirectUrlDeclined

String

@Length must be between 5 and 254 inclusive, @Must not be empty

Required redirect url declined

9.1.2. Response

Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

STATUS: E0135 - Returned when terminal for merchant not exist or all of them are inactive.

STATUS: E0137 - Returned when there is not terminal marked as default

422 UNPROCESSABLE ENTITY

STATUS: E0150 - Returned when transaction is rejected.

STATUS: E0151 - Returned when transaction is rejected, because currency is not supported.

STATUS: E0152 - Returned when transaction is rejected, because issuer is not supported.

STATUS: E01580 - Returned when transaction is rejected, because DataCenter card was expired.

STATUS: E0159 - Returned when transaction is rejected, because restricted transaction amount has occurred

STATUS: E01596 - Returned when transaction is rejected, because terminal has blocked transaction with card issued in restricted country

STATUS: E01601 - Returned when transaction is rejected, because terminal is blocked for provider

STATUS: E01602 - Transaction rejected, geographic scope is not permitted for this transaction

STATUS: E01607 - Transaction rejected, internal server error during authorization request generation

STATUS: E0200 - Returned when transaction is rejected, because card is blocked in Fenige System

STATUS: E0201 - Returned when transaction is rejected, because BIN is blocked in Fenige System

STATUS: E0202 - Returned when transaction is rejected, because Terminal is blocked in Fenige System

STATUS: E0204 - Returned when transaction is rejected, because user’s personal data was found on AML (sanctions) list

STATUS: E0205 - Returned when transaction is rejected, because Bank is blocked in Fenige System

STATUS: E0206 - Returned when transaction is rejected, because to many reject transactions and card is blocked

STATUS: E0207 - Returned when transaction is rejected, bacause to many attempts declined and card is blocked

STATUS: E0208 - Transaction rejected, second transaction with merchant advice code 03 or 21 within 30 days

STATUS: E0209 - Returned when sender or receiver name contains fraudulent phrase

STATUS: E0210 - Returned when sender has suspicious name

STATUS: E0211 - Returned when transaction is rejected, because card country is blocked in Fenige System.

STATUS: E01600 - Returned when transaction is declined, because 3DS 2.X flow invoked for other card number than specified in the request

STATUS: E11000 - Returned when transaction processing time set by terminal was exceeded

500 INTERNAL SERVER ERROR

STATUS: E0142 - Returned when commission configuration is not added for terminal.

STATUS: E0153 - Returned when transaction is declined, by problem with MIP connection.

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E0190 - Returned when currency rate is invalid.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

STATUS: E9002 - Returned when is error mpi connection.

STATUS: E9010 - Returned when is error DataCenter connection.

200 OK
HTTP Response - successful transaction
{
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK",
  "requestUuid" : "b30781d1-4450-43ad-9131-2413258f50e7",
  "openBankingId" : "examplecb4865f7e957400cbdea6392d1c",
  "paymentLink" : "somepaymentlink.fenige.pl/payment_link/?req=123"
}
Table 370. Response fields
Path Type Description

requestUuid

String

Unique requestUuid used to identify request, used for idempotency

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

openBankingId

String

External openbanking Transaction Id

paymentLink

String

Link to make a payment

400 BAD REQUEST
HTTP Response - STATUS: E8000
HTTP/1.1 400 Bad Request
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:04 GMT
Connection: close
Content-Length: 840

{
  "errors" : {
    "lastName" : [ "must not be empty" ],
    "amount" : [ "must not be null" ],
    "merchantUuid" : [ "must not be null" ],
    "city" : [ "must not be empty", "must not be blank" ],
    "postalCode" : [ "must not be empty" ],
    "requestUuid" : [ "must not be null" ],
    "houseNumber" : [ "must not be blank", "must not be empty" ],
    "countryOfResidence" : [ "must not be null" ],
    "terminalUuid" : [ "must not be null" ],
    "receiverAmount" : [ "must not be null" ],
    "firstName" : [ "must not be empty" ],
    "redirectUrlApproved" : [ "must not be empty" ],
    "redirectUrlDeclined" : [ "must not be empty" ],
    "currency" : [ "must not be null" ],
    "email" : [ "must not be blank" ]
  },
  "status" : "E8000",
  "httpStatus" : "BAD_REQUEST",
  "traceId" : "213914c4-4cd3-440e-855c-a0bdf8c25e99"
}
Table 371. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

401 UNAUTHORIZED
HTTP Response - STATUS: E8002
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:04 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "17933009-55eb-4708-a706-65da1bb360bd"
}
Table 372. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

403 FORBIDDEN
HTTP Response - STATUS: E8001
HTTP/1.1 403 Forbidden
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:04 GMT
Content-Length: 135

{
  "status" : "E8001",
  "message" : "Forbidden",
  "httpStatus" : "FORBIDDEN",
  "traceId" : "1edae949-a99b-4f6f-b9ec-99c30101fac9"
}
Table 373. Response fields
Path Type Description

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

10. Webhooks

General information
To use the webhooks functionality, you must notify Fenige Sales Department by email. Then an URL address and a secret token will be configured, thanks to which communication between the Fenige side and the client side will be more secure. After configuring the above-mentioned properties, you will receive Secret Token and then you can handle webhooks from the Fenige system. The URL must be specified by the client, requests from the Fenige system will be directed to this address. The Secret Token will be set by the Fenige employee and sent to the client.

webhook
Figure 1. In the picture above you can see basic idea of this webhook/event
Your server after receiving Webhook Event must return HTTP status 200 OK. Otherwise, the Fenige server will retry the request. There is 3 attempts for requesting your API. Repeated requests will be executing in 5 seconds intervals excluding timeout from client server.
In order to protect client API by polling or other undesirable actions, the Fenige system uses headers. If you want to use Webhook events, you need to do the header handling on your side.
Thanks to the 'X-MERCHANT-SECRET' header you can compare the hash on your backend side to eliminate attempts of unwanted requests. To build 'X-MERCHANT-SECRET' header:
1. Concatenate secret token established by you and Fenige’s employee with controlUuid from received request body of callback event
2. Hash with SHA256 function result of above operation
Example of 'X-MERCHANT-SECRET' building
import hashlib

# secret token established by client with fenige employee
secret = 'mNaU9TaK4m9myYYFBJgKu8slNH2fCKutJyzXwI'
# controlUuid received from webhook's request
controlUuid = 'c168a885-acfa-4a91-a1ad-ed7a042b7238'

# concatenate strings in correct order
concatenated = secret + controlUuid

# use SHA256 hashing function
hashed = hashlib.sha256(concatenated.encode('utf-8')).hexdigest()

# then compare 'hashed' variable with content of 'X-MERCHANT-SECRET' header

10.1. Clearing status

Method: HTTP POST
If you decide to handle this event, your endpoint will be notified when the transaction clearing status changes. This event allows you to eliminate unnecessary network traffic and polling the API for clearing status.

10.1.1. Clearing status webhook request body

When clearing packet was correctly approved
Content-Type: application/json
X-MERCHANT-SECRET: 3cbd17f561150a1394cabbe2b6031fd83f3f3081abe28c32b7fed16f32aebc4a
X-MERCHANT-TIMESTAMP: 1614800720

{
  "controlUuid": "e28f7423-ae21-44bb-b27e-a2038cb29181",
  "merchantUuid": "b315b0d4-bdbc-45a1-aec6-122c8766d7f7",
  "transactionStatus": "CLEARED",
  "clearingStatus": "APPROVED",
  "clearingFileName": "2021_03_25_09_34_44_290_Second International Merchant_16212_1520_clearing.IPM",
  "clearingFileId": "0022103250000001621250032",
  "requestUuids": [
    "d3b767cd-5fde-4901-beb6-f6260fa657ad",
    "18b900ba-8d4e-11eb-8dcd-0242ac130003"
  ]
}
When clearing was rejected
Content-Type: application/json
X-MERCHANT-SECRET: 3cbd17f561150a1394cabbe2b6031fd83f3f3081abe28c32b7fed16f32aebc4a
X-MERCHANT-TIMESTAMP: 1614800720

{
  "controlUuid": "e28f7423-ae21-44bb-b27e-a2038cb29181",
  "requestUuid": "7cc531e3-f2c1-4c90-9668-55567580255f",
  "transactionStatus": "DECLINED",
  "clearingStatus": "TIME_IS_OVER",
  "clearingErrorMessage": "Time for clearing has expired (7 days)"
}
Table 374. Headers description
Path Type Rule Description

X-MERCHANT-SECRET

String

Always present

SHA256 Hash string composed from secret token and requestUuid placed in request body of this webhook

X-MERCHANT-TIMESTAMP

Numeric string

Always present

Timestamp of server response in UNIX format for instance: 1614023731

Table 375. Request fields description
Path Type Rule Description

controlUuid

UUID

Always present

Unique identifier of request body, assigned by Fenige server for security purposes

merchantUuid

UUID

Optional

Merchant’s unique uuid in Fenige system.

requestUuid

UUID

Optional

Unique identifier of transaction. You can fetch details of transaction by this parameter

requestUuids

List<UUID>

Optional

Unique identifier of transactions. You can fetch details of transaction by this parameter

transactionStatus

String

Always present

Internal transaction status in Fenige system

clearingStatus

String

Optional

Clearing status of transaction in Fenige system

clearingErrorMessage

String

Optional

Clearing error additional message

clearingFileName

String

Optional

Name of Clearing file that has been sent to MASTERCARD/VISA

clearingFileId

Numeric string

Optional

ID of Clearing file that has been sent to MASTERCARD/VISA

10.2. Acquirer reconciliation date

Method: HTTP POST

If you decide to handle this event, your endpoint will be notified when the acquirer reconciliation date will be set.

In some cases, Fenige settles transactions with the payment organisation on a different day to the day of authorisation. With this functionality, you can find out on which day a transaction will be included in the settlement report with the merchant.

10.2.1. Acquirer reconciliation date webhook request body

Content-Type: application/json
X-MERCHANT-SECRET: 3cbd17f561150a1394cabbe2b6031fd83f3f3081abe28c32b7fed16f32aebc4a
X-MERCHANT-TIMESTAMP: 1614800720

{
  "controlUuid": "ce44a0e1-9fb7-45cf-acff-0fbd573b38e0",
  "orderId": "e28f7423-ae21-44bb-b27e-a2038cb29181",
  "acquirerReconciliationDate": "2024-03-08T15:07:38.442897668",
  "operationType": TRANSACTION
}
Table 376. Headers description
Path Type Rule Description

X-MERCHANT-SECRET

String

Always present

SHA256 Hash string composed from secret token and controlUuid placed in request body of this webhook

X-MERCHANT-TIMESTAMP

Numeric string

Always present

Timestamp of server response in UNIX format for instance: 1614023731

Table 377. Request fields description
Path Type Rule Description

orderId

String/UUID

Always present

Unique identifier of transaction. You can fetch details of transaction by this parameter.

acquirerReconciliationDate

LocalDateTime

Always present

Acquirer Reconciliation Date from Fenige system.

operationType

String

Always present

Operation type. Possible values: TRANSACTION, REFUND

11. Payment API JWE

General information
Payment API JWE uses the same methods as Payment API and allows to encrypt a payment card number. To use this functionality you have to notify Fenige support to generate RSA key pair. After generating the keys, it will be sent with its version, also every Fenige merchant can check information about his keys on a method exposed to API fenige (more in check public keys subsection). Private key will be store on the Fenige side and the Public one will be send to client in order to card number encryption. Each pair of keys is unique to each merchant and has a 2-year shelf life. Before the keys expiry date Fenige support will be notified to generate new RSA keys. See https://tools.ietf.org/html/rfc7516 for detailed information about JWE.

Versioning
Each key pair has a version which specifies which key the merchant used to encrypt the card number. By default, the older key will be used to decrypt the card number, but note that when the older one expires, its replacement will be used by default, so describing which version of key was used to encrypt is recommended.

11.1. Encryption

The algorithm used for encryption:

JWE header

Name

Description

alg

RSA-OAEP-256

Cryptographic algorithm used to encrypt CEK

enc

A256GCM

Identifies the content encryption algorithm used to perform authenticated encryption

Encryption examples

Java

using nimbus-jose-jwt library

import com.nimbusds.jose.*;
import com.nimbusds.jose.crypto.RSAEncrypter;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.SerializationUtils;

import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.time.Instant;
import java.util.Base64;


public class JweCardEncrypt {

    private static final String ALGORITHM = "RSA";
    private final KeyFactory keyFactory;

    public JweCardEncrypt() throws NoSuchAlgorithmException {
        keyFactory = KeyFactory.getInstance(ALGORITHM);
    }

    public String encryptCardNumber(String cardNumber) throws Exception {

        String publicKeyContent = getPublicKey()
                .replace("-----BEGIN PUBLIC KEY-----", "")
                .replace("-----END PUBLIC KEY-----", "")
                .replace("\n", "");

        X509EncodedKeySpec encodedKeySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(publicKeyContent));

        RSAPublicKey rsaPublicKey = (RSAPublicKey) keyFactory.`generatePublic`(encodedKeySpec);
        JWEHeader.Builder headerBuilder = new JWEHeader.Builder(JWEAlgorithm.RSA_OAEP_256, EncryptionMethod.A256GCM);
        JWEHeader header = headerBuilder.type(JOSEObjectType.JOSE)
                                        .customParam("iat",
                                                     Instant.now()
                                                            .getEpochSecond())
                                        .keyID(DigestUtils.sha1Hex(rsaPublicKey.getEncoded()))
                                        .build();
        JWEObject jweObject = new JWEObject(header, new Payload(SerializationUtils.serialize(cardNumber)));
        jweObject.encrypt(new RSAEncrypter(rsaPublicKey));
        return jweObject.serialize();
    }

    /* Public key received from Fenige */
    public String getPublicKey() {
        return "-----BEGIN PUBLIC KEY-----\n" +
               "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo7vHPuwRxESCI7mVlj/Q\n" +
               "MTWwxmmzHmECWRXY+yxjCeJy+LUoBX3NN0lC2k5LF4JQGe+xciiIhgLYNYjykKzJ\n" +
               "yiYDX9KrFG9SBA9eqPL/or1L7GUwEMHA88da9CUmCW/EbDbwiy9uEYw7VkwL667l\n" +
               "tGYPq6zWr6VfAppF6dzr/t03UBXu52k/YYyDTGWIF+QLo89mNMojvWEnTmTd4rb7\n" +
               "avCiuCG4UIldgn+N6JkkiVcGs1ILpTSv52hT5eTvMSisesmkuYd+yKEKcpKE2kmW\n" +
               "vXDhq11BR/Ik4B2g4AcD9TMSm6vOdEWl7oLYr5DOsIFVtq/S4q8vogUaiXLzI0Ii\n" +
               "gwIDAQAB\n" +
               "-----END PUBLIC KEY-----";
    }
}

11.2. Check public keys

GET /merchants/keys/{{UUID}} Content Type: application/json, Authorization: Basic Auth
Using this method, client can check his public keys with basic details.
Remember to do not use this method before every payment.

11.2.1. Request

HTTP Request
GET /merchants/keys/59fb237f-7618-4c11-9e9e-93e1d1f35b36 HTTP/1.1
accept-encoding: gzip
user-agent: ReactorNetty/1.0.38
Authorization: Basic dXNlcjpwYXNzd29yZA==
Accept: application/json
Host: ecom-staging.fenige.pl
Table 378. Request headers
Name Description

Authorization

Basic auth credentials for PSP

11.2.2. Response

200 OK
HTTP Response
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:42 GMT
Content-Length: 637

{
  "merchantUUID" : "5dbb9ed4-aaca-4b23-844d-8c2befbe1177",
  "merchantName" : "merchant_name",
  "expiredDate" : "2026-04-26 03:00:00",
  "publicKey" : "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+3EfZP8iKM7loVuuIWVZ\n0w0TedeQ3/bcfLb24qs4gw27hprXGA6IRtpj8aoXERKMtxw3IqZz3Gl5xKw4MTzL\nPJiGmeLotnV3hB5o3qVCoIlDZh827WolZPnWKIsaN5Z6OeZe4fyMQGWtaNSbYaEl\n3st/0FT3Eo9/CN6mS9jkyKa+T6PrjiV/2G0zD15FYnv4KJ0x7NZfNU5VuM2QTpH7\nISjOkL5DFr91+6kCA05YR8cjVTEK3ioErEW2DxXhcsdZF8xl9VI0biSjxqsM8RCm\nulQ2VzUGP6xplPtC3w21Rl51j185IfhMlSnBomO5oqC0J1m+fs+yj39Iv05/2pEk\nLwIDAQAB\n-----END PUBLIC KEY-----",
  "keysVersion" : 1
}
Table 379. Response fields
Path Type Description

merchantUUID

String

Merchant UUID

merchantName

String

Merchant name

expiredDate

String

Public key expiry date

publicKey

String

Public key content

keysVersion

Number

Version of keys

200 OK with replacement public key
HTTP Response
HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:42 GMT
Content-Length: 1210

{
  "merchantUUID" : "59fb237f-7618-4c11-9e9e-93e1d1f35b36",
  "merchantName" : "merchant_name",
  "expiredDate" : "2024-05-01 03:00:00",
  "publicKey" : "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApkbhiS7K6suxnTlG49jg\n3tnwrr4kC+t0FyE/nTyinuemcYJNexcVwKSDj9u1k90ZIlZ9I+mI1z6UNqReYynU\n7klyynFHaD1aEHhQfizN1MnqlpFlBr9LKakglDoMRspdNrpGTkWZIp3EKNvDAuKn\nNhC9T3JEJ+01LCGlP7ELblCj2vq+FsbYDI6DrHFBsTpIIJPq94KpeCCWhNzqyyJG\nsRQQY1wHF5GC29e+oQwLKJ2D8K9yjGjnF9ngF7NFExEXrUtbbDpTC4ubOCm1CSKy\nTeNnOjVVoB2sYfjY3SAH2FvnnUk6HMCW0SymVphViC8d5b2U4QnrKZrx/hsZNHa/\nYQIDAQAB\n-----END PUBLIC KEY-----",
  "keysVersion" : 1,
  "replacementExpiredDate" : "2026-04-26 03:00:00",
  "replacementPublicKey" : "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAidwNzgR82MxGNLT6xtIj\n68IZRXQkuBJ0F9cgY5gWHs6nNJ2962s9INX5JMdu67OSdebcEE0K+3Up5RduCEOn\nSq761edTI6qHVvCjpXsjfKiTHPwbfyqOVz0+93GDO3Jbtnrp4c5OIhAgp1+a8yN3\nTTMcOWQBpYenJtPKf1NFIM/+tuzprU80jtvQ6WOsg8R2AiV/dXHIMPdGR0YMGYO2\n8HYsptRouOZGktvv4Q9Y0v5QK6WSIQ/c3TRbtoECTwtjNmDzo99l2AURM8447NwU\nv+KcWIREPKQOyZo5AgA9hAwCD6zSlprSUn4yI8V2oTC1q4EKftLaHZIismm8+n6S\ncwIDAQAB\n-----END PUBLIC KEY-----",
  "replacementKeysVersion" : 2
}
Table 380. Response fields
Path Type Description

merchantUUID

String

Merchant UUID

merchantName

String

Merchant name

expiredDate

String

Public key expiry date

publicKey

String

Public key content

keysVersion

Number

Version of keys

replacementExpiredDate

String

Expiry date of replacement keys

replacementPublicKey

String

Replacement public key content

replacementKeysVersion

Number

Version of replacement keys

401 UNAUTHORIZED
HTTP Response
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Realm"
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=ISO-8859-1
Content-Length: 141
Date: Fri, 26 Apr 2024 12:52:41 GMT

{
  "status" : "E8002",
  "message" : "Unauthorized",
  "httpStatus" : "UNAUTHORIZED",
  "traceId" : "a3d81196-dd95-429e-8f1b-13da80723de5"
}
Table 381. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

404 NOT FOUND
HTTP Response
HTTP/1.1 404 Not Found
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:41 GMT
Content-Length: 153

{
  "status" : "E8009",
  "message" : "Merchant RSA keys not found",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "4f880cf0-0de2-4504-a406-ce3b6bbcac61"
}
Table 382. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

Response status

Status

Description

200 OK

Returned when key/keys were successfully returned.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

404 NOT FOUND

STATUS: E8009 - Returned when merchant does not have any keys.

500 INTERNAL SERVER ERROR

STATUS: E9000 - Returned when reason is unknown.

11.3. 3DS 2.X verification methods

3DS 2.X Verification methods supports JWE card number encryption. Flow is the same as standard verification except card number providing.
    To use JWE you have to follow Encryption subsection and prepare card number first using public key received from Fenige and decribe his version in request (Optional,
default older key version if not expired).
To read more about 3DS 2.X Verification methods go to 3DS 2.X Verification methods.

11.3.1. PreAuthentication

Request
200 OK
HTTP Response
POST /client/3ds/preAuthentication HTTP/1.1
Authorization: Basic VXNlcjpQYXNzd29yZA==
Content-Type: application/json
Content-Length: 728
Host: ecom-staging.fenige.pl

{
  "cipherCardNumber" : "eyJ0eXAiOiJKT1NFIiwiZW5jIjoiQTI1NkdDTSIsImlhdCI6MTYzNDEyNjA0MCwiYWxnIjoiUlNBLU9BRVAtMjU2Iiwia2lkIjoiYjRkNDYzMmQ5YzlhMTI2MTZiYzljYjc0ODU4MmVlYWE2MzEyYzIyMSJ9.NnbosOivIU3trUh1Y4r8FnlCdsJgcvomtizi6m3xkebi4D_evfkuLE80uSJ5soX1_eszvSsR8X3HhHbbvMXarSYbRHS8hUs6Mihevotf9apaMCcBIgpwGirh1QRMMbqmeuzesI1ZybDlCNYK4gNEcw4L5NWHtgxwWEIoFiuu4or3WgDYv4Q_BxtYy-BdTqEfEmXA_1FGMFl4Z62Hn0SfsGYBtbcQZwuINCyCT8ND79-O4_uYPYm-cz6S0vfszCsdCMFPSUQR01Zu2CNNpAjlfRMaTFo0LaIcshb02eD1nkHjZoTSJOFVxuumuKV9zuEYkuP5pHkHybAkg_JLIPzF3g.6A-mXWSLDqRGINW0.Lu6MNV-dn57aWpRLqVMuiQ.elg9rluJVO1KayRkxeDbng",
  "keysVersion" : 1,
  "methodNotificationUrl" : "methodNotificationUrl.com",
  "terminalUuid" : "bfeaa492-6fd4-40ac-a3e1-67c973a8217c"
}
Table 383. PRE AUTHENTICATION 3DS REQUEST FIELDS
Path Type Constraints Description

methodNotificationUrl

String

@Must not be empty

This field specifies the URL to which the ACS will post threeDSMethodData when the hidden iframe post form from browse

terminalUuid

String

@Must not be null

Terminal uuid

cipherCardNumber

String

Decrypted number length must be between 12 and 19, @Must not be blank, @Must not be null or card id must be present

Encrypted card number

keysVersion

Number

Field informs about keys version that was used to encrypt card number

Response
200 OK
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 532

{
  "cardAuthenticationId" : "94d2b797-bd52-4785-9769-67f6e8353c9c",
  "threeDSMethodData" : "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly93ZWJob29rLnNpdGUvZDMyZTlkZTgtMGFiOC00ODZjLWJjNzEtMGU2Mzg2MmY4MDNhM2I1YTkzZTUtMjI1Ni00NGQ0LTg2YjItNWFkM2FhMDEyYTJhIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiIxNjNiZWMzOC1kOTM1LTQ0MGItYWYwYy01OWM3NDI3OTk2MGMifQ",
  "threeDSMethodURL" : "https:/acs.com",
  "protocolVersionStart" : "2.1.0",
  "protocolVersionEnd" : "2.2.0",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Table 384. Response fields
Path Type Description

cardAuthenticationId

String

Unique identifier for 3ds verification

threeDSMethodData

String

Encoded data used for request to ACS

threeDSMethodURL

String

ACS endpoint for hidden request. If endpoint is not present then request is not required.

protocolVersionStart

String

Protocol version start range

protocolVersionEnd

String

Protocol version end range

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

11.3.2. Authentication

Request
200 OK
HTTP Response
POST /client/3ds/authentication HTTP/1.1
Authorization: Basic VXNlcjpQYXNzd29yZA==
Content-Type: application/json
Content-Length: 1807
Host: ecom-staging.fenige.pl

{
  "terminalUuid" : "e12d5037-85a8-43ce-8373-eb30d314a5ed",
  "cardAuthenticationId" : "d386cbdb-0b71-4583-87df-86305ea47c2d",
  "threeDSMethodData" : "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiSFRUUDQwYjgyNDQ3LTE0ODUtNDUwZi04ZGYxLTdhNGQwYmRiMWMzYiIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiNDE1MDQzY2UtYTNhMC00ODBjLTk0YTYtNzk2NGEzYTcxNWI2In0",
  "methodCompletionIndicator" : "Y",
  "cardExpirationDate" : "12/26",
  "cardholderName" : "John",
  "purchaseAmount" : "123",
  "purchaseCurrency" : "PLN",
  "browserAcceptHeader" : "Accept: application/json",
  "browserLanguage" : "PL",
  "browserScreenHeight" : "1500",
  "browserScreenWidth" : "1500",
  "browserTimeZone" : "60",
  "browserUserAgent" : "Mozilla/5.0",
  "browserScreenColorDepth" : "24",
  "cardholderEmail" : "john@example.com",
  "cardholderHomePhone" : "1-1234567899",
  "cardholderMobilePhone" : "1-1234567899",
  "cardholderWorkPhone" : "48-1234567899",
  "browserIPAddress" : "77.55.135.220",
  "browserJavaEnabledVal" : "ENABLED",
  "browserJavaScriptEnabled" : "ENABLED",
  "notificationUrl" : "notificationUrl.com",
  "authenticationType" : "PAYMENT",
  "requestorChallengeInd" : "NO_PREFERENCE",
  "protocolVersion" : "2.2.0",
  "cipherCardNumber" : "eyJ0eXAiOiJKT1NFIiwiZW5jIjoiQTI1NkdDTSIsImlhdCI6MTYzNDEyNjA0MCwiYWxnIjoiUlNBLU9BRVAtMjU2Iiwia2lkIjoiYjRkNDYzMmQ5YzlhMTI2MTZiYzljYjc0ODU4MmVlYWE2MzEyYzIyMSJ9.NnbosOivIU3trUh1Y4r8FnlCdsJgcvomtizi6m3xkebi4D_evfkuLE80uSJ5soX1_eszvSsR8X3HhHbbvMXarSYbRHS8hUs6Mihevotf9apaMCcBIgpwGirh1QRMMbqmeuzesI1ZybDlCNYK4gNEcw4L5NWHtgxwWEIoFiuu4or3WgDYv4Q_BxtYy-BdTqEfEmXA_1FGMFl4Z62Hn0SfsGYBtbcQZwuINCyCT8ND79-O4_uYPYm-cz6S0vfszCsdCMFPSUQR01Zu2CNNpAjlfRMaTFo0LaIcshb02eD1nkHjZoTSJOFVxuumuKV9zuEYkuP5pHkHybAkg_JLIPzF3g.6A-mXWSLDqRGINW0.Lu6MNV-dn57aWpRLqVMuiQ.elg9rluJVO1KayRkxeDbng",
  "keysVersion" : 1
}
Table 385. AUTHENTICATION 3DS REQUEST FIELDS
Path Type Constraints Description

terminalUuid

String

@Must not be null

Terminal uuid

cardAuthenticationId

String

@Must not be null

Unique identifier for 3ds verification from preAuthentication request

cipherCardNumber

String

Decrypted number length must be between 12 and 19, @Must not be blank, @Must not be null or card id must be present

Encrypted card number

keysVersion

Number

Integer

Version of keys used

cardExpirationDate

String

@Length must be 5, @Must not be null or card id must be present

Expiration date of card mm/yy

cardholderName

String

@Length must be between 2 and 45 inclusive, @Must not be empty

This property contains the name of the cardholder. Name of the Cardholder. Must be ASCII characters. This is required to be set unless market or regional mandates restricts sending this information.

purchaseAmount

String

@Must match the regular expression \d{1,48}, @Must not be null

This field contains the purchase amount to be authorized. The transaction amount is to be presented with an implied decimal point. For example, US $10.00 must be represented as 1000, and $0.10 is likewise simply 10. The allowable number of significant digits as well as the positioning of any implied decimal point is dictated by the designated PurchaseExponent. This field may not contain a negative number.

purchaseCurrency

String

@Must not be null

Currency for transaction (in accordance with 3-digit ISO-4217), example: USD

threeDSMethodData

String

@Must not be empty

Response data from a hidden form from the Pre Authentication. If threeDSMethodURL is empty set threeDSMethodData

methodCompletionIndicator

String

@Must not be null

Y if response from hidden form from Pre Authentication is under 10s, N if response from hidden form from Pre Authentication is over 10s, U if threeDSMethodURL is empty

protocolVersion

String

@Must not be empty

This field indicates the protocol version. Now there are two versions: 2.1.0 and 2.2.0. It is recommended to use 2.2.0 if the card supports it. You will get it from the Pre Authentication method. Some configurations are only available for 2.2.0.

notificationUrl

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This property specifies the URL to which the final challenge response is POSTed.

requestorChallengeInd

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

Indicates whether a challenge is requested for this transaction. For authenticationType PAYMENT possible values are: NO_PREFERENCE, NO_CHALLENGE_REQUESTED, CHALLENGE_REQUESTED_MANDATE, CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE

For authenticationType ADD_CARD, VERIFY_CARDHOLDER, INSTALLMENT_PAYMENT, COF_INITIAL, RECURRING_INITIAL possible values are: CHALLENGE_REQUESTED_MANDATE, CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE

authenticationType

String

@Must not be null

Authentication Type configuration prepared for specific type. Possible values are:

Non payment authentication - Identity verification and account confirmation:

ADD_CARD

VERIFY_CARDHOLDER

Payment authentication - Cardholder authentication during an e-commerce transaction:

PAYMENT

COF_INITIAL

INSTALLMENT_PAYMENT

RECURRING_INITIAL

3DS Requestor Initiated (only for protocolVersion 2.2.0) - Confirmation of account information and Cardholder authentication with no direct Cardholder present. For example, a subscription-based e-commerce merchant confirming that an account is still valid:

MOTO

RECURRING_SUBSEQUENT

browserAcceptHeader

String

Max length: 2048.

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL.

This field contains the exact content of the HTTP accept header as sent to the merchant from the cardholder’s user agent. This field is required only if the cardholder’s user agent supplied a value. e.g Accept: application/json

browserLanguage

String

Min length: 1, Max length: 8

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the cardholder’s browser language as defined in IETF BCP 47.

browserScreenHeight

String

Min length: 1, Max length: 6

Regexp: ^[0-9]{1,6}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the total height of the cardholder’s screen in pixels.

browserScreenWidth

String

Min length: 1, Max length: 6

Regexp: ^[0-9]{1,6}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the total width of the cardholder’s screen in pixels.

browserTimeZone

String

Min length: 1, Max length: 5

Regexp: ^[+-]?[0-9]{1,4}$

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the difference between UTC time and the cardholder’s browser local time in minutes.

browserUserAgent

String

Max length: 2048

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the exact content of the HTTP User-Agent header.

browserJavaEnabledVal

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the ability of the cardholder’s browser to execute Java. Enumerated values: NOT_PRESENT, ENABLED, DISABLED.

Required if browserJavascriptEnabled is true

cardholderEmail

String

Optional, Max length: 256

This field contains the cardholder email address.

cardholderHomePhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the home phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

cardholderMobilePhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the mobile phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

cardholderWorkPhone

String

Optional. Must match regex \d{1,3}-[1-9]\d{1,14}$

This field contains the work phone number provided by the cardholder. Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)

browserIPAddress

String

@Must not be null, Max length: 45

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains the IP address of the cardholder’s browser as returned by the HTTP headers.

browserJavaScriptEnabled

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the ability of the cardholder’s browser to execute JavaScript. Enumerated values: ENABLED, DISABLED.

browserScreenColorDepth

String

Required for authenticationType:

ADD_CARD,

VERIFY_CARDHOLDER,

PAYMENT,

INSTALLMENT_PAYMENT,

COF_INITIAL,

RECURRING_INITIAL

This field contains a value representing the bit depth of the color palette, in bits per pixel, for displaying images. Obtained from Cardholder browser using the screen.colorDepth property. Values accepted:

1 = 1 bit,

4 = 4 bits,

8 = 8 bits,

15 = 15 bits,

16 = 16 bits,

24 = 24 bits,

32 = 32 bits,

48 = 48 bits

Response
200 OK
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 221

{
  "transactionStatus" : "A",
  "transactionXId" : "f07e61fe-0eee-466e-b2cd-79f01dd7890a",
  "cavv" : "B5gQCElHgQAAAAAKmFNEdQAAAAA=",
  "eci" : "06",
  "status" : "S0000",
  "message" : "SUCCESS",
  "httpStatus" : "OK"
}
Table 386. Response fields
Path Type Description

transactionStatus

String

Indicates whether a transaction qualifies as an authenticated transaction or account verification. Possible values are:

Y Authentication/account verification successful.

N Not authenticated/account not verified; transaction denied.

U Authentication/account verification could not be performed; technical or other problem as indicated in ARes or RReq.

A Attempts processing performed; not authenticated/verified, but a proof of attempted authentication/verification is provided.

C Challenge required; additional authentication is required using the CReq/CRes.

R Authentication/account verification rejected; issuer is rejecting authentication/verification and request that authorization not be attempted.

D Challenge required; decoupled authentication confirmed.

I Informational only; 3DS Requestor challenge preference acknowledged.

Note: The CRes message can contain only a value of Y or N. Values of D and I are only applicable for 3DS version 2.2.0.

transactionXId

String

Server transaction Id generated by DS

cavv

String

This property is determined by the Access Control Server (ACS), and is filled after the call to SendAuthRequest (for a frictionless flow), or when the Results Request Message (RReq) is parsed using CheckResponse (for a challenge flow).

This property will be valid if the TransactionStatus is "Y" or "A". The value may be used to provide proof of authentication.

eci

String

This property is determined by the Access Control Server (ACS), and is filled after the call to SendAuthRequest (for a frictionless flow), or when the Results Request Message (RReq) is parsed using CheckResponse (for a challenge flow).

This property contains the two digit Electronic Commerce Indicator (ECI) value, which is to be submitted in a credit card authorization message. This value indicates to the processor that the customer data in the authorization message has been authenticated. The data contained within this property is only valid if the TransactionStatus is "Y" or "A".

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

11.4. Payment JWE

11.4.1. Request

JWE is supported by every payment method that needs card number:
- Authorize
- MO/TO
- CoF (initial)
- Recurring (initial)
- Installment (initial)
- ASI
    To use JWE you have to follow Encryption subsection and prepare card number first using public key received from Fenige and describe his version in request (Optional, default older key version if not expired).
To read more about payment methods go to Payment API section. Example requests will be based on authorize method.
HTTP Request
POST /client/payments/auth HTTP/1.1
Authorization: Basic dXNlcjpwYXNzd29yZA==
Content-Type: application/json
Content-Length: 1512
Host: ecom-staging.fenige.pl

{
  "merchantUuid" : "6a897ab1-5135-4196-aef7-fb724f575b3e",
  "terminalUuid" : "1aca77b1-4837-4e68-9d73-5e3d184dcdd6",
  "requestUuid" : "0c3cbdf3-5fb3-4367-984f-3172c5473c11",
  "firstName" : "User",
  "lastName" : "Test",
  "amount" : 1000,
  "currency" : "USD",
  "expiryDate" : "11/26",
  "cvc2" : "123",
  "email" : "test@fenige.pl",
  "addressIp" : "192.0.0.1",
  "autoClear" : true,
  "outside3ds" : {
    "cavv" : "jEu04WZns7pbARAApU4qgNdJTag=",
    "cavvAlgorithm" : "01",
    "eci" : "02",
    "authenticationStatus" : "Y",
    "transactionXId" : "d543820d-683e-4589-86d9-6c9e40db4b53"
  },
  "terminalUrl" : "https://ecom-staging.fenige.pl/payments",
  "transactionRef" : "27F3250GU3",
  "receiverAmount" : 100,
  "cipherCardNumber" : "eyJ0eXAiOiJKT1NFIiwiZW5jIjoiQTI1NkdDTSIsImlhdCI6MTYzMjQ2NzU5OSwiYWxnIjoiUlNBLU9BRVAtMjU2Iiwia2lkIjoiYjRkNDYzMmQ5YzlhMTI2MTZiYzljYjc0ODU4MmVlYWE2MzEyYzIyMSJ9.WTfHxWEoNCIa9t7mOKwNuwCPmBFU_6H7YAYL6lj1cXWjrpUiA-UXnIKrrkdeBFfhSSbkv7P2VQVbgWjICPLm7sXURKtdU9Q399dNzf_hs9vXuBXekaGeidhYT6EKrYB7fPuu43IKUgMan52ozijBQSzWxV_yJEn1fluzPVGRMo-KfqZkxcnKpulX9qhB1w9vg-6p8HFVC_RF2Bl_9yYrKU68AcDtYfU0wR6TUUiKoxg6Hj5yY3iWNe06KEltelYmqDK_HBoPxF30GtI66igY4ChnpChq1eDTJyP-clECrUib_66I9FsvZ3IYOPntkep0nqWnJpmBqQ0o6IgcNd2f_w.eGW4GbsiStJ-dYqr.ner_KkmRhY7JIaRxOSQXyPM.fgJx6H-MuWTfpLO3w4TfYQ",
  "keysVersion" : 1,
  "countryOfResidence" : "PL",
  "street" : "street",
  "houseNumber" : "12A",
  "city" : "city",
  "postalCode" : "11-111",
  "province" : "NY",
  "source" : "PAYTOOL_FENIGE"
}
Table 387. Request headers
Name Description

Authorization

Basic auth credentials for PSP

Table 388. Authorize request fields
Path Type Constraints Description

merchantUuid

String

@Must not be null

Merchant’s unique uuid in system

terminalUuid

String

Request’s unique uuid in system

requestUuid

String

@Must not be null

Request’s unique uuid in system

firstName

String

First name of cardholder

lastName

String

Last name of cardholder

amount

Number

@Must not be null

The total transfer amount (in pennies)

currency

String

@Must not be null

Currency for transaction (in accordance with ISO-4217), example: USD

expiryDate

String

Expiration date of card mm/yy

cvc2

String

@Optional only for Google pay, @Length must be 3 characters, @Must match regular expression: \d+

Cardholder’s card cvc2

email

String

@Length(min = 1, max = 128)

Cardholder’s email

addressIp

String

@Must match the regular expression ^([0-9]{1,3}.){3}[0-9]{1,3}$

The IP address of the order of transaction.

autoClear

Boolean

Is auto clear enabled. Enabled if true, is not enabled if false. There is 7 days for execute clearing process if autoClear = false

outside3ds.cavv

String

Cardholder Authentication Verification Value.

outside3ds.transactionXId

String

Server transaction Id generated by DS. Required for 3DS 2.x version. The transactionXId is the field that defines the 3DS version. The presence of this field in the HTTP request specifies that the transaction will be processed with 3DS 2.x. TransactionXId can be obtained by executing the /authentication method.

outside3ds.cavvAlgorithm

String

Indicates the algorithm used to generate the AuthenticationCAVV value

0 - HMAC

1 - CVV

2 - CVV with ATN

3 - MasterCard SPA algorithm

outside3ds.eci

String

@Length must be between 1 and 2 inclusive, @Must match 01 or 02 or 05 or 06, @Must not be null

Electronic Commerce Indicator: 5 (Visa) or 2 (SecureCode) - The cardholder was successfully authenticated. 6 (Visa) or 1 (SecureCode) - Authentication was attempted, but the cardholder was not enrolled. Chargeback protection applies.

outside3ds.authenticationStatus

String

@Must match Y or A, @Must not be null

Authentication status:

Y - (Full Authentication) - The customer was successfully authenticated.

A - (Successful Attempted Authentication) - Authentication was not available, but functionality was available to generate a proof of authentication attempt.

terminalUrl

String

@Must match the regular expression [\n]+$

Terminal identifier such as the business website URL or reverse domain name as presented to the consumer during checkout.

transactionRef

String

@Optional, @Length must be between 1 and 10, @Must not be blank, @Must match the regular expression ^[a-zA-Z0-9]*$

An additional transaction identifier defined by the merchant. This can be, for example, the document number of a sales receipt or the number of an offer or product

cipherCardNumber

String

Encrypted card number

keysVersion

Number

Field informs about keys version that was used to encrypt card number in cipherCardNumber field.

countryOfResidence

String

Country of residence is only required for merchants crypto

city

String

@Optional@Length(min = 1, max = 55)

Optional city of sender

street

String

@Optional @Length(min = 1, max = 55) @Pattern(regexp = "[\\s\](\\s[^\\s]+)*$")

Optional street name of sender

province

String

@Optional @Length(min = 2, max = 2)

Optional USA state or CAN province code of sender

houseNumber

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = "[1-9][0-9]{0,4}(?:[A-z]?[0-9]{0,4})?((?:[-/ ][1-9]?[A-z]?[0-9]{0,4})*[A-z]?)?$")

Optional house number of sender

postalCode

String

@Optional @Length(min = 1, max = 10) @Pattern(regexp = (^[a-zA-Z\d][a-zA-Z\d\- ]{0,9}[a-zA-Z\d]$)|^[a-zA-Z1-9]$

Optional postal code of sender

11.4.2. Response

200 OK
HTTP Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 208

{
  "requestUuid" : "40f221c7-8995-48fb-a758-d99b3619d6fc",
  "transactionStatus" : "APPROVED",
  "responseCode" : "CODE_00",
  "status" : "S0002",
  "message" : "Success transaction",
  "httpStatus" : "OK"
}
Table 389. Response fields
Path Type Description

requestUuid

String

Request unique uuid in system

transactionStatus

String

Transaction status

status

String

Response code from Fenige system

message

String

Message for response code from Fenige system

httpStatus

String

Response http status

responseCode

String

Response code

merchantAdviceCode

String

Information about the reasons for declined transactions and actions that merchants can take. Occurs only for mastercard and for declined transactions if Mastercard returns this information

404 When keys not found
HTTP Response
HTTP/1.1 404 Not Found
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:41 GMT
Content-Length: 153

{
  "status" : "E8009",
  "message" : "Merchant RSA keys not found",
  "httpStatus" : "NOT_FOUND",
  "traceId" : "4f880cf0-0de2-4504-a406-ce3b6bbcac61"
}
Table 390. Response fields
Path Type Description

message

String

Message for response code from Fenige system

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

UUID that helps to identify request in system

422 When keys expired
HTTP Response
HTTP/1.1 422 Unprocessable Entity
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:38 GMT
Content-Length: 161

{
  "status" : "E8010",
  "message" : "Merchant RSA key expired",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "83dd0757-117d-43b2-aa59-9482940fe485"
}
Table 391. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

message

String

Message which informs about Fenige response code

500 When internal error during card decrypting
HTTP Response
HTTP/1.1 500 Internal Server Error
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Apr 2024 12:52:40 GMT
Connection: close
Content-Length: 175

{
  "status" : "E8011",
  "message" : "Internal error during card decrypting",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "cf6ed38a-5d09-4e4c-b893-b00dec0ebbc5"
}
Table 392. Response fields
Path Type Description

status

String

Response code from Fenige system

httpStatus

String

Response http status

traceId

String

Unique id for this http request register in system

message

String

Message which informs about Fenige response code

Response status
Status Description

200 OK

Returned when transaction was successfully authorized.

400 BAD REQUEST

STATUS: E8000 - Returned when request is incorrect, required fields are missing or the values are not valid.

401 UNAUTHORIZED

STATUS: E8002 - Returned when you are the problem with authorized to your PSP.

403 FORBIDDEN

STATUS: E8001 - Returned when server understood the request but refuses to authorize it.

404 NOT FOUND

STATUS: E0122 - Returned when merchant is not existing.

STATUS: E0132 - Returned when terminal is not existing.

STATUS: E0135 - Returned when terminal for merchant not exist or all of them are inactive.

STATUS: E0137 - Returned when there is not terminal marked as default

STATUS: E06003 - Returned when DataCenter card was not found.

STATUS: E8009 - Merchant RSA keys not found.

422 UNPROCESSABLE ENTITY

STATUS: E0150 - Returned when transaction is rejected.

STATUS: E0151 - Returned when transaction is rejected, because currency is not supported.

STATUS: E0152 - Returned when transaction is rejected, because issuer is not supported.

STATUS: E01580 - Returned when transaction is rejected, because DataCenter card was expired.

STATUS: E01581 - Returned when transaction is rejected, because not found Card Authentication (3DS 2.X)

STATUS: E01582 - Returned when transaction is rejected, because Card Authentication not match to transaction type (3DS 2.X)

STATUS: E01594 - Returned when transaction is rejected, because transactionXId parameter had registered for another transaction

STATUS: E01596 - Returned when transaction is rejected, because terminal has blocked transaction with card issued in restricted country

STATUS: E01597 - Returned when transaction is rejected, because 3DS version of terminal are not compatible with 3DS version defined in request

STATUS: E01600 - Transaction rejected, 3DS 2.X flow invoked for other card number than specified in the request

STATUS: E01601 - Returned when transaction is rejected, because terminal is blocked for provider

STATUS: E0200 - Returned when transaction is rejected, because card is blocked in Fenige System

STATUS: E0201 - Returned when transaction is rejected, because BIN is blocked in Fenige System

STATUS: E0202 - Returned when transaction is rejected, because Terminal is blocked in Fenige System

STATUS: E0204 - Returned when transaction is rejected, because user’s personal data was found on AML (sanctions) list

STATUS: E0205 - Returned when transaction is rejected, because Bank is blocked in Fenige System

STATUS: E0206 - Returned when transaction is rejected, because to many reject transactions and card is blocked

STATUS: E8010 - Merchant RSA key expired.

500 INTERNAL SERVER ERROR

STATUS: E0153 - Returned when transaction is declined, by problem with MIP connection.

STATUS: E01599 - Transaction declined, processing timeout.

STATUS: E0142 - Returned when commission configuration is not added for terminal.

STATUS: E0190 - Returned when currency rate is invalid.

STATUS: E8011 - Internal error during card decrypting.

STATUS: E9000 - Returned when reason is unknown.

503 SERVICE UNAVAILABLE

STATUS: E9001 - Returned when is error acquirer connection.

STATUS: E9002 - Returned when is error mpi connection.

STATUS: E9010 - Returned when is error DataCenter connection.