Intech, all rights reserved. 2016 ©

Changelog

v1.3.3

Wednesday, 14th November 2018

update Added request parameters CardScheme and CartType to Response in CheckPOSPaymentStatus.

v1.3.2

Thursday, 8th November 2018

update Added request parameters to SignalR callback and Web service callback in Integrating Paywiser MiniPOS.

v1.3.1

Saturday, 8th September 2018

update Added request parameters (using CardToken) to SimplePayment.

v1.3.0

Wednesday, 5th September 2018

update Fixed a typo in InitPOSPayment from CallbackMethodURL to CallbackURL.

v1.2.9

Wednesday, 27th June 2018

update Updated chapter Integrating PayWiser MiniPOS. Added a SignalR Web Sample.

v1.2.8

Monday, 11th June 2018

update Updated chapter List of response codes. Added codes from -172 to -175.

new Added chapter Integrating PayWiser MiniPOS.

new Added chapter InitPOSPayment.

new Added chapter CheckPOSPaymentStatus.

v1.2.7

Wednesday, 28th March 2018

update Updated chapter List of response codes. Added codes -170 and -171.

v1.2.6

Monday, 26th February 2018

update Updated chapter Payment form samples. Added update customerData sample.

v1.2.5

Wednesday, 21th February 2018

update Updated chapter Hosted fields. Added customerData object and notes regarding customerData updating.

update Updated chapter Payment form samples. Added update customerData sample.

v1.2.4

Tuesday, 20th February 2018

update Updated chapter List of response codes. Added codes -168 and -169.

update Updated chapter Transaction reporting. Added immediate transaction notifications event. Updated "Transaction notification/periodical report data structure" with ChargebackStatus and ChargebackDescription.

update Updated chapter TerminateRecurringPlan. Added TerminationReason to request parameters.

new Added chapter Chargebacks.

v1.2.3

Thursday, 15th February 2018

update Updated chapter Sepa Payments. Added payment check notice.

update Updated chapter Sofort Payments. Added payment check notice.

update Updated chapter PaySafeCard Payments. Added payment check notice.

remove Removed Fidor bank only notice in chapter SepaCheckMandatePayment.

new Added chapter SofortCheckPayment.

new Added chapter PaySafeCardCheckPayment.

v1.2.2

Wednesday, 6th December 2017

update Updated chapter Moneta payments. Added item arrays and info about VAT.

update Updated chapter Response codes. Added response codes between -162 and -167.

update Updated chapter Tokenize. Added info about blocked cards.

update Updated chapter Reserve. Added info about blocked cards.

update Updated chapter Refund. Added info about blocked cards.

update Updated chapter PayOut. Added info about blocked cards.

update Updated chapter InitWebPayment. Added reservation and tokenization info. Added Items array.

update Updated chapter MonetaReserve. Added info about Items array and VAT. Updated request parameters and added Items structure.

update Updated chapter MonetaSMSPushPayment. Added info about Items array and VAT. Updated request parameters and added Items structure.

update Updated chapter SimplePayment. Added info about declined and blocked cards.

update Updated chapter StartRecurringPayment. Added Moneta specifics. Added Moneta items to Request parameters and added MonetaItems structure.

v1.2.1

Monday, 4th December 2017

new Added chapter Buyer notifications.

new Added chapter Declined and blocked cards.

new Added chapter BlockCard.

new Added chapter UnBlockCard.

v1.2

Monday, 13th November 2017

new Added chapter Hosted Payment fields.

new Added chapter Payment form samples.

v1.1.6

Wednesday, 11th October 2017

update Updated chapter Risk Management. Added eComProcessing specific data.

v1.1.5

Monday, 22nd May 2017

update Updated chapter Test Data. Changed/added SEPA account data to eMerchantPay.

v1.1.4

Wednesday, 12th April, 2017

update Updated chapter SepaPayments. Added a list of allowed countries for eMerchantPay.

new Added chapter SepaPayOut.

v1.1.3

Tuesday, 14th March, 2017

update Updated request parameter "WebFormLanguage" in chapter InitWebPayment. Added languages: Danish, German, Croatian, Italian. Updated descriptions of "Using PaymentExecutionMode parameter". Fixed a typo and added a note.

update Updated chapter SimplePayment. Split request parameters into two different options ("Using card tokenization ID" and "Using card data"). Added "TokenizeCard" parameter description and note.

update Updated chapter WebPayments form Custom CSS. Added additional rules and limitations for hiding areas.

v1.1.2

Wednesday, 8th March, 2017

update Updated response codes in chapter Payment methods. Added response codes from -158 to -161.

remove Removed duplicate structures in chapter Transaction notifications and reporting.

new Added chapter ChangeRecurringPaymentAmount.

new Added chapter WebPayments form Custom CSS.

update Updated request parameter "ReferenceID" in every function. New maximum length is 200 chars. The parameter is checked with RegEx: Checked with RegEx ^[A-Za-z0-9_-]{1,200}$

v1.1.1

Thursday, 23rd February 2017

update Updated response codes in chapter Payment methods. Added response codes from -151 to -157.

new Added chapter PaymentGateway internal couponing.

new Added chapter CreateWebPaymentCoupon.

new Added chapter RevokeWebPaymentCoupon.

new Added chapter ListWebPaymentCoupons.

new Added chapter ListWebPaymentCouponPayments.

new Added chapter PaymentGateway WebPayments form.

v1.1.0

Thursday, 2nd February 2017

new Split part of chapter Test and production environments into a new chapter Test data.

update Added Sepa, Sofort and PaySafeCard test data to chapter Test data.

update Added Sofort and PaySafeCard payment methods to chapter Payment methods.

update Updated response codes in chapter Payment methods. Updated response code -61, -73, -74, -77, -101, -126. Added codes from -140 to -150.

update Updated immediate transaction notifications events in chapter Transaction reporting. Added Sepa, Sofort and PaySafeCard payment events. Added "PaymentType" 5 and 6 to report data structure. Added "TransactionTypes" 44 and 45 to report data strucrute. Added "StateCode", "StateDescription", "PaymentSepaMandateID", "PaymentSepaCollectionDate", "PaymentWiwaPayWalletID" to report data structure.

update Updated chapter Sepa payments. Added a "Fidor bank currently inactive". Moved test data to chapter Test data. Added a short note regarding API and Sepa rules.

new Added chapter Sofort payments.

new Added chapter PaySafeCard payments.

update Updated chapter Risk management. Added customer data table.

update Updated chapter Tokenize. Added "BuyerIP", "CardHolderEmail", "CardHolderBilling" with structure to request parameters.

update Updated chapter Reserve. Added "BuyerIP", "CardHolderEmail", "CardHolderBilling" with structure to request parameters.

update Updated chapter PayOut. Added "BuyerIP", "CardHolderEmail", "CardHolderBilling" with structure to request parameters.

update Updated chapter InitWebPayment. Added "CustomerMembership" and "CustomerAddress" with structure to request parameters. Added Sofort and PaySafeCard payment specifics. Updated PaymentsMethods structure with paramaters "AllowSofort" and "AllowPaySafeCard".

update Updated chapter CheckWebPaymentStatus. Added "SepaStateCode" and "SepaStateDescription" and other Sofort and PaySafeCard related parameters to request parameters.

update Updated chapter SimplePayment. Added "BuyerIP", "CardHolderEmail", "CardHolderBilling" with structure to request parameters.

update Updated chapter StartRecurringPayment. Added "BuyerIP", "CardHolderEmail", "CardHolderBilling" with structure to request parameters.

update Fixed "PWReferenceID" to "PGReferenceID" typos in chapters CheckMonetaEnabled, SepaCreateMandate, SepaListMandates, SepaMandatePayment, SepaListMandatePayments, SepaCheckMandatePayment, SepaRefund.

new Added chapter Sofort payment.

new Added chapter PaySafeCard payment.

v1.0.4

Wednesday, 18th January 2017

new Added chapter Risk management.

update Updated response codes in chapter Payment methods. Added codes from -136 to -139.

update Updated immediate transaction notifications events in chapter Transaction reporting. Added "Sepa mandate creation" and "Successful Sepa payment".

update Updated table "Transaction notification/periodical report data structure" in chapter Transaction reporting. Changed and added "PaymentTypes" and "TransactionTypes".

update Updated chapter Recurring payments to reflect Sepa changes. (General flow - Sepa section)

update Updated chapter Sepa payments to reflect new bank/acquirer.

update Updated request parameters in chapter Tokenize. Added "RiskSessionID", Added clarification to parameter "ThreeDSecureData".

update Updated request parameters tables in chapter Reserve. Added "RiskSessionID".

update Updated request parameters table in chapter Simple payment. Added "RiskSessionID".

update Updated request parameters table in chapter Start recurring payment. Added "RiskSessionID".

update Updated request parameters table in chapter SepaCreateMandate. Updated "UseCOR1" description.

update Updated request parameters table in chapter Sepa mandate payment. Updated "CollectionDate" description.

update Added a note to chapter Sepa check mandate payment.

new Added chapter SEPA refund.

v1.0.3

Thursday, 5th January 2017

new Added chapter Acquirers.

new Added eMerchantPay to chapter Test and production environments.

new Added forbidden actions to chapter Limitations.

update Updated chapter Payment methods to reflect eMerchantPay changes.

update Updated chapter Notice on Maestro cards to reflect eMerchantPay changes.

new Added table "3D-Secure transaction notification" to chapter Transaction notifications and reporting.

update Updated chapter 3D-Secure o reflect eMerchantPay changes ("Direct API access" tab, and summary)

new Added "General flow when using StartRecurringPayment API" section to chapter Recurring payments.

new Added additional details to end of chapter SEPA payments.

new Added sample transaction parameters and a notice to chapter Surcharges and cashbacks.

update Updated chapter Tokenize to reflect eMerchantPay changes.

update Updated chapter Reserve to reflect eMerchantPay changes, added ThreeDSuccessURL and ThreeDFailURL parameters to request tables

update Added parameters CaptureReferenceID and a note to chapter Refund.

update Added "Allowed only for Clearhaus" note to chapter ThreeDSecureInit.

update Added "Allowed only for Clearhaus" note to chapter ThreeDSecureCheckPaRes.

update Updated chapter SimplePayment to reflect eMerchantPay changes, added "ThreeDSecureResponse structure" table.

new Added a new chapter ListRecurringPaymentTransactions.

new Added a new chapter Code samples.

new Added a new chapter Links and downloads.

v1.0.2

Tuesday, 3rd January 2017

new Published Payment gateway API documentation to website.

General remarks

PayWiser PaymentGateway API is implemented as RESTful web service.

All API methods must be called using HTTP POST (unless specified otherwise), using text/plain.

Parameters need to be passed as a valid JSON string (unless specified otherwise).

In the following sections, required parameters are bold, optional parameters are italic.

Response is always formatted as JSON string.

Authentication is done via HTTP Basic Auth. Simply provide your API key as username and a blank string as password.

If an internal web service error occurs, status code 500 is returned, the response is empty.

Note

Before you start using PayWiser PaymentGateway and its many functionalities in the production environment, take your time and familiarize yourself with all the details of this documentation and test in testing environment.

Please keep in mind that PayWiser staff can not correct and data, transactions or any other actions regarding charges on your behalf.

Any corrections you wish to make can be done only by you, using PayWiser Dashboard or any of the API methods that PayWiser PaymentGateway provides.

Acquirers

PayWiser PaymentGateway offers two different acquirers for card processing:

  1. Clearhaus
  2. eMerchantPay

Depending on your acquirer, there might be some slight differences using PayWiser PaymentGateway API, methods and/or mathod parameters.

Main differences are regarding 3D-Secure implementation.

Generally this documentation is focused towards Clearhaus implementation.

Please read the next chapters with care, differences regarding eMerchantPay acquirer are clearly marked when applicable.

Test and production enviroments

PayWiser PaymentGateway offers two separate environments:

Test environment

copy
https://gateway.paywiser.eu/PaymentGatewayTest/PayWiserPG/

It can be used during testing and development, no actual card transactions are taking place.

Production environment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/

Used only for production.

Warning

All transactions are live and fully processed.

Both environments offer the same functionallity and use the same codebase and are regularly maintained with the latest PayWiser PaymentGateway API version. However, for Clearhaus 3D-Secure is only supported in the production environment (eMerchantPay offers test environment for 3D-Secure also).

Accounts are environment-specific, which means you need separate API keys for test and for production environments.

Test data

PayWiser PaymentGateway offers two separate environments:

Clearhaus

Test as well as real card data can be used in ClearHaus test environment.

Cards:

Card scheme Card number Note
Visa 4111111111111111 Approved
Visa 4200000000000000 Declined
MasterCard 5500000000000004 Approved
MasterCard 5555555555554444 Declined

eMerchantPay

Only specified test payment instruments can be used in eMerchantPay test environment. All other instruments (cards, Sepa data etc) will be rejected while testing.

Cards:

Card scheme Card number Note
Visa 4200000000000000 Successful transaction
Visa 4111111111111111 Transaction declined
MasterCard 5555555555554444 Successful transaction
MasterCard 5105105105105100 Transaction declined
Visa 4711100000000000 3DSecure enrolled
Visa 4012001037461114 3DSecure enrolled failing authentication
Visa 4012001036853337 3DSecure unavailable - Card Not Participating
Visa 4012001037484447 Error in 3DSecure Network in first step of 3DS authentication process
Visa 4012001036273338 Error in 3DSecure Network in second (asynchronous) step of 3DS authentication proces

Sepa:

IBAN BIC Note
DE09100100101234567891 PBNKDEFFXXX Pending / In progress
DE09100100101234567893 PBNKDEFFXXX Approved

Sofort:

Country Value Note
Germany 88888888 Approved
Belgium 999 Approved
Other countries 00000 Approved

PaySafeCard:

PaySafeCard PIN
0000 0000 0990 0828

Both offer the same functionallity and use the same codebase and are regularly maintained with the latest PayWiser PaymentGateway API version. However, for Clearhaus 3D-Secure is only supported in the production environment (eMerchantPay offers test environment for 3D-Secure also).

Accounts are environment-specific, which means you need separate API keys for test and for production environments.

Limitations

Depending on your account setting, the following limitations may apply:

  • minimum transaction value
  • maximum transaction value
  • maximum number of transactions per hour
  • maximum number of transactions per day
  • maximum number of transactions per month
  • maximum number of transactions per year
  • maximum sum of transactions per hour
  • maximum sum of transactions per day
  • maximum sum of transactions per month
  • maximum sum of transactions per year
  • maximum sum of a single card transactions per hour
  • maximum sum of a single card transactions per day
  • maximum sum of a single card transactions per month
  • maximum sum of a single card transactions per year

If any of these limitations are set up for your account and the limit is exceeded, PayWiser PaymentGateway will fail exceeding API call and return corresponding status code.

The following actions are explicitly and strictly forbidden:

  • penetration testing
  • load testing
  • exploiting common security vulnerabilities
  • injecting malicious data
  • bypassing validation and security checks
  • port scanning and service discovery

Warning

Note that merchants that do not abide by the above policy will be immediately blacklisted, resulting in terminating access to the API and all other PayWiser services.

All API calls are logged and regularly monitored to prevent abuse.

In case of excessive usage (exceeding normal number of calls) or malicious usage, your test or production accounts can be suspended without prior notice.

In such case suspension will remain in place until PayWiser administrative staff reviews suspendion reasons and lifts suspension.

No API calls can be made for the duration of the suspension.

Payment methods

PayWiser PaymentGateway currently supports the following payment methods:

MasterCard

  • Maestro cards (only with Clearhaus, eMerchantPay does not support Maestro cards)
  • MasterCard debit cards
  • MasterCard credit cards

Visa

  • Visa Electron cards
  • Visa debit cards
  • Visa credit cards

Moneta

  • Moneta DO
  • Moneta SMS

Sepa SDD

Sofort

PaySafeCard

Notice on Maestro cards

There are some specifics regarding Maestro cards that need to be observed:

  • Maestro cards can only be used with Clearhaus, eMerchantPay does not support Maestro cards
  • Maestro cards generally do not have security code
  • Maestro cards can not be tokenized, but can be used to make a Reserve API call using card data (followed by Capture API call)
  • Because Maestro cards can not be tokenized, they can not be used for recurring payments
  • Maestro cards generally require 3D Secure to use Reserve API call

There specifics may vary from issuer to issuer and depend solely on the issuers policy regarding Maestro cards.

Using WebPayments, Maestro cards are always processed using 3D-Secure. If your account is not 3D-Secure enabled, it is not possible to charge Maestro cards.

Moneta payments

Note

Moneta payments are supported only in Slovenia for the time being.

There are two different types of Moneta payments:

Moneta SMS

Moneta SMS is designed for simple, one-time payments.

Customer effectively pays with his phone number, recieves SMS message with payment confirmation instructions.

After payment is confirmed by the customer, payment is fully processed and funds are transfered.

Moneta DO

Moneta DO is designed for recurring payments.

First step for Moneta DO recurring payments is agreement (contract) confirmation.

Customer enters his phone number and recieves SMS message with agreement confirmation instructions.

After agreement is confirmed, payments can be made unattended (customer does not need to confirm each individual payment based on agreement).

For both Moneta SMS and Moneta DO payment API calls, Items array can be specified (containing list of items bought by the customer, prices and VAT rates) can be specified.
Please refer to API methods MonetaReserve, MonetaSMSSimplePayment and StartRecurringPayment for specifics.

If Items array is specified, Sum of all items must match payment Amount, otherwise execution of payment will fail and error will be returned.

If no Items are specified, Moneta DO payment will be executed with one default item with VATPercent=0 – it is important for the merchant to be aware of this in case when Moneta is issuing automatic invoices to the customers.

For further information on Moneta payments and list of mobile operators supporting Moneta payments, please visit https://www.moneta.si.

List of response codes

Every PayWiser PaymentGateway API response contains status code and status message in accordance with the following list:

Status Message
-1 Invalid caller
-2 Invalid parameters
-3 Duplicate ReferenceID
-4 Error calling bank
-5 Unknown card type
-6 Wrong format of CardExpDate
-7 Invalid CheckReferenceID
-8 Invalid PGReferenceID
-9 Amount is out of bounds (either 0 or not between min and max)
-10 Invalid ReservationReferenceID
-11 General processing error
-12 Invalid InitPaymentReferenceID
-13 Web payment is no longer active
-14 Web payment was already processed
-15 Invalid PaymentCheckURL response
-16 Invalid card region (intra)
-17 Invalid card region (inter)
-18 Hourly transaction count limit exceeded
-19 Daily transaction count limit exceeded
-20 Monthly transaction count limit exceeded
-21 Hourly transaction sum limit exceeded
-22 Daily transaction sum limit exceeded
-23 Monthly transaction sum limit exceeded
-24 Hourly card transaction count limit exceeded
-25 Daily card transaction count limit exceeded
-26 Monthly card transaction count limit exceeded
-27 Invalid WebFormLanguage
-28 Invalid TemplateID
-29 Invalid RecurringScheduleID
-30 General Moneta error
-31 Invalid AgreementID
-32 Agreement not confirmed
-33 3DS error – wrong card type
-34 3DS processing error
-35 3DS is not set up for this account
-36 3DS is not allowed for this account
-37 3DS error – parameter ThreeDSecurePaRes or ThreeDSecureReferenceID is required
-38 3DS error – parameter ThreeDSecureData is required
-39 3DS error – ThreeDSecureReferenceID not found or not completed
-40 Maestro cards cannot be tokenized. Use /Reserve with card data instead.
-41 Merchant requires 3DS, but this card does not support 3DS
-42 Maestro cards processing require 3DS enabled account
-43 Maestro cards cannot be tokenized.
-44 Maestro cards require 3DS.
-45 3DS error – parameter ThreeDSecureReferenceID is required
-46 Yearly transaction count limit exceeded
-47 Yearly transaction sum limit exceeded
-48 Yearly card transaction count limit exceeded
-49 Account has been temporarily suspended
-50 Card has already been declined by the bank. Unable to process this card for 10 minutes.
-51 Recurring payments or installments are not allowed with mandatory 3DS.
-52 Down payments, skipping payments or shitfing first payment are not alloweed with mandatory 3DS.
-53 Invalid RecurringPlanID
-54 Invalid FirstPaymentDate
-55 Invalid ExpiryDate
-56 PaymentsSkipCount cannot be greater than total number of payments
-57 Recurring payments cannot have Amount (use RecurringPayment.PaymentAmount instead)
-58 Recurring ExpiryDate must be after FirstPaymentDate
-59 Recurring FirstPaymentDate can not be before today
-60 Duplicate RecurringReferenceID
-61 Recurring payments are not allowed for this account
-62 Recurring schedule does not exist
-63 Recurring schedule is already terminated
-64 Invalid PlanPattern value
-65 Invalid RetryPattern value
-66 MaxRetryCount must be greater or equal to 0
-67 Either both MaxRetryCount and RetryPattern or none of them must be specified
-68 PaymentHour must be between 0 and 23
-69 Card with specified CardToken does not exist
-70 Recurring plan can not have InstallmentTotalValue
-71 ImmediatePaymentAmount is out of bounds (either 0 or not between min and max)
-72 PaymentAmount is out of bounds (either 0 or not between min and max)
-73 Card payments are not allowed, specifying AllowCards is not allowed
-74 Moneta payments are not allowed, specifying AllowMoneta is not allowed
-75 AdjustPlanWithStartDate is not allowed with specified recurring plan pattern
-76 RenewYearly is only allowed with installment type (not recurring) and for monthly plans with less than 12 installments only
-77 Sepa payments are not allowed for this account
-78 Invalid MandateSignatureDate
-79 Duplicate MandateID
-80 MandateID does not exist
-81 MandateID is already revoked
-82 Amount is out of bounds (either 0 or not between min and max)
-83 Invalid CheckPaymentReferenceID
-84 Invalid Sepa Sequence
-85 Invalid MandateValidFromDate
-86 Sepa collection date can not be before current day
-87 Sepa payment date is out of bounds (either to soon or too late) for bank processing, check StartDate
-88 Invalid CollectionDate
-89 MandateID is allowed only for Sepa payments
-90 Sepa mandate is canceled
-91 Currency mismatch (different currency than used for Reserve)
-92 Invalid Amount (larger than used for Reserve)
-93 Sepa mandate has already been used
-94 Invalid combination of CardToken, SepaMandateID and MonetaAgreementID - only one can be used
-95 Recurring payments require recurring mandate
-96 One or more itms in the list has Currency different from the payment Currency
-97 Either CardToken, SepaCreditorMandateID or MonetaAgreementID must be specified
-98 Sepa first payment date is out of bounds (either to soon or too late) for bank processing
-99 Sepa consecutive payment dates are out of bounds (either to soon or too late) for bank processing
-100 Sepa consecutive retry dates are out of bounds (either to soon or too late) for bank processing
-101 Sepa payments are not allowed, specifying AllowSepa is not allowed
-102 MonetaDO settings missing
-103 MonetaDO error
-104 MonetaDO agreement does not exist
-105 MonetaDO agreement is not yet confirmed by the customer
-106 MonetaDO agreement is canceled
-107 MonetaDO reservation does not exist
-108 Only EUR currency is allowed for Moneta payments
-109 AgreementID is not allowed for non-recurring payments
-110 AgreementID is allowed only for moneta payments
-111 MobileNumber does not support Moneta payments
-113 General Sepa error
-114 Invalid characters
-115 Sepa error - access token not available
-116 Payouts are not allowed for this account
-117 Surcharge+Cashback can not be greater than Amount
-118 Invalid Surcharge amount (larger than used for Reserve)
-119 Invalid CashBack amount (larger than used for Reserve)
-120 Surcharge is allowed only for card payments
-121 Surcharge can not be greater than Amount
-122 Surcharge can not be used with Recurring payments
-123 Sum of items does not match the Amount
-124 PaymentExecutionMethod is allowed only for card payments
-125 RenewReservation is not allowed for this account
-126 WiwaPay payments are not allowed for this account
-127 WiwaPay settings missing
-128 WiwaPayWalletID does not exist
-129 Only EUR currency is allowed for wiwaPay payments
-130 Tokenization error
-131 3DS parameters are not supported for your bank with this method
-132 Invalid currency
-133 Maestro not supported by the bank
-134 Invalid MobileNumber format
-135 Method not allowed
-136 Invalid PaymentReferenceID
-137 Currency mismatch (different currency than used for payment)
-138 Invalid Amount (larger than used for payment)
-140 Unsupported country
-141 General Sofort error
-142 General PaySafeCard error
-143 Sofort payments are not allowed for this account
-144 PaySafeCard payments are not allowed for this account
-145 Sofort payments are not allowed, specifying AllowSofort is not allowed
-146 PaySafeCard payments are not allowed, specifying AllowPaySafeCard is not allowed
-147 Recurring payments are not allowed with Sofort or PaySafeCard
-148 Redirect URLs must be specified for Sofort and PaySafeCard payments
-149 Invalid country code
-150 Parameter is required for your risk level
-151 Invalid discounts
-152 Invalid date
-153 Coupon already exists
-154 Coupon does not exist
-155 Coupon is revoked
-156 Coupon has expired
-157 Coupon and payment currencies do not match
-158 Invalid ReferenceID
-159 Recurring schedule is already finished
-160 Changing payment amount for installment is not possible
-161 PaymentExecutionMethod is not allowed, SimplePayment is set up on the account
-162 HostedFields functionallity is not allowed for this account
-163 Selected PaymentExecutionMode is not allowed or not set in account settings
-164 Card not found, check parameters
-165 Card is blocked by merchant
-166 Card is already blocked
-167 Invalid BlockReferenceID (card is not blocked)
-168 Refund not possible, transaction chargebacked
-169 Recurring plan is already terminated
-170 Account has been permanently closed
-171 Administrative mail not yet confirmed
-172 Not a POS account
-173 General POS error
-174 POS payment not found
-175 POS payment is already in progress
0 Ok
305 3DS is needed
1000 Confirmation requested
1001 Agreement not active
20000 Approved
4xxxx Clearhaus error codes
5xxxx eMerchantPay error codes

