Skip to content

Payment methods · SIMULATORs

Test local payment methods in UAT

Route a terminal to the payment-simulator, set options.payment_method_type, and Finrelay redirects the customer to a page with Approve and Decline buttons. No real provider is involved.

Method and currency
  • blik redirect PLN only
  • ideal, sofort, mybank ... redirect EUR or GBP
  • vodafone_cash, instapay ... redirect EGP only

A method used with the wrong currency is declined straight away.

The payment simulator (payment-simulator) is a test provider for non-card payments. It uses the TRX_TYPE_PAYMENT feature and the POST /api/transactions/payment endpoint.


Methods

The simulator accepts the methods below. Send the id in options.payment_method_type.

Local payment methods

id Method Currency
blik BLIK PLN
sofort Sofort EUR, GBP
ideal iDEAL EUR, GBP
mybank MyBank EUR, GBP
multibanco Multibanco EUR, GBP
paysafecard Paysafecard EUR, GBP
skrill Skrill EUR, GBP
neteller Neteller EUR, GBP
rapid_transfer Rapid Transfer EUR, GBP
epay_bg epay.bg EUR, GBP
mbway MB WAY EUR, GBP
vodafone_cash Vodafone Cash EGP
orange_cash Orange Money EGP
etisalat_cash Etisalat Cash EGP
instapay InstaPay EGP
axis_pay AxisPay EGP
we_pay WE Pay EGP
cash Cash (Egypt) EGP

Other methods

id Method
payment_open_banking Open Banking
payment_upi UPI
payment_wallets Wallets
payment_bank_transfr Bank Transfer
payment_qr_code QR Code
google-pay-redirect Google Pay, redirect
apple-pay-redirect Apple Pay, redirect
interac-redirect Interac, redirect
openbanking-redirect Open Banking, redirect

Spelling

The ids are exact. payment_bank_transfr has no "e" and rapid_transfer, epay_bg and axis_pay use underscores, while google-pay-redirect uses hyphens.


Request

Use the normal payment request and add the method id in options.

POST /api/transactions/payment
{
  "terminal_id": "TERM001",
  "reference": "ORDER-123456",
  "method": "WALLETS",
  "amount": 10000,
  "currency": "PLN",
  "country": "PL",
  "customer_ip": "203.0.113.10",
  "return_url": "https://shop.example/return",
  "error_url": "https://shop.example/error",
  "cancel_url": "https://shop.example/cancel",
  "options": { "payment_method_type": "blik" }
}

The response carries a redirect.url. Send the customer's browser there.


What happens next

  1. The customer lands on a simulator page named after the method, with Approve and Decline buttons.
  2. The button sets the transaction to APPROVED or DECLINED, as a provider webhook would.
  3. The browser goes back to your return_url (or error_url), and your webhook and status checks report the result as usual.

The page only works for a transaction that was routed to a simulator with that method id. Any other transaction id or method returns a 404.

Currency check

Local methods take only their own currencies (see the table above). In another currency: - the request is declined with a message such as BLIK: currency EUR not supported; - a hosted payment page session does not offer the method.

Methods without a redirect

For the methods that don't redirect, the simulator answers from metadata, using the keys on the Simulator page (response_code, response_message and so on). Without metadata the payment is approved.