Transaction notifications and reporting

Depending on your account settings, PayWiser PaymentGateway will send you immediate transaction notifications on following events:

  • On successfull completion of Capture, Refund, Payout or SimplePayment methods for credit card payments. For 3D-Secured transactions, you will recieve two notifications; first will be sent immediately with the transaction with state »Received« and the second when 3D-Secure procedure is completed with state either »Success« or »Failure«)
  • On successfull completion of MonetaCapture method for Moneta DO payments
  • On successfull completion of MonetaSMSPushPayment method for Moneta SMS payments (notification will be sent immediately after the payment was successfully posted – customers payment confirmation will result in a separate notification, please see section below)
  • On successfull payment at WebPayment page (after the merchant’s customer completes its payment in full – report type will depend on which payment method the customer selected)
  • On unsuccessful payment at WebPayment page (if error of any kind uccured during any stage of payment processing after the customer enters payment details and clicks »Pay« button)
  • On successful recurring payment
  • On unsuccessfull recurring payment (notification will also containg retry info)
  • On Sepa mandate creation, if the mandare is created during the WebPayment payment
  • On successful Sepa payment or Sepa refund (you will recieve two notifications; first will be sent immediately with payment/refund with state »Received« and the second when Sepa bank/acquirer actually processes the payment with state either »Success« or »Failure«)
  • On successful Sofort payment (you will recieve two notifications; first will be send immediately with payment with state »Recieved« and the second when Sofort payment is either successfully completed (with »Success« state) or canceled (with »Failure« state)
  • On successful PaySafeCard payment (you will recieve two notifications; first will be send immediately with payment with state »Recieved« and the second when Sofort payment is either successfully completed (with »Success« state) or canceled (with »Failure« state)
  • When chargeback is initiated or transaction chargeback status changes.

Notifications will be sent by email or uploaded to your eCommerce web service using HTTP POST or HTTP GET.
Each individual transaction will result in immediate and separate notification.

Because of the nature of the SMS Moneta payments, customer must confirm payment before it will be finalized.
Once the payment is confirmed by the customer, another immediate notification will be sent to your eCommerce web service using HTTP POST.

PayWiser PaymentGateway can also send you automated daily and monthly transaction reports on:

  • Successfull Capture, Refund or Payout transactions for credit card payments
  • Successfull MonetaCapture transactions for Moneta DO payments
  • Successfull MonetaSMSPushPayment transactions for Moneta SMS payments

Depending on your account settings, there reports will be sent by email or uploaded to your eCommerce web service using HTTP POST.
Each transaction report will include all of the transactions that have occured in respective time period.

Immediate transaction notifications and periodical reports have the same structure.
However, SMS Moneta confirmations have different structure – please see sections below for the details.

Transaction notification/periodical report data structure

Parameter name Type Description
TransactionTime String Transaction processing time
PaymentType Integer Type of payment
Values:
0 – credit card
1 – Moneta DO
2 – Moneta SMS
3 – Sepa
4 – wiwaPay
5 – Sofort
6 – PaySafeCard
TransactionType Integer Type of the transaction
Values:
2 – capture
3 – refund
5 – payout
17 – Moneta DO payment
18 – Moneta SMS payment
21 – SimplePayment
32 – Sepa payment
43 – Sepa refund
44 – Sofort payment
45 – PaySafeCard payment
TransactionDescription String Transaction description
PaymentCardNumber String Last 4 digits of credit card (only for credit card payments)
PaymentCardExpirationDate String Credit card expiration date (only for credit card payments)
PaymentMobileNumber String Mobile number used for payment (only for moneta payments)
PaymentValue Integer Value of the payment in minor units
PaymentCurrency String ISO 4217 3-letter currency code
StatusCode Integer Status code
StatusDescription String Status description
StateCode Integer State code (for Sepa, Sofort and PaySafeCard payments)
StateDescription String State description (for Sepa, Sofort and PaySafeCard payments)
RecurringReferenceID String You reference ID of the recurring
RecurringPlanID String Recurring plan ID
CustomerName String Customers name (as entered in WebPayment)
CustomerCity String Customers city (as entered in WebPayment)
CustomerAddress String Customers address (as entered in WebPayment)
CustomerZipCode String Customers zip code (as entered in WebPayment)
CustomerState String Customers state (as entered in WebPayment)
CustomerCountry String Customers country (as entered in WebPayment)
CustomerMembershipEmail String Customers membership email (as entered in WebPayment)
CustomerMembershipMobileNumber String Customers membership mobile number (as entered in WebPayment)
CustomerMembershipMemberID String Customers membership ID number (as entered in WebPayment)
CustomerMembershipCouponID String Customers membership coupon ID number (as entered in WebPayment)
CustomerCompanyName String Customers company name (as entered in WebPayment)
CustomerCompanyVATNumber String Customers company VAT number (as entered in WebPayment)
CustomerMessage String Customers message to the merchant (as entered in WebPayment)
StatementText String Statement text
PGReferenceID String PayWiser reference ID
TransactionReferenceID String Your own reference ID (if applicable)
WebPaymentReferenceID String Your own WebPayment reference ID (if applicable - if payment was instantiated as a result of a WebPayment)
OrderNumber String
PaymentCardToken String Credit card token (only for credit card payments)
PaymentAgreementID String Customers agreement ID (for recurring payments, only for Moneta DO)
PaymentSepaMandateID String Mandate ID for Sepa payments
PaymentSepaCollectionDate String Collection date for Sepa payments
PaymentWiwaPayWalletID String Wallet ID for WiwaPay payments
ConfirmationSequence String Confirmation sequence (MD5 hash) calculated by PayWiser.
Calculation is done by combining PGReferenceID and TransactionReferenceID from the transaction with your confirmation string, as specified in your PayWiser account

Additionally, recurring notifications can contain the following data

Parameter name Type Description
RecurringPaymentNumber String
RecurringStatusCode String
RecurringStatusDescription String

Moneta SMS customers payment confirmation notification

Parameter name Type Description
PGReferenceID String PayWiser reference ID
ReferenceID String Your own reference ID (if applicable)
PaymentCompleted String Indicator if payment is successfully completed (true) or not (false)
Amount Integer Value of the payment in minor units
WebPaymentReferenceID String
OrderNumber String
ConfirmationSequence String Confirmation sequence (MD5 hash) calculated by PayWiser.
Calculation is done by combining ReferenceID of this call with your confirmation string, as specified in your PayWiser account

Moneta DO agreement creation/customers agreement confirmation notification

Parameter name Type Description
ConfirmedDateTime String Date and time of confirmation (in UTC format)
If this is empty, it means a new agreement was created
If it is filled, it means agreement was confirmed by the customer
AgreementID String ID of agreement
MobileNumber String Mobile number of agreement
PGReferenceID String PayWiser reference ID
TransactionReferenceID Your own reference ID (if applicable)
ConfirmationSequence String Confirmation sequence (MD5 hash) calculated by PayWiser.
Calculation is done by combining PGReferenceID and TransactionReferenceID from the transaction with your confirmation string, as specified in your PayWiser account

3D-Secure transaction notification

Parameter name Type Description
ThreeDSecureReferenceID String 3D-Secure reference ID
Successful String Status of 3D-Secured transactions true if successful, false otherwise
ConfirmationSequence String Confirmation sequence (MD5 hash) calculated by PayWiser. Calculation is done by combining ThreeDSecureReferenceID of this call with your confirmation string, as specified in your PayWiser account

Sepa mandate creation notification

Parameter name Type Description
MandateID String Mandate ID
MandateSignatureDate String Mandate signature date and time
MandateValidFromDate String Date from which the mandate is valid
MandateDescription String Mandate description
IsRecurring True if mandate can be used for recurring payments
False if mandate can only be used for a single payment
UseCor1 True if COR1 option was used
False otherwise
DebtorTitle Title/salutation of the debtor
DebtorName Debtors full name
DebtorEmail Debtors email
DebtorIBAN Debtors IBAN
DebtorBIC Debtors BIC
DebtorCountry Debtors country code
DebtorAddress1 Street and street number of the debtor
DebtorAddress2 ZIP and City of the debtor
PGReferenceID String PayWiser reference ID
TransactionReferenceID Your own reference ID (if applicable)
ConfirmationSequence String Confirmation sequence (MD5 hash) calculated by PayWiser.
Calculation is done by combining PGReferenceID and TransactionReferenceID from the transaction with your confirmation string, as specified in your PayWiser account

3D-Secure

PayWiser PaymentGateway fully supports 3D-Secured transactions.

Furthermore, 3D-Secure support is implemented in a way which enables you to use it in a most simplified way.

Notice – test environment does not support 3D-Secured transactions!

Your accounts 3D-Secure settings may be:

Disabled

  • using 3D-Secure is not possible
  • calls to the API methods Tokenize, Reserve and SimplePayment may not contain 3D-Secure parameters
  • calls to the API methods ThreeDSecureInit and ThreeDSecureCheckPaRes are not permitted
  • when using PayWiser PaymentGateway WebPayment, no 3D-Secure is performed

Enabled (only for Clearhaus)

  • using 3D-Secure is possible (if you wish to do so), but in no way mandatory or enforced
  • calls to the API methods Tokenize, Reserve and SimplePayment may contain 3D-Secure parameters
  • calls to the API methods ThreeDSecureInit and ThreeDSecureCheckPaRes are permitted
  • when using PayWiser PaymentGateway WebPayment, no 3D-Secure is performed, unless:
    • customer is using Maestro card

Mandatory

  • using 3D-Secure is mandatory and fully enforced
  • calls to the API methods Tokenize, Reserve and SimplePayment must contain 3D-Secure parameters (only for Clearhaus)
  • calls to the API methods ThreeDSecureInit and ThreeDSecureCheckPaRes are permitted (only for Clearhaus)
  • when using PayWiser PaymentGateway WebPayment, 3D-Secure is performed

PayWiser PaymentGateway usage scenarios with 3D-Secure:

WebPayment from

  • if the merchant's customer selects payment via the credit card, WebForm automatic checks credit card enrollment and redirects the customer to the issuing banks 3D-Secure site
  • the cursomer performs and completes 3D-Secure procedure
  • PayWiser PaymentGateway is notified (by the bank) of the 3D-Secure completion
  • if 3D-Secure procedure was completed successfully, PayWiser PaymentGateway continues processing payment (now 3D-Secured) as usual; if payment is successful, the customer is redirected to payment success page; if payment is not successful, the customer is redirected to payment error page
  • if 3D-Secure procedure was not successfully completed, payment is not processed and the customer is redirected to the payment error page

Direct API access (Clearhaus)

Even though PayWiser PaymentGateway offers you the simplest way of using 3D-Secure, you as the developer must still fully understand what 3D-Secure actually is and how it works to successfully implement it in your calls. Visit and read about it at https://www.mastercard.com/gateway/implementation_guides/3D-Secure.html

  • during Tokenize API call, credit card is automatically checked for 3D-Secure enrollment
  • if the card is enrolled, ThreeDSecureResponse parameter is returned in Tokenize response
  • ThreeDSecureResponse contains all of the 3D-Secure related data, including PaReq
  • cardholder must be redirected to the card issuers 3D-Secure site in order to complete 3D-Secure procedure
  • after 3D-Secure procedure is completed, PaRes is returned
  • with PaRes, Reserve API call can be made

Redirecting customer to the card issuers 3D-Secure site and later on receiving 3D-Secure response can be done in two ways:

  1. Using ThreeDSecureURL from the ThreeDSecureResponse
    • ThreeDSecureReferenceID is unique reference ID of each individual 3D-Secure
    • ThreeDSecureURL is already fully formatted and contains all the necessary data for 3D-Secure, so you can simply redirect your merchant’s customer to the ThreeDSecureURL
    • your merchant's customer performs 3D-Secure procedure at the card issuers site
    • after 3D-Secure is completed, bank performs callback to the PayWiser PaymentGateway, returning PaRes
    • PayWiser PaymentGateway checks recieved PaRes to determine if 3D-Secure was successful or not
    • PayWiser performs callback to your specified ThreeDSecure callback URL, notifying you of 3D-Secure status (callback contains ThreeDSecureReferenceID and 3D-Secure status)
    • if 3D-Secure was successful, you can make Reservation or SimplePayment API call, specifying ThreeDSecureReferenceID
  2. Using AcsUrl and PaReq from the ThreeDSecureResponse
    • you can set up your own 3D-Secure implementation and callback services, if you wish so
    • however, doing so requires full understanding of the 3D-Secure procedure and ability to handle all possible situations, such as:
    • redirecting your merchant's customer to the ACS, passing PaReq parameter, your order number
    • implementing your own 3D-Secure callback service for receiving and processing bank responses
    • ability to decode and parse PaRes

We strongly recommend all our customers to use PayWiser PaymentGateway built-in 3D-Secure processing capabilities (using ThreeDSecureURL from the ThreeDSecureResponse).

If you wish, you can start 3D-Secure checks and require your customer to perform and complete 3D-Secure procedure before starting Tokenize. In this scenario, you can use ThreeDSecureInit API call, which also returns complete ThreeDSecureResponse data.

When using SimplePayment API method you must initiate 3D-Secure procedure using ThreeDSecureInit API call. If the card is 3D-Secured, you must redirect your customer to the issuers 3D-Secure page, where your customer must successfully complete 3D-Secure procedure. Only then you can use SimplePayment API method (using ThreeDSecureReferenceID or ThreeDSecurePaRes).

Direct API access (eMerchantPay)

This 3D-Secure implementation is more simple.

  • Tokenize API call is done without 3D-Secure (note that tokenization is not mandatory and you can call Reserve directly using card data and 3D-Secure will still work)
  • depending on your accounts 3D-Secure settings, Reserve works in the following ways:
    • disabled
      • reserve is done without 3D-Secure
    • mandatory
      • if the card is enrolled, ThreeDSecureResponse is returned, status is 305
      • if the card is not enrolled, Reserve fails
  • customer must be redirected to the ThreeDSecureURL from ThreeDSecureResponse
  • after 3D-Secure is completed, callback to your specified callback URL is perform, notifying you of 3D-Secure status (successful or failed)
  • if 3D-Secure was successful, you can make Capture call normally

Summary

  • if your account is not 3D-Secure enabled, you can not use any of the PayWiser PaymentGateway 3D-Secure processing services
  • if your account is 3D-Secure enabled, you can use PayWiser PaymentGateway 3D-Secure processing services at your discretion
  • if your account has mandatory 3D-Secure, you must use PayWiser PaymentGateway 3D-Secure processing services whenever and whereever required
  • using PayWiser PaymentGateway WebPayment web form requires no actions and no understanding of 3D-Secure procedure on your part – everything is managed automagically for you
  • using PayWiser PaymentGateway API requires the following steps:
    • for Clearhaus
      • tokenizing card:
        • Tokenize
        • redirect customer to the card issuers 3D-Secure site
        • recieve PayWiser PaymentGateway callback with 3D-Secure data
        • proceeding with Reserve using ThreeDSecureReferenceID from Tokenize call
      • using SimplePayment:
        • ThreeDSecureInit
        • redirect customer to the card issuers 3D-Secure site
        • recieve PayWiser PaymentGateway callback with 3D-Secure data
        • proceeding with SimplePayment using ThreeDSecureReferenceID from Tokenize call
    • for eMerchantPay
      • tokenizing card:
        • Tokenize
        • Reserve
        • redirect customer to the card issuers 3D-Secure site
        • recieve 3D-Secure callback
        • procede with Capture
      • direct reservation:
        • Reserve
        • redirect customer to the card issuers 3D-Secure site
        • recieve 3D-Secure callback
        • procede with Capture
      • using SimplePayment:
        • SimplePayment
        • redirect customer to the card issuers 3D-Secure site
        • recieve 3D-Secure callback

Recurring payments

PayWiser PaymentGateway enables you to set up automatic recurring payments in a flexible way.

Requirements and limitations:

  • account must have recurring payments enabled
  • account must have mandatory 3D-Secure disabled (3D-Secure disabled or enabled/optional are fine)
  • 3D-Secure is not possible with recurring payments
  • only credit cards with tokenization are supported (Maestro cards are not supported)

There are two types of recurring payments:

  1. Pure recurring (undefined number of payments and no end date – payments are being made according to the defined schedule until recurring is terminated).
    This type of payment is suitable for membership or subscription based services that would like to charge their customers periodically.
  2. Installments (fixed number of payments and a known end date).
    This type of payment is suitable for services that are offering their customers option of paying for recieved goods/services in one or more installments.

All recurring payment instances have fixed payment amount, specified when the recurring is being initiated.
For your convenience, you can specify separate payment which will be billed immediately and is not a part of the recurring payment.

If a recurring payment fails, our recurring schedule will try to process it again.
Number of retries and retry schedule are specified by each individual recurring plan.
Regardless of failed payment, other consecutive payments will be processed.

You can recieve notification for each invididual failed payment.
Failed notifications will specify whether further retrys will be made or it was a final try.

Recurring payments are initiated with recurring plan.
Recurring plan can be defined either using PayWiser Dashboard or with API call CreateRecurringPlan.

Start date of recurring payment (as specified in the recurring plan) will always be corrected with specified start date of the recurring during recurring payment initiation.
If recurring plan is actually installment plan, end date will also be corrected accordingly.

Recurring schedule will take care of processing payment instances on their respective dates as defined ty the recurring plan (and start date) - no other payments outside of the schedule will take place.

You can always mark recurring schedule as finished or you can terminate it prematurely.
Schedule payment can not be forced for processing – it will always run as specified by used recurring plan.

We suggest you (developer as well as merchant) to get familiar with all the aspects and details of recurring before you start using it in production environment.
Our testing environment provides you with all the necessary tools for testing – you can create recurring plan, make recurring schedule which can also be freely tested (instances can be fired manually, for the entire duration of the recurring plan).

General flow when using WebPayments form:

Without immediate payment

  • Credit cards
    • Credit card is tokenized
    • Recurring schedule is created
    • Notification is sent (marked as WebPayment, value is 0), notifying you of customers confirmed web payment
    • For recurring payments (per used recurring plan), transaction notifications will be sent
  • Moneta
    • No existing agreement
      • New agreement will be made
      • Customer will recieve SMS, prompting for confirmation
      • Notification is sent (marked as new agreement)
      • When the customer confirms agreement:
        • agreement notification is sent (to the URL specified in your accounts Moneta DO settings)
        • Recurring schedule is created
      • For recurring payments (per used recurring plan), transaction notifications will be sent
    • Existing agreement
      • Recurring schedule is created
      • Notification is sent (marked as WebPayment, value is 0), notifying you of customers confirmed web payment
      • For recurring payments (per used recurring plan), transaction notifications will be sent
  • Sepa
    • No existing mandate
      • New mandate will be made (UseCor1=true if using Fidor bank)
      • Notification is sent (marker as new mandate)
      • Recurring schedule is created
      • For recurring payments (per used recurring plan), transaction notifications will be sent
    • Existing mandate (which must be created with UseRecurring=true)
      • Recurring schedule is created
      • Notification is sent (marked as WebPayment, value is 0), notifying you of customers confirmed web payment
      • For recurring payments (per used recurring plan), transaction notifications will be sent

With immediate payment

  • Credit cards
    • Credit card is tokenized
    • Immediate payment is processed, standard transaction notification is sent
    • Recurring schedule is created
    • For recurring payments (per used recurring plan), transaction notifications will be sent
  • Moneta
    • No existing agreement
      • New agreement will be made
      • Customer will recieve SMS, prompting for confirmation
      • Notification is sent (marked as new agreement)
      • When the customer confirms agreement:
        • agreement notification is sent (to the URL specified in your accounts Moneta DO settings)
        • Immediate payment is processed, standard transaction notification is sent
        • Recurring schedule is created
        • For recurring payments (per used recurring plan), transaction notifications will be sent
      • Existing agreement
        • Immediate payment is processed, standard transaction notification is sent
        • Recurring schedule is created
        • For recurring payments (per used recurring plan), transaction notifications will be sent
      • Sepa
        • No existing mandate
          • New mandate will be made (with UseCor1=true if using Fidor bank)
          • Notification is sent (marker as new mandate)
          • Immediate payment is processed (due date is current date + 1 days, per COR1 scheme), standard transaction notification is sent
          • Recurring schedule is created
          • For recurring payments (per used recurring plan), transaction notifications will be sent
        • Existing mandate (which must be created with UseRecurring=true)
          • Immediate payment is processed (due date is current date + 1 days, per COR1 scheme), standard transaction notification is sent
          • Recurring schedule is created
          • Notification is sent (marked as WebPayment, value is 0), notifying you of customers confirmed web payment
          • For recurring payments (per used recurring plan), transaction notifications will be sent

General flow when using StartRecurringPayment API:

Without immediate payment

  • Credit cards
    • Recurring schedule is created
    • Notification is sent (marked as WebPayment, value is 0), notifying you of customers confirmed web payment
    • For recurring payments (per used recurring plan), transaction notifications will be sent
  • Moneta
    • Recurring schedule is created
    • Notification is sent (marked as WebPayment, value is 0), notifying you of customers confirmed web payment
    • For recurring payments (per used recurring plan), transaction notifications will be sent
  • Sepa
    • Recurring schedule is created
    • Notification is sent (marked as WebPayment, value is 0), notifying you of customers confirmed web payment
    • For recurring payments (per used recurring plan), transaction notifications will be sent

With immediate payment

  • Credit cards
    • Immediate payment is processed, standard transaction notification is sent
    • Recurring schedule is created
    • For recurring payments (per used recurring plan), transaction notifications will be sent
  • Moneta
    • Immediate payment is processed, standard transaction notification is sent
    • Recurring schedule is created
    • For recurring payments (per used recurring plan), transaction notifications will be sent
  • Sepa
    • Immediate payment is processed (due date is current date + 1 days, per COR1 scheme), standard transaction notification is sent
    • Recurring schedule is created
    • For recurring payments (per used recurring plan), transaction notifications will be sent

Sepa payments

PayWiser PaymentGateway supports accepting Sepa SDD (Sepa Direct Debit) payments by integrating twobanks/acquirers:

Requirements for accepting Sepa payments depend on the Sepa bank/acquirer and are as follows:

Fidor bank

Note

Currently inactive

  • company must have Sepa account open directly with Fidor bank. Currently only companies registered in United Kingdom, Germany or Austria can open such account
  • customers can pay using their bank account details (IBAN and BIC) if their bank account is open in any of the Sepa countries

eMerchantPay

  • company must have eMerchantPay merchant account
  • customers can pay using their bank account details (IBAN and BIC) if their bank account is open in any of the Sepa countries

All Sepa SDD payments must include signed and confirmed mandate by the payer.
Signing, handling and storing customers mandate is sole responsibility of the merchant and governed by the local legislature.

Sepa SDD supports one-time payments (one-off) and recurring payments.
Depending on your Sepa bank/acquirer, there might be some slight differences using PayWiser PaymentGateway API, methods and/or method parameters.

Please read the next chapters with care, differences are clearly marked when applicable.

Fidor bank specifics

Sepa payments supports standard CORE scheme as well as COR1 scheme.

Payment submission timeline and specifics:

  • CORE:
    • first recurring or one-off payment must be submitted at least 5 business days prior to the collection date
    • subsequent recurring payments must be submitted at least 2 business days prior to the collection date
  • COR1:
    • all payments must be submitted at least one business day prior to the collection date

Sepa scheme is selected when creating mandate.
UseCor1=true will result in COR1 being used, whereas UseCor1=false will recult in CORE being used.

We ask you to consider payment submission timelines carefully and start Sepa payments well within safe timeline margins in order to minimize chances of payment failure.

PayWiser PaymentGateway only provides interface to the Fidor bank and eMerchantPay systems.
All rules regarding API or Sepa rules are subject to change by the eMerchantPay and respective banks (recieving and/or processing banks), therefore PayWiser cannot offer any extended support regarding payment submission timelines and/or collection dates.

Since Sepa payments are not carried out immediately, but on their due date, PayWiser PaymentGateway is periodically checking statuses of all unfinished payments past their due dates.
On status change, standard notification is sent.

For each Sepa transaction (payment or refund) you will normally recieve two notifications:

  • first notification will be sent immediately after the transaction takes place in PayWiser PaymentGateway – this means that PaymentGateway accepted your Sepa transaction and forwarded it to the Sepa bank/acquirer; transaction is not yet fully processed, no funds were transfered yet
  • the second notification will be sent after the transaction is processed by the Sepa bank/acquirer – this means that the transaction was fully processed and has final status

Sepa transaction statuses are as follows

  • 2 - Received (waiting for Sepa bank/acquirer processing)
  • 4 - Success (finished, funds were transferred)
  • 5 - Failure (finished, was rejected by the Sepa bank/acquirer or failed at Sepa bank/acquirer processing, no funds were transferred)

List of allowed countries for SepaCreateMandate for eMerchantPay

Country code Country name
ATAustria
BEBelgium
CYCyprus
EEEstonia
FIFinland
FRFrance
DEGermany
GRGreece
IEIreland
ITItaly
LVLatvia
LTLithuania
LULuxembourg
MTMalta
MCMonaco
NLNetherlands
PTPortugal
SKSlovakia
SMSan Marino
SISlovenia
ESSpain

For SepaPayOut, allowed countries include all countries for SepaCreateMandate and additionally

Country code Country name
BGBulgaria
HRCroatia
CZCzech Republic
DKDenmark
UKUnited Kingdom
HUHungary
ISIceland
LILiechtenstein
NONorway
PLPoland
RORomania
SESweden
CHSwitzerland

If Sepa payment transaction has status Received for more than 5 days, PayWiser PaymentGateway will automatically check for payment status change with the acquirer.

Check will be performed once a day each day after 5 days.

If payment status change occurs (transaction gets status Success or Failure), standard notification will be sent.

Alternately, you can check for payment transaction status manually, using SepaCheckMandatePayment API method.

Sofort payments

PayWiser PaymentGateway supports accepting Sofort payments by integrating eMerchantPay.

Requirements for accepting Sepa payments are as follows:

  • company must have eMerchantPay merchant account
  • customers can pay using their bank account details (IBAN and BIC) if their bank account is open in any of the countries, supported by Sofort:
    • AT Austria
    • BE Belgium
    • DE Germany
    • ES Spain
    • FR France
    • GB United Kingdom
    • IT Italy
    • NL Netherlands

Sofort payments support only one time payments and can not be used with PayWiser PaymentGateway recurring capabilities.

Since Sofort payments are not carried out automatically, but only after the customer executes payment on Sofort website, payment status is known only after the whole process is completed. On status change, standard notification is sent.

For each Sofort payment you will normally recieve two notifications:

  • first notification will be sent immediately after the transaction takes place in PayWiser PaymentGateway – this means that PaymentGateway accepted your Sofort transaction and forwarded it to the eMerchantPay; transaction is not yet fully processed, no funds were transfered yet, as the customer must first be redirected to the Sofort payment page and complete the payment there
  • the second notification will be sent after the transaction is processed by the Sofort page and the eMerchantPay system – this means that the transaction was fully processed and has final status Sofort transaction states are as follows:
    • 2 - Received (waiting for customer to complete payment at the Sofort page)
    • 4 - Success (finished, funds were transferred)
    • 5 - Failure (finished, was rejected by the Sofort or eMerchantPay system or the customer failed to complete/canceled the payment)

If Sofort payment transaction has status Received for more than 1 day, PayWiser PaymentGateway will automatically check for payment status change with the acquirer.

Check will be performed once a day each day after 1 days.

If payment status change occurs (transaction gets status Success or Failure), standard notification will be sent.

Alternately, you can check for payment transaction status manually, using SofortCheckPayment API method.

PaySafeCard payments

PayWiser PaymentGateway supports accepting PaySafeCard payments by integrating eMerchantPay.

Requirements for accepting PaySafeCard payments are as follows:

  • company must have eMerchantPay merchant account

PaySafeCard payments support only one time payments and can not be used with PayWiser PaymentGateway recurring capabilities.

Since PaySafeCard payments are not carried out automatically, but only after the customer executes payment on PaySafeCard website, payment status is known only after the whole process is completed. On status change, standard notification is sent.

For each PaySafeCard payment you will normally recieve two notifications:

  • first notification will be sent immediately after the transaction takes place in PayWiser PaymentGateway – this means that PaymentGateway accepted your PaySafeCard transaction and forwarded it to the eMerchantPay; transaction is not yet fully processed, no funds were transfered yet, as the customer must first be redirected to the PaySafeCard payment page and complete the payment there
  • the second notification will be sent after the transaction is processed by the PaySafeCard page and the eMerchantPay system – this means that the transaction was fully processed and has final status

PaySafeCard transaction states are as follows:

  • 2 - Received (waiting for customer to complete payment at the PaySafeCard page)
  • 4 - Success (finished, funds were transferred)
  • 5 - Failure (finished, was rejected by the PaySafeCard or eMerchantPay system or the customer failed to complete/canceled the payment)

If PaySafeCard payment transaction has status Received for more than 1 day, PayWiser PaymentGateway will automatically check for payment status change with the acquirer.

Check will be performed once a day each day after 1 days.

If payment status change occurs (transaction gets status Success or Failure), standard notification will be sent.

Alternately, you can check for payment transaction status manually, using PaySafeCardCheckPayment API method.

Surcharges and cashbacks

Definitions:

  • Surcharge - amount that you wish to charge customer on top (example for small payment amounts)
  • Cashback - amount of money the customer wishes to be charged on top and to be payed out in cash immediately and is to be used only for card-present transactions (such as POS payments or any other situation when the customer is physically present at the time of the payment and you can pay them out cash)

Surcharge and Cashback are supported only for card payments (and not for Moneta or Sepa payments).

Surcharge can be used with the following API methods:

  • Reserve
  • Capture
  • SimplePayment
  • InitWebPayment*

* Surcharge can only be specified with InitWebPayment:

  • if payment type is not recurring (only if whole payment takes place immediately)
  • if card payment is the only payment option

Cashback can be used with the following API methods:

  • Reserve
  • Capture
  • SimplePayment

Both Surcharge and Cashback amounts are informative and are not added to the transaction amount. The customer will be charged only for transaction amount, which must already contain surcharge and cashback amounts.
For example, if you wish to charge customer for 10€ with 50 cents of surcharge and the customer wishes 20€ of cashback, you should fill transaction parameters as follows:

  • Amount = 3050
  • Surcharge = 50
  • Cashback = 2000

Surcharge and Cashback amount can not exceed transaction value.

Surcharge amounts must be calculated by the merchant before initiating the transaction.
PayWiser PaymentGateway handles only data storage and lookup and does not support automatic surcharge calculations of any kind.

Risk management

PayWiser PaymentGateway implements risk management features when using eMerchantPay or eComProcessing as an acquirer, oriented towards monitoring card payments, specifically for detection and prevention of fraudulent transactions.

Providing session_id from payment form

This applies to all accounts, regardless of the risk level.

Upon signing up with eMerchantPay or eComProcessing, you will be provided with your own client ID, which must be included in your web form (section 1.a, please see b.)

In your own web form, that is used for entering card data, the following code must be embedded (PHP examples):

Before <html> tag:

copy
<?php 
  session_start();
  $thm_org_id = 'lygdph9h'; //'lygdph9h' for eMerchantPay or 'mn2xyfnd' for eComProcessing
  $client_id = '574'; //your account id/client id as supplied by the eMerchantPay or eComProcessing
  $thm_session_id = $client_id.time().rand(1,999999);
  $thm_params = "org_id=".$thm_org_id."&session_id=".$thm_session_id;
  $thm_guid = md5(rand()); 
?>

In <head> tag:

copy
<?php 
$thm_params = "org_id=".$thm_org_id."&session_id=".$thm_session_id 
?>
>

Before end of <html>.

copy

<p style="background:url(https://h.online-metrix.net/fp/clear.png?<?= $thm_params ?>&session2=<?= $thm_guid ?>&m=1)"></p> 
<img src="https://h.online-metrix.net/fp/clear.png?<?= $thm_params ?>&m=2"> 
<script src="https://h.online-metrix.net/fp/check.js?<?= $thm_params ?>">
</script> 
<object type="application/x-shockwave-flash" data="https://h.online-metrix.net/fp/fp.swf?<?= $thm_params ?>" width="1" height="1" id="thm_fp"> 
  <param name="movie" value="https://h.online-metrix.net/fp/fp.swf?<?=$thm_params ?>" /> 
</object>

When making API calls to the PayWiser PayamentGateway, value of the session_id from the example code above must be supplied when calling the following API methods:

  • Tokenize
  • Reserve
  • SimplePayment
  • StartRecurringPayment

Providing detailed customer data when using API

Depending on your PayWiser account risk level, some or all of the following data must be provided when using API methods:

API method Data Medium risk High risk
Tokenize BuyerIP mandatory mandatory
CardHolderEmail mandatory mandatory
CardHolderBilling optional mandatory
Reserve CardHolderEmail mandatory mandatory
CardHolderBilling optional mandatory
Payout CardHolderEmail mandatory mandatory
CardHolderBilling optional mandatory
SimplePayment CardHolderEmail mandatory mandatory
CardHolderBilling optional mandatory
StartRecurringPayment BuyerIP mandatory mandatory
CardHolderEmail mandatory mandatory
CardHolderBilling optional mandatory

Chargebacks

Chargeback occurs when customer disputes charge made by the merchant at his issuing bank and the bank requests a chargeback. In this case, the amount is automatically refunded to the customers account and deducted from the merchants account.

Customers who initiate chargebacks will automatically be blocked for future transactions.

Chargebacks can occur for card and Sepa payments.
Moneta, Sofort and PaySafeCard payments can not be chargebacked.

Chargebacked transactions can not be refunded.

When chargeback occurs:

  • eMerchantPay will automatically send email notification to the email specified for the admin user in eMerchantPay dashboard
  • PayWiser PaymentGateway will send transaction notification containing chargeback status and description to the URL and/or email specified in the PayWiser Dashboard (for details please see section 10. Transaction notifications and reporting)

Chargebacked transaction can have one of the following chargebacked states:

Chargeback state Description
chargebacked transaction was chargebacked, funds were transferred from the merchants to the customers account
second chargebacked chargeback was reversed (funds were returned from the customers to the merchants account), but the chargeback was repeated (funds were again transferred from the merchants to the customers account)
chargeback reversed chargeback was reversed (funds were returned from the customers to the merchants account)

For additional chargeback information and details merchant should visit eMerchantPay Dashboard.

Automated chargeback emails and notifications are cupported only for eMerchantPay.

Declined and blocked cards

When processing card payment, it can be unsuccessful (among other, techincal reasons) due to card being declined or blocked.

Declined cards

Card can be declined by the acquirer or issuer, in which case the following result codes can be returned:

  • 40410 – card is declined
  • 40412 – card was marked as stolen
  • 40135 – card has expired
  • 40411 – card is restricted

We can offer no additional information regarding declination reasons nor can we make card un-declined.

Furthermore, if card is declined (status code 40410 is returned) three times in a period of 10 minutes, card will be placed on the declined list and it will not be eligable for tokenization for the period of 10 minutes. Once 10 minutes are up, declined card can be tokenized normally again (provided tokenization is successful and is not declined again).

Declined cards list is observed during the following PayWiser PaymentGateway API calls:

  • Tokenize
  • Reserve
  • SimplePayment

Blocked cards

Card can be blocked manually by you, the merchant. In this case the following result codes can be returned:

  • 165 – card is blocked by merchant

You can block cards at will, using PayWiser PaymentGateway API call BlockCard.

Blocked card can be un-blocked using PayWiser PaymentGateway API call UnBlockCard.

Blocked cards list is observed during the following PayWiser PaymentGateway API calls:

  • Tokenize
  • Reserve
  • SimplePayment
  • Refund
  • PayOut

Tokenize

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/Tokenize

Card token is a value that references card details.
Card token (card resource) is used to make Reserve and PayOut method calls.

Card token is later on used for calling Reserve and PayOut methods.

Maestro cards can not be tokenized.
Instead, Reserve using card data can be used.

Depending on your PayWiser 3D-Secure settings, following rules apply:

  • Using Clearhaus
    • 3D-Secure is disabled
      • using ThreeDSecureData parameter is prohibited
      • ThreeDSecureResponse is always empty
    • 3D-Secure is enabled
      • using ThreeDSecureData parameter is mandatory
      • card is automatically checked for 3D-Secure enrollment
        • if the card is enrolled, ThreeDSecureResponse is returned
        • if the card is not enrolled, ThreeDSecureResponse is empty
    • 3D-Secure is mandatory
      • using ThreeDSecureData parameter is mandatory
      • card is automatically checked for 3D-Secure enrollment
        • if the card is enrolled, ThreeDSecureResponse is returned
        • if the card is not enrolled, tokenization is not allowed
  • Using eMerchantPay
    • in all cases ThreeDSecureData parameter is prohibited and ThreeDSecureResponse will always be empty

If card is declined (status code 40410 is returned) three times in a period of 10 minutes, card will be placed on the declined list and it will not be eligable for tokenization for the period of 10 minutes. Once 10 minutes are up, declined card can be tokenized normally again (provided tokenization is successful and is not declined again).

If card is blocked, status code -165 will be returned.

Request parameters

Parameter name Type Max. length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CardHolderName string Name on the credit card
CardNumber string
CardExpDate string
CardSecurityCode string Notice: if your account settings allow CVV skipping, this parameter may be ommited
ThreeDSecureData JSON Allowed only for Clearhaus.
Usage of this parameter depends upon your accounts 3DS settings.
If your accounts 3DS is:
  • disabled – using this parameter is prohibited
  • enabled – you may use this parameter
  • mandatory – this parameter is mandatory
RiskSessionID string Allowed only for eMerchantPay.
Must contain session_id for risk management.
BuyerIP * string IP of the buyer
CardHolderEmail * string
CardHolderBilling * JSON JSON object containing card holders billing details

* Mandatory if using eMerchantPay as acquirer and your PayWiser account risk level is moredate or above
** Mandatory if using eMerchantPay as acquirer and your PayWiser account risk level is high or above

ThreeDSecureData structure

Parameter name Description
Amount Amount in minor units of given currency (e.g. cents if in Euro)
Currency ISO 4217 3-letter currency code
OrderNumber Your own reference number of order, invoice etc...
BuyerIP Buyers IP address

CardHolderBilling structure

Parameter name Description
FirstName
LastName
Address1 Primary address
Address2 Secondary address
ZipCode Zip code
City City
Country Country code in ISO 3166

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
BankReferenceID Credit card token
CallerReferenceID Caller reference ID
Amount Always 0
Currency Always empty
CardCountryCode Country code of card issuing bank
CardRegion Possible values, determined by your accounts Domestic Country Code setting:
  • -1 – unspecified (possibly because your PWPG account lacks Domestic Country Code setting)
  • 0 – domestic
  • 1 – intra (from inside your region ie. EU)
  • 2 – inter (from outside your region)
ThreeDSecureResponse JSON
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

ThreeDSecureResponse structure

Parameter name Description
IsThreeDSecured Indicator if card is 3D-Secured (true) or not (false)
ThreeDSecureUrl URL to which the customer must be redirected to complete 3D-Secure procedure.
URL is fully formatted and contains all necessary parameters for handling 3D-Secure through PayWiser services.
AcsUrl 3D-Secure URL of the bank (if you wish to handle 3D-Secure procedure yourself)
PaReq 3D-Secure PaReq (if you wish to handle 3D-Secure procedure yourself)
ThreeDSecureReferenceID PayWisers 3D-Secure reference ID (used later on for calling PayWiser Reserve API method)

Sample request

copy
{
	"ReferenceID": "1_tokenize",
	"CardNumber": "5500000000000004",
	"CardExpDate": "12/2016",
	"CardSecurityCode": "123",
	"ThreeDSecureData": {
		"Amount": "100",
		"Currency": "EUR",
		"OrderNumber": "test_order",
		"BuyerIP": "8.8.8.8"
	}
}

Sample response

copy
{
  "PGReferenceID": "eac6a24b-26bc-4336-85a7-7768986cada2",
  "BankReferenceID": "8ccde03d-bde5-4f6f-a27e-5dae64ae95db",
  "CallerReferenceID": "1_tokenize",
  "Amount": 0,
  "Currency": "",
  "ThreeDSecureResponse": {
	"IsThreeDSecured": true,
	"ThreeDSecureUrl": "https://pay.activa-card.com/sc/ProcessPareq.aspx?PaReq=eNptU...f32gb78&TermUrl=https://89.212.55.90/ThreeDCallback/handler.ashx&MD=4166ded6-38c9-4e20-8e62-8c34d17f8e80",
	"AcsUrl": "https://pay.activa-card.com/sc/ProcessPareq.aspx",
	"PaReq": " eNptU...f32gb78",
	"ThreeDSecureReferenceID": "4166ded6-38c9-4e20-8e62-8c34d17f8e80"
  },
  "TransactionStatusCode": 20000,
  "TransactionStatusDescription": "Approved",
  "TransactionDateTime": "2015-07-02T17:00:04.013+02:00"
}

Reserve

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/Reserve

To charge a cardholder you first have to reserve money on his bank account.
Next you can transfer money from his bank account to your merchant bank account.

Reservation can be done either for a tokenized card (using card token or Tokenization reference ID, as returned from Tokenize method) or a new credit card (using card data).
If reservation is done using card data, then card resource is automatically made.

Reservation ID is later on used for calling Capture, Refund and Void methods.

Maestro cards generally require 3D Secure to be completed.
Using Maestro card without 3D Secure may work (or not; depending on the issuers policy).

Depending on your PayWiser 3D-Secure settings, following rules apply

Using Clearhaus

3D-Secure is disabled

  • using ThreeDSecureReferenceID parameter is prohibited
  • using ThreeDSecurePaRes parameter is prohibited
  • ThreeDSecureResponse is always empty

3D-Secure is enabled

  • using either ThreeDSecureReferenceID or ThreeDSecurePaRes parameter is allowed
  • if either of these two parameters is specified, Reserve will be treated as 3D-Secured and will fail if incorrect data is specified

3D-Secure is mandatory

  • using either ThreeDSecureReferenceID or ThreeDSecurePaRes parameter is mandatory
  • when using card data, card is automatically checked for 3D-Secure enrollment
    • if the card is enrolled and no ThreeDSecureReferenceID or ThreeDSecurePaRes is specified, ThreeDSecureResponse is returned and reservation will fail
    • if the card is not enrolled, ThreeDSecureResponse is empty, reservation will finish

Using eMerchantPay

In all cases ThreeDSecureReferenceID and ThreeDSecurePaRes parameters is prohibited.

3D-Secure is disabled

  • ThreeDSecureResponse is always empty

3D-Secure is enabled

  • if ThreeDSeccessURL and ThreeDFailURL are specified, Reserve will be treated as 3D-Secured:
    • if the card is enrolled, ThreeDSecureResponse will be returned
    • if the card is not enrolled, ThreeDSecureResponse is empty, reservation will fail
  • if ThreeDSeccessURL and ThreeDFailURL are not specified, normal Reserve will take place

3D-Secure is mandatory

  • if the card is enrolled, ThreeDSecureResponse will be returned
  • if the card is not enrolled, ThreeDSecureResponse is empty, reservation will fail

If card is declined (status code 40410 is returned) three times in a period of 10 minutes, card will be placed on the declined list and it will not be eligable for reservation for the period of 10 minutes.
Once 10 minutes are up, declined card can be used for reservation normally again (provided tokenization is successful and is not declined again).

If card is blocked, status code -165 will be returned.

Request parameters using:

card tokenization ID

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
TokenizeReferenceID string PayWiser PG reference ID as returned from Tokenize method (PGReferenceID)
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
Surcharge integer Surcharge amount in minor units of given currency (e.g. cents if in Euro)
CashBack integer CashBack amount in minor units of given currency (e.g. cents if in Euro)
OrderNumber string Your own reference number of order, invoice etc...
BuyerIP string
TerminalIP string
TerminalID string
ThreeDSecureReferenceID string
ThreeDSecurePaRes string
StatementText string 50
StatementDescription string 500
ThreeDSuccessURL string URL to which the customer will be redirected after successfull 3D-Secure; only for eMerchantPay
ThreeDFailURL string URL to which the customer will be redirected after failed 3D-Secure; only for eMerchantPay
RiskSessionID string Allowed only for eMerchantPay.
Must contain session_id for risk management.
CardHolderEmail string
CardHolderBilling JSON JSON object containing card holders billing details

card token

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CardToken string Card token
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
OrderNumber string Your own reference number of order, invoice etc...
BuyerIP string
TerminalIP string
TerminalID string
ThreeDSecureReferenceID string
ThreeDSecurePaRes string
StatementText string 50
StatementDescription string 500
ThreeDSuccessURL string URL to which the customer will be redirected after successfull 3D-Secure; only for eMerchantPay
ThreeDFailURL string URL to which the customer will be redirected after failed 3D-Secure; only for eMerchantPay
RiskSessionID string Allowed only for eMerchantPay.
Must contain session_id for risk management.
CardHolderEmail * string
CardHolderBilling ** JSON JSON object containing card holders billing details

* Mandatory if using eMerchantPay as acquirer and your PayWiser account risk level is moredate or above
** Mandatory if using eMerchantPay as acquirer and your PayWiser account risk level is high or above

card data

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CardHolderName String Name on the credit card
CardNumber string
CardExpDate string
CardSecurityCode string Notice: if your account settings allow CVV skipping, this parameter may be ommited ()
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
OrderNumber string Your own reference number of order, invoice etc...
BuyerIP string
TerminalIP string
TerminalID string
ThreeDSecureReferenceID string
ThreeDSecurePaRes string
StatementText string 50
StatementDescription string 500
ThreeDSuccessURL string URL to which the customer will be redirected after successfull 3D-Secure; only for eMerchantPay
ThreeDFailURL string URL to which the customer will be redirected after failed 3D-Secure; only for eMerchantPay
RiskSessionID string Allowed only for eMerchantPay.
Must contain session_id for risk management.
CardHolderEmail string
CardHolderBilling JSON JSON object containing card holders billing details

CardHolderBilling structure

Parameter name Description
FirstName
LastName
Address1 Primary address
Address2 Secondary address
ZipCode Zip code
City City
Country Country code in ISO 3166

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
BankReferenceID Bank reference ID
CallerReferenceID Caller reference ID
Amount Amount reserved (in minor units)
Currency ISO 4217 3-letter currency code
ThreeDSecureResponse JSON
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

ThreeDSecureResponse structure

Parameter name Description
IsThreeDSecured Indicator if card is 3D-Secured (true) or not (false)
ThreeDSecureUrl URL to which the customer must be redirected to complete 3D-Secure procedure.
URL is fully formatted and contains all necessary parameters for handling 3D-Secure through PayWiser services.
AcsUrl 3D-Secure URL of the bank (if you wish to handle 3D-Secure procedure yourself)
PaReq 3D-Secure PaReq (if you wish to handle 3D-Secure procedure yourself)
ThreeDSecureReferenceID PayWisers 3D-Secure reference ID (used later on for calling PayWiser Reserve API method)

Sample request (using card token)

copy
{
	"ReferenceID":"1_reserve",
	"TokenizeReferenceID":"10ce4707-0218-487c-ab05-c92bdf9430e9",
	"Amount":"75",
	"Currency":"EUR",
	"BuyerIP":"1.1.1.1",
	"TerminalIP":"2.2.2.2",
	"TerminalID":"term_1",
	"StatementText":"reserve text",
	"StatementDescription":"reserve description"
}

Sample response (using card token)

copy
{
	"PGReferenceID":"635daffa-a3f4-41bf-8c24-a7fea41b2310",
	"BankReferenceID":"17f71911-b925-4ef8-999b-155545b74a84",
	"CallerReferenceID":"1_reserve",
	"Amount":75,
	"Currency":"EUR",
	"TransactionStatusCode":20000,
	"TransactionStatusDescription":"Approved",
	"TransactionDateTime":"2015-07-02T17:03:47.237+02:00"
}

Sample request (using card data)

copy
{
	"ReferenceID":"2_reserve",
	"CardNumber":"5500000000000004",
	"CardExpDate":"12/2016",
	"CardSecurityCode":"123",
	"Amount":"45",
	"Currency":"EUR",
	"BuyerIP":"1.1.1.1",
	"TerminalIP":"2.2.2.2",
	"TerminalID":"term_1",
	"StatementText":"reserve text",
	"StatementDescription":"reserve description"
}

Sample response (using card data)

copy
{
	"PGReferenceID":"d5999083-707b-4900-b14a-43646d12f244",
	"BankReferenceID":"3f85adec-32b3-4689-af10-fffb799a87c7",
	"CallerReferenceID":"2_reserve",
	"Amount":45,
	"Currency":"",
	"TransactionStatusCode":20000,
	"TransactionStatusDescription":"Approved",
	"TransactionDateTime":"2015-07-02T17:16:18.267+02:00"
}

Capture

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/Capture

Transfers specified amount of previously reserved funds from credit card to your account.

You can make multiple captures for an reservation.

After each capture, transaction report will be sent via email or posted the the specified URL (depending on your account settings).

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
ReservationReferenceID string PayWiser PG reference ID as returned from Reserve method (PGReferenceID)
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
Surcharge integer Surcharge amount in minor units of given currency (e.g. cents if in Euro)
CashBack integer CashBack amount in minor units of given currency (e.g. cents if in Euro)
BuyerIP string
TerminalIP string
TerminalID string
StatementText string 50
StatementDescription string 500

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
BankReferenceID Bank reference ID
CallerReferenceID Caller reference ID
Amount Amount captured (in minor units)
Currency ISO 4217 3-letter currency code
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{
	"ReferenceID":"1_capture",
	"ReservationReferenceID":"635daffa-a3f4-41bf-8c24-a7fea41b2310",
	"Amount":"50",
	"Currency":"EUR",
	"BuyerIP":"1.1.1.1",
	"TerminalIP":"2.2.2.2",
	"TerminalID":"term_1",
	"StatementText":"capture text",
	"StatementDescription":"capture description"
}

Sample response

copy
{
	"PGReferenceID":"82fb1423-1690-43ef-9f6a-e82e89693c44",
	"BankReferenceID":"3fec68c7-c155-4cac-a66d-64491d39b388",
	"CallerReferenceID":"1_capture",
	"Amount":50,
	"Currency":"EUR",
	"TransactionStatusCode":20000,
	"TransactionStatusDescription":"Approved",
	"TransactionDateTime":"2015-07-02T17:10:08.637+02:00"
}

Refund

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/Refund

You can refund a specified amount of what you have capture from a credit card.

You can make multiple refunds for an reservation.

After each refund, transaction report will be sent via email or posted the specified URL (depending on your account settings).

Notice: A refund does not “free up” what is captured from the authorization; that is, after authorizing 10, capturing 5 and refunding 5, you can still only capture 5.

If card is blocked, status code -165 will be returned.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
ReservationReferenceID string PayWiser PG reference ID as returned from Reserve method (PGReferenceID)
CaptureReferenceID string PayWiser PG reference ID as returned from Capture method (PGReferenceID)
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
BuyerIP string
TerminalIP string
TerminalID string
StatementText string 50
StatementDescription string 500

Note

When using Clearhaus, ReservationReferenceID must be specified.
When using eMerchantPay, CaptureReferenceID must be specified.

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
BankReferenceID Bank reference ID
CallerReferenceID Caller reference ID
Amount Amount refunded (in minor units)
Currency ISO 4217 3-letter currency code
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{
	"ReferenceID":"1_refund",
	"ReservationReferenceID":"635daffa-a3f4-41bf-8c24-a7fea41b2310",
	"Amount":"30",
	"Currency":"EUR",
	"BuyerIP":"1.1.1.1",
	"TerminalIP":"2.2.2.2",
	"TerminalID":"term_1",
	"StatementText":"refund text",
	"StatementDescription":"refund description"
}

Sample response

copy
{
	"PGReferenceID":"d7af6e3b-4a18-42e2-b4c1-a561f6e61cba",
	"BankReferenceID":"787a68b7-68a0-4fb1-818d-470e19a55265",
	"CallerReferenceID":"1_refund",
	"Amount":30,
	"Currency":"EUR",
	"TransactionStatusCode":20000,
	"TransactionStatusDescription":"Approved",
	"TransactionDateTime":"2015-07-02T17:11:16.523+02:00"
}

PayOut

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/PayOut

You can payout (e.g. winnings and not refunds) money to a credit card.

After each payout, transaction report will be sent via email or posted the the specified URL (depending on your account settings).

If card is blocked, status code -165 will be returned.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
TokenizeReferenceID string PayWiser PG reference ID as returned from Tokenize method (PGReferenceID)
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
TerminalIP string
TerminalID string
StatementText string 50
StatementDescription string 500
CardHolderName string Name on the credit card
CardHolderEmail string
CardHolderBilling JSON

* Mandatory if using eMerchantPay as acquirer and your PayWiser account risk level is moredate or above
** Mandatory if using eMerchantPay as acquirer and your PayWiser account risk level is high or above

CardHolderBilling structure

Parameter name Description
FirstName
LastName
Address1 Primary address
Address2 Secondary address
ZipCode Zip code
City City
Country Country code in ISO 3166

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
BankReferenceID Bank reference ID
CallerReferenceID Caller reference ID
Amount Amount payed out (in minor units)
Currency ISO 4217 3-letter currency code
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{
	"ReferenceID":"1_payout",
	"TokenizeReferenceID":"10ce4707-0218-487c-ab05-c92bdf9430e9",
	"Amount":"88",
	"Currency":"EUR",
	"TerminalIP":"2.2.2.2",
	"TerminalID":"term_1",
	"StatementText":"payouttext",
	"StatementDescription":"payout description"
}

Sample response

copy
{
	"PGReferenceID":"ae141fbe-da0c-47af-97de-f2b0be6dc190",
	"BankReferenceID":"8feef133-fe2a-4ad4-9129-fc34e564afeb",
	"CallerReferenceID":"1_payout",
	"Amount":88,
	"Currency":"EUR",
	"TransactionStatusCode":20000,
	"TransactionStatusDescription":"Approved",
	"TransactionDateTime":"2015-07-02T17:12:33.000+02:00"
}

Void

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/Void

You can release reserved money on a credit card.
A reservation normally last for 7 days depending on issuing bank and is then automatically released.

Reservation can be voided only once.

If reservation was already captured (in any amount, even if refunded), it can no longer be voided.

Title

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
ReservationReferenceID string PayWiser PG reference ID as returned from Reserve method (PGReferenceID)
TerminalIP string
TerminalID string
StatementText string 50
StatementDescription string 500

Title

Parameter name Description
PGReferenceID PayWiser PG reference ID
BankReferenceID Credit card token
CallerReferenceID Caller reference ID
Amount Always 0
Currency Always empty
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{
	"ReferenceID":"2_void",
	"ReservationReferenceID":"635daffa-a3f4-41bf-8c24-a7fea41b2310",
	"TerminalIP":"3.3.3.3",
	"TerminalID":"3",
	"StatementText":"void text",
	"StatementDescription":"void description"
}

Sample response

copy
{
	"PGReferenceID":"99e095ab-2d2a-4515-ae4e-0792a0b0834e",
	"BankReferenceID":"d7359dc9-ac99-444e-8d79-ed2cd4714885",
	"CallerReferenceID":"2_void",
	"Amount":0,
	"Currency":"",
	"TransactionStatusCode":20000,
	"TransactionStatusDescription":"Approved",
	"TransactionDateTime":"2015-07-02T17:17:03.677+02:00"
}

BlockCard

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/BlockCard

Blocks card (prevents execution of payments). Card is blocked permanently, until UnBlockCard API is called.

Blocked cards list is observed during the following PayWiser PaymentGateway API calls:

  • Tokenize
  • Reserve
  • SimplePayment
  • Refund
  • PayOut

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CardToken string Your own reference ID of the API call that was used to start recurring payments (InitWebPayment or StartRecurringPayment)
TransactionReferenceID string PayWiser PG reference ID as returned from Tokenize, Reserve etc methods that include card (PGReferenceID)
Reason string 255 Reason for blocking the card

Either CardToken or TransactionReferenceID must be specified.

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
BlockReferenceID PayWiser block reference id, to be used for un-blocking the card
StatusCode Status code
StatusDescription Status description

Sample request

copy
{
   "ReferenceID":"blockcard_16",
   "CardToken":"800652ae-9d36-41c1-9419-d0278a45b53ad",
   "TransactionReferenceID":"",
   "Reason":"because reasons"
}

Sample response

copy
{
    "PGReferenceID": "23970455-8a44-4103-b89f-cb563d8e2ccc",
    "CallerReferenceID": "blockcard_16",
    "BlockReferenceID": "d183cabe-2261-49d4-b126-66a336ea5b4e",
    "StatusCode": 0,
    "StatusDescription": "Ok"
}

UnBlockCard

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/UnBlockCard

Un-blocks previously blocked card (allows execution of payments).

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
BlockReferenceID string PayWiser PG reference ID as returned from BlockCard (BlockReferenceID)

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
StatusCode Status code
StatusDescription Status description

Sample request

copy
{
   "ReferenceID":"blockcard_18",
   "BlockReferenceID":"d183cabe-2261-49d4-b126-66a336ea5b4e"
}

Sample response

copy
{
    "PGReferenceID": "d7bceab3-b1f9-4d97-af5c-eb18863c1134",
    "CallerReferenceID": "blockcard_18",
    "StatusCode": 0,
    "StatusDescription": "Ok"
}

RenewReservation

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/RenewReservation

Renews existing reservation.

A reservation normally last for 7 days depending on issuing bank and is then automatically released.
If you need to have funds reserved for a longer period of time, you can renew existing reservation before it is automatically released.

Existing reservation must not be voided.
If existing reservation was already captured (in any amount, even if refunded), it can no longer be renewed.

New reservation will be made with the exact same parameters (amount, currency etc) as were used for existing reservation.

If existing reservation was made using 3D-Secure, same 3D-Secure data will be used for new reservation.

Notice on Maestro cards: because Maestro cards can not be tokenized and require 3D-Secure, renewing reservation on Maestro card may or may not work, depending on the issuing bank.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
ReservationReferenceID string PayWiser PG reference ID as returned from Reserve method (PGReferenceID)
TerminalIP string
TerminalID string
StatementText string 50
StatementDescription string 500

Request parameters

Response is the same as for Reserve method, please see above for details.

Sample request

copy
{
	"ReferenceID":"2_void",
	"ReservationReferenceID":"635daffa-a3f4-41bf-8c24-a7fea41b2310",
	"TerminalIP":"3.3.3.3",
	"TerminalID":"3",
	"StatementText":"void text",
	"StatementDescription":"void description"
}

Sample response

Response is the same as for Reserve method, please see above for details.

CheckStatus

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/CheckStatus

You can check the result of any API method calls using CheckStatus method.

Returned response is exactly like it was returned the first time you called method with specified CheckReferenceID.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CheckReferenceID string Your own reference ID of a previous API call
TerminalIP string
TerminalID string

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
BankReferenceID Bank reference ID
CallerReferenceID Caller reference ID
Amount Amount (in minor units; if applicable)
Currency
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{
	"ReferenceID":"1_checkStatus",
	"CheckReferenceID":"1_reserve",
	"TerminalIP":"1.1.1.1",
	"TerminalID":"3"
}

Sample response

copy
{
	"PGReferenceID":"33ac050b-169f-406c-9f3d-84a5554d3d1e",
	"BankReferenceID":"59ee0d55-42a5-4700-935e-7d95e469c553",
	"CallerReferenceID":"1_reserve",
	"Amount":75,
	"Currency":"EUR",
	"TransactionStatusCode":20000,
	"TransactionStatusDescription":"Approved",
	"TransactionDateTime":"2015-07-02T17:03:47.237+02:00"
}

InitWebPayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/InitWebPayment

Used for general web store integration.

Initiates web payment procedure (called by web store).

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
Surcharge integer Surcharge amount in minor units of given currency (e.g. cents if in Euro)
OrderNumber string Your own reference number of order, invoice etc...
StatementText string 50
StatementDescription string 500
TimeoutMinutes integer For how long the web payment is active (can be paid by the buyer) in minutes.
If specified value is 0 (zero), payment is active forever (never expires). If not specified, default value (45 minutes) applies.
If merchant account has CheckPaymentActive WS method specified then any TimeoutMinutes value will be ignored (web form will always call CheckPaymentActive).
RecipitData String RecepitData (can be XML formatted, for future usage, ie. creating e-invoice or achiving...)
WebFormLanguage String ISO 639-1 language code for localizing web payment form.
Currently supported languages:
  • en – English
  • sl – Slovenian
  • da - Danish
  • de - German
  • hr - Croatian
  • it - Italian
AgreementID String Buyers agreement ID for Moneta DO recurring payments.
If empty, new agreement will be created upon payment if Moneta payment method is selected.
If not empty, then any agreement ID returned by calling merchants WS method GetPaymentData will be ignored (this agreement ID will always be used).
Can only be used with recurring payments.
MandateID String Sepa mandate ID as was used in SepaCreateMandate method.
If empty, new mandate will be created upon payment if Sepa payment method is selected.
If not empty, then any mandate ID returned by calling merchants WS method GetPaymentData will be ignored (this mandate ID will always be used).
Can be used for single and recurring payment.
TemplateID String ID of WebPayment template
MiniStoreID String ID of MiniStore
Items JSON JSON array containing invoice details (items bought by the customer).
Customer can view items at the web payment form.
Redirect JSON JSON object containing redirection URLS (redirection occurs after the payment was made by the customer)
ThreeDSecureMode integer Can be used only for account with optional 3D-Secure (prohibited if 3D-Secure if disabled or mandatory).
Values:
  • 1 – 3D-Secure is mandatory for all cards (if customers card does not support 3D-Secure, payment will not be processed)
  • 2 – 3D-Secure will be used if customers card is enrolled (if customers card is not endolled, payment will be processed without 3D-Secure)
RecurringPayment JSON JSON object containing definition of the recurring payment.
PaymentMethods JSON JSON object containing allowed payment methods for this particular web payment
PaymentExecutionMode integer Mode of the payment execution:
  • 3 – full payment (tokenize, reserve, capture)
  • 2 – just reservation (tokenize, reserve)
  • 1 – just tokenization (tokanize)
If this parameter is omitted or null, full payment will always take place.
Please see below for detailed description.
CustomerMembership JSON JSON object containing customers email, mobile number etc details
CustomerAddress JSON JSON object containing customers address details

Items structure

Parameter name Type Description
Position Integer Position number of an item
Description String Item description
Quantity Decimal Quantity
Unit String Unit of measurement
Price Decimal Item price
DiscountPercent Decimal Discount percent
VATPercent Decimal VAT percent
Sum Decimal Value of the position
Currency String ISO 4217 3-letter currency code
TemplateID String ID of the template

Redirect structure

Parameter name Type Description
SuccessURL String Where to redirect the customer after successful payment
FailURL String Where to redirect the customer after unsuccessful (failed) payment
UnknownURL String Where to redirect the customer in case when payment status is indeterminate (for example when new Moneta DO agreement needs to be confirmed)
ConfirmedURL String where to redirect the customer after confirmation was successfull, but payment status is indeterminate (for example when new Moneta DO agreement was confirmed, but payment will be processed at a later date or time)
Timeout Integer Timeout in seconds, before redirect happens
Minium value: 5 Maximum value: 600
Type Integer Type of redirection, depending on how was WebPayment form integrated (displayed) on/from merchants webpage:
  • 1 - Iframe (WebPayment form was displayed in an Iframe)
  • 2 - Redirect (customer was redirected to the WebPayment form
  • 3 - New tab (WebPayment form was opened in a new tab in browser)

RecurringPayment structure

Parameter name Type Description
RecurringPlanID String ID of the predefined recurring payment plan
StartDate string Date on which the recurring starts (when the first recurring payment will be made) in YYYY-MM-DD format.
If empty, recurring starts immediately when customer confirms web payment.
ExpiryDate string Date on which recurring payments will stop
InstallmentTotalValue integer Total value of installment payment
PaymentsSkipCount integer How many payments from the start are to be skipped
DownPaymentValue integer Value of the downpayment (for informational purposes only)
PaymentAmount integer Amount for each individual payment
ImmediatePaymentAmount integer Amount for the immediate payment (takes place immediately when customer comfirms web payment).
It is not a part of recurring plan.
AdjustPlanWithStartDate boolean If this parameter is true, then payment pattern will be automatically changed, so that the first payment will be made on the exact date when the customer confirms web payment.
Note: it can only be used when recurring plan is set up to be monthly or yearly and with the set date. In all other cases, error will be returned and InitWebPayment will fail.

Detailed explanation of some of the recurring payment parameters:

  • StartDate parameter does not change dates as set up by the recurring plan.
    For example, if recurring plan specifies that payment is to be made every second of the month, then:
    • empty StartDate means that first paymernt will be made on the second of the next month
    • if StartDate is specified, then first payment will be made on the second of the month after that date
  • AdjustPlanWithStartDate changes dates as set up by the recurring plan.
    It can only be used when recurring plan is set up to be monthly or yearly and with the set date. In all other cases, error will be returned and InitWebPayment will fail.
    For example, if recurring plan specifies that payment is to be made every second of the month and the customer confirms web payment on the fifth of month, then:
    • if StartDate is empty:
      • if AdjustPlanWithStartDate is true, then first payment (and all consecutive payments) will be made on the fifth of the month
      • if AdjustPlanWithStartDate is false, then first payment will be make accodring to the rules for StartDate parameter
    • if StartDate is not empty:
      • if AdjustPlanWithStartDate is true, then first payment will be made on the specified day from the StartDate, all consecutive payments will be made on the same day
      • if AdjustPlanWithStartDate is false, then first payment will be make accodring to the rules for StartDate parameter

Payment specifics

Recurring

  • if your account is set up with mandatory use of 3D-Secure, recurring payments can not be used
  • if Sofort or PaySafeCard payment is allowed, recurring payments can not be used
  • ThreeDSecureMode can be specified only if ImmediatePaymentAmount is also specified (first payment will take place immediately when customer confirms web payment and it will be 3D-Secured, as specified by the ThreeDSecureMode value)
  • if ImmediatePaymentAmount is not specified, customers card will be tokenized and recurring schedule will be created
  • if ImmediatePaymentAmount is specified, recurring schedule will be created only after the customer successfully completes 3D-Secure and immediate payment is successfully completed

Moneta

  • for recurring payments Moneta DO will be used
  • for one-time payments Moneta SMS will be used
  • AgreementID can only be specified for recurring payments
  • if no agreement ID was specified with InitWebPayment call and customer later on selects Moneta payment (in this case Moneta DO will be used), agreement will be automatically created (and notification with new agreement ID will be sent to your WS)
  • if agreement is created during the payment or agreement is not yet confirmed, immediate payment (if specified) will take place as soon as the customer confirms Moneta DO agreement

Sepa

  • recurring payments:
    • in order to use Sepa mandate for recurring payments, the mandate must be created using IsRecurring=true
    • if mandate was created using COR1 option, recurring payment must be created at least one business day before StartDate
    • if mandate was not created using COR1 option, recurring payment must be created at least five business days before StartDate
    • if immediate payment is specified, it will be due on the first possible date depending on COR1 option (1 day or 5 days)
    • if no mandate was specified, a new one will be created, using COR1 option and IsRecurring=true
  • single payments:
    • mandates created with or without recurring can be used
    • payment will be due on the first possible date depending on COR1 option (1 day or 5 days)
    • if no mandate was specified, a new one will be created, using COR1 option and IsRecurring=false

Note

Recurring payments can not be used for Sofort and PaySafeCard.

Using PaymentExecutionMode parameter:

  • can be used only for one-time payments (not for recurring payments)
  • can only be used if your WebPayments account is not set up to use SimplePayment for WebPayments execution
  • values:
    • 3 – full payment will be made
      Card will be tokenized, specified amount will be reserved and then captured.
      This is the default operation mode, full payment will be always be made if PaymentExecutionMode parameter is omitted when calling InitWebPayment.
      After capture is made, you will recieve transaction notification with card token, reservation reference ID and capture reference ID.
    • 2 – only reservation will be made
      Usage of this value must be explicitly permitted in your account settings.
      Card will be tokenized, specified amount will be reserved, but no capture will be made.
      After reservation will be made, you will recieve transaction notification with card token and reservation reference ID, which can be used later on for capturing reserved amount.
      As not automatic captures will take place, it is up to you to decide when and what amount of reserved funds you will capture with PayWiser PaymentGateway Capture API call.
      Please note that reservation normally lasts for 7 days, depending on issuing bank and is then automatically released.
      Reservation can be captured multiple times with sum up to the reserved amount.
    • 1 – only card token will be created
      Usage of this value must be explicitly permitted in your account settings.
      Card will be tokenized, but no reservation and capture will be made.
      After card token will be created, you will recieve transaction notification with card token, which can be used later for reservations and captures of any amount.
  • Maestro cards can not be tokenized; if PaymentExecutionMode is set to 1 (tokenize only) and customer chooses to pay with Maestro card, reservation will also take place (same as with PaymentExecutionMode=2)
  • 3D-Secure can and will be used normally (as specified by your account settings and ThreeDSecureMode parameter), regardess of the PaymentExecutionMode value

Using Items array:

  • if Items array is specified, Sum of all items must match payment Amount, otherwise execution will fail and error will be returned
  • Moneta (SMS and DO) payment specifics:
    • if Items array is specified, Items will be sent to the Moneta for automatic invoice issuing by Moneta
    • if Items array is not specified, payment will be executed with one default item with VATPercent=0
    • Moneta does not support decimal Quantity, so quantities of all items will be converted to integer values (1.3 for example will be converted to 1)
    • if WebPayment is of a recurring type, specified Items will be used for each individual MonetaDO payment

PaymentMethods structure

Parameter name Type Description
AllowCards boolean Whether card payment is allowed (true) or not (false).
Notice – it can be specified only if card payments are allowed for your account (it overrides account setting, but only if account setting is enabled).
AllowMoneta boolean Whether Moneta payment is allowed (true) or not (false).
Notice – it can be specified only if Moneta payments are allowed for your account (it overrides account setting, but only if account setting is enabled).
AllowSepa boolean Whether Sepa payment is allowed (true) or not (false).
Notice – it can be specified only if Sepa payments are allowed for your account (it overrides account setting, but only if account setting is enabled).
AllowSofort boolean Whether Sofort payment is allowed (true) or not (false). Notice – it can be specified only if Sofort payments are allowed for your account (it overrides account setting, but only if account setting is enabled).
AllowPaySafeCard boolean Whether PaySafeCard payment is allowed (true) or not (false). Notice – it can be specified only if PaySafeCard payments are allowed for your account (it overrides account setting, but only if account setting is enabled).

CustomerMembership structure

Parameter name Type Description
Email string
MobileNumber string
MembershipID string
CouponID string

CustomerAddress structure

Parameter name Type Description
Name string
Address string
City string
ZipCode string
State string
Country string

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
PaymentURL    URL of PayWiser Payment Gateway web form, to which web stores customer should be redirected to (or shown in iframe) in order to complete payment
StatusCode Status code
StatusDescription Status description

Sample request without items

copy
{
	"ReferenceID":"WebPayment_Test_1",
	"Amount":"100",
	"Currency":"EUR",
	"StatementText":"test",
	"StatementDescription":"test description",
	"OrderNumber":"anything123"
}

Sample request with items and redirect

copy
{  
   "ReferenceID":"WebPayment_Test_n9",
   "Amount":"100",
   "Currency":"EUR",
   "OrderNumber":"anything123",
   "StatementText":"test",
   "StatementDescription":"test description",
   "Items":[  
	  {  
		 "Position":"1",
		 "Description":"Invoice Item 1",
		 "Quantity":"1.00",
		 "Unit":"Pcs",
		 "Price":"100.00",
		 "DiscountPercent":"0.00",
		 "VATPercent":"0.00",
		 "Sum":"100.00",
         "Currency":"EUR"
	  },
	  {  
		 "Position":"2",
		 "Description":"Invoice Item 2",
		 "Quantity":"2.00",
		 "Unit":"Stk",
		 "Price":"10.00",
		 "DiscountPercent":"10.12",
		 "VATPercent":"0.00",
		 "Sum":"17.98",
         "Currency":"EUR"
	  }
   ],
   "WebFormLanguage":"en",
   "Redirect":{  
	  "SuccessURL":"url1",
	  "FailURL":"Url2",
	  "Type":"1"
   }
}

Sample response

copy
{  
   "PGReferenceID":"a53332e8-5330-4915-8080-47fed4785e78",
   "CallerReferenceID":"WebPayment_Test_1",
   "PaymentURL":"http://mobiledevelopment.onyx.si/PaymentGateway/WebPayment.aspx",
   "StatusCode":0,
   "StatusDescription":"Ok"
}

CheckWebPaymentStatus

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/CheckWebPaymentStatus

Used for checking web payment status by the web store.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CheckReferenceID string Your own reference ID of a previous InitWebPayment API call

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
PaymentStatus Current status of payment
Possible values: Web payment timeframe exceeded (payment expired)
Waiting for payment Processing Processed (finished)
TokenizePGReferenceID PayWiser PG reference ID of tokenization
Can be used to call CheckStatus API method
TokenizeStatusCode Status code of credit card tokenization
TokenizeStatusDescription Status description of credit card tokenization
ReservePGReferenceID PayWiser PG reference ID of reservation
Can be used to call CheckStatus API method
ReserveStatusCode Status code of reservation
ReserveStatusDescription Status description of reservation
CapturePGReferenceID PayWiser PG reference ID of capture
Can be used to call CheckStatus API method
CaptureStatusCode Status code of capture
CaptureStatusDescription Status description of capture
SepaPGReferenceID PayWiser PG reference ID of Sepa payment
SimplePaymentPGReferenceID PayWiser PG reference ID of SimplePayment. Can be used to call CheckStatus API method
SimplePaymentStatusCode Status code of SimplePayment
SimplePaymentStatusDescription Status description of SimplePayment
SepaStatusCode Status code of Sepa payment
SepaStatusDescription Status description of Sepa payment
SepaStateCode State code of Sepa payment
SepaStateDescription State description of Sepa payment
MonetaSMSPGReferenceID PayWiser PG reference ID of Moneta SMS payment
MonetaSMSStatusCode Status code of Moneta SMS payment
MonetaSMSStatusDescription Status description of Moneta SMS payment
MonetaDOReservePGReferenceID PayWiser PG reference ID of Moneta DO reservation
MonetaDOReserveStatusCode Status code of Moneta DO reservation
MonetaDOReserveStatusDescription Status description of Moneta DO reservation
MonetaDOCapturePGReferenceID PayWiser PG reference ID of Moneta DO capture
MonetaDOCaptureStatusCode Status code of Moneta DO capture
MonetaDOCaptureStatusDescription Status description of Moneta DO capture
SofortPGReferenceID PayWiser PG reference ID of Sofort payment
SofortStatusCode Status code of Sofort payment
SofortStatusDescription Status description of Sofort payment
SofortStateCode State of Sofort payment
SofortStateDescription State description of Sofort payment
PaySafeCardPGReferenceID PayWiser PG reference ID of PaySafeCard payment
PaySafeCardStatusCode Status code of PaySafeCard payment
PaySafeCardStatusDescription Status description of PaySafeCard payment
PaySafeCardStateCode State of PaySafeCard payment
PaySafeCardStateDescription State description ofPaySafeCardpayment
StatusCode Status code
StatusDescription Status description

Sample request

copy
{  
   "ReferenceID":"WebPayment_TemplateTest_1",
   "TemplateID":"fb8f74e6-6a9e-4720-86b3-50600ec114bd"
}

Sample response

copy
{  
   "PGReferenceID":"a53332e8-5330-4915-8080-47fed4785e78",
   "CallerReferenceID":"WebPayment_Test_1",
   "PaymentURL":"http://mobiledevelopment.onyx.si/PaymentGateway/WebPayment.aspx",
   "StatusCode":0,
   "StatusDescription":"Ok"
}

InitWebPaymentFromTemplate

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/InitWebPaymentFromTemplate

Used for general web store integration.

Initiates web payment procedure (called by web store) with predefined web payment template.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
TemplateID String ID of predefined web payment template
OrderNumber string Your own reference number of order, invoice etc...
ReceiptData String RecepitData (can be XML formatted, for future usage, ie. creating e-invoice or achiving...)
WebFormLanguage String ISO 639-1 language code for localizing web payment form.
Currently supported languages: ·         En – English ·         Si - Slovenian
AgreementID String Buyers agreement ID for recurring payments.
If empty, new agreement will be created upon payment.
If not empty, then any agreement ID returned by calling merchants WS method GetPaymentData will be ignored (this agreement ID will always be used).

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
PaymentURL    URL of PayWiser Payment Gateway web form, to which web stores customer should be redirected to (or shown in iframe) in order to complete payment
StatusCode Status code
StatusDescription Status description

Sample request

copy
{  
   "ReferenceID":"WebPayment_TemplateTest_1",
   "TemplateID":"fb8f74e6-6a9e-4720-86b3-50600ec114bd"
}

Sample response

copy
{  
   "PGReferenceID":"a53332e8-5330-4915-8080-47fed4785e78",
   "CallerReferenceID":"WebPayment_Test_1",
   "PaymentURL":"http://mobiledevelopment.onyx.si/PaymentGateway/WebPayment.aspx",
   "StatusCode":0,
   "StatusDescription":"Ok"
}

GetMiniStoreTemplates

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/GetMiniStoreTemplates

Used for general web store integration.

Web store can query PWPG for a list of all web payment templates for particular MiniStore.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
MiniStoreID String ID of the MiniStore

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
StatusCode Status code
StatusDescription Status description
Templates JSON list of templates

Templates structure

Parameter name Type Max. Length Description
TemplateID String ID of the template
MiniStoreID String ID of the MiniStore
MiniStorePosition Int Template position in MiniStore
StatementText String
StatementDescription String
Amount Int Amount in minor units of given currency (e.g. cents if in Euro)
Currency String ISO 4217 3-letter currency code
Int Int For how long the web payment is active (can be paid by the buyer) in minutes.
IsRecurring Boolean Indicator of recurrence.  
RecurringScheduleTemplateID string ID of predefined schedule of recurring payments.
TemplateItems JSON List of template items

TemplateItems structure

Parameter name Type Description
TemplateID String ID of the template to which this item belongs
ID String ID of the item
Position Integer Position number of an item within the template
Description String Item description
Quantity Decimal Quantity
Unit String Unit of measurement
Price Decimal Item price
DiscountPercent Decimal Discount percent
VATPercent Decimal VAT percent
Sum Decimal Value of the position

Sample request

copy
{  
   "ReferenceID":"GetMiniStoreTemplates_6",
   "MiniStoreID":"49AC9017-1232-4CCD-87FD-9583E94F6FC3"
}

Sample response

copy
{  
   "PGReferenceID":"5b663d57-c6cc-4868-b1ca-8d2f082a46e4",
   "StatusCode":0,
   "StatusDescription":"Ok",
   "Templates":[  
	  {  
		 "TemplateID":"fb8f74e6-6a9e-4720-86b3-50600ec114ba",
		 "MiniStoreID":"49ac9017-1232-4ccd-87fd-9583e94f6fc3",
		 "MiniStorePosition":1,
		 "StatementText":"Store test 1",
		 "StatementDescription":"Store test 1",
		 "Amount":100,
		 "Currency":"EUR",
		 "TimeOutMinutes":0,
		 "IsRecurring":true,
		 "RecurringScheduleTemplateID":"954e8fd0-6d24-4f52-a2db-e6a149a744f9",
		 "TemplateItems":null
	  },
	  {  
		 "TemplateID":"fb8f74e6-6a9e-4720-86b3-50600ec114bb",
		 "MiniStoreID":"49ac9017-1232-4ccd-87fd-9583e94f6fc3",
		 "MiniStorePosition":2,
		 "StatementText":"Store test 1",
		 "StatementDescription":"Store test 1",
		 "Amount":100,
		 "Currency":"EUR",
		 "TimeOutMinutes":0,
		 "IsRecurring":true,
		 "RecurringScheduleTemplateID":"954e8fd0-6d24-4f52-a2db-e6a149a744f9",
		 "TemplateItems":null
	  },
	  {  
		 "TemplateID":"fb8f74e6-6a9e-4720-86b3-50600ec114bd",
		 "MiniStoreID":"49ac9017-1232-4ccd-87fd-9583e94f6fc3",
		 "MiniStorePosition":3,
		 "StatementText":"Store test 1",
		 "StatementDescription":"Store test 1",
		 "Amount":100,
		 "Currency":"EUR",
		 "TimeOutMinutes":0,
		 "IsRecurring":true,
		 "RecurringScheduleTemplateID":"954e8fd0-6d24-4f52-a2db-e6a149a744f9",
		 "TemplateItems":[  
			{  
			   "TemplateID":"fb8f74e6-6a9e-4720-86b3-50600ec114bd",
			   "ID":"5961b87b-89eb-4549-9c20-2fca96dd3074",
			   "Position":1,
			   "Description":"Item 1",
			   "Quantity":1.00,
			   "Unit":"PCS",
			   "Price":1.00,
			   "DiscountPercent":0.00,
			   "VATPercent":0.00,
			   "Sum":1.00
			},
			{  
			   "TemplateID":"fb8f74e6-6a9e-4720-86b3-50600ec114bd",
			   "ID":"00242646-eaa7-444c-b5fc-21ddfed49122",
			   "Position":2,
			   "Description":"Item 2",
			   "Quantity":1.00,
			   "Unit":"HRS",
			   "Price":10.00,
			   "DiscountPercent":0.00,
			   "VATPercent":0.00,
			   "Sum":10.00
			}
		 ]
	  }
   ]
}

MonetaCreateAgreement

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/MonetaCreateAgreement

Creating Moneta agreement is the first step in Moneta payments chain.
Moneta agreement is used to make MonetaReserve calls.

After MonetaCreateAgreement is called, customer receives SMS with confirmation details to his mobile phone.
Agreement must be confirmed by the customer before MonetaReserve can be sucessfully called.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
MobileNumber String Customers mobile number.
Required format is 386XXYYYYYY.
XX=mobile network number without leading zero
YYYYYY=mobile number
FullName string Customers full name
Description string
SMSMessage string Short message to be appended at the end of the initial SMS message
SMSMessageConfirmed string Short message to be appended at the end of tht confirmation SMS message

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
AgreementID Created agreement ID
CallerReferenceID Caller reference ID
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
   "ReferenceID":"do_agreement_13",
   "MobileNumber":"38631123456",
   "Description":"DO agreement test"
}

Sample response

copy
{  
   "PGReferenceID":"761c4910-11ff-4b82-9cff-1a2f9647592e",
   "AgreementID":"b286fc3d-9c56-4c8c-8f03-85ab826366c5",
   "CallerReferenceID":"do_agreement_13",
   "TransactionStatusCode":1000,
   "TransactionStatusDescription":"Confirmation requested",
   "TransactionDateTime":"2015-10-31T22:00:22.863+01:00"
}

MonetaReserve

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/MonetaReserve

To charge a customers Moneta account you first have to reserve money.
Next you can transfer money from his Moneta account to your merchant account.

Reservation requires created and confirmed (by the customer) Moneta agreement.

Reservation ID is later on used for calling Capture method.

If Items array is specified, Sum of all items must match payment Amount, otherwise execution of payment will fail and error will be returned.

If no Items are specified, Moneta DO payment will be executed with one default item with VATPercent=0 – it is important for the merchant to be aware of this in case when Moneta is issuing automatic invoices to the customers.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
AgreementID string Agreement ID as returned from MonetaCreateAgreement method
Amount integer Amount in minor units of Euro
Description string
SMSMessage string Short message to be appended at the end of the SMS message, describing the transaction
Items JSON JSON array containing invoice details (items bought by the customer). Customer can see items on the invoice received from his mobile provider.

Items structure

Parameter name Type Description
Description String Item description
Quantity Integer Quantity
Price Decimal Item price
VATPercent Decimal VAT percent
Sum Decimal Value of the item

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
Amount Reserved amount in minor units
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
   "ReferenceID":"do_reserve_14",
   "AgreementID":"b286fc3d-9c56-4c8c-8f03-85ab826366c5",
   "Amount":"100",
   "Description":"DO reserve test"
}

Sample response

copy
                                                     
#20
September 19th 2016, 2:05:49 pm
VALID JSON (RFC 4627)
Formatted JSON Data
{  
   "PGReferenceID":"d6bfb1e6-f816-47ec-b38f-9083f7fcbf68",
   "CallerReferenceID":"do_reserve_14",
   "Amount":100,
   "TransactionStatusCode":0,
   "TransactionStatusDescription":"Ok",
   "TransactionDateTime":"2015-10-31T22:02:25.377+01:00"
}

MonetaCapture

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/MonetaCapture

Transfers exact amount of previously reserved funds from customers Moneta account to your account.

Captured amount is exactly the same as reserved amount.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
ReservationReferenceID string PayWiser PG reference ID as returned from MonetaReserve method (PGReferenceID)
Description string
SMSMessage string Short message to be appended at the end of the SMS message, describing the transaction

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
Amount Captured amount in minor units
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
   "ReferenceID":"do_reserve_15",
   "ReservationReferenceID":"a69ad05f-6009-42e2-862f-93d1b0bd59f6",
   "Description":"Capture payment"
}

Sample response

copy
{  
   "PGReferenceID":"d6bfb1e6-f816-47ec-b38f-9083f7fcbf68",
   "CallerReferenceID":"do_reserve_14",
   "Amount":100,
   "TransactionStatusCode":0,
   "TransactionStatusDescription":"Ok",
   "TransactionDateTime":"2015-10-31T22:02:25.377+01:00"
}

MonetaCancelAgreement

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/MonetaCancelAgreement

Canceles agreement.

Canceled agreement can no longer be used for transactions.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
AgreementID string Agreement ID as returned from MonetaCreateAgreement method
CancelationReason string
SMSMessage string Short message to be appended at the end of the SMS message, describing the transaction

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
   "ReferenceID":"do_reserve_16",
   "AgreementID":"b286fc3d-9c56-4c8c-8f03-85ab826366c5",
   "Description":"Got tired of paying"
}

Sample response

copy
{  
   "PGReferenceID":"d6bfb1e6-f816-47ec-b38f-9083f7fcbf68",
   "CallerReferenceID":"do_reserve_14",
   "TransactionStatusCode":0,
   "TransactionStatusDescription":"Ok",
   "TransactionDateTime":"2015-10-31T22:02:25.377+01:00"
}

MonetaListAgreements

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/MonetaListAgreements

Returns list of agreements.

Title

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
AgreementID string Agreement ID as returned from MonetaCreateAgreement method

Title

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
StatusCode Status code
StatusDescription Status description
Transactions JSON list of agreements

Sample request

copy
{
	"ReferenceID":"do_reserve_17"
}

Sample response

copy
{  
   "PGReferenceID":"b2b7d0a2-3af0-4fbb-898b-ed5362ec8025",
   "CallerReferenceID":"monetado_list_agreements_13",
   "StatusCode":0,
   "StatusDescription":"Ok",
   "Agreements":[  
	  {  
		 "AgreementID":"192dbeb7-494a-4595-a795-8e0b96c786e7",
		 "AgreementDate":"2016-05-11T22:04:25.247",
		 "MobileNumber":"031377809",
		 "Description":"moneta_webpayment_5_CreateAgreement",
		 "Confirmed":true,
		 "Canceled":false,
		 "CanceledDateTime":null,
		 "CancelationReason":null,
		 "Status":3,
		 "StatusDescription":"ContractConfirmed"
	  },
	  {  
		 "AgreementID":"67a27385-fc7a-43b5-889e-64b6951dc976",
		 "AgreementDate":"2016-05-09T17:20:38.153",
		 "MobileNumber":"031377809",
		 "Description":"callback test",
		 "Confirmed":true,
		 "Canceled":true,
		 "CanceledDateTime":"2016-05-09",
		 "CancelationReason":"beacuse reasons",
		 "Status":3,
		 "StatusDescription":"ContractConfirmed"
	  }
   ]
}

MonetaVoid

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/MonetaVoid

You can release reserved funds.
Reservation can be voided only once.

If reservation was already captured, it can no longer be voided.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
ReservationReferenceID string PayWiser PG reference ID as returned from MonetaReserve method (PGReferenceID)
Description string
SMSMessage string Short message to be appended at the end of the SMS message, describing the transaction

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
   "ReferenceID":"do_void_15",
   "ReservationReferenceID":"a69ad05f-6009-42e2-862f-93d1b0bd59f6",
   "Description":"Capture payment"
}

Sample response

copy
{  
   "PGReferenceID":"d6bfb1e6-f816-47ec-b38f-9083f7fcbf68",
   "CallerReferenceID":"do_reserve_14",
   "TransactionStatusCode":0,
   "TransactionStatusDescription":"Ok",
   "TransactionDateTime":"2015-10-31T22:02:25.377+01:00"
}

MonetaListAgreementPayments

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/MonetaListAgreementPayments

Returns list of payments for an agreement.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
AgreementID string Agreement ID as returned from MonetaCreateAgreement method

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
StatusCode Status code
StatusDescription Status description
Payments JSON list of agreements

Sample request

copy
{  
   "ReferenceID":"do_reserve_17",
   "AgreementID":"b286fc3d-9c56-4c8c-8f03-85ab826366c5"
}

Sample response

copy
{  
   "PGReferenceID":"b54747f7-4a73-4281-95b4-e83b803a5416",
   "CallerReferenceID":"monetado_list_payments_15",
   "StatusCode":0,
   "StatusDescription":"Ok",
   "Payments":[  
	  {  
		 "DateTime":"2016-05-11",
		 "Type":"Reserve",
		 "Value":77,
		 "Description":"Narocilo: tralala",
		 "Status":5,
		 "StatusDescription":"Reserved"
	  },
	  {  
		 "DateTime":"2016-05-11",
		 "Type":"Capture",
		 "Value":77,
		 "Description":"Narocilo: tralala",
		 "Status":4,
		 "StatusDescription":"Confirmed"
	  },
	  {  
		 "DateTime":"2016-05-11",
		 "Type":"Reserve",
		 "Value":77,
		 "Description":"Narocilo: tralala",
		 "Status":5,
		 "StatusDescription":"Reserved"
	  }
   ]
}

MonetaSMSPushPayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/MonetaSMSPushPayment

Executes single moneta payment.
Customer receives SMS with confirmation details to his mobile phone.
After ther confirmation is made, actual payment takes place.
PaymentGateway will forward payment details to the merchants WS.

If Items array is specified, Sum of all items must match payment Amount, otherwise execution of payment will fail and error will be returned.

If no Items are specified, Moneta SMS payment will be executed with one default item with VATPercent=0 – it is important for the merchant to be aware of this in case when Moneta is issuing automatic invoices to the customers.

Items structure

Parameter name Type Description
Description String Item description
Quantity Integer Quantity
Price Decimal Item price
VATPercent Decimal VAT percent
Sum Decimal Value of the item

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
MobileNumber String Customers mobile number.
Required format is 386XXYYYYYY.
XX=mobile network number without leading zero
YYYYYY=mobile number
Amount integer Amount in minor units of Euro
Description String
OrderNumber String
CallbackURL String Merchants WS URL where payment confirmation will be forwearded after customers confirmas payment.
Overrides URL specified in the account settings.
CallbackMethod String Method to used for forwearding data.
Valid methods: POST – must be able to accept JSON object containing payment query GET – must be able to accept payment query as a series of parameters.
Items JSON JSON array containing invoice details (items bought by the customer). Customer can see items on the invoice received from his mobile provider.

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
Amount Captured amount in minor units
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
   "ReferenceID":"sms_14",
   "MobileNumber":"38631123456",
   "Amount":"100",
   "Description":"DO reserve test",
   "OrderNumber":"DO reserve test"
}

Sample response

copy
{  
   "PGReferenceID":"d6bfb1e6-f816-47ec-b38f-9083f7fcbf68",
   "CallerReferenceID":"sms_14",
   "Amount":100,
   "TransactionStatusCode":0,
   "TransactionStatusDescription":"Ok",
   "TransactionDateTime":"2015-10-31T22:02:25.377+01:00"
}

ThreeDSecureInit

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/ThreeDSecureInit

Performs check, if the card is 3D-Secure enrolled and initiates 3D-Secure procedure with PayWiser services.
ThreeDSecure.ThreeDSecureReferenceID can be later on used with Reserve or SimplaPayment API methods.

Note

Allowed only for Clearhaus

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
OrderNumber string Your own reference number of order, invoice etc...
CardNumber string
CardExpDate string
BuyerIP string

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
ThreeDSecureResponse              JSON
StatusCode Status code
StatusDescription Status description

ThreeDSecureResponse structure

Parameter name Description
IsThreeDSecured Indicator if card is 3D-Secured (true) or not (false)
ThreeDSecureUrl URL to which the customer must be redirected to complete 3D-Secure procedure.
URL is fully formatted and contains all necessary parameters for handling 3D-Secure through PayWiser services.
AcsUrl 3D-Secure URL of the bank (if you wish to handle 3D-Secure procedure yourself)
PaReq 3D-Secure PaReq (if you wish to handle 3D-Secure procedure yourself)
ThreeDSecureReferenceID PayWisers 3D-Secure reference ID (used later on for calling PayWiser Reserve API method)

Sample request

copy
{  
   "ReferenceID":"3ds_14",
   "Amount":"100",
   "Currency":"EUR",
   "OrderNumber":"test_order",
   "CardNumber":"5500000000000004",
   "CardExpDate":"11/2019",
   "BuyerIP":"8.8.8.8"
}

Sample response

copy
{  
   "PGReferenceID":"6332571b-d6c0-478b-bd57-94da301451f2",
   "CallerReferenceID":"3ds_152",
   "ThreeDSecureResponse":{  
	  "IsThreeDSecured":true,
	  "ThreeDSecureUrl":"https://cap.attempts.securecode.com/acspage/cap?RID=138&VAA=A?PaReq=eNpt...%3d&TermUrl=https://89.212.55.90/ThreeDCallback/handler.ashx&MD=7bb2c8da-8a0e-4fb5-8f9f-27eaeef77498",
	  "AcsUrl":"https://cap.attempts.securecode.com/acspage/cap?RID=138&VAA=A",
	  "PaReq":"eNpt...%3d",
	  "ThreeDSecureReferenceID":"7bb2c8da-8a0e-4fb5-8f9f-27eaeef77498"
   },
   "StatusCode":0,
   "StatusDescription":"Ok"
}

ThreeDSecureCheckPaRes

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/ThreeDSecureCheckPaRes

Checks recieved 3D-Secure PaRes response and returns 3D-Secure completion status.

Note

Allowed only for Clearhaus

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
PaRes String 3D-Secure response PaRes

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
Successful Indicator is 3D-Secure procedure was successfully completed by the customer (true) or not (false)
StatusCode Status code
StatusDescription Status description

Sample request

copy
{  
   "ReferenceID":"3ds_14",
   "PaRes":" eNpt...%3d"
}

Sample response

copy
{  
   "PGReferenceID":"d6bfb1e6-f816-47ec-b38f-9083f7fcbf68",
   "CallerReferenceID":"sms_14",
   "Successful":true,
   "StatusCode":0,
   "StatusDescription":"Ok",
   "TransactionDateTime":"2015-10-31T22:02:25.377+01:00"
}

SimplePayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/SimplePayment

Offers you quick and simple way of making card payment, with or without tokenization.

Maestro cards can not be tokenized.
Maestro cards generally require 3D Secure to be completed.
Using Maestro card without 3D Secure may work (or not; depending on the issuers policy).

Depending on your PayWiser 3D-Secure settings, following rules apply:

Using Clearhaus

3D-Secure is disabled

  • using ThreeDSecureReferenceID parameter is prohibited
  • ThreeDSecureResponse will be empty

3D-Secure is enabled

  • using either ThreeDSecureReferenceID or ThreeDSecurePaRes parameter is allowed
  • if you wish to use 3D-Secure:
    • you must first initiate 3D-Secure procedure by calling ThreeDSecureInit API (please see ThreeDSecureInit section of this document for specifics regarding this API method)
    • 3D-Secure procedure must be successfully completed by the customer prior to calling SimplePayment
  • ThreeDSecureResponse will be empty

3D-Secure is mandatory

  • using either ThreeDSecureReferenceID or ThreeDSecurePaRes parameter is mandatory
  • you must first initiate 3D-Secure procedure by calling ThreeDSecureInit API (please see ThreeDSecureInit section of this document for specifics regarding this API method)
  • 3D-Secure procedure must be successfully completed by the customer prior to calling SimplePayment
  • ThreeDSecureResponse will be empty

If card tokenization is required (TokanizeCard=true), then following API methods will be called internally:

  • Tokenize
  • Reserve (using card token)
  • Capture

If card tokenization is not required (TokanizeCard=false), then following API methods will be called internally:

  • Reserve (using card data)
  • Capture

Using eMerchantPay

3D-Secure is disabled

  • using ThreeDSecureReferenceID parameter is prohibited

3D-Secure is enabled

  • if ThreeDSeccessURL and ThreeDFailURL are specified, SimplePayment will be treated as 3D-Secured:
    • if the card is enrolled, ThreeDSecureResponse will be returned
    • if the card is not enrolled, ThreeDSecureResponse is empty, reservation will fail
  • if ThreeDSeccessURL and ThreeDFailURL are not specified, normal SimplePayment will take place

3D-Secure is mandatory

  • using ThreeDSecureReferenceID parameter is prohibited
  • if the card is enrolled, ThreeDSecureResponse will be returned
  • if the card is not enrolled, ThreeDSecureResponse is empty, reservation will fail

If card tokenization is required (TokanizeCard=true), then following API methods will be called internally:

  • Tokenize
  • Sale (direct payment, combining Reserve and Capture in one acquirer call)

If card tokenization is not required (TokanizeCard=false), then following API methods will be called internally:

  • Sale (direct payment, combining Reserve and Capture in one acquirer call)

Please see corresponding API methods documentation for specifics and rules that apply.

If card is declined (status code 40410 is returned) three times in a period of 10 minutes, card will be placed on the declined list and it will not be eligable for tokenization for the period of 10 minutes.
Once 10 minutes are up, declined card can be tokenized normally again (provided tokenization is successful and is not declined again).

If card is blocked, status code -165 will be returned.

Request parameters (using card token)

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CardToken string Card token
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
Surcharge integer Surcharge amount in minor units of given currency (e.g. cents if in Euro)
CashBack integer CashBack amount in minor units of given currency (e.g. cents if in Euro)
OrderNumber string Your own reference number of order, invoice etc...
BuyerIP string
TerminalIP string
TerminalID string
StatementText string 50
StatementDescription string 500
ThreeDSecureReferenceID string
TokenizeCard bool
  • true – card will be tokenized tokenized
  • false – card will not be tokenized (suitable for Maestro cards)
RiskSessionID string Allowed only for eMerchantPay.
Must contain session_id for risk management.
CardHolderEmail * string
CardHolderBilling ** JSON JSON object containing card holders billing details.

Request parameters (using card tokenization ID)

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
TokenizeReferenceID string PayWiser PG reference ID as returned from Tokenize method (PGReferenceID)
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
Surcharge integer Surcharge amount in minor units of given currency (e.g. cents if in Euro)
CashBack integer CashBack amount in minor units of given currency (e.g. cents if in Euro)
OrderNumber string Your own reference number of order, invoice etc...
BuyerIP string
TerminalIP string
TerminalID string
StatementText string 50
StatementDescription string 500
ThreeDSecureReferenceID string
TokenizeCard bool
  • true – card will be tokenized tokenized
  • false – card will not be tokenized (suitable for Maestro cards)
RiskSessionID string Allowed only for eMerchantPay.
Must contain session_id for risk management.
CardHolderEmail * string
CardHolderBilling ** JSON JSON object containing card holders billing details.

Request parameters (using card data)

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CardHolderName String Name on the credit card
CardNumber string
CardExpDate string
CardSecurityCode string Notice: if your account settings allow CVV skipping, this parameter may be ommited
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
Surcharge integer Surcharge amount in minor units of given currency (e.g. cents if in Euro)
CashBack integer CashBack amount in minor units of given currency (e.g. cents if in Euro)
OrderNumber string Your own reference number of order, invoice etc...
BuyerIP string
TerminalIP string
TerminalID string
StatementText string 50
StatementDescription string 500
ThreeDSecureReferenceID string
TokenizeCard *** bool
  • true – card will be tokenized tokenized
  • false – card will not be tokenized (suitable for Maestro cards)
RiskSessionID string Allowed only for eMerchantPay.
Must contain session_id for risk management.
CardHolderEmail * string
CardHolderBilling ** JSON JSON object containing card holders billing details.

* Mandatory if using eMerchantPay as acquirer and your PayWiser account risk level is moredate or above
** Mandatory if using eMerchantPay as acquirer and your PayWiser account risk level is high or above
*** Can be used only if full card data is specified (not with TokenizeReferenceID and CardToken)

CardHolderBilling structure

Parameter name Description
FirstName
LastName
Address1 Primary address
Address2 Secondary address
ZipCode Zip code
City City
Country Country code in ISO 3166

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
Amount Always 0
Currency Always empty
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion
CardData JSON containing card data
PGReferences JSON containing PayWiser PaymentGateways reference IDs for Tokenize, Reserve and Capture
BankReferences JSON containing banks reference IDs for Tokenize, Reserve and Capture

CardData structure

Parameter name Description
CardNumber
CardExpDate
CardType Card type (Mastercard, Visa etc...)
CardCountryCode Country code of card issuing bank
CardRegion Possible values, determined by your accounts Domestic Country Code setting:
  • empty – unspecified (possibly because your PWPG account lacks Domestic Country Code setting)
  • domestic - domestic
  • intra – intra (from inside your region ie. EU)
  • inter – inter (from outside your region)

PGReferences and BankReferences structure

Parameter name Description
TokenizeReferenceID ReferenceID of tokenization (if applicable)
ReserveReferenceID ReferenceID of reservation
CaptureReferenceID ReferenceID of capture

ThreeDSecureResponse structure

Parameter name Description
IsThreeDSecured Indicator if card is 3D-Secured (true) or not (false)
ThreeDSecureUrl URL to which the customer must be redirected to complete 3D-Secure procedure. URL is fully formatted and contains all necessary parameters for handling 3D-Secure through PayWiser services.
AcsUrl 3D-Secure URL of the bank (if you wish to handle 3D-Secure procedure yourself)
PaReq 3D-Secure PaReq (if you wish to handle 3D-Secure procedure yourself)
ThreeDSecureReferenceID PayWisers 3D-Secure reference ID (used later on for calling PayWiser Reserve API method)

Sample request

copy
{  
   "ReferenceID":"qp_8",
   "CardHolderName":"John Doe",
   "CardNumber":"5500000000000004",
   "CardExpDate":"04/18",
   "CardSecurityCode":"123",
   "Amount":100,
   "Currency":"EUR",
   "OrderNumber":"Test order",
   "BuyerIP":"0.1.2.3",
   "TerminalIP":"4.5.6.7",
   "TerminalID":"Term1",
   "StatementText":"test",
   "StatementDescription":"Test description",
   "ThreeDSecureReferenceID":"1744ffe-eb23-4195-agf0-e18jkf6f330c",
   "TokenizeCard":1
}

Sample response

copy
{  
   "PGReferenceID":"4bdaf64e-2452-4669-8c18-1abdbaf4d988",
   "BankReferenceID":"a1f138e1-7734-4971-b725-36449a1ae240",
   "CallerReferenceID":"qp_8",
   "Amount":100,
   "Currency":"EUR",
   "TransactionStatusCode":20000,
   "TransactionStatusDescription":"Approved",
   "TransactionDateTime":"2016-01-31T19:04:47.643+01:00"
}

CreateRecurringPlan

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/CreateRecurringPlan

Creates new recurring plan, which can later on be used to start new recurring payments.

Because creating PlanPattern and RetryPattern ba hand can be quite complicated, we suggest you use PayWiser Dashboard for creating recurring plans.

However, if you wish so, you can create ad-hoc recurring plans and use API to add them.
In this case, we strongly suggest using RecurringPatternCreator.exe utility available at http://gateway.paywiser.eu/devzone/RecurringPatternCreator/.
.Net Framework 2.0 or newer is required.
With this tool, you can define and create PlanPattern (fill data in »RecurringPlanDefinition« and click »Generate recurring dates and pattern«) and RetryPattern (fill data in »Retry pattern definition« and click »Generate retry dates and pattern«). Use generated recurring pattern ad PlanPattern or RetryPattern.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
PlanDescription String Plan description
StatementText string
StatementDescription string
PlanPattern string Pattern for recurring payments, please see below for details
IsRecurring boolean If payment in recurring (true) or installment (false).
MaxRetryCount integer Number of retries, if the payment fails the first time
RetryPattern string Pattern for retrying failed payments, please see below for details
PaymentHour integer Hour of the day, when each payment will be executed
RenewYearly boolean If this parameter value is true, then installment will be renewed the next year with the same dates. Renewal is automatic, after current installment is finished. Can only be used for monthly installments with less than 12 installments.
In all other cases, error will be returned and CreateRecurringPlan will fail.

Structure of PlanPattern and RetryPattern

Daily recurrence

Meaning Length Example Description
Type designator 1 D D – daily
Start date 8 20160301 Recurring schedule start date in YYYYMMDD format
End date 8 ZZZZZZZZ Recurring schedule end date in YYYYMMDD format.
If you do not wish to limit recurring payments with end date, this part should be »ZZZZZZZZ«
Number of occurrences 4 0010 number of occurences
2 02 predefined
Regenerate every X days 2 003 how many days is between payments

Example pattern: D20160301ZZZZZZZZ001002003
Explanation: starting from 1.3.2016, there will be payment every three days and there will be 10 repetitions.
If you wish to make a payment every day, pattern would be D20160301ZZZZZZZZ001002001.

Weekly recurrence

Meaning Length Example Description
Type designator 1 W W – weekly
Start date 8 20160301 Recurring schedule start date in YYYYMMDD format
End date 8 ZZZZZZZZ Recurring schedule end date in YYYYMMDD format.
If you do not wish to limit recurring payments with end date, this part should be »ZZZZZZZZ«
Number of occurrences 4 0010 number of occurences
2 02 predefined
Regenerate on Sunday 1 N Y for true, N for false
Regenerate on Monday 1 Y Y for true, N for false
Regenerate on Tuesday 1 N Y for true, N for false
Regenerate on Wednesday 1 N Y for true, N for false
Regenerate on Thursday 1 N Y for true, N for false
Regenerate on Friday 1 N Y for true, N for false
Regenerate on Saturday 1 N Y for true, N for false
Regenerate every X weeks 3 001 how many weeks is between payments

Example pattern: W20160301ZZZZZZZZ001002NYNNNNN001
Explanation: starting from 1.3.2016, there will be payment every Monday and there will be 10 repetitions.
If you wish to make a payment every 2 weeks, pattern would be W20160301ZZZZZZZZ001002NYNNNNN002.
If you wish to make payment every Monday and Friday on every three weeks, pattern would be W20160301ZZZZZZZZ001002NYNNNYN003

Monthly recurrence

Meaning Length Example Description
Type designator 1 M M – monthly
Start date 8 20160301 Recurring schedule start date in YYYYMMDD format
End date 8 ZZZZZZZZ Recurring schedule end date in YYYYMMDD format.
If you do not wish to limit recurring payments with end date, this part should be »ZZZZZZZZ«
Number of occurrences 4 0010 number of occurences
Regeneration type 1 0
End date type 1 2
Regenerate on specific day 2 22 day of the month when payment is to be made
Custom date part one 1 Z A - first B - second C - third D - fourth E – last
Custom date part two 1 Z A – day B - weekday C – weekend day D - Sunday E - Monday F - Tuesday G - Wednesday H - Thursday I - Friday J - Saturday
Adjustment value 3 000 Y for true, N for false
Regenerate every X months 3 001 how many months is between payments

Example pattern: M20160301ZZZZZZZZ00100229ZZ000001
Explanation: starting from 1.3.2016, there will be payment on every 22nd of the month and there will be 10 repetitions.
If you wish to make a payment every 2 months with 10 repetitions, pattern would be M20160301ZZZZZZZZ00100229ZZ000002.
If you wish to make payment every second Monday every two months with 10 repetitions, pattern would be M20160301ZZZZZZZZ00101200BE000002.

Yearly recurrence

Meaning Length Example Description
Type designator 1 Y Y – yearly
Start date 8 20160301 Recurring schedule start date in YYYYMMDD format
End date 8 ZZZZZZZZ Recurring schedule end date in YYYYMMDD format.
If you do not wish to limit recurring payments with end date, this part should be »ZZZZZZZZ«
Number of occurrences 4 0010 number of occurences
Regeneration type 1 0
End date type 1 2
Regenerate on specific day 2 22 day of the month when payment is to be made
Regenerate on specific month 2 03 month of the year when payment is to be made
Custom date part one 1 Z A - first B - second C - third D - fourth E – last
Custom date part two 1 Z A – day B - weekday C – weekend day D - Sunday E - Monday F - Tuesday G - Wednesday H - Thursday I - Friday J - Saturday
Custom date part three 1 Z A - January B - February C - March D - April E - May F - June G - July H - August I - September J - October K – November L - December
Adjustment value 3 000 Y for true, N for false

Example pattern: Y20160301ZZZZZZZZ0010022203ZZZ000
Explanation: starting from 1.3.2016, there will be payment on every March 22nd and there will be 10 repetitions.
If you wish to make a payment every first day of december with 10 repetitions, pattern would be Y20160301ZZZZZZZZ0010120000AAL000.

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
RecurringPlanID ID of created plan, can be later on used to start new recurring payments
StatusCode Status code
StatusDescription Status description

Sample request

copy
{  
   "ReferenceID":"newplan_4",
   "PlanDescription":"PlanDescription",
   "StatementText":"1",
   "StatementDescription":"2",
   "PlanPattern":"W20160301ZZZZZZZZ001002NYNNNNN001",
   "IsRecurring":false,
   "MaxRetryCount":0,
   "RetryPattern":"",
   "PaymentHour":"1"
}

Sample response

copy
{  
   "PGReferenceID":"d6bfb1e6-f816-47ec-b38f-9083f7fcbf68",
   "CallerReferenceID":" terminate_rec_1",
   "RecurringPlanID":"cca1e4de-38ac-4889-be3f-32470c2924db",
   "StatusCode":0,
   "StatusDescription":"Ok"
}

StartRecurringPayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/StartRecurringPayment

Creates and starts a new recurring payment for previously tokenized card.

If ImmediatePaymentAmount is specified, recurring schedule will be created only after immediate payment is successfully completed.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CardToken String Card token
MonetaAgreementID String Agreement ID as returned from MonetaCreateAgreement method
MonetaItems JSON JSON array containing invoice details (items bought by the customer).
Customer can see items on the invoice received from his mobile provider.
SepaCreditorMandateID String Mandate ID as was used in SepaCreateMandate method
Currency string 3 ISO 4217 3-letter currency code
RecurringPayment JSON JSON object containing definition of the recurring payment.
RiskSessionID string Allowed only for eMerchantPay.
Must contain session_id for risk management.
CardHolderEmail * string
CardHolderBilling ** JSON JSON object containing card holders billing details

Either CardToken, MonetaAgreementID or SepaCreditorMandateID must be specified.

Moneta specifics

  • If MonetaAgreementID is specified, MonetaItems can also be specified. Otherwise, using MonetaItems is not allowed.
  • If MonetaItems array is specified, Sum of all items must match payment RecurringPayment.PaymentAmount, otherwise execution will fail and error will be returned. Each individual payment will contain specified MonetaItems.
  • If no MonetaItems are specified, each individual Moneta DO payment will be executed with one default item with VATPercent=0 – it is important for the merchant to be aware of this in case when Moneta is issuing automatic invoices to the customers.
  • Immediate payment will be executed with or without MonetaItems as specified.

* Mandatory if using eMerchantPay as acquirer and your PayWiser account risk level is moredate or above
** Mandatory if using eMerchantPay as acquirer and your PayWiser account risk level is high or above

MonetaItems structure

Parameter name Type Description
Description String Item description
Quantity Integer Quantity
Price Decimal Item price
VATPercent Decimal VAT percent
Sum Decimal Value of the item

CardHolderBilling structure

Parameter name Description
FirstName
LastName
Address1 Primary address
Address2 Secondary address
ZipCode Zip code
City City
Country Country code in ISO 3166

RecurringPayment structure

Parameter name Type Description
RecurringPlanID String ID of the predefined recurring payment plan
StartDate string Date on which the recurring starts (when the first recurring payment will be made) in YYYY-MM-DD format.
If empty, recurring starts immediately when customer confirms web payment.
ExpiryDate string Date on which recurring payments will stop
InstallmentTotalValue integer Total value of installment payment
PaymentsSkipCount integer How many payments from the start are to be skipped
DownPaymentValue integer Value of the downpayment (for informational purposes only)
PaymentAmount integer Amount for each individual payment
ImmediatePaymentAmount integer Amount for the immediate payment (takes place immediately when customer comfirms web payment).
It is not a part of recurring plan.
OrderNumber string Mandatory if ImmediatePaymentAmount is specified
StatementText string Mandatory if ImmediatePaymentAmount is specified
StatementDescription string Mandatory if ImmediatePaymentAmount is specified
AdjustPlanWithStartDate boolean If this parameter value is true, then payment pattern will be automatically changed, so that the first payment will be made on the exact date when the customer confirms web payment.
Note: it can only be used when recurring plan is set up to be monthly or yearly and with the set date. In all other cases, error will be returned and InitWebPayment will fail.

Detailed explanation of some of the recurring payment parameters:

  • StartDate parameter does not change dates as set up by the recurring plan.
    For example, if recurring plan specifies that payment is to be made every second of the month, then:
    • empty StartDate means that first paymernt will be made on the second of the next month
    • if StartDate is specified, then first payment will be made on the second of the month after that date
  • AdjustPlanWithStartDate changes dates as set up by the recurring plan.
    It can only be used when recurring plan is set up to be monthly or yearly and with the set date. In all other cases, error will be returned and InitWebPayment will fail.
    For example, if recurring plan specifies that payment is to be made every second of the month and the customer confirms web payment on the fifth of month, then:
    • if StartDate is empty:
      • if AdjustPlanWithStartDate is true, then first payment (and all consecutive payments) will be made on the fifth of the month
      • if AdjustPlanWithStartDate is false, then first payment will be make accodring to the rules for StartDate parameter
    • if StartDate is not empty:
      • if AdjustPlanWithStartDate is true, then first payment will be made on the specified day from the StartDate, all consecutive payments will be made on the same day
      • if AdjustPlanWithStartDate is false, then first payment will be make accodring to the rules for StartDate parameter

Specifics

Card payment:

  • if your account is set up with mandatory use of 3D-Secure, recurring payments can not be used.
    With this method, no 3D-Secure can be used.
  • if ImmediatePaymentAmount is not specified, customers card will be tokenized and recurring schedule will be created.

Moneta payment:

  • if agreeement is not yet confirmed, no payments (immediate or normal recurring payments) will be made until the customer confirms the agreement – once agreement is confirmed, immediate payment will be made and recurring payments will begin processing
  • if agreement is canceled, no further recurring payments will be initiated and all ongoing payments will be stopped

Sepa payment:

  • in order to use Sepa mandate for recurring payments, the mandate must be created using IsRecurring=true
  • if mandate was created using COR1 option, recurring payment must be created at least one business day before StartDate
  • if mandate was not created using COR1 option, recurring payment must be created at least five business days before StartDate
  • if immediate payment is specified, it will be due on the first possible date depending on COR1 option (1 day or 5 days)

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
ImmediatePaymentPGReferenceID PayWiser PG reference ID of the immediate payment
RecurringScheduleID ID of created recurring schedule
StatusCode Status code
StatusDescription Status description
PGReferences JSON containing PayWiser PaymentGateways reference IDs for Tokenize, Reserve and Capture
BankReferences JSON containing banks reference IDs for Tokenize, Reserve and Capture

PGReferences and BankReferences structure

Parameter name Description
ReserveReferenceID ReferenceID of reservation
CaptureReferenceID ReferenceID of capture

Sample request

copy
{  
   "ReferenceID":"crec4",
   "CardToken":"8a6aeff3-645e-47f3-8bd6-5de803a67835",
   "Currency":"EUR",
   "RecurringPayment":{  
	  "RecurringPlanID":"cca1e4de-38ac-4889-be3f-32470c2924db",
	  "StartDate":"2016-03-03",
	  "ExpiryDate":"",
	  "InstallmentTotalValue":0,
	  "PaymentsSkipCount":1,
	  "DownPaymentValue":0,
	  "PaymentAmount":100,
	  "ImmediatePaymentAmount":183
   }
}

Sample response

copy
{  
   "PGReferenceID":"1067091a-fbf6-4373-9e73-4c2990559c51",
   "CallerReferenceID":"crec4",
   "ImmediatePaymentPGReferenceID":"1067091a-fbf6-4373-9e73-4c2990559c51",
   "RecurringScheduleID":"1067091a-fbf6-4373-9e73-4c2990559c51",
   "StatusCode":0,
   "StatusDescription":"Ok"
}

TerminateRecurringPlan

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/TerminateRecurringPlan

Terminates recurring plan.
Terminated recurring plan can not be used to start new recurring schedules.
However, existing active recurring schedules will continue to run until they are terminated themselves.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
RecurringPlanID String ID of the predefined recurring payment plan
TerminationReason String Reason for termination of the recurring plan

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
StatusCode Status code
StatusDescription Status description

Sample request

copy
{  
   "ReferenceID":" cca1e4de-38ac-4889-be3f-32470c2924db ",
   "RecurringReferenceID":"rec_1"
}

Sample response

copy
{  
   "PGReferenceID":"d6bfb1e6-f816-47ec-b38f-9083f7fcbf68",
   "CallerReferenceID":" terminate_rec_1",
   "StatusCode":0,
   "StatusDescription":"Ok"
}

TerminateRecurringPayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/TerminateRecurringPayment

Terminates (ends) recurring payment schedule immediately.
No further payments (even pending failed payments) will be made.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
RecurringReferenceID String Your own reference ID of the API call that was used to start recurring payments (InitWebPayment or StartRecurringPayment)
TerminationReason String Reason for termination of the recurring schedule

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
StatusCode Status code
StatusDescription Status description

Sample request

copy
{  
   "ReferenceID":"terminate_rec_1",
   "RecurringReferenceID":"rec_1"
}

Sample response

copy
{  
   "PGReferenceID":"d6bfb1e6-f816-47ec-b38f-9083f7fcbf68",
   "CallerReferenceID":" terminate_rec_1",
   "StatusCode":0,
   "StatusDescription":"Ok"
}

ListRecurringPlans

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/ListRecurringPlans

Lists recurring plans (all or single) for your account.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
RecurringPlanID String ID of the recurring plan

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
StatusCode Status code
StatusDescription Status description
RecurringPlans JSON list of recurring plans

Sample request

copy
{
	"ReferenceID":"list_rec_1"
}

Sample response

copy
{  
   "PGReferenceID":"50995eb8-0bd1-4291-bb05-d8ba561c37ba",
   "CallerReferenceID":"list_rec_1",
   "StatusCode":0,
   "StatusDescription":"Ok",
   "RecurringPlans":[  
	  {  
		 "ID":"7d5a392f-cd3b-4e98-9674-7c8d2971ee84",
		 "PlanDescription":"Test recurring plan",
		 "StatementText":"Installment %N",
		 "StatementDescription":"Installment %n",
		 "Pattern":"W20160229ZZZZZZZZ001002NYNNNNN001",
		 "IsRecurring":true,
		 "MaxRetryCount":3,
		 "RetryPattern":"D20160229ZZZZZZZZ001012001",
		 "PaymentHour":2,
		 "Template":true
	  },
	  {  
		 "ID":"760ae65d-c489-41d3-86df-95977951c47b",
		 "PlanDescription":"PlanDescription",
		 "StatementText":"1",
		 "StatementDescription":"2",
		 "Pattern":"W20160301ZZZZZZZZ001002NYNNNNN001",
		 "IsRecurring":false,
		 "MaxRetryCount":0,
		 "RetryPattern":"",
		 "PaymentHour":1,
		 "Template":false
	  }
   ]
}

ListRecurringPayments

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/ListRecurringPayments

Lists recurring payments (all or single) for your account.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
RecurringReferenceID String Your own reference ID of the API call that was used to start recurring payments (InitWebPayment or StartRecurringPayment)

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
StatusCode Status code
StatusDescription Status description
RecurringPayments JSON list of recurring payments

Sample request

copy
{  
   "ReferenceID":"list_rec_3",
   "RecurringReferenceID":"rec_init_21"
}

Sample response

copy
{  
   "PGReferenceID":"d38d09ee-0605-4c69-be42-6ba939245142",
   "CallerReferenceID":"list_rec_3",
   "StatusCode":0,
   "StatusDescription":"Ok",
   "RecurringPaymentTransactions":[  
	  {  
		 "PaymentNumber":1,
		 "TransactionDate":"2016-03-01",
		 "NextRetryDate":"2016-03-02",
		 "FailCount":1,
		 "ReservationID":"940efcc8-746a-450f-bd88-4cc0f6c70e00",
		 "ReservationStatusCode":"20000",
		 "ReservationStatusDescription":"Approved",
		 "CaptureID":"668c430c-897f-4554-84bc-1add4ac746ee",
		 "CaptureStatusCode":"20000",
		 "CaptureStatusDescription":"Approved",
		 "Completed":true,
		 "Status":"Completed"
	  },
	  {  
		 "PaymentNumber":2,
		 "TransactionDate":"2016-03-01",
		 "NextRetryDate":"2016-03-02",
		 "FailCount":1,
		 "ReservationID":"88a61cdf-66da-4301-9295-9c34c368d006",
		 "ReservationStatusCode":"20000",
		 "ReservationStatusDescription":"Approved",
		 "CaptureID":"14bb5c11-8b43-4cb2-a9cf-88bed8cbdc70",
		 "CaptureStatusCode":"40110",
		 "CaptureStatusDescription":"Invalid card number",
		 "Completed":false,
		 "Status":"Payment failed - will retry"
	  }
   ]
}

ListRecurringPaymentTransactions

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/ListRecurringPaymentTransactions

Lists all transactions for recurring payment.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
RecurringReferenceID String Your own reference ID of the API call that was used to start recurring payments (InitWebPayment or StartRecurringPayment)

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
StatusCode Status code
StatusDescription Status description
RecurringPaymentTransactions JSON list of transactions

Sample request

copy
{  
   "ReferenceID":"list_rec_3",
   "RecurringReferenceID":"rec_init_21"
}

Sample response

copy
{  
   "PGReferenceID":"d38d09ee-0605-4c69-be42-6ba939245142",
   "CallerReferenceID":"list_rec_3",
   "StatusCode":0,
   "StatusDescription":"Ok",
   "RecurringPaymentTransactions":[  
	  {  
		 "PaymentNumber":1,
		 "TransactionDate":"2016-03-01",
		 "NextRetryDate":"2016-03-02",
		 "FailCount":1,
		 "ReservationID":"940efcc8-746a-450f-bd88-4cc0f6c70e00",
		 "ReservationStatusCode":"20000",
		 "ReservationStatusDescription":"Approved",
		 "CaptureID":"668c430c-897f-4554-84bc-1add4ac746ee",
		 "CaptureStatusCode":"20000",
		 "CaptureStatusDescription":"Approved",
		 "Completed":true,
		 "Status":"Completed"
	  },
	  {  
		 "PaymentNumber":2,
		 "TransactionDate":"2016-03-01",
		 "NextRetryDate":"2016-03-02",
		 "FailCount":1,
		 "ReservationID":"88a61cdf-66da-4301-9295-9c34c368d006",
		 "ReservationStatusCode":"20000",
		 "ReservationStatusDescription":"Approved",
		 "CaptureID":"14bb5c11-8b43-4cb2-a9cf-88bed8cbdc70",
		 "CaptureStatusCode":"40110",
		 "CaptureStatusDescription":"Invalid card number",
		 "Completed":false,
		 "Status":"Payment failed - will retry"
	  }
   ]
}

ListTransactions

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/ListTransactions

Lists all transactions in specified time period.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
DateFrom String Start date in YYYY-MM-DD format.
DateTo End date in YYYY-MM-DD format.

Response

Parameter name Description
PGReferenceID PayWiser PG reference ID
CallerReferenceID Caller reference ID
StatusCode Status code
StatusDescription Status description
Transactions JSON list of transactions

Sample request

copy
{  
   "ReferenceID":"list_tran_1",
   "DateFrom":"2013-03-01",
   "DateTo":"2013-03-01"
}

Sample response

copy
{  
   "PGReferenceID":"731309ab-5590-440f-aed1-4a2d1d85bcf3",
   "CallerReferenceID":"lrec202393",
   "StatusCode":0,
   "StatusDescription":"Ok",
   "Transactions":[  
	  {  
		 "TransactionTime":"2016-02-22T01:53:21.973",
		 "TransactionType":2,
		 "TransactionDescription":"Capture",
		 "PGReferenceID":"ad58f62e-cb35-46b5-8dee-c1fb4ae9d26c",
		 "TransactionReferenceID":"WithDrawFunds10_Capture",
		 "WebPaymentReferenceID":null,
		 "OrderNumber":null,
		 "PaymentType":1,
		 "PaymentCardToken":"479111c6-0f41-4df0-9edf-ec5da2e83d26",
		 "PaymentCardNumber":"550000******0004",
		 "PaymentCardExpirationDate":"04/2030",
		 "PaymentMobileNumber":null,
		 "PaymentAgreementID":null,
		 "PaymentValue":107,
		 "PaymentCurrency":"EUR",
		 "StatementText":"Test withdrawal 1",
		 "StatusCode":0,
		 "StatusDescription":"Approved",
		 "RecurringReferenceID":null,
		 "RecurringPlanID":null,
		 "CustomerName":null,
		 "CustomerAddress":null,
		 "CustomerCity":null,
		 "CustomerZipCode":null,
		 "CustomerState":null,
		 "CustomerCountry":null,
		 "CustomerMembershipEmail":null,
		 "CustomerMembershipMobileNumber":null,
		 "CustomerMembershipMemberID":null,
		 "CustomerMembershipCouponID":null,
		 "CustomerMessage":null,
		 "CustomerCompanyName":null,
		 "CustomerCompanyVATNumber":null
	  },
	  {  
		 "TransactionTime":"2016-02-22T01:59:31.247",
		 "TransactionType":2,
		 "TransactionDescription":"Capture",
		 "PGReferenceID":"9b3a0f50-750c-4c87-94ed-3a23f2ae2579",
		 "TransactionReferenceID":"WithDrawFunds11_Capture",
		 "WebPaymentReferenceID":null,
		 "OrderNumber":null,
		 "PaymentType":1,
		 "PaymentCardToken":"479111c6-0f41-4df0-9edf-ec5da2e83d26",
		 "PaymentCardNumber":"550000******0004",
		 "PaymentCardExpirationDate":"04/2030",
		 "PaymentMobileNumber":null,
		 "PaymentAgreementID":null,
		 "PaymentValue":107,
		 "PaymentCurrency":"EUR",
		 "StatementText":"Test withdrawal 1",
		 "StatusCode":0,
		 "StatusDescription":"Approved",
		 "RecurringReferenceID":null,
		 "RecurringPlanID":null,
		 "CustomerName":null,
		 "CustomerAddress":null,
		 "CustomerCity":null,
		 "CustomerZipCode":null,
		 "CustomerState":null,
		 "CustomerCountry":null,
		 "CustomerMembershipEmail":null,
		 "CustomerMembershipMobileNumber":null,
		 "CustomerMembershipMemberID":null,
		 "CustomerMembershipCouponID":null,
		 "CustomerMessage":null,
		 "CustomerCompanyName":null,
		 "CustomerCompanyVATNumber":null
	  }
   ]
}

CheckMonetaEnabled

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/CheckMonetaEnabled

Checks if Moneta payments are enabled for the specified mobile number.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
MobileNumber string Mobile number to check

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
MonetaEnabled True if Moneta payments are enabled, false otherwise
MobileNumber Mobile number checked
StatusCode Status code
StatusDescription Status description

Sample request

copy
{  
   "ReferenceID":"listtransactions_93",
   "MobileNumber":"031345829"
}

Sample response

copy
{  
   "CallerReferenceID":"listtransactions_93",
   "PGReferenceID":"9b099aa1-9605-45a7-b682-01b9426000e0",
   "MonetaEnabled":true,
   "MobileNumber":"031345829",
   "StatusCode":0,
   "StatusDescription":"Ok"
}

SepaCreateMandate

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/SepaCreateMandate

Creates new Sepa mandate to be used for initiating Sepa payments.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CreditorMandateID string Your own ID of the mandate
MandateDescription string Mandate description
MandateSignatureDate string Date of signature
MandateValidFromDate string Date from which the mandate is valid
IsRecurring bool True if mandate is to be used for recurring payments False otherwise
UseCOR1 bool Use COR1 option
Allowed only for Fidor bank, in case of eMerchantPay this parameter must not be specified
DebtorTitle string Title/salutation of the debtor
DebtorName string Debtors full name
DebtorEmail string Debtors email
DebtorIBAN string Debtors IBAN
DebtorBIC string Debtors BIC
DebtorCountry string Debtors country code
DebtorAddress1 string Street and street number of the debtor
DebtorAddress2 string ZIP and City of the debtor

Notice on data formatting and contents:

  • All of the debtors data (from title to address) must not contain any special or accented characters
  • IBAN and BIC must be valid
  • contents of address1 and address2 must be exactly as described
  • mandates created with IsRecurring=false can only be used onye whereas mandates with IsRecurring=true can be used multiple times

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
MandateID True if Moneta payments are enabled, false otherwise
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
   "ReferenceID":"mandate_506",
   "CreditorMandateID":"mandate000506",
   "MandateSignatureDate":"2016-06-30",
   "MandateValidFromDate":"2016-07-01",
   "MandateDescription":"Test mandate 1",
   "IsRecurring":true,
   "UseCor1":true,
   "DebtorTitle":"Mister",
   "DebtorEmail":"john@doe.com",
   "DebtorName":"John Doe",
   "DebtorIBAN":"SI561323453453453",
   "DebtorBIC":"LJBASI2X",
   "DebtorBankID":"123",
   "DebtorCountry":"SI",
   "DebtorAddress1":"Long road 22",
   "DebtorAddress2":"1234 City of Somewhere"
}

Sample response

copy
{  
   "PGReferenceID":"0e9145f2-136b-40d5-bc67-2ed12e85a98e",
   "CallerReferenceID":"mandate_506",
   "MandateID":"bb8439ad-77e2-4b61-93be-b53721381d18",
   "TransactionStatusCode":0,
   "TransactionStatusDescription":"Ok",
   "TransactionDateTime":""
}

SepaListMandates

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/SepaListMandates

Lists Sepa mandates.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CreditorMandateID string Your own ID of the mandate

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
StatusCode Status code
StatusDescription Status description
Mandates JSON list of mandates

Sample request

copy
{
	"ReferenceID":"mandate_list_4"
}

Sample response

copy
{  
   "PGReferenceID":"c22be4c6-d973-4169-9baa-ddb4a3764d12",
   "CallerReferenceID":"mandate_list_4",
   "StatusCode":0,
   "StatusDescription":"Ok",
   "Mandates":[  
	  {  
		 "MandateID":"mandate000023",
		 "BankMandateID":null,
		 "MandateSignatureDate":"2016-01-04T00:00:00",
		 "MandateValidFromDate":"2016-01-04T00:00:00",
		 "MandateDescription":"Test mandate 1",
		 "Sequence":"OOFF",
		 "UseCor1":true,
		 "DebtorTitle":"Gospod",
		 "DebtorName":"Hostni Joza",
		 "DebtorIBAN":"SI56051007034257128",
		 "DebtorBIC":"ABANSI2X",
		 "DebtorCountry":"DE",
		 "DebtorAddress1":"V gozdu 22",
		 "DebtorAddress2":"1234 Gozd",
		 "Active":true,
		 "Revoked":false,
		 "RevocationReason":null
	  }
   ]
}

SepaRevokeMandate

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/SepaRevokeMandate

Revokes Sepa mandate.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CreditorMandateID string Your own ID of the mandate
RevocationReason string Reason for revocation of the mandate

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
StatusCode Status code
StatusDescription Status description

Sample request

copy
{  
   "ReferenceID":"mandate_revoke_3",
   "MandateID":"mandate000024",
   "RevocationReason":"No longer needed"
}

Sample response

copy
{  
   "PGReferenceID":"9c0cff56-5bd4-4e09-97fd-c68f4af78a66",
   "CallerReferenceID":"mandate_revoke_3",
   "StatusCode":0,
   "StatusDescription":"Ok"
}

SepaMandatePayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/SepaMandatePayment

Initiates new Sepa payment using specified Sepa mandate.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CreditorMandateID string Your own ID of the mandate
Amount integer Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
Description string Payment description
CollectionDate string Collection date
Allowed only for Fidor bank, in case of eMerchantPay this parameter must not be specified

Notice:

  • when specifying collection date, please take into account Sepa rules regarding collection dates (ie. how many business days before collection date payment must be submitted)
  • mandates created with IsRecurring=false can be used only for one payment

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
   "ReferenceID":"sepa_payment_39",
   "CreditorMandateID":"mandate000506",
   "Amount":2321,
   "Currency":"EUR",
   "CollectionDate":"2016-07-10",
   "Description":"Payment zwei"
}

Sample response

copy
{  
   "PGReferenceID":"7fb38d74-dc97-42f0-9787-bf8ed97e8fdc",
   "CallerReferenceID":"sepa_payment_39",
   "TransactionStatusCode":0,
   "TransactionStatusDescription":"Ok",
   "TransactionDateTime":"2016-07-09T12:23:23.107+02:00"
}

SepaListMandatePayments

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/SepaListMandatePayments

Lists payments for the Sepa mandate.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CreditorMandateID string Your own ID of the mandate

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
StatusCode Status code
StatusDescription Status description
MandatePayments JSON list of payments for the selected mandate

Notice:

  • payment may be processed in the meantime and the status may not yet be updated; for the most current payment status, use SepaCheckMandatePayment method

Sample request

copy
{  
   "ReferenceID":"mandate_41137",
   "CreditorMandateID":"mandate000503"
}

Sample response

copy
{  
   "PGReferenceID":"f2942dae-b620-4cde-846e-389e78bfcb98",
   "CallerReferenceID":"mandate_41137",
   "StatusCode":0,
   "StatusDescription":"Ok",
   "MandatePayments":[  
	  {  
		 "PGReferenceID":"5ceffa5e-746d-4dff-ad64-467ebd6ebcdc",
		 "MandatePaymentReferenceID":"sepa_payment_38",
		 "Amount":2321,
		 "Currency":"EUR",
		 "CollectionDate":"2016-07-09",
		 "Description":"Payment zwei",
		 "Status":2,
		 "StatusDescription":"Received",
		 "DateAccepted":"2016-07-08 15:50:31"
	  }
   ]
}

SepaCheckMandatePayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/SepaCheckMandatePayment

Checks single mandate payment status online.

Note

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CheckPaymentReferenceID string Reference ID of the Sepa payment

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
MandatePaymentStatusCode Status code of the Sepa mandate payment
MandatePaymentStatusDescription Status description of the Sepa mandate payment
StatusCode Status code
StatusDescription Status description

Sample request

copy
{  
   "ReferenceID":"sepa_check_10",
   "CheckPaymentReferenceID":"sepa_payment_39"
}

Sample response

copy
{  
   "PGReferenceID":"6fbeaf77-2d72-49f1-9260-a399be68629e",
   "CallerReferenceID":"sepa_check_10",
   "MandatePaymentStatusCode":2,
   "MandatePaymentStatusDescription":"received",
   "StatusCode":0,
   "StatusDescription":"Ok"
}

SepaRefund

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/SepaRefund

Note

Allowed only for eMerchantPay.

You can refund a specified amount of a previous Sepa payment.
You can make multiple refunds for a payment.
After each refund, transaction report will be sent via email or posted the the specified URL (depending on your account settings).

Notice: only fully processed payments can be refunded.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
PaymentReferenceID string PayWiser PG reference ID as returned from SepaMandatePayment method (PGReferenceID)
Amount int Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
Description string Refund description

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
   "ReferenceID":"sepa_refund_emp_12",
   "PaymentReferenceID":"7fb38d74-dc97-42f0-9787-bf8ed97e8fdc ",
   "Amount":10,
   "Currency":"EUR",
   "Description":"Payment zwei refund"
}

Sample response

copy
{  
   "PGReferenceID": "01aba92d-73fd-4907-8011-9f88429ac6be",
   "CallerReferenceID": "sepa_refund_emp_12",
   "TransactionStatusCode": 0,
   "TransactionStatusDescription": "Ok",
   "TransactionDateTime": "2017-01-14T10:47:24.723+01:00"
}

SepaPayOut

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/SepaPayOut

You can payout (e.g. winnings and not refunds) money to a sepa account.
After each payout, transaction report will be sent via email or posted the the specified URL (depending on your account settings).

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
RemoteIBAN string IBAN of the account to be paid to
RemoteBIC string BIC of the account to be paid to
RemoteFirstName string First name of the account holder to be paid to
RemoteLastName string Last name of the account holder to be paid to
RemoteCountry string Country of the account to be paid to (see chapter 13 for list of allowed country codes)
Amount int Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
Description string PayOut description

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
  "ReferenceID": "SepaPayoutEMP4",
  "RemoteIBAN":"DE09100100101234567891",
  "RemoteBIC":"PBNKDEFFXXX",
  "RemoteFirstName":"John",
  "RemoteLastName":"Wick",
  "RemoteCountry":"SI",
  "Amount": 77,
  "Currency": "EUR",
  "Description": "test payout description"
}

Sample response

copy
{
  "PGReferenceID": "01aba92d-73fd-4907-8011-9f88429ac6be",
  "CallerReferenceID": "sepa_refund_emp_12",
  "TransactionStatusCode": 0,
  "TransactionStatusDescription": "Ok",
  "TransactionDateTime": "2017-01-14T10:47:24.723+01:00"
}

SofortPayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/SofortPayment

Allows you to collect Sofort payments.

Note

Allowed only for eMerchantPay.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
Amount int Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
CustomerDetails JSON JSON object containing customer details
CustomerBilling JSON JSON object containing customer billing details
OrderNumber string Your own reference number of order, invoice etc...
Description string Description
BuyerIP string Buyers IP address
PaymentSuccessURL string Where to redirect the customer after successful payment
PaymentFailURL string Where to redirect the customer after unsuccessful (failed) payment

CustomerDetails structure

Parameter name Description
Email Valid email address of the customer
Phone Valid phone of the customer
BankID The bank id of the bank where the cutomer resides
AccountNumber Bank identification number of the customer

CustomerBilling structure

Parameter name Description
FirstName Customers first name
LastName Customers last name
Address1 Primary address
Address2 Secondary address
ZipCode Zip code
City City
Country Country code in ISO 3166

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
BankReferenceID Bank reference ID
RedirectURL URL to wich customer must be redirected in order to complete the payment
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
   "ReferenceID":"sample_sofort_822",
   "Amount":100,
   "Currency":"EUR",
   "BuyerIP":"1.1.1.1",
   "OrderNumber":"123",
   "Description":"Test payment",
   "PaymentSuccessURL":"http://google.com",
   "PaymentFailURL":"http://yahoo.com",
   "CustomerDetails":
	{
	  "Email":"sample@gmail.com"
	},
   "CustomerBilling":
	{
	  "FirstName":"John",
	  "LastName":"Doe",
	  "Address1":"Address 1",
	  "ZipCode":"1234",
	  "City":"Some city",
	  "Country":"DE"
	}
}

Sample response

copy
{
  "PGReferenceID": "6cc01e41-cbae-4a1b-9aa8-4b3002c087db",
  "BankReferenceID": "",
  "CallerReferenceID": "sample_sofort_822",
  "RedirectURL": "https://staging.gate.emerchantpay.net/redirect/to_acquirer/1ed9d24723cc1b8405125454ba456332",
  "TransactionStatusCode": 306,
  "TransactionStatusDescription": "Redirect is needed",
  "TransactionDateTime": "2017-01-22T18:38:53.177+01:00"
}

SofortCheckPayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/SofortCheckPayment

Checks single Sofort payment status online.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CheckPaymentReferenceID string Reference ID of the Sofort payment

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
MandatePaymentStatusCode Status code of the Sofort payment
MandatePaymentStatusDescription Status description of the Sofort payment
StatusCode Status code
StatusDescription Status description

Sample request

copy
{  
  "ReferenceID":"sofort_check_10",
  "CheckPaymentReferenceID":"sofort_payment_39"
}

Sample response

copy
{
  "PGReferenceID": "6fbeaf77-2d72-49f1-9260-a399be68629e",
  "CallerReferenceID": "sofort_check_10",
  "MandatePaymentStatusCode": 2,
  "MandatePaymentStatusDescription": "received",
  "StatusCode": 0,
  "StatusDescription": "Ok"
}

PaySafeCardPayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/PaySafeCardPayment

Allows you to collect PaySafeCard payments.

Note

Allowed only for eMerchantPay.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
Amount int Amount in minor units of given currency (e.g. cents if in Euro)
Currency string ISO 4217 3-letter currency code
CustomerDetails JSON JSON object containing customer details
CustomerBilling JSON JSON object containing customer billing details
OrderNumber string Your own reference number of order, invoice etc...
Description string Description
BuyerIP string Buyers IP address
PaymentSuccessURL string Where to redirect the customer after successful payment
PaymentFailURL string Where to redirect the customer after unsuccessful (failed) payment

CustomerDetails structure

Parameter name Description
Email Valid email address of the customer
Phone Valid phone of the customer

CustomerBilling structure

Parameter name Description
FirstName Customers first name
LastName Customers last name
Address1 Primary address
Address2 Secondary address
ZipCode Zip code
City City
Country Country code in ISO 3166

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
BankReferenceID Bank reference ID
RedirectURL URL to wich customer must be redirected in order to complete the payment
TransactionStatusCode Status code
TransactionStatusDescription Status description
TransactionDateTime PayWiser PG time of completion

Sample request

copy
{  
   "ReferenceID":"sample_paysafe_822",
   "Amount":100,
   "Currency":"EUR",
   "BuyerIP":"1.1.1.1",
   "OrderNumber":"123",
   "Description":"Test payment",
   "PaymentSuccessURL":"http://google.com",
   "PaymentFailURL":"http://yahoo.com",
   "CustomerDetails":
	{
	  "Email":"sample@gmail.com"
	},
   "CustomerBilling":
	{
	  "FirstName":"John",
	  "LastName":"Doe",
	  "Address1":"Address 1",
	  "ZipCode":"1234",
	  "City":"Some city",
	  "Country":"DE"
	}
}
}

Sample response

copy
{
  "PGReferenceID": "6cc01e41-cbae-4a1b-9aa8-4b3002c087db",
  "BankReferenceID": "",
  "CallerReferenceID": "sample_paysafe_822",
  "RedirectURL": "https://staging.gate.emerchantpay.net/redirect/to_acquirer/1ed9d24723cc1b8405125454ba456332",
  "TransactionStatusCode": 306,
  "TransactionStatusDescription": "Redirect is needed",
  "TransactionDateTime": "2017-01-22T18:38:53.177+01:00"
}

PaySafeCardCheckPayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/PaySafeCadCheckPayment

Checks single PaySafeCard payment status online.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CheckPaymentReferenceID string Reference ID of the PaySafeCard payment

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
MandatePaymentStatusCode Status code of the PaySafeCard payment
MandatePaymentStatusDescription Status description of the PaySafeCard payment
StatusCode Status code
StatusDescription Status description

Sample request

copy
{  
  "ReferenceID":"paysafecard_check_10",
  "CheckPaymentReferenceID":"paysafecard_payment_39"
}

Sample response

copy
{
  "PGReferenceID": "6fbeaf77-2d72-49f1-9260-a399be68629e",
  "CallerReferenceID": "paysafecard_check_10",
  "MandatePaymentStatusCode": 2,
  "MandatePaymentStatusDescription": "received",
  "StatusCode": 0,
  "StatusDescription": "Ok"
}

Integrating PayWiser MiniPOS

PayWiser PaymentGateway enables you to easily initiate MiniPOS card payments from your desktop, web or any other implementations and solutions of your own, using unified API.

Prerequisites for initiating PayWiser MiniPOS card payments from PayWiser PaymentGateway are:

  • PayWiser PaymentGateway account
  • PayWiser MiniPOS account
  • fully configured MiniPOS mobile app on appropriate Android device, including printer and card reader

PayWiser PaymentGateway enabled you to:

  • initiate PayWiser MiniPOS card payment
  • manually check for MiniPOS payment status
  • receive payment status back to your system, using:
    • webservice of your own for receiving callbacks
    • connecting to SignalR hub for receiving callbacks

Limitations:

  • each PayWiser MiniPOS terminal can process only one payment at the time
  • once the payment was initiated it can only be cancelled on the MiniPOS or card reader
  • refunds must be done using MiniPOS and card reader
  • PayWiser PaymentGateway API method CheckPOSPaymentStatus must not be used for frequent polling of the payment status – instead, webservice callback of SignalR should be used for receiving payment status updates

Payment statuses

When using CheckPOSPaymentStatus API method, different payment statuses may be reported over time.

When receiving payment callbacks, only one callback will be returned for each initiated payment (if payment was successfully initiated).

PaymentStatus PaymentStatusDescription Possible next status codes
0 POS payment not initiated none (payment initiation failed)
1 POS payment initiated 2, 3, 4, 5
2 POS payment succeeded none (final status)
3 POS payment cancelled none (final status)
4 POS payment failed none (final status)
5 POS Payment error none (final status)

Web service callback

If MiniPOS payment was successfully initiated, one callback will be received using HTTP POST method, containing JSON with the following structure:

Parameter name Type Description
PGReferenceID String PayWiser PG reference ID, as returned from InitPOSPayment
CustomerReferenceID String Your own reference ID, as specified with InitPOSPayment
PaymentStatus String Payment status code
PaymentStatusDescription String Payment status description
CardScheme String Mastercard, Visa
CardType String Debit, Credit
ConfirmationSequence String Confirmation sequence (MD5 hash) calculated by PayWiser. Calculation is done by combining PGReferenceID of this call with your PayWiser PaymentGateway API key, as specified in your PayWiser account

SignalR callback

If MiniPOS payment was successfully initiated, one callback will be received through SignalR hub connection, containing the following data:

Parameter name Type Description
PGReferenceID String PayWiser PG reference ID, as returned from InitPOSPayment
CustomerReferenceID String Your own reference ID, as specified with InitPOSPayment
PaymentStatus String Payment status code
PaymentStatusDescription String Payment status description
CardScheme String Mastercard, Visa
CardType String Debit, Credit
ConfirmationSequence String Confirmation sequence (MD5 hash) calculated by PayWiser. Calculation is done by combining PGReferenceID of this call with your PayWiser PaymentGateway API key, as specified in your PayWiser account

SignalR hubs:

Environment SignalR hub address
Test https://gateway.paywiser.eu:8094/signalr
Production https://gateway.paywiser.eu:8093/signalr

For details on connecting to SignalR hub and receiving callbacks, please see provided JavaScript SignalR client example.

You can also investigate methods by visiting https://gateway.paywiser.eu:8094/signalr/hubs

Resources for SignalR client integration

InitPOSPayment

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/InitPOSPayment

Initiates (starts) PayWiser MiniPOS payment on the MiniPOS mobile app. Android device must be fully configured and running, as well as MiniPOS app must be running.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
StatementText string 255
Amount int Amount in minor units of given currency (e.g. cents if in Euro)
Currency string 3 ISO 4217 3-letter currency code Please note that the currency must match PayWiser MiniPOS terminals currency
TerminalID string 255 PayWiser MiniPOS ID of the terminal on which payment should be initiated
CallbackMethod int 0 – SignalR
1 – WebService callback
CallbackURL string 255 must be specified if CallbackMethod == 1

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
StatusCode Status code
StatusDescription Status description

Sample request

copy
{
    "ReferenceID":"Test_pos_payment1",
    "StatementText":"Test payment 1",
    "Amount":120,
    "CurrencyCode":"EUR",
    "TerminalID":"ECR_INTMP1",
    "CallbackMethod":0
}

Sample response

copy
{
    "PGReferenceID": "d7bceab3-b1f9-4d97-af5c-eb18863c1134",
    "CallerReferenceID": "Test_pos_payment1",
    "StatusCode": 0,
    "StatusDescription": "Ok"
}

CheckPOSPaymentStatus

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/CheckPOSPaymentStatus

Returns current payment status of the PayWiser MiniPOS payment as started by InitPOSPayment method.

It should only be called in case you didn't receive payment status callback.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
CheckReferenceID string 255 PayWiser PG reference ID as returned from InitPOSPayment

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
PaymentStatus Payment status code
PaymentStatusDescription Payment status description
CardScheme Card scheme
CardType Card type
StatusCode Status code
StatusDescription Status description

Sample request

copy
{
    "ReferenceID":"Pos_payment_status_1",
    "CheckReferenceID":" d7bceab3-b1f9-4d97-af5c-eb18863c1134"
}

Sample response

copy
{
    "PGReferenceID": " bdd07725-7a9e-4eb2-8d19-337d10f856dc",
    "CallerReferenceID": "Pos_payment_status_1",
    "PaymentStatus": 1,
    "PaymentStatusDescription": "POS payment initiated",
    "StatusCode": 0,
    "StatusDescription": "Ok"
}

PayWiser PaymentGateway internal couponing

If you are using PayWiser PaymentGateway WebPayments form to accept payments, you can use PayWiser PaymentGateway built-in couponing capabilities, which enable you to store and automatically accept coupons with WebPayments form.

This PaymentGateway capability enables you to:

  • create and store coupons
  • revoke coupons
  • get list of coupons
  • get list of payments, where single coupon was used

Each coupon defines:

  • create code
  • discount (by percentage or by value)
  • expiry date
  • number of usages

When your customer enters coupon code during the payment process, PayWiser PaymentGatewaay automatically checks coupon validity and discounts payment amount according to the specified discount percent of discount value.

If you wish to use PayWiser PaymentGateway integrated couponing, some limitations apply:

  • customers email, mobile number and membership ID can still be entered on WebPayments form, but they will not be checked with your WebService using Payment Data method
  • if coupon has discount value specified (in this case currency must also be specified), payment and the cupon must be of the same currency
  • if the coupon is used with WebPayment, actual payment amount is rounded to two decimals

If the following limitations do not suite you, you can always enroll your own WebService for Payment Data checking, which will be called any time the customer will enter either email, mobile number, coupon code or membership ID.

Such service can then process entered data and return actual payment amount to the PayWiser PaymentGateway WebPayments form as you see fit (thus enabling you to implement more compley business login on your end).

Sample request

copy
{
	"ReferenceID": "coupon_create_8",
	"CouponCode": "coupon1",
	"CouponDescription": "Test coupon 5",
	"DiscountPercent": 500,
	"ValidToDate": "2017-10-01",
	"MaxNumberOfUsages": 5
}

Sample response

copy
{
	"PGReferenceID": "e6d282d8-069e-472e-904d-9e418a96ab60",
	"CallerReferenceID": "coupon_create_8",
	"StatusCode": 0,
	"StatusDescription": "Ok"
}

CreateWebPaymentCoupon

Creates new coupon to be used with WebPayments form.

Note

Allowed only if PayWiser PaymentGateway internal couponing is enabled for your account.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
Coupon code string Coupon code (to be used by the customer)
Coupon description string Description of the coupon
DiscountPercent int Discount percent in minor units (e.g. 1000 for 10%)
DiscountValue int Amount in minor units of given currency (e.g. cents if in Euro)
DiscountValueCurrency string ISO 4217 3-letter currency code for DiscountValue Required if DiscountValue is specified
ValidToDate string To which date the coupon is valid If omitted, coupon is valid indefinitely
MaxNumberOfUsages int Maximum number of usages for the coupon If omitted, coupon can be used indefinitely

Notice

  • either DiscountPercent or DiscountValue must be specified (one of them, not both)
  • if DiscountValue is specified, DiscountValueCurrency must also be specified
  • if DiscountPercent is specified, DiscountValueCurrency must not be spe

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
StatusCode Status code
StatusDescription Status description

RevokeWebPaymentCoupon

Revokes existing coupon.

Notice

Allowed only if PayWiser PaymentGateway internal couponing is enabled for your account.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
Coupon code string Coupon code
Revocation reason string Reason for the revocation of the coupon

Notice

  • either DiscountPercent or DiscountValue must be specified (one of them, not both)
  • if DiscountValue is specified, DiscountValueCurrency must also be specified
  • if DiscountPercent is specified, DiscountValueCurrency must not be spe

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
StatusCode Status code
StatusDescription Status description

Sample request

copy
{
	"ReferenceID": "coupon_revoke_7",
	"CouponCode": "12345",
	"RevocationReason": "Promotion ended"
}

Sample response

copy
{
	"PGReferenceID": "c0f61899-ef3b-4779-b095-bd1a83ebca4e",
	"CallerReferenceID": "",
	"StatusCode": -155,
	"StatusDescription": "CouponCode is revoked"
}

ListWebPaymentCoupons

Lists all existing WebPayment coupons.

Notice

Allowed only if PayWiser PaymentGateway internal couponing is enabled for your account.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
Coupon code string Coupon code

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
StatusCode Status code
StatusDescription Status description
WebPaymentCoupons JSON list of coupons

Sample request

copy
{
	"ReferenceID":"coupons_list_1"
}

Sample response

copy
{
	"PGReferenceID": "02c204b3-c708-4e0e-95a0-54dd7623c79d",
	"CallerReferenceID": "coupon_payments_list_4",
	"StatusCode": 0,
	"StatusDescription": "Ok",
	"WebPaymentCoupons": [{
		"CouponCode": "12345",
		"CouponDescription": "Test coupon 1",
		"DiscountPercent": 10,
		"DiscountValue": 0,
		"DiscountValueCurrency": null,
		"ValidToDate": "2017-10-01T00:00:00",
		"MaxNumberOfUsages": 0,
		"NumberOfUsages": 0,
		"Revoked": true,
		"RevocationReason": "fsdfsdfsdfsdd"
	}, {
		"CouponCode": "abcd",
		"CouponDescription": "Test coupon 5",
		"DiscountPercent": 5,
		"DiscountValue": 0,
		"DiscountValueCurrency": null,
		"ValidToDate": "2017-10-01T00:00:00",
		"MaxNumberOfUsages": 5,
		"NumberOfUsages": 0,
		"Revoked": false,
		"RevocationReason": null
	}]
}

ListWebPaymentCouponPayments

Lists all WebPayments where specified coupon was used.

Notice

Allowed only if PayWiser PaymentGateway internal couponing is enabled for your account.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
Coupon code string Coupon code

Response

Parameter name Description
CallerReferenceID Caller reference ID
PGReferenceID PayWiser reference ID
StatusCode Status code
StatusDescription Status description
WebPaymentCouponPayments JSON list of payments with the coupon

Sample request

copy
{
	"ReferenceID": "coupon_payments_list_1",
	"CouponCode": "coupon1"
}

Sample response

copy
{
	"PGReferenceID": "334739bb-e252-490d-bbe6-4b9a56bf0001",
	"CallerReferenceID": "coupon_payments_list_6",
	"StatusCode": 0,
	"StatusDescription": "Ok",
	"WebPaymentCouponPayments": [{
		"CustomerReferenceID": "wp_gmd_8",
		"OrderNumber": "anything123",
		"OriginalAmount": 100,
		"OriginalCurrency": "EUR",
		"ActualAmount": 95,
		"ActualCurrency": "EUR",
		"DateTime": "2017-02-15T23:56:40.433"
	}, {
		"CustomerReferenceID": "wp_gmd_10",
		"OrderNumber": "anything123",
		"OriginalAmount": 100,
		"OriginalCurrency": "EUR",
		"ActualAmount": 95,
		"ActualCurrency": "EUR",
		"DateTime": "2017-02-16T13:29:26.513"
	}]
}

PayWiser PaymentGateway WebPayments form

WebPayments form offers simple and quick way of accepting payments with all of the payment methods that PayWiser PaymentGateway supports. It is translated in a several European languages (in addition to standard English translation), with new languages being constantly added.

It is fully customizable – you as a merchant can control which payment methods will be available to the customer and which data should the customer enter. Furthermore, you can customize look of the WebPayments form through providing your own CSS for its styling, as well as adding your company logo at the top.

And since it is entirely hosted on the PayWiser infrastructure, it is fully PCI DSS compliant, sou you don't have to worry and deal with compliance.

WebPayments form can be used if enabled for your account. Depending on your accounts risk level, WebPayments form may be the only way for you to accept card payments.

Using WebPayments form

To initiate WebPayments form payment, you must call InitWebPayment API method. A new WebPayments form is prepared according to the parameters passed and payment URL is returned to you and the payment itself can be performed by your customer.

You can redirect the customer to the WebPayments form URL or display it in HTML Iframe. Alternately, you can send the link via e-mail.

Sample PaymentURL value: https://paywize.me/q9MEaw6L

Once the customer visits the URL, WebPayments form will be displayed and if the payments is still active, the customer can enter desired payment method details and confirms the payment.

If credit card payment requires 3D-Secure procedure, the customer will be automatically redirected to the 3D-Secure site to complete the procedure.

Once the payment is fully processed, you will be notified on the payment status either via email or by the notification sent to your configured address (depending on your account settings).

WebPayments form lifecycle

Once the WebPayments form is displayed to the customer, tha following checks are performed:

  • internal PayWiser check is performed, to see if the Webpayments form is still active – unless specified otherwise during the InitWebPayment form API call, each WebPayments form is active for 45 minutes
  • if your account is set up with Payment active URL check, your WebService will be called to check activity of the payment in your system

If both checks confirm that the payment is still active, WebPayments form will be displayed to the customer and he may proceed to select payment method and enter required data. If the payment is no longer active, a message will be displayed. If your WebPayments form is set up with the ability for customer to enter membership data (email, phone number, member ID or coupon code) and your account is set up with Payment data URL, your WebService will be called to check entered data. Depending on the returned result, a new payment amount will be displayed to the customer.

Notice: if you're using PayWiser PaymentGateway internal couponing, coupon code will be checked internally by the Paymentgateway and your Payment data URL will not be called.

Once the customer enters all the required data and clicks »Pay« button, the payment will be processed by PayWiser PaymentGateway. If payment is done using credit card and depending on your account settings and the credit card customer used, 3D-Secure check will be performed. In case of required 3D-Secure, customer will be automatically redirected to the banks 3D-Secure page. Once the 3D-Secure procedure will be finished, payment processing will continue.

Once the payment is fully processed, you will be notified on the payment status either via email or by the notification sent to your configured address (depending on your account settings).

Payment active URL check

You must implement this method in your own WebService if you wish for PayWiser PaymentGateway WebPayments form to check if the payment is still active when displaying payment form to the customer.

PayWiser request parameters

Parameter name Type Description
ReferenceID string Your own ReferenceID of the payment, as was sent with InitWebPayment call to PayWiser
ConfirmationSequence string Confirmation sequence (MD5 hash) calculated by PayWiser. Calculation is done by combining ReferenceID with your confirmation string, as specified in your PayWiser account

Your WS response

Parameter name Type Description
PaymentActive bool Boolean value of payment activity
Description string Description for paying customer to be displayed by WebPayments form if payment is no longer active

Payment data URL check

You must implement this method in your own WebService if you wish for PayWiser PaymentGateway WebPayments form to check customer membership data (email, mobile number, member ID or coupon code) when entered by the customer.

PayWiser request parameters

Parameter name Type Description
ReferenceID string Your own ReferenceID of the payment, as was sent with InitWebPayment call to PayWiser
BuyerMobileNumber string Buyers mobile number
BuyerEmail string Buyers email address
PaymentData JSON list
ConfirmationSequence string Confirmation sequence (MD5 hash) calculated by PayWiser. Calculation is done by combining ReferenceID with your confirmation string, as specified in your PayWiser account.

PaymentData structure

Parameter name Type Max. length Description
Name string Name of the PaymentData parameter.
Names:
  • MemberID: buyers membership card ID
  • CouponID: coupon code
Value string Value of the PaymentData parameter

Your WS response

Parameter name Type Description
PaymentValue int Actual payment value to be paid for the first payment (in minor units, e.g. cent if in Euro)
Values:
  • -1 - default payment value (as specified in payment plan or purchase)
  • 0 - first payment already made (nothing to pay this time)
Any other value - value of the first payment (consequent payments values are as specified in payment plan or purchase) in minor units
PaymentCurrency string ISO 4217 3-letter currency code. Can be null (original payment currency remains unchanged).
CouponUsed bool True if coupon code was found and used; false otherwise
CouponUsedDescription string Coupon description, if found and used; empty otherwise
MemberFound bool True if member was found by mobile number, email or member ID; false otherwise
MemberFoundDescription string Member description (name etc) if found; empty otherwise
Description string Description for paying customer to be displayed by WebPayments form
AgreementID string Buyers agreement ID (for Moneta recurring payments)
MandateID string Buyers mandate ID (for Sepa paymenst)

Notice

  • if PaymentValue is returned and is >0, then this value will be used to process payment
  • if PaymentCurrency is returned, then this currency will be used to process payment
  • if coupon was used, then CouponUsedDescription will be displayed on the WebPayments form
  • if member was found, then MemberFoundDescription will be displayed on the WebPayments form
  • if Description is returned, it will be also displayed on the WebPayments form (along with CouponUsedDescription and MemberFound description)
  • if AgreementID is returned, it will be used in case of MonetaDO payment (if enabled and selected by the customer); additionally, agreement data will be automatically filled and displayed
  • if MandateID is returned, it will be used in case of Sepa payment (if enabled and selected by the customer); additionally, mandate data will be automatically filled and displayed

PaymentGateway WebPayments form Custom CSS

You can modify appearance of you PaymentGateway WebPayments form.

Depending whether you account is in Test or Production environment, you must login into applicable Dashboard.

For editing WebPayments form CSS, you must first select your account in Dashboard, edit the WebPayment settings, and click on the "Edit custom CSS" button.

Warning!

Under any circumstances you are not allowed to hide or drastically change following fields and areas of the WebPayments form:

  • Company name and address
  • "Read agreement/terms of service" buttons and modals.
  • Bottom icon row (with SSL, PCI DSS and payment icons)
  • Any required fields. Doing so will result in the payments form not working.

Notice

On the test enviroment you can freely change your CSS, but on production environment the CSS changes are first flagged as "under review". After the PayWiser staff reviews your changes, they will either accept or reject them and add an explanation.

You can download the current CSS samples below.

Make your changes in "Sample site\Payment_files\style.css" file and check if all the attached html files (Sample site\*.html) are working correctly and looking as desired. When you are happy with results, copy the contents of "style.css" to the textarea in Dashboard.

If you want to make more advanced changes, source *.scss files are also included. The main file is: "CSS Sources\sass\style.scss" which gets compiled into "style.css".

Notice

On the test enviroment you can freely change your CSS, but on production environment the CSS changes are first flagged as "under review". After the PayWiser staff reviews your changes, they will either accept or reject them and add an explanation.

Sample CSS for WebPayments customization:
https://docs.paywiser.eu/docs/PayWiser_WebPaymentsForm_CSS.zip

ChangeRecurringPaymentAmount

copy
https://gateway.paywiser.eu/PaymentGateway/PayWiserPG/ChangeRecurringPaymentAmount

Changes recurring payment schedule amount.
New payment amount willbe charged for all new (upcoming) recurring payments.

Notice

Can only be used if:

  • recurring schedule is not terminated
  • recurring schedule is not finished
  • is recurring and not installment

Changing payment amount does not affect any failed payments that yet have to be processed/retried.

Request parameters

Parameter name Type Max. Length Description
ReferenceID string 200 Your own unique reference ID
Your own unique reference ID Checked with RegEx ^[A-Za-z0-9_-]{1,200}$
RecurringReferenceID string Your own reference ID of the API call that was used to start recurring payments (InitWebPayment or StartRecurringPayment)
PaymentAmount int Payment amount to be charged for new (upcoming) recurring payments in minor units
ChangeReason string 255 Reason for the payment amount change

Response

Parameter name Description
PGReferenceID PayWiser reference ID
CallerReferenceID Caller reference ID
StatusCode Status code
StatusDescription Status description

Sample request

copy
{
	"ReferenceID":"terminate_rec_1",
	"RecurringReferenceID":"rec_1"
}

Sample response

copy
{
	"PGReferenceID":"d6bfb1e6-f816-47ec-b38f-9083f7fcbf68",
	"CallerReferenceID":" terminate_rec_1",
	"StatusCode":0,
	"StatusDescription":"Ok"
}

Buyer Notifications

PayWiser PaymentGateway has built-in capabilities for sending automatic email notifications to your buyers on successful completion of a payment transaction and on successful completion of a refund transaction.

Notification email can be sent automatically for the following transaction types:

  • Capture
  • SimplePayment
  • Refund

In order for the email to be sent, the following conditions must be met:

  • transaction must complete successfuly
  • sending buyers notifications must be enabled on yout PayWiser PaymentGateway account
  • email template for the correct transaction type must be set up
  • CardHolderEmail parameter must be present with the transaction itself or one of transactions parent transactions (and it must contain valid email buyers address)

There are two different types of email templates:

for Capture and SimplePayment transactions

copy
Dear {customer.name}

Your payment for {order.number} in amount of {amount}
with merchant {merchant.name}, {merchant.address}
was successfully completed with credit card {customer.card}.

Best regards, PayWiser PaymentGateway
-
This message was automatically generated, please do not reply

for Refund transaction

copy
Dear {customer.name}

Merchant {merchant.name}, {merchant.address}
refunded the amount of {amount} for order {order.number}
to your credit card {customer.card}.

Best regards, PayWiser PaymentGateway
-
This message was automatically generated, please do not reply

Email templates support only one language for all the customers.

Fields like {customer.name} are data fields and will be automatically filled/replaced with transaction data.

Template must contain all mentioned data fields.

All emails are being send as plaintext with normal priority.

If the following limitations do not suite you, you can always enroll your own emailing – upon transaction completion you are being sent transaction notification to your specified WebService, where you can implement your own set of rules for sending buyers emails (with HTML formatting, multilanguage support etc).

Hosted Fields