Version
API version 49.6
Documentation version 49.6
History
Version | Date | Name | Description |
---|---|---|---|
1.0 | 2011/06/10 | Emil Petkov | Initial version |
1.1 | 2011/11/11 | Emil Petkov | Added optional shipping params section for the shipping address |
1.2 | 2012/04/18 | Emil Petkov | Added dynamic descriptor functionality |
1.3 | 2012/08/03 | Emil Petkov | Added new transaction type AVS and Account Verification |
2.0 | 2013/03/29 | Emil Petkov | Added gaming and MOTO flags and support |
2.1 | 2013/04/11 | Emil Petkov | Split Credits with an initial ref transaction and Payouts without a reference transaction |
2.2 | 2013/05/26 | Emil Petkov | Added new transaction type InitRecurringSale3D - recurring payments with initial 3D |
2.3 | 2014/01/15 | Emil Petkov | Removed the transaction types DebitSale and IdealSale |
2.4 | 2014/01/22 | Emil Petkov | Added authorization code and issuer response code to API, section for issuer response codes |
2.5 | 2014/01/29 | Emil Petkov | Moto and gaming flags are now returned in the transaction response if present/marked in the request |
2.6 | 2014/02/05 | Emil Petkov | Dynamic descriptor params are now returned in the transaction response if present in the request |
2.7 | 2014/02/15 | Emil Petkov | Recurring advices are now returned in the transaction response if received from the issuer |
2.8 | 2014/05/01 | Emil Petkov | Added required vs. optional API params |
2.9 | 2014/06/16 | Emil Petkov | Currency handling rework and API description (different currency exponents, etc) |
3.0 | 2014/08/28 | Emil Petkov | Added risk related APIs - chargebacks, retrieval requests, blacklists |
3.1 | 2014/11/25 | Emil Petkov | Added API support for partial approvals |
3.2 | 2014/12/03 | Emil Petkov | Added WPF I18N specifics |
3.3 | 2014/12/08 | Emil Petkov | Added shopping carts and client integrations list |
3.4 | 2014/12/16 | Hristo Tanchev | Now the remote ip can be either a required or optional API param |
3.5 | 2015/02/22 | Dimitar Kostov | Added API for eZeeWallet and PayByVoucher via Yeepay |
3.6 | 2015/02/23 | Hristo Tanchev | Added API for CashU and Paysafecard |
3.7 | 2015/03/13 | Dimitar Kostov | Added API for Sofort |
3.8 | 2015/03/18 | Hristo Tanchev | Added API for PPRO |
3.9 | 2015/04/15 | Emil Petkov | New WPF API and WPF payment methods |
4.0 | 2015/05/14 | Hristo Tanchev | Added API for Neteller and ABN iDEAL |
4.1 | 2015/06/15 | Dimitar Kostov | Added WPF custom attributes - bin, tail |
4.2 | 2015/08/10 | Tsvetelina Borisova | Added WPF custom attributes - default, expiration date |
4.3 | 2015/08/12 | Vladimir Korichkov | Added API for WebMoney and POLi |
4.4 | 2015/08/19 | Tsvetelina Borisova | Added fraud related API for TC40/SAFE (fraud reports) |
4.5 | 2015/08/27 | Emil Petkov | 3D attributes xid and cavv are now not re- quired in the MPI sync attempted only workflow, only eci is |
4.6 | 2015/09/02 | Emil Petkov | New transaction type PayByVoucher Sale for purchasing vouchers via credit cards. Reworked the PayByVouchers section |
4.7 | 2015/09/04 | Emil Petkov | Added penetration testing warning for merchants |
4.8 | 2015/09/06 | Emil Petkov | Reconcile API now works with ARN and transaction ID in addition to unique ID |
4.9 | 2015/09/11 | Hristo Tanchev | Added Electronic Commerce Indicator to notifications |
5.0 | 2015/09/30 | Vladimir Korichkov | Added API for INPay |
5.1 | 2015/12/09 | Pepa Simeonova | Added event parameter to notifications for fraud transactions. |
5.2 | 2016/02/02 | Hristo Tanchev | Added API for P24 |
5.3 | 2016/02/16 | Tsvetelina Borisova | Added ARN in reconcile response if available. |
5.4 | 2016/03/18 | Tsvetelina Borisova | Added page for Manually Reviewed Transactions |
5.5 | 2016/03/17 | Tsvetelina Borisova | Added API for SDD. |
5.6 | 2016/03/28 | Emil Petkov | Extended PayByVouchers processing and WPF APIs with redeem type and card type |
5.7 | 2016/04/08 | Emil Petkov | Added info for statuspage.io, uptime and infrastructure, and new shopping carts |
5.8 | 2016/05/11 | Tsvetelina Borisova | Change the example for chargeback API - amount is returned in minor currency unit |
5.9 | 2016/05/22 | Emil Petkov | Now birth date API param is required only for Visa initial transactions with Financial Service MCCs (e.g. 6012) |
6.0 | 2016/06/30 | Pepa Simeonova | Added dynamic descriptor params to WPF payments. |
6.1 | 2016/07/20 | Stefan Slaveykov | Now usage can be either a required or optional API param |
6.2 | 2016/07/21 | Tsvetelina Borisova | Update documentation for chargebacks API |
6.3 | 2016/12/08 | George Naydenov | Added API for Trustly |
6.4 | 2017/01/20 | Plamen Terziev | Added AVS Codes |
6.5 | 2017/02/16 | Nikolay Petrov | Added API for PayPal Express Checkout |
6.6 | 2017/03/20 | Iskar Enev | Added API for Citadel |
6.7 | 2017/03/30 | Stanislav Mihailov | Added API for Instadebit/iDebit |
6.8 | 2017/03/31 | Tsvetelina Borisova | Added API for SCT Payout |
6.9 | 2017/05/12 | Nikolay Petrov | Added reference transaction unique id to the Reconcile API response |
7.0 | 2017/05/13 | Nikolay Petrov | Added API for Earthport |
7.1 | 2017/05/15 | Stanislav Mihailov | Added API for Wechat |
7.2 | 2017/05/30 | George Naydenov | Added API for Alipay |
7.3 | 2017/06/05 | Hristo Tanchev | Added API for PaySec |
7.4 | 2017/06/06 | Hristo Tenev | Added card brand and card number tags in reconcile response. |
7.5 | 2017/06/27 | Lukasz Wojcik | Added lifetime for WPF Payments. |
7.6 | 2017/07/06 | Nikolay Petrov | Removed AVS transaction type. AVS response code and text are returned in the transactions responses when present and supported or in the notifications for payments with asynchronous workflow. |
7.7 | 2017/07/06 | Iskar Enev | Added APM External Events. |
7.8 | 2017/08/11 | Samuil Goranov | Added support for optional shipping address params in Processing and WPF APIs. |
7.9 | 2017/08/17 | Lukasz Wojcik | Remove remote ip parameter for transactions with reference. It will be copied from reference transaction |
8.0 | 2017/08/18 | Lukasz Wojcik | Added invalid transaction types for amount parameter to WPF response. |
8.1 | 2017/08/18 | Emil Kirilov | Added search option by import date in Chargeback, Retrieval request and Fraud APIs. |
8.2 | 2017/09/05 | George Naydenov | Added API for RPN Payment |
8.3 | 2017/10/13 | Ventsislav Dimitrov | Added API for FashionCheque gift card and split payments. |
8.4 | 2017/10/13 | Pepa Simeonova | Added API for Intersolve gift card and split payments. |
8.5 | 2017/10/13 | Stanislav Mihailov | Added API for TCS gift card and split payments. |
8.6 | 2017/10/23 | Iskar Enev | Added Authentication Services and iSignThis. |
8.7 | 2017/11/02 | George Naydenov | Added API for RPN Payout |
8.8 | 2017/11/24 | Hristo Tenev | Added API for Paycommerce |
8.9 | 2017/11/25 | George Naydenov | API update with new sections Card, 3DS Card, Common. Removing older payment methods. |
9.0 | 2017/12/18 | George Naydenov | Added API for Neosurf. |
9.1 | 2018/01/02 | George Naydenov | Removed API for Inpay, ABN iDeal, Teleingreso and PayByVoucher. |
9.2 | 2018/01/03 | Iskar Enev & Nikolay Petrov | Added Tokenization service. |
9.3 | 2018/01/12 | Hristo Tanchev | Added API for Klarna. |
9.4 | 2018/01/18 | Stefan Petrov | Added ARN in WPF reconcile response if available. |
9.5 | 2018/01/26 | George Naydenov | Added API for Astropay Direct, Pago Facil, Link, Carulla, Davivienda. |
9.6 | 2018/02/22 | George Kostov & Hristo Tenev | Added API for Genesis KYC Services. |
9.7 | 2018/02/22 | Emil Kirilov | Added API for PSE. |
9.8 | 2018/02/26 | Stefan Petrov | Added API for RapiPago, Webpay, Banco de Chile. |
9.9 | 2018/03/01 | Stefan Petrov | Added API for Surtimax, Efecty, Cabal, Cencosud, Hipercard, Elo, Aura, Itau, Bradesco, Tarjeta Shopping, BBVA Bancomer, Boleto, Redpagos, Emprese De Energia, GiroPay, InstantTransfer, Multibanco. |
10.0 | 2018/03/02 | George Naydenov | Added API for OXXO, Argencard, Naranja, Nativa, Cartao Mercado Livre, Astropay Card, Banamex, Santander, Santander Cash, Zimpler PayU. |
10.1 | 2018/03/02 | Emil Kirilov | Added API for Baloto, Banco de Occidente, Banco do Brasil. |
10.2 | 2018/04/10 | Stefan Petrov | Added API for Entercash. |
10.3 | 2018/05/08 | Hristo Tenev | Added API for eZeeWallet Payout. |
10.4 | 2018/05/31 | Maya Nedyalkova | Added 3D MasterCard test cards. |
10.5 | 2018/05/31 | George Naydenov | Added API for QQPay. |
10.6 | 2018/06/22 | Hristo Tanchev | Added API for Credential on File (COF). |
10.7 | 2018/07/05 | George Naydenov | Removed Paysec and added Online Banking OBeP. |
10.8 | 2018/07/18 | Stanislav Mihailov | Added the API param issuer_oct_enabled to Visa-based Account Verification transactions, to allow merchant to verify if issuer supports OCTs for the given PAN |
10.9 | 2018/07/27 | Yordan Pulov | Added Money Transfer support to Payouts. |
11.0 | 2018/08/01 | George Naydenov | Removed Paysec Payout and added Bank Payout. |
11.1 | 2018/08/02 | Stanislav Mihailov | Remove API for Citadel |
11.2 | 2018/08/31 | Hristo Tenev | Added API for BitPay. |
11.3 | 2018/08/31 | Maya Nedyalkova | Add rc_code and rc_description in notification parameters. |
11.4 | 2018/10/10 | Ralitsa Borisova | Remove Paycommerce, RPN Payment, Link, Davivienda, Banco de Chile, Cartao Mercado Livre documentation. |
11.5 | 2018/10/11 | Emil Petkov | Introduced debt repayments - now birth date API param is required also for Mastercard/- Maestro initial transactions with Financial Service MCCs (e.g. 6012), where merchant is UK-based, transaction is domestic (with UK-based bin), and card type is DEBIT. |
11.6 | 2018/11/02 | Yordan Pulov and Stanislav Mihailov | Introduced Travel layer and Added Level 3 Travel API. |
11.7 | 2018/11/21 | Hristo Tenev | Added Payout support for BitPay |
11.8 | 2018/12/05 | Stefan Petrov | Added API for eZeeCard Payout |
11.9 | 2018/12/05 | Nikolay Petrov | Added Pay Later support to the WPF. Introduced Reminders module. |
12.0 | 2019/01/07 | Yordan Pulov | Changed Contract Merchant Category Codes for Level 3 Visa Car and Hotel Rental Transactions. |
12.1 | 2019/01/31 | Aleksandar Krastev | Introduced Consumer API. Extended Tokenization API to require a consumer. Extended WPF and Processing APIs to create consumers and tokenize card details in one step. WPF API can use saved cards to make payments. |
12.2 | 2019/02/18 | Yordan Pulov | Extend the Online Banking bank codes and add payment type. |
12.3 | 2019/02/26 | Stefan Petrov | Added API for Tola payments. |
12.4 | 2019/03/13 | Stanislav Mihailov | Added support for new non-money transfer payout types. |
12.5 | 2019/03/19 | Nikolay Valchanov | Added cardholder and expiration dates params to reconcile APIs. |
12.6 | 2019/03/19 | Vladislav Yakimov | Added retrieve endpoint for the Consumer API. |
12.7 | 2019/03/22 | Ventsislav Dimitrov | Added support for Preauthorizations. |
12.8 | 2019/03/28 | Nikolay Petrov | Added support for importation of external tokens and card details. |
12.9 | 2019/04/01 | Nikolay Petrov & Yasen Angelov | Added support for Pay by Link functionality. |
13.0 | 2019/04/09 | Hristo Tenev | Added API for transaction card expiry date update. |
13.1 | 2019/04/11 | Stanislav Mihailov | Added API support for purchase of cryptocurrency transactions. |
13.2 | 2019/04/12 | George Naydenov | Removed QQPay transaction type. |
13.3 | 2019/04/15 | Nikolay Valchanov | Added usage and description params to WPF reconcile API. |
13.4 | 2019/04/22 | Nikolay Valchanov | Added optional bic param to iDeal transactions. |
13.5 | 2019/05/31 | George Naydenov | Added Genesis Fx Services. |
13.6 | 2019/06/07 | Rumen Milushev | Added WPF API Reconcile by_date. |
13.7 | 2019/06/14 | Yordan Pulov | Extended the Online Banking bank codes and Bank Payout banks. |
13.8 | 2019/07/02 | Aleksandar Krastev | Added Tokenization API get masked card details for token. |
13.9 | 2019/07/04 | Vladislav Yakimov | Added API for TransferTo Payout and TransferTo Payers retrieve. |
14.0 | 2019/07/09 | Stefan Petrov | Extend the Online Banking bank codes. |
14.1 | 2019/07/11 | Pepa Simeonova | Added new money-transfer types. |
14.2 | 2019/07/16 | Hristo Tenev | Added API support for Business attributes. |
14.3 | 2019/07/22 | Pepa Simeonova | Added source_of_funds as an optional API param for OCT types (Credit, Payout) |
14.4 | 2019/08/01 | Stefan Petrov | Removed API for Astropay Card, Astropay Direct, Hipercard, Carulla, Emprese de Energia, Surtimax. |
14.5 | 2019/08/05 | Hristo Tanchev | Extended Processing and WPF APIs support for FX (Forex). |
14.6 | 2019/08/05 | Martin Lazarov | Added reversible amount in Preauthorization reconcile response. |
14.7 | 2019/08/06 | Rumen Milushev | Added MOTO flag to WPF transaction types: Authorize, Authorize3D, Sale, Sale3D. |
14.8 | 2019/08/07 | Yasen Angelov | Added the new optional param reminder_language to the WPF API. |
14.9 | 2019/08/13 | Stefan Petrov | Rebranding African Mobile payments. |
15.0 | 2019/08/21 | Nikolay Petrov | Added new status 'represented' in notifications for Processing and WPF APIs. |
15.1 | 2019/08/22 | Stefan Petrov | Added beneficiary params to refund transaction. |
15.2 | 2019/09/03 | Stefan Petrov | Use sync workflow for Neosurf transaction. |
15.3 | 2019/09/13 | Hristo Tanchev | Extended transaction response with transaction ID form card schemes. |
15.4 | 2019/09/13 | Yordan Pulov | Added Genesis SCA Checker service API. |
15.5 | 2019/09/16 | Nikolay Petrov | Added support for Account Verification to the WPF API. |
15.6 | 2019/09/17 | Ventsislav Dimitrov | Extended the supported Merchant Category Codes for Visa Preauthorization |
15.7 | 2019/09/18 | Aleksandar Krastev | Added Processed Transaction API for Card Present and Card Not Present transactions. |
15.8 | 2019/09/20 | Yordan Pulov | Extended Genesis SCA Checker service API documentation. |
15.9 | 2019/09/20 | Yordan Pulov | Added new fields and changed the endpoint for sending TransferToAPI requests. |
16.0 | 2019/09/24 | Rumen Milushev | Added 'agency_name' to Hotel Rental Travel attributes. |
16.1 | 2019/09/25 | Aleksandar Krastev | Changed filter flags of Processed Transaction API by_date and by_post_date endpoints. |
16.2 | 2019/10/09 | Aleksandar Krastev | Extended Chargeback API to return more attributes; Added flags filtering by origin and type of processing. |
16.3 | 2019/10/10 | Pepa Simeonova | Added new MPI parameters and SCA parameters. |
16.4 | 2019/10/16 | Aleksandar Krastev | Extended Retrieval Request API to return more attributes; Added flags filtering by origin and type of processing. |
16.5 | 2019/10/17 | Martin Lazarov | Extended the supported Merchant Category Codes for Visa Preauthorization. |
16.6 | 2019/10/21 | Yordan Pulov | Added support for UATP Travel. |
16.7 | 2019/10/24 | Rumen Milushev | Transferred Hotel Rentals, Car Rentals and Cruise Lines from Travel Level 3 data to Business Attributes. |
16.8 | 2019/10/24 | Martin Lazarov | Added Reference Transaction Unique ID to notification parameters for the reference-based transactions. |
16.9 | 2019/10/31 | Martin Lazarov | Added Capture tolerance for Mastercard and Maestro Preauthorizations. |
17.0 | 2019/11/05 | Yordan Pulov | Added new fields for TransferTo Payout. |
17.1 | 2019/11/05 | Nikolay Petrov | Added new supported currencies and banks for Bank Payout. |
17.2 | 2019/11/15 | Ventsislav Dimitrov | Added API support for purchasing Mastercard and Maestro crypto-currencies. |
17.3 | 2019/11/15 | Nikolay Petrov | Added optional bank params to the refund transaction. |
17.4 | 2019/11/19 | Stefan Petrov | Added Processed Batches API. |
17.5 | 2019/11/20 | Pepa Simeonova | Added sub_merchant_id as an optional dynamic descriptor param. |
17.6 | 2019/11/20 | Rumen Milushev | Added optional time extensions to the Processing Reconcile and WPF Reconcile APIs. |
17.7 | 2019/11/21 | Nikolay Petrov | Added support for Online Banking Unified Payment Interface (UPI) payment type. |
17.8 | 2019/11/27 | Stefan Petrov | Added Batch and Deposit Slip Numbers to Processed Transaction API response. |
17.9 | 2019/11/28 | Stefan Petrov | Removed API for Entercash and Banamex. |
18.0 | 2019/12/03 | Nikolay Petrov | Made BIC param optional for SddSale and SddInitRecurringSale transactions. |
18.1 | 2019/12/05 | Nikolay Petrov | Added supported bank codes for Online Banking that can be used with Netbanking payment type. |
18.2 | 2019/12/12 | George Naydenov | Added Trustly Select Account API. Extended parameters for Trustly Sale and Bank Pay-out. |
18.3 | 2019/12/18 | Rumen Milushev | Added descriptions for Airlines and Travel agencies in Business Attributes. |
18.4 | 2019/12/20 | George Naydenov | Added birth_date as conditionally required API param for Trustly Sale and Bank Pay-out. |
18.5 | 2020/01/08 | Hristo Tenev | Added Funding Account API for Card Present and Card Not Present transactions. |
18.6 | 2020/01/21 | Sridhar Belagod | Added Trustly Register Account API. |
18.7 | 2020/01/29 | Sridhar Belagod | Marked birth_date as optional param for Trustly and changed description. |
18.8 | 2020/01/29 | Ralitsa Borisova | Added Finnish language as part of the platform internationalization |
18.9 | 2020/01/30 | Sridhar Belagod | Updated supported countries for Trustly Sale. |
19.0 | 2020/02/04 | Dmitri Lihachev | Added API for Apple Pay. |
19.1 | 2020/02/05 | Sridhar Belagod | Removed unique_id param from Trustly RegisterAccount API. Updated birth_date format and extended the example to include country-specific format |
19.2 | 2020/02/05 | Stefan Petrov | Exposed querying and reconciling by ARN for Fraud reports, Chargebacks and Transactions. |
19.3 | 2020/02/21 | Ralitsa Borisova | Updated description for Trustly Sale. |
19.4 | 2020/02/26 | Rumen Milushev | Added batch_slip_number and deposit_slip_number as optional search params for ProcessedTransactions and ProcessedBatches. |
19.5 | 2020/02/26 | Rumen Milushev | Added type and card_number response params to Processed Transactions API response. |
19.6 | 2020/02/28 | Svilen Siderov | Updated MyBank supported countries for PPRO. |
19.7 | 2020/03/11 | Stanislav Mihailov | Added Payment Authorizations API for Card Present and Card Not Present authorizations. |
19.8 | 2020/03/18 | Nikolay Petrov | Added captured flag and capturable_amount param to Reconcile API response for authorizations. |
19.9 | 2020/03/18 | Stefan Petrov | Updated supported countries for PaysafeCard. |
20.0 | 2020/03/19 | Stefan Petrov | Removed France and United Kingdom from the supported countries for Sofort. |
20.1 | 2020/03/18 | Teodor Nikolov | Updated amount fields descriptions. |
20.2 | 2020/03/23 | George Naydenov | Added list of supported clearinghouses for Trustly register account call. |
20.3 | 2020/03/23 | Rumen Milushev | Added merchant_number, merchant_reference_transaction and capture_method to Chargebacks API response. |
20.4 | 2020/03/27 | Rumen Milushev | Unified response param to 'merchant_transaction_reference' in Payment Transactions and Chargebacks API. |
20.5 | 2020/04/03 | Ventsislav Dimitrov | Added asynchronous 3DSv2 support for 3D transaction types |
20.6 | 2020/04/03 | Svilen Siderov | Added card type, card subtype and card issuing bank to the Processing and WPF Reconcile API responses |
20.7 | 2020/04/08 | Stanislav Mihailov | Extended Risk data APIs (TC40/SAFE, Chargebacks, Retrieval Requests) to return a list of records by ARN or by transaction unique ID if the new list mode is enabled |
20.8 | 2020/04/15 | Stanislav Mihailov | Updated amount field for Card Present, Card Not Present and External payment authorizations. |
20.9 | 2020/04/15 | Martin Lazarov | Added details about Async Refund transaction type. |
21.0 | 2020/04/15 | George Naydenov | Added clearing houses list of supported IBANs and account numbers for Trustly Register Account |
21.1 | 2020/04/20 | Ventsislav Dimitrov | Changed the Mastercard test card numbers for card enrolled and card not participating in the 3DSv1. |
21.2 | 2020/04/28 | Stanislav Mihailov | Made gaming flag optional for purchase of VISA cryptocurrency transactions. |
21.3 | 2020/04/28 | Ventsislav Dimitrov | Added additional required recurring params for asynchronous InitRecurringSale3d using 3DSv2 authentication protocol. |
21.4 | 2020/05/05 | Ventsislav Dimitrov | Added more advanced merchant sequence flow diagrams for 3DSv1 and 3DSv2 authentication protocols using the Processing API. |
21.5 | 2020/05/05 | Ralitsa Borisova | Added Norwegian, Danish and Swedish language as part of the platform internationalization. |
21.6 | 2020/05/11 | Svilen Siderov | Added bank account number and bank identifier code to the Processing and WPF Reconcile API responses. |
21.7 | 2020/05/15 | Ventsislav Dimitrov | Added more detailed request examples for synchronous 3DSecure Visa and MasterCard transactions through the 3DSv1 and 3DSv2 authentication protocol. |
21.8 | 2020/05/15 | Ventsislav Dimitrov | Marked xid as out of scope for synchronous 3DSecure transactions using the 3DSv2 authentication protocol. |
21.9 | 2020/05/15 | Ventsislav Dimitrov | Extended the 3DSv2 documentation, authentication flow diagrams, and marked usage as required param when processing asynchronous 3DSecure transaction through 3DSv2 authentication protocol. |
22.0 | 2020/05/19 | Martin Lazarov | Updated the documentation related to Alipay transaction type, its transaction amount limits and currencies. |
22.1 | 2020/06/01 | Mario Chankov | Updated the description related to POLi payment. |
22.2 | 2020/06/01 | Svilen Siderov | Added Alipay Register Merchant API. |
22.3 | 2020/06/09 | Svilen Siderov | Added auth_start_date and auth_end_date to Payment Authorizations API request. |
22.4 | 2020/06/24 | Martin Lazarov | Added authorization_code to the API and WPF notification of various transaction types. |
22.5 | 2020/06/25 | Martin Lazarov | Added retrieval_reference_number to: API/WPF notifications, API/WPF response and API/WPF reconciliation response. |
22.6 | 2020/07/01 | Martin Lazarov | Removed UPI from Online banking supported payment types. Added new transaction type UPI. |
22.7 | 2020/07/07 | Nikolay Petrov | Added support for AliPay QR payment type in the Online Banking. |
22.8 | 2020/07/10 | Mario Chankov | Removed Zimpler and Santander Cash. Changes to supported countries for MyBank, Safetypay and Santander |
22.9 | 2020/07/17 | Ventsislav Dimitrov | Changed the 3DSv2-Method submission from HTTP GET to HTTP POST with signature mechanism, extended 3DSv2 authentication flow diagrams. |
23.0 | 2020/07/17 | Ventsislav Dimitrov | Added API endpoint for handling continuation after 3DSv2-Method submission. |
23.1 | 2020/07/17 | Ventsislav Dimitrov | Added threeds_method_callback_url as optional request param to 3DS transaction types in asynchronous workflow. |
23.2 | 2020/07/17 | Ventsislav Dimitrov | Added 3DS response attributes to the Processing reconciliation and notification for 3DS transaction types in asynchronous workflow. |
23.3 | 2020/07/18 | Ventsislav Dimitrov | Dropped the synchronous 3DSv2-Method workflow handling and authentication flow sequence diagrams. |
23.4 | 2020/07/20 | Alexey Kuznetsov | Renamed Klarna related transaction to Invoice. Also, migrate Klarna items to transaction items and introduce a new payment type for different types of invoices. |
23.5 | 2020/07/21 | Stefan Petrov | Added new pending_hold status for async transactions where finalized by user, but final update from provider not yet received (Sofort, etc) |
23.6 | 2020/07/22 | Stanislav Mihailov | Updated the documentation for TC40/SAFE APIs (fraud reports) when searching by date. |
23.7 | 2020/07/22 | Martin Lazarov | Added details regarding partially_reversed payment transaction state. |
23.8 | 2020/07/22 | Tsvetan Tsvetanov | Changed Sofort transaction parameter name from bank_account_number to iban |
23.9 | 2020/08/04 | Filipp Pirozhkov | Added new tokenization errors and client-side encryption errors. |
24.0 | 2020/08/05 | Vladimir Nudelman | Added return_pending_url as an optional param to the WPF API |
24.1 | 2020/08/05 | Stefan Petrov | Made voucher_number for Neosurf transactions conditionally required. |
24.2 | 2020/08/06 | Vladimir Nudelman | Added cvv_result_code as an optional parameter in the notifications, transaction responses, and reconciliation responses for both WPF and Processing APIs. |
24.3 | 2020/08/17 | Tsvetan Tsvetanov | Added return_success_url_target as optional request param to Trustly Sale via Processing API and WPF. |
24.4 | 2020/08/24 | Pepa Simeonova | Added Funds Transfer BAI and removed MCC restrictions for money transfer payouts. |
24.5 | 2020/08/26 | Martin Lazarov | Added new TransferTo transfer type: C2C (Consumer to Consumer) as well as new conditionally required sender parameters, a table with supported destination countries and currencies, and a link to Retrieve Payers API. |
24.6 | 2020/08/26 | Martin Lazarov | Removed NB as available bank code for INR Online Banking transactions as well as the corresponding Netbanking-related notes. |
24.7 | 2020/09/02 | Eduard Gataullin | Removed currency attribute from Recurring Sale transaction params, as recurring series work only with the same currency as the init recurring and cannot be changed. |
24.8 | 2020/09/09 | Martin Lazarov | Added new conditionally required attributes for TransferTo payouts for the B2B scenario - document_reference_number and purpose_of_remittance . |
24.9 | 2020/09/16 | Alexey Kuznetsov | Added API for Secure Invoice payments. |
25.0 | 2020/09/16 | Martin Lazarov | Renamed the following TransferTo payout attributes: sender_lastname , sender_firstname , ifs_code to: sender_last_name , sender_first_name and indian_financial_system_code . |
25.1 | 2020/09/16 | George Naydenov | Added API for PostFinance. |
25.2 | 2020/09/29 | Martin Lazarov | Clarified the descriptions of the following TransferTo payout attributes: account_type , country , msisdn and sender_msisdn |
25.3 | 2020/10/02 | Maya Nedyalkova | Added capability to AVS response attributes. |
25.4 | 2020/10/21 | Ventsislav Dimitrov | Added field format restrictions to the billing and shipping address for async 3DS transactions that are using the 3DSv2 authentication protocol. |
25.5 | 2020/10/27 | Ventsislav Dimitrov | Added international customer phone field format notes for async 3DS transactions that are using the 3DSv2 authentication protocol. |
25.6 | 2020/10/27 | Ventsislav Dimitrov | Added card holder field format restrictions for async 3DS transactions that are using the 3DSv2 authentication protocol. |
25.7 | 2020/10/28 | Kuznetsov Alexey | Added API for e-wallet solutions. |
25.8 | 2020/10/28 | Ventsislav Dimitrov | Added state field format notes for the billing and shipping attributes of async 3DS transactions that are using the 3DSv2 authentication protocol as per the EMVCo spec for 3DSv2.1. |
25.9 | 2020/10/28 | Ventsislav Dimitrov | Added hints for building the signatures in the 3DSv2 scope of 3DS transactions that require 3DS-Method submission. |
26.0 | 2020/11/04 | Ralitsa Borisova | Extend MCC range for Airlines segment in Business Attributes. |
26.1 | 2020/11/04 | Maya Nedyalkova | Added funds status attribute to the Reconcile API responses. |
26.2 | 2020/11/13 | Pepa Simeonova & Ventsislav Dimitrov | Added support for 3DSv2 authentication protocol to the Web Payment Form. |
26.3 | 2020/11/16 | Pepa Simeonova & Ventsislav Dimitrov | Added additional 3DS attributes to the WPF Notification and WPF reconcile API response. |
26.4 | 2020/11/18 | Ventsislav Dimitrov | Changed the additional purchase and recurring params of the 3DSv2 authentication protocol to optional for 3DS transactions through the processing API. |
26.5 | 2020/11/24 | Martin Lazarov | Update the description of payment_type for Online Banking transactions. |
26.6 | 2020/11/24 | George Naydenov | Extend Online Banking banks list and supported currencies. |
26.7 | 2020/12/01 | Mario Chankov | Removed Bancolombia and DirectDebit as supported bank codes for ARS and COP currencies under Online Banking. |
26.8 | 2020/12/01 | Stanislav Mihailov | Added scheme_settlement_date to Processing API and Processing API/WPF API reconciliation responses. Extended the scheme_transaction_identifier description and added it to WPF API reconciliation response. |
26.9 | 2020/12/03 | George Naydenov | Removed national_id attribute for Online Banking. |
27.0 | 2020/12/08 | Martin Lazarov | Added support for sca_params for Authorize and Sale transaction types and updated the description for the exemption field. |
27.1 | 2020/12/08 | Stanislav Mihailov | Added credential_on_file_settlement_date attribute to Authorize and Sale payment transaction types. Extended the Credential On File section with a description for merchant_unscheduled COF type. |
27.2 | 2020/12/08 | Vladimir Nudelman | Added support for auth_network_outage exemption to Authorize and Sale transactions. |
27.3 | 2020/12/15 | Ventsislav Dimitrov | Added information for low_risk SCA exemption to sync/async 3DSv2 transactions and extended the transaction example requests. |
27.4 | 2020/12/15 | Ventsislav Dimitrov | Changed the usage param to optional for async 3DS transactions through the 3DSv2 authentication protocol. |
27.5 | 2020/12/16 | Maya Nedyalkova | Removed API for QIWI and InstantTransfer. |
27.6 | 2020/12/30 | Ventsislav Dimitrov | Extended the validation and description of the browser request parameters in the scope of 3DS transactions through the 3DSv2 authentication protocol. |
27.7 | 2021/01/06 | Martin Lazarov | Added an example EEA MasterCard card number for simulating the low-risk exemption request in synchronous 3DSv2 workflow. |
27.8 | 2021/01/26 | Martin Lazarov | Extended the description of the color_depth attribute as part of the required async 3DSv2 browser device channel attributes within the 3DSv2 authentication protocol. |
27.9 | 2021/01/26 | Teodor Nikolov | Removed API for Trustly withdrawal. |
28.0 | 2021/01/28 | Stefan Petrov | Added bank codes for P24. |
28.1 | 2021/01/28 | Eduard Gataullin | Added verification and verification status KYC endpoints. |
28.2 | 2020/02/04 | Ventsislav Dimitrov | Added support for numeric chars in the browser language subtag for transactions with 3DSv2 authentication protocol. |
28.3 | 2021/02/05 | Pavel Abolmasov | Added return_pending_url as optional param for APMs via Processing API. |
28.4 | 2021/02/12 | Maya Nedyalkova | Added description for the bic field to iDeal. Included warning for iframes usage. |
28.5 | 2021/02/16 | Ventsislav Dimitrov | Extended the list with the originated IPs for asynchronous payment notifications. |
28.6 | 2021/02/12 | Eduard Gataullin | Added background checks support to verification KYC endpoints. |
28.7 | 2021/02/18 | Stanislav Mihailov | Added an example EEA Visa card number, CAVV and ECI for simulating the low-risk exemption request in synchronous 3DSv2 workflow. |
28.8 | 2021/03/12 | Evgeny Zhdanov | Added funds_status and account_holder attributes to WPF reconcile, notification, and to reconcile params. |
28.9 | 2021/03/17 | Pepa Simeonova | Added sca_preference to WPF API params. |
29.0 | 2021/03/18 | Martin Lazarov | Added support for zero-value amounts with the card-based transaction types - Sale, Sale3D, Authorize, Authorize3D, Init Recurring Sale, Init Recurring Sale3D. |
29.1 | 2021/03/24 | Martin Lazarov | Added a notice for amount restrictions of the Partial Reversal transactions. |
29.2 | 2021/04/29 | Eduard Gataullin | Added support for an optional reference_id parameter to verification KYC endpoints. |
29.3 | 2021/05/11 | Martin Lazarov | Added payment_type to the list of supported business attributes. |
29.4 | 2021/05/14 | Atanas Zlatarev | Removed Spain from the supported countries of MyBank transaction. |
29.5 | 2021/05/19 | Maya Nedyalkova | Added support for Revolut to iDeal transactions. |
29.6 | 2021/05/19 | Simeon Angelov | Extended supported currencies for Neosurf. |
29.7 | 2021/06/22 | Hristo Tanchev | Extended Init Recurring with scheme_settlement_date and scheme_transaction_identifier attributes. |
29.8 | 2021/07/09 | Nikola Yurukov | Updated WPF transaction types. |
29.9 | 2021/07/15 | Ventsislav Dimitrov | Added additional originating IPs for the asynchronous payment notifications on the Staging environment. |
30.0 | 2021/07/21 | Mario Chankov | Removed Moneyou from the list of available issuers for the iDeal payment method. |
30.1 | 2021/07/22 | Rumen Milushev | Added Russian mobile sale and mobile payout transaction types. |
30.2 | 2021/08/03 | George Naydenov | Extended the description for online banking and transaction types that are going to be deprecated. |
30.3 | 2021/08/06 | Ventsislav Dimitrov | Extended the description note with the allowed characters of the card_holder request param for Payout with Visa or MasterCard gambling transactions regarding winnings. |
30.4 | 2021/08/16 | Mario Chankov | Added Moldova (MD) to the list of supported countries for the Paysafecard transaction type. |
30.5 | 2021/08/16 | Pepa Simeonova | Added sender_birth_date to money-transfer payout params. |
30.6 | 2021/08/18 | Simeon Angelov | Extended the list with supported currencies for Bitpay Sale transaction type. |
30.7 | 2021/08/23 | Simeon Angelov | Updated the list with supported countries for Bitpay transaction types. |
30.8 | 2021/09/03 | Ventsislav Dimitrov | Added additional originating IPs for the asynchronous payment notifications on the Production environment. |
30.9 | 2021/09/09 | Eduard Gataullin | Made the country parameter optional and added support for address_backside_proof_required and expiry_date as optional parameters for the verification KYC endpoint. |
31.0 | 2021/09/14 | Svilen Siderov | Added API for Google Pay. |
31.1 | 2021/09/27 | Ventsislav Dimitrov | Added a warning note how to avoid Cross-origin resource sharing issues during 3DS-Method-Continue submission in the 3DSv2 authentication protocol. |
31.2 | 2021/09/28 | Svilen Siderov | Removed API for Earthport. |
31.3 | 2021/10/05 | Pepa Simeonova | Added scheme response code and recurring advice in the notifications, transaction responses, and reconciliation responses for both WPF and Processing APIs. |
31.4 | 2021/10/12 | Ralitsa Tsonova | Clarified the descriptions for amount , currency and chargeback_amount , chargeback_currency in Chargeback API section. |
31.5 | 2021/10/15 | Nikolay Petrov | Added optional purpose_of_payment parameter for Visa OCTs. |
31.6 | 2021/10/26 | Simeon Angelov | Added support for Low Risk and Low Value SCA exemptions to the WPF API. |
31.7 | 2021/11/01 | George Naydenov | Added SCA reasons for not honoring exemption. |
31.8 | 2021/11/09 | Svilen Siderov | Added a new payment type for Google Pay API. |
31.9 | 2021/11/24 | Teodor Nikolov | Added additional gateways support for the eWallet transaction type with a restricted list of providers. |
32.0 | 2021/12/08 | Hristo Tanchev | Added MOTO flag to WPF transaction types: InitRecurringSale and InitRecurringSale3D. |
32.1 | 2021/12/09 | George Naydenov | Added Interac Combined Pay-in bank code for Online Banking transaction |
32.2 | 2021/12/14 | Blagoy Vangelov | Added new transaction type PIX. |
32.3 | 2021/12/17 | Hristo Tanchev | Added support for managed recurring. |
32.4 | 2021/12/21 | Simeon Angelov | Added ECI to the 3DS attributes in the transaction responses and reconciliation responses for both WPF and Processing APIs. |
32.5 | 2021/12/21 | Slavcho Savov | Added support for Shopware and Magento 2.x EE, ECE in the Shopping Carts section. Removed the deprecated Magento 1.x from the supported shopping cart plugins. |
32.6 | 2021/12/14 | Svilen Siderov | Added API for PayPal transaction type. |
32.7 | 2022/01/10 | Boris Kolev | Updated supported banks list for bank payouts - extended banks list for CLP currency. |
32.8 | 2022/01/11 | Georgi Naydenov | Updated supported banks list for bank payouts - extended banks list for CAD currency. |
32.9 | 2021/01/13 | Teodor Nikolov | Added report_date to the Fraud Report API response. |
33.0 | 2022/01/13 | Svilen Siderov | Replaced API for PaypalExpress with new express payment type for PayPal API. |
33.1 | 2022/02/02 | Ventsislav Dimitrov | Add support for ApplePay on Web Payment Form's express checkout page. |
33.2 | 2022/02/03 | Yordan Pulov | Extended KYC verification creation request with optional params. |
33.3 | 2022/02/09 | Boris Kolev | Added search by Report Date for Fraud Report API. |
33.4 | 2022/02/09 | Muhammad Moawaz Ayub | Added API for retrieving Rapid Dispute Resolutions. |
33.5 | 2022/02/10 | Yuliyan Dudin | Added scheme_transaction_identifier and scheme_settlement_date to the API and WPF notifications. |
33.6 | 2022/02/15 | Boris Kolev | Changed recurring payment type to init_recurring_sale for Mobile-Tokenized transactions like Apple Pay and Google Pay. |
33.7 | 2022/02/10 | Evgeny Zhdanov | Extended Bank Pay-out id_card_number with link. Added more bank names for BRL. |
33.8 | 2022/02/22 | Teodor Nikolov | Added card issuing country to the Processing and WPF Reconcile API responses. |
33.9 | 2022/02/24 | Boris Kolev | Changed payment_type to payment_subtype for Mobile-Tokenized transactions like Apple Pay and Google Pay. |
34.0 | 2022/02/28 | Mario Chankov | Changed the bic and iban request parameters for Giropay to optional. |
34.1 | 2022/03/01 | Ventsislav Dimitrov | Added support for payment subtype sale to Apple Pay Processing and WPF API. |
34.2 | 2022/03/04 | Blagoy Vangelov | Removed consumer_reference for PIX transaction type. The first_name and last_name in billing_address become required for PIX. |
34.3 | 2022/03/07 | Simeon Angelov | Added 3DS authentication status reason code to: API/WPF notifications, API/WPF response and API/WPF reconciliation response. |
34.4 | 2022/03/02 | Milen Matev | Added information for the different environments in a new Environments section. |
34.5 | 2022/03/17 | Ivan Kolev | Added new chargeback response parameters: chargeback_account_amount , chargeback_account_currency , merchant_funding_amount , merchant_funding_currency |
34.6 | 2022/03/17 | Boris Kolev | Changed the 3DS-Method status callback from synchronous to asynchronous for all 3DSv2 authentication flows. |
34.7 | 2022/03/17 | Boris Kolev | Extended the 3DSv2 authentication flows with conflict response in case of duplicated 3DS-Method continue is requested. |
34.8 | 2022/03/22 | Ivan Kolev | Extended the WPF Notification and Async Notification with additional optional parameters that can be requested by the merchant. |
34.9 | 2022/03/22 | Svilen Siderov | Added web_payment_form_id parameter to WPF create request parameters. |
35.0 | 2022/04/04 | Ilya Rogozin | Added Tokenized e-Commerce section and introduced scheme_tokenized attribute to Processing API for transactions with scheme tokenization support. |
35.1 | 2022/04/07 | Ivan Kolev | Added document_expiry_date to KYC verification status response. |
35.2 | 2022/04/07 | Ivan Kolev | Changed KYC requests domains and endpoints. |
35.3 | 2022/04/11 | Boris Kolev | Added service_provider_name as a request param to the Money Transfer Payouts. |
35.4 | 2022/04/21 | Boris Kolev | Added support for cryptocurrency Visa OCT transactions (Credit and Payout). |
35.5 | 2022/04/27 | Boris Kolev | Updated the MYR currency bank codes for online_banking . |
35.6 | 2022/04/28 | Pepa Simeonova | Added customer_identification to Visa OCT transactions (Credit and Payout) for Brazil and Qatar. |
35.7 | 2022/05/10 | Preslav Nedev | Added bank_code and payment_type to the Online Banking transaction response. |
35.8 | 2022/05/16 | Blagoy Vangelov | Added transaction_id attribute to Processed Transaction API response for card not present payment requests only. |
35.9 | 2022/05/18 | Boris Kolev | Updated the MYR currency bank codes for online_banking . |
36.0 | 2022/05/31 | Muhammad Moawaz Ayub | Removed MCC restriction for crypto with Visa. |
36.1 | 2022/05/31 | Ivan Kolev | Added optional sub-parameters: allow_offline and allow_online to both document and face parameters to enrich the flexibility of the kyc verification request. |
36.2 | 2022/07/07 | Simeon Angelov | Added an asynchronous authentication workflow handling for GooglePay transactions thru the 3DS authentication protocol for PAN-ONLY transactions inside the European Economic Area (EEA). |
36.3 | 2022/07/07 | Boris Kolev | Added BCT bank code to EUR currency for online_banking . |
36.4 | 2022/06/28 | Ivan Kolev | Changed the description of signature in KYC service notification to indicate that it is now being generated by using the API login instead of the API password. |
36.5 | 2022/07/13 | Evgeny Zhdanov | Added bank_payout_verification_digit attribute to Bank Payout and barcode, digitable_line, ticket_expiry_date attribute to Boleto. |
36.6 | 2022/08/02 | Preslav Nedev | Added business attributes to Trustly Sale transactions. |
36.7 | 2022/08/24 | Atanas Zlatarev | Fixed discrepancies in description for iDeal, Sofort and asynchronous transaction notifications. |
36.8 | 2022/08/30 | Boris Kolev | Updated the SGD currency bank codes for online_banking . |
36.9 | 2022/10/06 | Evgeny Zhdanov | Updated bank_account_type attribute values related to Itau for Bank Pay-out. |
37.0 | 2022/10/05 | Boris Kolev | Added recurring_category as an optional request parameter in InitialRecurringSale and InitialRecurringSale3d transactions for both API and WPF requests. |
37.1 | 2022/10/07 | Boris Kolev | Added sca_exemption_result to API and WPF transaction responses, reconciliation responses, and notifications. |
37.2 | 2022/10/17 | Teodor Nikolov | Removed API for TrustPay . |
37.3 | 2022/11/04 | Maya Nedyalkova | Updated the list of supported banks for BRL currency. |
37.4 | 2022/11/07 | Boris Kolev | Decommissioned 3DSv1 authentication protocol. |
37.5 | 2022/11/16 | Preslav Nedev | Added WPF States section and linked status field of WPF transactions to it. |
37.6 | 2022/11/17 | George Naydenov | Added new recurring types for sale and authorize and their 3DS variants. Added deprecation notice to the initial and subsequent recurring transaction types. |
37.7 | 2022/12/20 | Pepa Simeonova | Added managed recurring params for recurring transactions with Indian cards. |
37.8 | 2022/12/21 | Preslav Nedev | Added additional Visa specific authentication status reason codes. |
37.9 | 2022/12/22 | Simeon Angelov | Added Dynamic Descriptor params to GooglePay and ApplePay transactions. |
38.0 | 2023/01/03 | Teodor Nikolov | Added currency as an additional parameter to Processing and WPF notifications. |
38.1 | 2023/01/20 | Martin Lazarov | Added capture_method to the Processed Transactions API response. |
38.2 | 2023/01/25 | Muhammad Moawaz Ayub | Added ACS transaction ID and 3DS challenge indicator as optional params for the 3DS transactions in synchronous workflow. |
38.3 | 2023/02/28 | Mladen Rusev | Added company_name and mandate_reference as optional params for SddSale transactions. |
38.4 | 2023/03/02 | Atanas Naydenov | Added additional values to Recurring Advice table. |
38.5 | 2023/03/22 | Imran Zahoor | Updated Bank-payouts list of banks for BRL currency. |
38.6 | 2023/03/29 | Georgi Naydenov | Added subsequent recurring type for Authorize transactions. |
38.7 | 2023/04/04 | Imran Zahoor | Added a verification reference id endpoint for KYC to allow registration of reference ids in Genesis. |
38.8 | 2023/04/07 | Imran Zahoor | Added a new optional parameter: check_duplicate_attribute to the KYC verification request to allow enabling of duplicate detection service. |
38.9 | 2023/04/12 | Muhammad Moawaz Ayub | Updated descriptions for VISA AVS codes. |
39.0 | 2023/04/20 | Umair Aziz | Extended the list with Recurring advice codes. |
39.1 | 2023/04/24 | Pepa Simeonova | Add user_category for online_banking and upi . |
39.2 | 2023/04/25 | George Naydenov | Added Recurring V2. |
39.3 | 2023/04/26 | Muhammad Moawaz Ayub | Extended the AVS status codes and response processors description. |
39.4 | 2023/04/28 | Umair Aziz | Changed the default authorization timeframe and removed MCC restrictions for Visa pre-authorizations and incrementals. |
39.5 | 2023/05/03 | Blagoy Vangelov | Added BL bank code to PLN currency for online_banking |
39.6 | 2023/05/10 | Ralitsa Galabova | Added Account Verification V2. |
39.7 | 2023/05/15 | Blagoy Vangelov | Renamed BL bank code to BLK |
39.8 | 2023/05/16 | Preslav Nedev | Updated documentation on Verification Status response for Shufti Pro . |
39.9 | 2023/05/26 | Imran Zahoor | Added a new parameter bank_code for Bank Pay-out transactions with BRL currency. |
40.0 | 2023/05/26 | Dimitar Natskin | Updated the Shopping Carts section and deprecated Shopware 5.x plugin. |
40.1 | 2023/06/13 | Imran Zahoor | Renamed the parameter check_duplicate_attribute of the KYC verification request to check_duplicate_request . |
40.2 | 2023/06/14 | Ilya Rogozin | Added possibility for customizing the signature algorithm in the Processing Notifications. |
40.3 | 2023/06/19 | Umair Aziz | Added missing voucher number to example requests for Neosurf transaction. |
40.4 | 2023/06/21 | Evgeny Zhdanov | Added payment_type as conditionally required param to BankPayout transactions. |
40.5 | 2023/06/22 | Pepa Simeonova | Added additional parameters to the dynamic descriptors. |
40.6 | 2023/06/27 | Boris Kolev | Changed the merchant_zip_code to be a required parameter for VISA OCT transactions with Australian or Canadian card bins. |
40.7 | 2023/07/04 | Teodor Nikolov | Marked first and last name of the billing address as optional params for PIX transactions. |
40.8 | 2023/07/04 | Svilen Siderov | Updated description for the additional dynamic descriptors parameters. |
40.9 | 2023/07/04 | Muhammad Moawaz Ayub | Added return_success_url and return_failure_url as conditionally required parameters for Neosurf transactions. |
41.0 | 2023/07/11 | Boris Kolev | Updated the THB and VDN currency bank codes for online_banking . |
41.1 | 2023/07/05 | Mladen Rusev | Changed bank codes for banks handling IDR currency. |
41.2 | 2023/07/20 | Imran Zahoor | Updated description of bank_code and bank_name for Bank Pay-out transactions with BRL currency. |
41.3 | 2023/07/20 | Mladen Rusev | Marked the consumer State in Tokenization as optional for US, CA and CN countries. |
41.4 | 2023/07/21 | Muhammad Moawaz Ayub | Added auth_network_outage to the list of available exemption types. |
41.5 | 2023/08/02 | Teodor Nikolov | Marked country of the billing address as optional param for PIX transactions. |
41.6 | 2023/08/17 | Muhammad Moawaz Ayub | Added Funding Transaction support. |
41.7 | 2023/08/17 | Boris Kolev | Removed unused THB currency bank code for online_banking . |
41.8 | 2023/09/07 | Svilen Siderov | Added new parameters for bank_payout transaction. |
41.9 | 2023/09/14 | Simeon Angelov | Added MXN currency support and additional account details response params for Online Banking transactions. |
42.0 | 2023/09/21 | Ilya Rogozin | Extended the asynchronous 3DSv2 behaviour for handling invalid submission of 3DS-Method-Continue API calls. |
42.1 | 2023/09/28 | Aleksandar Krastev | Added return_success_url and return_failure_url as conditionally required parameters for SddSale and SddInitRecurringSale transactions. |
42.2 | 2023/09/29 | Boris Kolev | Added more testing cards numbers for the 3DSv2 testing section |
42.3 | 2023/10/06 | Svilen Siderov | Added support on Processing and WPF APIs for Account Name Inquiries |
42.4 | 2023/10/20 | Dimitar Natskin | Added Genesis Ruby SDK. |
42.5 | 2023/10/26 | Aleksandar Krastev | Added return_pending_url as conditionally required parameter for SddSale and SddInitRecurringSale transactions. |
42.6 | 2023/10/26 | Umair Aziz | Extended the example responses for Single Reconciliation and async 3DSv2 flows. |
42.7 | 2023/11/02 | Svilen Siderov | Updated bank_account_type attribute values for Bank Payout. |
42.8 | 2023/11/15 | Preslav Nedev | Added customer_id as required parameter for Paysafecard transactions. |
42.9 | 2023/11/20 | Pepa Simeonova | Added new recurring advice codes. |
43.0 | 2023/11/29 | Blagoy Vangelov | Added new status 'representment reversed' in notifications for Processing and WPF APIs, and a new RepresentmentReversal transaction type. |
43.1 | 2023/12/04 | Yordan Pulov, Svilen Siderov, Martin Lazarov | Introduced new Smart Routing API layer allowing for simpler and more efficient gateway integration. |
43.2 | 2023/12/08 | Hristo Tanchev | Added support for non-referenced subsequent recurring transactions. |
43.3 | 2023/12/11 | Aleksandar Krastev | Added Rapid Dispute Resolution Reversal transaction type to API. |
43.4 | 2023/12/13 | Artur Veletskiy | Added new Billing Transactions API |
43.5 | 2023/12/14 | Blagoy Vangelov | Added an optional merchant_website parameter to the eZeeWallet transaction type for both Processing API and WPF API |
43.6 | 2023/12/14 | Blagoy Vangelov | Rename "Blik One Click" payment method to "BLIK" for Online banking. |
43.7 | 2024/02/07 | Kaloyan Mirchev | Added CPF/CNPJ checks for Genesis KYC Service. |
43.8 | 2024/02/15 | Muhammad Moawaz Ayub | Corrected response params for the Rapid Dispute Resolution. |
43.9 | 2024/02/20 | Artur Veletskiy | Updated date only format for Billing Transactions API response. |
44.0 | 2024/02/22 | Dimitar Natskin | Added Spree Commerce Shopping Cart plugin. |
44.1 | 2024/02/22 | Svilen Siderov | Added Neighborhood as address parameter for processing API and WPF. |
44.2 | 2024/02/23 | Aleksandar Krastev | Added TRL bank code to EUR and GBP currencies for online_banking . |
44.3 | 2024/02/23 | Mladen Rusev | Added return_pending_url parameter to PIX documentation. |
44.4 | 2024/02/27 | Blagoy Vangelov | merchant_website is now required for the eZeeWallet transaction type for both Processing API and WPF API. |
44.5 | 2024/02/29 | Simeon Angelov | Changed the purpose_of_payment to required API param for Visa OCT transactions with recipients in Argentina, Bangladesh, Egypt, India, Chile and Colombia. |
44.6 | 2024/03/01 | Atanas Naydenov | Added Scheme response codes and removed Issuer response codes. |
44.7 | 2024/03/06 | Kaloyan Mirchev | Added descriptions for CPF/CNPJ checks API response. |
44.8 | 2024/03/07 | Muhammad Moawaz Ayub | Added additional MCCs to the list for own-account Funding Transactions. |
44.9 | 2024/03/20 | Vladislav Vodenicharski | Extended lifetime validity for Web Payment Form payments to 3 months |
45.0 | 2024/03/11 | Blagoy Vangelov | Added birth_date , incorporation_date , gender , martial_status , sender_occupation , mothers_name , nationality , country_of_origin , birth_city , birth_state , company_type , company_activity optional parameters to PIX transaction type. |
45.1 | 2024/04/08 | Martin Lazarov | Added new recurring advice code for Sanctions Scoring Service. |
45.2 | 2024/04/09 | Boris Kolev | Added a new optional request parameter - protocol_sub_version to synchronous 3DS transactions. Also, added the 3DS protocol sub-version in reconciliation responses and notifications for Processing and WPF APIs. |
45.3 | 2024/06/03 | Ilya Rogozin | Added a new scheme_transaction_link_id attribute for the Processing and WPF API responses including reconciliation responses and notifications. |
45.4 | 2024/08/13 | Simeon Angelov | Added a list with supported countries for GooglePay transactions. |
45.5 | 2024/08/16 | Ilya Rogozin | Added a new payment_account_reference attribute for the Processing and WPF API responses, reconciliation responses and notifications. |
45.6 | 2024/08/28 | Ilya Rogozin | Extended the list of payment type values for the Online Banking transaction. Added description for Cash transactions. |
45.7 | 2024/09/04 | Lachezar Tsvetkov | Added optional background_checks .filters attribute for KYC Create Verification. |
45.8 | 2024/09/05 | Simeon Angelov | Added 0-amount support for GooglePay and ApplePay transactions. |
45.9 | 2024/09/09 | Atanas Naydenov | Updated scheme response codes Visa - 1A and Mastercard - 65. |
46.0 | 2024/09/12 | Ilya Rogozin | Added extended initial recurring type support to GooglePay and ApplePay transactions. |
46.1 | 2024/10/02 | Lachezar Tsvetkov | Changed the document_supported_types and redirect_url parameters in KYC Create Verification optional to allow for synchronous checks. |
46.2 | 2024/10/08 | Muhammad Moawaz Ayub | Added VISA Funding Transaction support. |
46.3 | 2024/10/09 | Muhammad Moawaz Ayub | Added region availability for Account Name Inquiry Service Functionality. |
46.4 | 2024/10/15 | Muhammad Moawaz Ayub | Extended the list with recurring advice codes. |
46.5 | 2024/10/16 | Svilen Siderov | Added additional dynamic descriptor parameters related to acceptor geographic coordinates. |
46.6 | 2024/10/16 | Atanas Naydenov | Remove API for Giropay transaction type, as it is shut down after June 30 2024. |
46.7 | 2024/10/16 | Boris Kolev | Added a new scheme_max_settlement_date attribute for the Processing and WPF API responses including reconciliation responses and notifications. Also, the Scheme Max Settlement Date is taken into account and might be prioritized during Capture transactions. |
46.8 | 2024/10/18 | Muhammad Moawaz Ayub | Added support for liquid assets in OCT and AFT transactions. |
46.9 | 2024/10/18 | Simeon Angelov | Updated supported countries for MyBank transaction type. |
47.0 | 2024/10/21 | Lachezar Tsvetkov | Added a new optional parameter background_checks .match_score in KYC Create Verification. |
47.1 | 2024/10/22 | Svilen Siderov | Extended Money transfer Payout with the credential_on_file_transaction_identifier parameter. |
47.2 | 2024/10/22 | Ilya Rogozin | Added a new attribute scheme_authentication_data_quality to the Processing and WPF API responses, as well as reconciliation responses and notifications. |
47.3 | 2024/10/23 | Mladen Rusev | Described response CSV file format part of the Importation of external tokens and card details workflow. |
47.4 | 2024/10/29 | Mladen Rusev | Added support for AUD currency and PID bank code for Online Banking transaction. |
47.5 | 2024/11/15 | Yordan Pulov | Added support of installments. |
47.6 | 2024/11/15 | Ilya Rogozin | Added new attributes scheme_pan_indicator and scheme_pan_tail to the Processing and WPF API responses, as well as reconciliation responses and notifications. |
47.7 | 2024/11/21 | Milen Matev | Extended FX service API response examples. |
47.8 | 2024/12/05 | Kaloyan Mirchev | Extend Bank Pay-Out request optional parameters. |
47.9 | 2024/12/09 | Muhammad Moawaz Ayub | Added Account Funding Transaction support on the Web Payment Form. |
48.0 | 2024/12/20 | Zdravko Chorlev | Added initial recurring support to the SCA Checker service API. |
48.1 | 2024/12/20 | Artur Veletskiy | Extended Billing Transactions API with additional request and response parameters. |
48.2 | 2025/01/09 | Ilya Rogozin | Added support for the NZD currency and the POLI bank code for Online Banking transactions. |
48.3 | 2025/01/14 | Muhammad Moawaz Ayub | Added AFT support for Apple Pay and Google Pay transactions. |
48.4 | 2025/01/14 | Svilen Siderov | Extended AVS Status codes with single character codes description. |
48.5 | 2025/01/17 | Artur Veletskiy | Changed the request and response params in the Billing Transactions API. |
48.6 | 2025/01/22 | Dimitar Natskin | Removed osCommerce plugin from the supported Shopping Carts. |
48.7 | 2025/01/22 | Dimitar Natskin | Revised the list with supported Shopping cart plugins. |
48.8 | 2025/02/11 | Ilya Rogozin | Added optional beneficiary params to PIX transaction type for the Processing API. |
48.9 | 2025/02/11 | Kaloyan Mirchev | Extended Bank Payout API parameters. |
49.0 | 2025/02/12 | Ilya Rogozin | Extended payment types for Online Banking transactions with a new SPEI code. |
49.1 | 2025/02/24 | Artur Veletskiy | Enable Billing Transactions API for all the instances. |
49.2 | 2025/03/04 | Artur Veletskiy | Update Billing Transactions API filters description. |
49.3 | 2025/03/18 | Ilya Rogozin | Added optional payer parameters to the Bank Payout transaction type for the Processing API. |
49.4 | 2025/03/20 | Hristo Tanchev | Added possibility to retrieve the token cryptogram in the Tokenization API. |
49.5 | 2025/03/21 | Svilen Siderov | Added dynamic descriptor support for Sepa transaction types. |
49.6 | 2025/03/25 | Atanas Naydenov | Updated the list with originated IP addresses for asynchronous payment notifications. |
Introduction
You can get PHP SDK from https://github.com/GenesisGateway/genesis_php
Installation:
Get the SDK from GitHub and load it with Composer autoloader or include it in your own autoloader (The SDK uses PSR-4 spec).
git clone http://github.com/GenesisGateway/genesis_php genesis_php
cd genesis_php
composer install
You can get Node.js SDK from https://github.com/GenesisGateway/genesis.js
Installation:
Get the SDK from GitHub
git clone http://github.com/GenesisGateway/genesis.js genesis.js
cd genesis.js
npm install
Or install it using npm
npm install genesis.js
You can get Java SDK from http://github.com/GenesisGateway/genesis_java
Installation:
Get the SDK from GitHub and install Maven plugin
git clone http://github.com/GenesisGateway/genesis_java genesis_java
cd genesis_java
mvn clean install
Finally add this to your pom.xml file:com.emerchantpay.gateway genesis-java 1.16.4
You can get cURL from https://curl.haxx.se
This document describes the usage of the payment gateway XML/JSON/GraphQL API.
The API allows you to trigger all supported transactions of the gateway and to retrieve information about transactions existing in the gateway. You can also retrieve chargeback information.
The payment API is synchronous (except for 3-D secure payments), it accepts HTTP POST or XML data and returns XML/JSON data. Connections are always secured via SSL both in test and live mode. Be sure to set Content-type: text/xml in your headers.
Audience
This document is intended for technical staff integrating the XML/JSON API in the merchant’s organization.
It is required that readers have working knowledge of programming languages, XML and JSON formats and UTF8 encodings.
Authentication
<?php
use \Genesis\Config as GenesisConfig;
// Load the pre-configured ini file...
GenesisConfig::loadSettings('/path/to/config.ini');
// ...OR, optionally, you can set the credentials manually
GenesisConfig::setEndpoint('<set_your_endpoint>');
GenesisConfig::setEnvironment('<set_your_environment>');
GenesisConfig::setUsername('<enter_your_username>');
GenesisConfig::setPassword('<enter_your_password>');
GenesisConfig::setToken('<enter_your_token>');
// You can find example configuration file in root directory of the module
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;;
import com.emerchantpay.gateway.util.Configuration;
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
You can override the path to the directory holding your configuration files (by default its config in the root directory of the module) via environmental variable NODE_CONFIG_DIR.
The first file to parse configuration from, is <your-config-dir>/default.json and based on the environment variable (NODE_ENV), you can specify your custom file; for example <your-config-dir>/<NODE_ENV_NAME>.json.
Its good practice to prevent web/direct access to your config directory and protect the files inside
Send username and password directly in url
curl https://username:password@staging.gate.emerchantpay.net:443/process/TERMINAL-TOKEN
Or use -u flag
curl -u username:password https://staging.gate.emerchantpay.net:443/process/TERMINAL-TOKEN
To interact with the payment API, you need to provide login credentials using standard HTTP Basic Authentication. (credentials can be found in your Admin interface.)
To decrease network traffic and response times, we recommend that you enforce sending authentication credentials directly in the first request.
Some implementations like e.g. the Java HTTPClient automatically try to guess the best authentication scheme. This can be overridden by setting the authorization to preemptive:
Environments
There are two environments which can be used by merchants - production and staging, also known as test environment.
The staging environment is used only for TESTING purposes. When you are processing a payment using your configuration for the test environment the payment WILL NOT bring a real financial impact. This environment is used only to simulate and test different payment scenarios.
In the production environment you cannot use any simulated test data. When you are processing payments using your configuration for the production environment the payment WILL bring a real financial impact.
URLs
Server API
API methods are called with the following structure:
https://gate.emerchantpay.net/process/TERMINAL_TOKEN/
Single transaction reconciles can be done via this URL:
https://gate.emerchantpay.net/reconcile/TERMINAL_TOKEN/
Date range reconciles can be done via this URL:
https://gate.emerchantpay.net/reconcile/by_date/TERMINAL_TOKEN/
This URL allows retrieval of a list of supported banks based on the customers country and/or currency:
https://gate.emerchantpay.net/retrieve_inpay_banks/TERMINAL_TOKEN/
For the test system use the following URLs:
https://staging.gate.emerchantpay.net/process/TERMINAL_TOKEN/
https://staging.gate.emerchantpay.net/reconcile/TERMINAL_TOKEN/
https://staging.gate.emerchantpay.net/reconcile/by_date/TERMINAL_TOKEN/
https://staging.gate.emerchantpay.net/retrieve_inpay_banks/TERMINAL_TOKEN/
WPF
The URL for the WPF API create method is:
https://wpf.emerchantpay.net/wpf
For the test system the URL is:
https://staging.wpf.emerchantpay.net/wpf
The URL for the WPF API reconcile method is:
https://wpf.emerchantpay.net/wpf/reconcile
For the test system the URL is:
https://staging.wpf.emerchantpay.net/wpf/reconcile
Your admin panel can be found here:
https://merchant.emerchantpay.net/
Consumer API
Create consumer:
https://gate.emerchantpay.net/v1/create_consumer/
Retrieve consumer:
https://gate.emerchantpay.net/v1/retrieve_consumer/
Update consumer:
https://gate.emerchantpay.net/v1/update_consumer/
Disable consumer:
https://gate.emerchantpay.net/v1/disable_consumer/
Enable consumer:
https://gate.emerchantpay.net/v1/enable_consumer/
Get consumer cards:
https://gate.emerchantpay.net/v1/get_consumer_cards/
For the test system use the following URLs:
https://staging.gate.emerchantpay.net/v1/create_consumer/
https://staging.gate.emerchantpay.net/v1/update_consumer/
https://staging.gate.emerchantpay.net/v1/disable_consumer/
https://staging.gate.emerchantpay.net/v1/enable_consumer/
https://staging.gate.emerchantpay.net/v1/get_consumer_cards/
Tokenization API
Tokenize cardholder data:
https://gate.emerchantpay.net/v1/tokenize/
Detokenize cardholder data:
https://gate.emerchantpay.net/v1/detokenize/
Update the cardholder data (PAN cannot be updated):
https://gate.emerchantpay.net/v1/update_token/
Validate if given token is valid for the merchant:
https://gate.emerchantpay.net/v1/validate_token/
Delete a token:
https://gate.emerchantpay.net/v1/delete_token/
Exchange masked cardholder data for token:
https://gate.emerchantpay.net/v1/get_card/
For the test system use the following URLs:
https://staging.gate.emerchantpay.net/v1/tokenize/
https://staging.gate.emerchantpay.net/v1/detokenize/
https://staging.gate.emerchantpay.net/v1/update_token/
https://staging.gate.emerchantpay.net/v1/validate_token/
https://staging.gate.emerchantpay.net/v1/delete_token/
https://staging.gate.emerchantpay.net/v1/get_card/
Genesis KYC Services JSON API
Testing environment
Create Consumer:
POST https://staging.kyc.emerchantpay.net/api/v1/create_consumer
Update Consumer:
POST https://staging.kyc.emerchantpay.net/api/v1/update_consumer
Create Transaction:
POST https://staging.kyc.emerchantpay.net/api/v1/create_transaction
Update Transaction:
POST https://staging.kyc.emerchantpay.net/api/v1/update_transaction
Upload Document:
POST https://staging.kyc.emerchantpay.net/api/v1/upload_document
Download Document:
POST https://staging.kyc.emerchantpay.net/api/v1/download_document
Verify Phone:
POST https://staging.kyc.emerchantpay.net/api/v1/verify_phone
Verify Identity:
POST https://staging.kyc.emerchantpay.net/api/v1/verify_identity
Verify Bank Account:
POST https://staging.kyc.emerchantpay.net/api/v1/verify_bank_account
Create Authentication:
POST https://staging.kyc.emerchantpay.net/api/v1/create_authentication
Update Authentication:
POST https://staging.kyc.emerchantpay.net/api/v1/update_authentication
Create Verification:
POST https://staging.kyc.emerchantpay.net/api/v1/verifications
Check Verification Status:
POST https://staging.kyc.emerchantpay.net/api/v1/verifications/status
Register Reference_ID:
POST https://staging.kyc.emerchantpay.net/api/v1/verifications/register
Production environment
Genesis KYC Services JSON API URLs for production environment:
Create Consumer:
POST https://kyc.emerchantpay.net/api/v1/create_consumer
Update Consumer:
POST https://kyc.emerchantpay.net/api/v1/update_consumer
Create Transaction:
POST https://kyc.emerchantpay.net/api/v1/create_transaction
Update Transaction:
POST https://kyc.emerchantpay.net/api/v1/update_transaction
Upload Document:
POST https://kyc.emerchantpay.net/api/v1/upload_document
Download Document:
POST https://kyc.emerchantpay.net/api/v1/download_document
Verify Phone:
POST https://kyc.emerchantpay.net/api/v1/verify_phone
Verify Identity:
POST https://kyc.emerchantpay.net/api/v1/verify_identity
Verify Bank Account:
POST https://kyc.emerchantpay.net/api/v1/verify_bank_account
Create Authentication:
POST https://kyc.emerchantpay.net/api/v1/create_authentication
Update Authentication:
POST https://kyc.emerchantpay.net/api/v1/update_authentication
Create Verification:
POST https://kyc.emerchantpay.net/api/v1/verifications
Check Verification Status:
POST https://kyc.emerchantpay.net/api/v1/verifications/status
Transaction API
Update expiration date:
PUT https://gate.emerchantpay.net/v1/transaction/expiry_date/:transaction_unique_id
For the test system use the following URLs:
PUT https://staging.gate.emerchantpay.net/v1/transaction/expiry_date/:transaction_unique_id
Smart Routing API
For the test system use the following URLs:
POST https://staging.api.emerchantpay.net/transactions
With authentication params in the URL:
POST https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.api.emerchantpay.net/transactions
For the production system use the following URLs:
POST https://prod.api.emerchantpay.net/transactions
With authentication params in the URL:
POST https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@prod.api.emerchantpay.net/transactions
Billing Transactions API
Testing environment
POST https://staging.api.emerchantpay.net/billing_transactions/v1/graphql
Production environment
POST https://prod.api.emerchantpay.net/billing_transactions/v1/graphql
Transactions
Invoking a Transaction
A transaction is invoked via HTTPS POST, parameters are passed as XML with UTF-8 encoding.
Card
Recurring V2
A recurring transaction describes a payment where the cardholder’s account is periodically charged for a repeated delivery and use of a product or service (subscription, membership fee, etc.) over time. A recurring payment consists of an initial transaction and one or several repeated subsequent transactions. The ”initial” transaction contains all relevant card and cardholder data, while the subsequent repeated transaction references an identifier which is returned with the response to the initial request.
Initial Recurring
Sale(3D) or Authorize(3D) with recurring_type initial marks an initialization of recurring series. Subsequent recurring transactions use initial Sale(3D) or Authorize(3D) as a reference for the recurring series.
Note that if an initial recurring is fully refunded or referenced by a fraud transaction(ChargebackTransaction / ChargebackReversalTransaction / RepresentmentTransaction / SecondChargebackTransaction), the recurring series is stopped and no more Subsequent recurring transactions can be performed for that recurring series.
If an initial recurring is partially refunded, the recurring series can continue with more Subsequent recurring transactions.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale');
$request = $genesis->request();
$request
->setRecurringType('initial')
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4200000000000000')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setRecurringCategory('subscription')
// Account Owner
->setAccountFirstName('Travis')
->setAccountMiddleName('Joe')
->setAccountLastName('Pastrana');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.SaleRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
SaleRequest request = new SaleRequest();
request.setRecurringType("initial");
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4200000000000000");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setRecurringCategory("subscription");
// Account Owner
request.setAccountFirstname("Travis");
request.setAccountMiddlename("Joe");
request.setAccountLastname("Pastrana");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale(
{
"recurring_type": "initial",
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4200000000000000",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"recurring_category": "subscription",
"account_owner": {
"first_name": "Travis",
"middle_name": "Joe",
"last_name": "Pastrana"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale</transaction_type>
<recurring_type>initial</recurring_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<recurring_category>subscription</recurring_category>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_transaction>'
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize');
$request = $genesis->request();
$request
->setRecurringType('initial')
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4200000000000000')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setRecurringCategory('subscription');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.AuthorizeRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
AuthorizeRequest request = new AuthorizeRequest();
request.setRecurringType("initial");
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4200000000000000");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setRecurringCategory("subscription");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize(
{
"recurring_type": "initial",
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4200000000000000",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"recurring_category": "subscription"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize</transaction_type>
<recurring_type>initial</recurring_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<recurring_category>subscription</recurring_category>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sale, sale3d, authorize or authorize3d |
recurring_type | required | string(255) | Specifies recurring type of the transaction, 'initial' |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
amount | required | integer >= 0 | Transaction amount in minor currency unit, see Currency and Amount Handling for details. In certain cases, it is possible to submit a transaction with a zero-value amount in order not to charge the consumer with the initial recurring, but with the followed RecurringSale transactions only. For more information regarding the use cases and scenario, Contact tech-support@emerchantpay.com for more details. |
currency | required | string(3) | Currency code in ISO 4217 |
card_holder | required | string(255) | Full name of customer as printed on credit card (first name and last name at least) |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required* | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted. Cannot be set together with remember_card |
remember_card | optional | "true" | See Tokenize. Tokenizes cardholder parameters. Cannot be set together with token |
consumer_id | optional | string(10) | See Consumers and Tokenization. Combine with remember_card to tokenize or with token to use token |
scheme_tokenized | required* | "true" | Required when the card_number is DPAN instead of Funding Primary Account Number, see Tokenized e-commerce for details |
recurring_category | optional | string | Specifies whether the recurring transaction is a subscription(fixed amount, fixed intervals)or if it is a standing order(varying amount, fixed intervals). The allowed values aresubscription and standing_order . The default value is subscription |
credential_on_file | required* | See Credential On File (COF) for more details | |
initial_customer_initiated | required* | string(18) | Initial transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
subsequent_customer_initiated | required* | string(18) | Subsequent transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
merchant_unscheduled | optional | string(20) | Transaction is initiated by the merchant |
credential_on_file_transaction_identifier | optional | string(15..32) | See Credential On File (COF) for more details |
credential_on_file_settlement_date | optional | string(4) | See Credential On File (COF) for more details |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
birth_date | required* | dd-mm-yyyy | Required when MCC is a Financial Services one (e.g. MCC 6012) and either card brand is Visa or Mastercard/Maestro with UK-based merchant, UK-based bin (domestic), and DEBIT card type |
document_id | required* | string(255) | Document ID value. |
fx_rate_id | optional | integer | See Get rates for FX Service. Offers the option to use a specific FX rate to convert the transaction processing amount. Used FX rate should have the same source currency as the processing currency. Contact tech-support@emerchantpay.com for more details |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
account_owner | optional | Account owner parameters related to account owner inquiry requests | |
first_name | optional | string(35) | Account owner first name |
middle_name | optional | string(35) | Account owner middle name |
last_name | optional | string(35) | Account owner last name |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => sale
[recurring_type] => initial
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[avs_response_code] => 5I
[avs_response_text] => Response provided by issuer processor; Address information not verified
[cvv_result_code] => M
[authorization_code] => 345678
[retrieval_reference_number] => 016813015184
[response_code] => 00
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:58.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
[scheme_transaction_identifier] => 019091214161031
[scheme_settlement_date] => 0326
[scheme_response_code] => 00
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
[account_owner] => {"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}
)
<payment_response content=[
<transaction_type content=[sale]>
<recurring_type content=[initial]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<avs_response_code content=[5I]>
<avs_response_text content=[Response provided by issuer processor; Address information not verified]>
<cvv_result_code content=[M]>
<authorization_code content=[345678]>
<retrieval_reference_number content=[016813015184]>
<response_code content=[00]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:43:58Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
<scheme_transaction_identifier content=[019091214161031]>
<scheme_settlement_date content=[0326]>
<scheme_response_code content=[00]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
<account_owner content=[{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}]>
]>
{
transaction_type: "sale",
recurring_type: "initial",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
avs_response_code: "5I",
avs_response_text: "Response provided by issuer processor; Address information not verified",
cvv_result_code: "M",
authorization_code: "345678",
retrieval_reference_number: "016813015184",
response_code: "00",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:43:58Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
scheme_transaction_identifier: "019091214161031",
scheme_settlement_date: "0326",
scheme_response_code: "00",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
account_owner: "{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale</transaction_type>
<recurring_type>initial</recurring_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<avs_response_code>5I</avs_response_code>
<avs_response_text>Response provided by issuer processor; Address information not verified</avs_response_text>
<cvv_result_code>M</cvv_result_code>
<authorization_code>345678</authorization_code>
<retrieval_reference_number>016813015184</retrieval_reference_number>
<response_code>00</response_code>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:43:58Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<scheme_transaction_identifier>019091214161031</scheme_transaction_identifier>
<scheme_settlement_date>0326</scheme_settlement_date>
<scheme_response_code>00</scheme_response_code>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
recurring_type | string(255) | The recurring type(initial, subsequent or managed) |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
token | string(36) | Plain-text token value. See Tokenization |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
cvv_result_code | string(1) | Card Verification Value response code. Optional, returned only if acquirer supports it |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
recurring_advice_code | string(2) | Optional, if received in the response from the issuer |
recurring_advice_text | string | Optional, describes the specific recurring advice code |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
scheme_transaction_identifier | string(32) | Id defined by card schemes. Corresponds to NETWORK DATA (field 63) for MasterCard or TRANS ID (field 62.2/125) for VISA. |
scheme_settlement_date | string(4) | MasterCard settlement date in MMDD format (e.g. 0326). Corresponds to NETWORK DATA (field 15). |
scheme_response_code | string(2) | The response code returned from the schemes. See Scheme response codes for details. |
recurring_advice_code | string(2) | Optional, if received in the response from the issuer |
recurring_advice_text | string | Optional, describes the specific recurring advice code |
reason_for_not_honoring_exemption | string | Reason for not honoring exemption. Check SCA Reason For Not Honoring Exemption Values. |
sca_exemption_result | string | SCA exemption result. Check SCA Exemption Result Values. |
Error Response
stdClass Object
(
[transaction_type] => sale
[recurring_type] => initial
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[response_code] => 57
[code] => 340
[message] => billing_address[zip_code] is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:58.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[sale]>
<recurring_type content=[initial]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<response_code content=[57]>
<code content=[340]>
<message content=[billing_address[zip_code] is invalid!]>
<timestamp content=[2025-03-25T08:43:58Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "sale",
recurring_type: "initial",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
response_code: "57",
code: "340",
message: "billing_address[zip_code] is invalid!",
timestamp: "2025-03-25T08:43:58Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale</transaction_type>
<recurring_type>initial</recurring_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<response_code>57</response_code>
<code>340</code>
<message>billing_address[zip_code] is invalid!</message>
<timestamp>2025-03-25T08:43:58Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
recurring_type | string(255) | The recurring type(initial, subsequent or managed) |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Subsequent Recurring
A Subsequent recurring transaction is a ”repeated” transaction that follows and references an Initial recurring transaction.
The card and cardholder data is omitted. Note that Subsequent recurring can be partially or fully refunded if the configuration allows it, and this will not stop the recurring series.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale');
$request = $genesis->request();
$request
->setRecurringType('subsequent')
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReferenceId('43672')
->setAmount('100');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.SaleRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
SaleRequest request = new SaleRequest();
request.setRecurringType("subsequent");
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReferenceId("43672");
request.setAmount(new BigDecimal(100));
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale(
{
"recurring_type": "subsequent",
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"reference_id": "43672",
"amount": "100",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale</transaction_type>
<recurring_type>subsequent</recurring_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<reference_id>43672</reference_id>
<amount>100</amount>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
</payment_transaction>'
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize');
$request = $genesis->request();
$request
->setRecurringType('subsequent')
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReferenceId('43672')
->setAmount('100');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.AuthorizeRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
AuthorizeRequest request = new AuthorizeRequest();
request.setRecurringType("subsequent");
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReferenceId("43672");
request.setAmount(new BigDecimal(100));
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize(
{
"recurring_type": "subsequent",
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"reference_id": "43672",
"amount": "100",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize</transaction_type>
<recurring_type>subsequent</recurring_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<reference_id>43672</reference_id>
<amount>100</amount>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sale or authorize |
recurring_type | required | string(255) | Specifies recurring type of the transaction, 'subsequent' |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
gaming | optional | "true" | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995. Contact tech-support@emerchantpay.com for more details |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
reference_id | required | string(32) | Unique id returned by corresponding transaction |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => sale
[recurring_type] => subsequent
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[authorization_code] => 345678
[retrieval_reference_number] => 016813015184
[response_code] => 00
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:58.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[sent_to_acquirer] => true
[scheme_response_code] => 00
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
)
<payment_response content=[
<transaction_type content=[sale]>
<recurring_type content=[subsequent]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<authorization_code content=[345678]>
<retrieval_reference_number content=[016813015184]>
<response_code content=[00]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:43:58Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<sent_to_acquirer content=[true]>
<scheme_response_code content=[00]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
]>
{
transaction_type: "sale",
recurring_type: "subsequent",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
authorization_code: "345678",
retrieval_reference_number: "016813015184",
response_code: "00",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:43:58Z",
descriptor: "Descriptor one",
amount: "100",
sent_to_acquirer: "true",
scheme_response_code: "00",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale</transaction_type>
<recurring_type>subsequent</recurring_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<authorization_code>345678</authorization_code>
<retrieval_reference_number>016813015184</retrieval_reference_number>
<response_code>00</response_code>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:43:58Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<sent_to_acquirer>true</sent_to_acquirer>
<scheme_response_code>00</scheme_response_code>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
recurring_type | string(255) | The recurring type(initial, subsequent or managed) |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
recurring_advice_code | string(2) | Optional, if received in the response from the issuer |
recurring_advice_text | string | Optional, describes the specific recurring advice code |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
sent_to_acquirer | string(255) | "true" or "false" |
scheme_response_code | string(2) | The response code returned from the schemes. See Scheme response codes for details. |
recurring_advice_code | string(2) | Optional, if received in the response from the issuer |
recurring_advice_text | string | Optional, describes the specific recurring advice code |
Error Response
stdClass Object
(
[transaction_type] => sale
[recurring_type] => subsequent
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[response_code] => 57
[code] => 340
[message] => billing_address[zip_code] is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:58.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[sale]>
<recurring_type content=[subsequent]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<response_code content=[57]>
<code content=[340]>
<message content=[billing_address[zip_code] is invalid!]>
<timestamp content=[2025-03-25T08:43:58Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "sale",
recurring_type: "subsequent",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
response_code: "57",
code: "340",
message: "billing_address[zip_code] is invalid!",
timestamp: "2025-03-25T08:43:58Z",
descriptor: "Descriptor one",
amount: "100",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale</transaction_type>
<recurring_type>subsequent</recurring_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<response_code>57</response_code>
<code>340</code>
<message>billing_address[zip_code] is invalid!</message>
<timestamp>2025-03-25T08:43:58Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
recurring_type | string(255) | The recurring type(initial, subsequent or managed) |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Non-referenced Subsequent Recurring
To allow for frictionless migration of merchant recurring traffic from other gateways without requiring an initial
recurring transaction yet again Sale or Authorize with
recurring_type subsequent does not need to use initial Sale or
Authorize as a reference for the recurring series in the cases when the
credential_on_file_transaction_identifier
and credential_on_file_settlement_date
parameters are provided in the
transaction request for specific acquirers, please contact Tech Support for more details.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale');
$request = $genesis->request();
$request
->setRecurringType('subsequent')
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4200000000000000')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCredentialOnFileTransactionIdentifier('MCSQF8SOC')
->setCredentialOnFileSettlementDate('0107')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setRecurringCategory('subscription')
// Account Owner
->setAccountFirstName('Travis')
->setAccountMiddleName('Joe')
->setAccountLastName('Pastrana');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.SaleRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
SaleRequest request = new SaleRequest();
request.setRecurringType("subsequent");
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4200000000000000");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCredentialOnFileTransactionIdentifier("MCSQF8SOC");
request.setCredentialOnFileSettlementDate("0107");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setRecurringCategory("subscription");
// Account Owner
request.setAccountFirstname("Travis");
request.setAccountMiddlename("Joe");
request.setAccountLastname("Pastrana");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale(
{
"recurring_type": "subsequent",
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4200000000000000",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"credential_on_file_transaction_identifier": "MCSQF8SOC",
"credential_on_file_settlement_date": "0107",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"recurring_category": "subscription",
"account_owner": {
"first_name": "Travis",
"middle_name": "Joe",
"last_name": "Pastrana"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale</transaction_type>
<recurring_type>subsequent</recurring_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<credential_on_file_transaction_identifier>MCSQF8SOC</credential_on_file_transaction_identifier>
<credential_on_file_settlement_date>0107</credential_on_file_settlement_date>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<recurring_category>subscription</recurring_category>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: authorize or sale |
recurring_type | required | string(255) | Specifies recurring type of the transaction, 'subsequent' |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
amount | required | integer >= 0 | Transaction amount in minor currency unit, see Currency and Amount Handling for details. In certain cases, it is possible to submit a transaction with a zero-value amount in order not to charge the consumer with the initial recurring, but with the followed RecurringSale transactions only. For more information regarding the use cases and scenario, Contact tech-support@emerchantpay.com for more details. |
currency | required | string(3) | Currency code in ISO 4217 |
card_holder | required | string(255) | Full name of customer as printed on credit card (first name and last name at least) |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required* | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted. Cannot be set together with remember_card |
remember_card | optional | "true" | See Tokenize. Tokenizes cardholder parameters. Cannot be set together with token |
consumer_id | optional | string(10) | See Consumers and Tokenization. Combine with remember_card to tokenize or with token to use token |
scheme_tokenized | required* | "true" | Required when the card_number is DPAN instead of Funding Primary Account Number, see Tokenized e-commerce for details |
recurring_category | optional | string | Specifies whether the recurring transaction is a subscription(fixed amount, fixed intervals)or if it is a standing order(varying amount, fixed intervals). The allowed values aresubscription and standing_order . The default value is subscription |
credential_on_file | required* | See Credential On File (COF) for more details | |
merchant_unscheduled | optional | string(20) | Transaction is initiated by the merchant |
credential_on_file_transaction_identifier | required | string(9..15) | See Credential On File (COF) for more details. Required for Non-referenced Recurring transactions. The length of the value should be 15 for Visa cards, and 9..12 for Mastercard/Maestro cards |
credential_on_file_settlement_date | required* | See Credential On File (COF) for more details. Required for Mastercard/Maestro cards | |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
birth_date | required* | dd-mm-yyyy | Required when MCC is a Financial Services one (e.g. MCC 6012) and either card brand is Visa or Mastercard/Maestro with UK-based merchant, UK-based bin (domestic), and DEBIT card type |
document_id | required* | string(255) | Document ID value. |
fx_rate_id | optional | integer | See Get rates for FX Service. Offers the option to use a specific FX rate to convert the transaction processing amount. Used FX rate should have the same source currency as the processing currency. Contact tech-support@emerchantpay.com for more details |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
account_owner | optional | Account owner parameters related to account owner inquiry requests | |
first_name | optional | string(35) | Account owner first name |
middle_name | optional | string(35) | Account owner middle name |
last_name | optional | string(35) | Account owner last name |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => sale
[recurring_type] => subsequent
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[avs_response_code] => 5I
[avs_response_text] => Response provided by issuer processor; Address information not verified
[cvv_result_code] => M
[authorization_code] => 345678
[retrieval_reference_number] => 016813015184
[response_code] => 00
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:58.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
[scheme_transaction_identifier] => 019091214161031
[scheme_settlement_date] => 0326
[scheme_response_code] => 00
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
[account_owner] => {"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}
)
<payment_response content=[
<transaction_type content=[sale]>
<recurring_type content=[subsequent]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<avs_response_code content=[5I]>
<avs_response_text content=[Response provided by issuer processor; Address information not verified]>
<cvv_result_code content=[M]>
<authorization_code content=[345678]>
<retrieval_reference_number content=[016813015184]>
<response_code content=[00]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:43:58Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
<scheme_transaction_identifier content=[019091214161031]>
<scheme_settlement_date content=[0326]>
<scheme_response_code content=[00]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
<account_owner content=[{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}]>
]>
{
transaction_type: "sale",
recurring_type: "subsequent",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
avs_response_code: "5I",
avs_response_text: "Response provided by issuer processor; Address information not verified",
cvv_result_code: "M",
authorization_code: "345678",
retrieval_reference_number: "016813015184",
response_code: "00",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:43:58Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
scheme_transaction_identifier: "019091214161031",
scheme_settlement_date: "0326",
scheme_response_code: "00",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
account_owner: "{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale</transaction_type>
<recurring_type>subsequent</recurring_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<avs_response_code>5I</avs_response_code>
<avs_response_text>Response provided by issuer processor; Address information not verified</avs_response_text>
<cvv_result_code>M</cvv_result_code>
<authorization_code>345678</authorization_code>
<retrieval_reference_number>016813015184</retrieval_reference_number>
<response_code>00</response_code>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:43:58Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<scheme_transaction_identifier>019091214161031</scheme_transaction_identifier>
<scheme_settlement_date>0326</scheme_settlement_date>
<scheme_response_code>00</scheme_response_code>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
recurring_type | string(255) | The recurring type(initial, subsequent or managed) |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
token | string(36) | Plain-text token value. See Tokenization |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
cvv_result_code | string(1) | Card Verification Value response code. Optional, returned only if acquirer supports it |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
recurring_advice_code | string(2) | Optional, if received in the response from the issuer |
recurring_advice_text | string | Optional, describes the specific recurring advice code |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
scheme_transaction_identifier | string(32) | Id defined by card schemes. Corresponds to NETWORK DATA (field 63) for MasterCard or TRANS ID (field 62.2/125) for VISA. |
scheme_settlement_date | string(4) | MasterCard settlement date in MMDD format (e.g. 0326). Corresponds to NETWORK DATA (field 15). |
scheme_response_code | string(2) | The response code returned from the schemes. See Scheme response codes for details. |
recurring_advice_code | string(2) | Optional, if received in the response from the issuer |
recurring_advice_text | string | Optional, describes the specific recurring advice code |
reason_for_not_honoring_exemption | string | Reason for not honoring exemption. Check SCA Reason For Not Honoring Exemption Values. |
sca_exemption_result | string | SCA exemption result. Check SCA Exemption Result Values. |
Error Response
stdClass Object
(
[transaction_type] => sale
[recurring_type] => subsequent
[status] => declined
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 510
[technical_message] => Invalid Issuer
[message] => Transaction failed, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:58.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[sale]>
<recurring_type content=[subsequent]>
<status content=[declined]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[510]>
<technical_message content=[Invalid Issuer]>
<message content=[Transaction failed, please contact support!]>
<timestamp content=[2025-03-25T08:43:58Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "sale",
recurring_type: "subsequent",
status: "declined",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "510",
technical_message: "Invalid Issuer",
message: "Transaction failed, please contact support!",
timestamp: "2025-03-25T08:43:58Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale</transaction_type>
<recurring_type>subsequent</recurring_type>
<status>declined</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>510</code>
<technical_message>Invalid Issuer</technical_message>
<message>Transaction failed, please contact support!</message>
<timestamp>2025-03-25T08:43:58Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
recurring_type | string(255) | The recurring type(initial, subsequent or managed) |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response
stdClass Object
(
[transaction_type] => sale
[recurring_type] => subsequent
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[response_code] => 57
[code] => 510
[message] => Transaction failed, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:58.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[sale]>
<recurring_type content=[subsequent]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<response_code content=[57]>
<code content=[510]>
<message content=[Transaction failed, please contact support!]>
<timestamp content=[2025-03-25T08:43:58Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "sale",
recurring_type: "subsequent",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
response_code: "57",
code: "510",
message: "Transaction failed, please contact support!",
timestamp: "2025-03-25T08:43:58Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale</transaction_type>
<recurring_type>subsequent</recurring_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<response_code>57</response_code>
<code>510</code>
<message>Transaction failed, please contact support!</message>
<timestamp>2025-03-25T08:43:58Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
recurring_type | string(255) | The recurring type(initial, subsequent or managed) |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Recurring for Indian cards
Recurring transactions with cards issued in India are subject to special rules. Prior to requesting a recurring series, the merchant should register the recurring agreement as per the Reserve Bank of India (RBI) regulations.
After that, use the managed_recurring
params section in order to provide the params from the agreement. Should be sent in both Initial and Subsequent recurring transactions.
How to use managed recurring for Indian cards in Processing API
Requests
Managed Recurring
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale');
$request = $genesis->request();
$request
->setRecurringType('managed')
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setToken('ee946db8-d7db-4bb7-b608-b65b153e127d')
->setCardHolder('Travis Pastrana')
->setCvv('834')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
->setManagedRecurring('{"mode"=>"manual", "payment_type"=>"subsequent", "amount_type"=>"fixed", "frequency"=>"weekly", "registration_reference_number"=>"123434", "max_amount"=>200, "max_count"=>99, "validated"=>"true"}');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.SaleRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
SaleRequest request = new SaleRequest();
request.setRecurringType("managed");
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setToken("ee946db8-d7db-4bb7-b608-b65b153e127d");
request.setCardHolder("Travis Pastrana");
request.setCvv("834");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
request.setManagedRecurring("{"mode"=>"manual", "payment_type"=>"subsequent", "amount_type"=>"fixed", "frequency"=>"weekly", "registration_reference_number"=>"123434", "max_amount"=>200, "max_count"=>99, "validated"=>"true"}");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale(
{
"recurring_type": "managed",
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"token": "ee946db8-d7db-4bb7-b608-b65b153e127d",
"card_holder": "Travis Pastrana",
"cvv": "834",
"expiration_month": "12",
"expiration_year": 2026,
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"managed_recurring": {
"mode": "manual",
"payment_type": "subsequent",
"amount_type": "fixed",
"frequency": "weekly",
"registration_reference_number": "123434",
"max_amount": 200,
"max_count": 99,
"validated": "true"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale</transaction_type>
<recurring_type>managed</recurring_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<card_holder>Travis Pastrana</card_holder>
<cvv>834</cvv>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<managed_recurring>
<mode>manual</mode>
<payment_type>subsequent</payment_type>
<amount_type>fixed</amount_type>
<frequency>weekly</frequency>
<registration_reference_number>123434</registration_reference_number>
<max_amount>200</max_amount>
<max_count>99</max_count>
<validated>true</validated>
</managed_recurring>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
recurring_type | required | string(255) | Specifies recurring type of the transaction, 'managed' |
managed_recurring | required | ||
mode | required | String | Fill in with 'manual'. This indicates that the merchant will manually manage the subsequent recurring transactions. |
payment_type | required | String | Type of the current recurring transaction. Values: initial, subsequent, modification, cancellation |
amount_type | required | String | Type of the amount. Values: fixed, max |
frequency | required | String | Frequency of the subsequent transactions. Values: daily, twice_weekly, weekly, ten_days, fortnightly, monthly, every_two_months, trimester, quarterly, twice_yearly, annually, unscheduled |
registration_reference_number | required | String(35) | Reference number as per the agreement. |
max_amount | required | Integer | Maximum amount as per the agreement. |
max_count | required | Integer | Maximum transactions count as per the agreement. 99 - indicates infinite subsequent payments. |
validated | required | String | Indicates if the current transaction is valid as per the registered agreement. Values: true, false |
required* = conditionally required
How to use managed recurring for Indian cards in WPF API
Requests
Merchants can send managed recurring params in the request when creating Initial recurring transactions via our WPF API.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Wpf\Create');
$request = $genesis->request();
$request
->setRecurringType('initial')
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setDescription('You are about to buy 3 shoes at www.shoes.com!')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnCancelUrl('http://www.example.com/cancel.html')
->setAmount('100')
->setCurrency('USD')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
->setLifetime('60')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// Risk Params
->setRiskUserId('123456')
// Transaction Types
->addTransactionType('transaction_type')
->setRememberCard('true')
->setManagedRecurring('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.wpf.WPFCreateRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
WPFCreateRequest request = new WPFCreateRequest();
request.setRecurringType("initial");
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setDescription("You are about to buy 3 shoes at www.shoes.com!");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setReturnCancelUrl(new URL("http://www.example.com/cancel.html"));
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
request.setLifetime(60);
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Risk Params
request.setRiskUserId("123456");
// Transaction Types
request.addTransactionType("transaction_type").done();
request.setRememberCard("true");
request.setManagedRecurring("");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.wpf_create(
{
"recurring_type": "initial",
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"description": "You are about to buy 3 shoes at www.shoes.com!",
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"return_cancel_url": "http://www.example.com/cancel.html",
"amount": "100",
"currency": "USD",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"lifetime": 60,
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"risk_params": {
"user_id": "123456"
},
"transaction_types": [
"transaction_type"
],
"remember_card": "true",
"managed_recurring": null
}
).send()
.then(success)
.catch(failure);
Request
curl https://staging.wpf.emerchantpay.net/wpf \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<wpf_payment>
<transaction_type>wpf_create</transaction_type>
<recurring_type>initial</recurring_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<description>You are about to buy 3 shoes at www.shoes.com!</description>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_cancel_url>http://www.example.com/cancel.html</return_cancel_url>
<amount>100</amount>
<currency>USD</currency>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<lifetime>60</lifetime>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
<transaction_types>
<transaction_type>
<name>sale</name>
<recurring_type>managed</recurring_type>
<managed_recurring>
<mode>manual</mode>
<payment_type>subsequent</payment_type>
<amount_type>fixed</amount_type>
<frequency>weekly</frequency>
<registration_reference_number>123434</registration_reference_number>
<max_amount>200</max_amount>
<max_count>99</max_count>
<validated>true</validated>
</managed_recurring>
</transaction_type>
</transaction_types>
<remember_card>true</remember_card>
<wpf_payment>managed_recurring</wpf_payment>
</wpf_payment>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
recurring_type | required | string(255) | Specifies recurring type of the transaction, 'managed' |
managed_recurring | required | ||
mode | required | String | Fill in with 'manual'. This indicates that the merchant will manually manage the subsequent recurring transactions. |
payment_type | required | String | Type of the current recurring transaction. Values: initial, subsequent, modification, cancellation |
amount_type | required | String | Type of the amount. Values: fixed, max |
frequency | required | String | Frequency of the subsequent transactions. Values: daily, twice_weekly, weekly, ten_days, fortnightly, monthly, every_two_months, trimester, quarterly, twice_yearly, annually, unscheduled |
registration_reference_number | required | String(35) | Reference number as per the agreement. |
max_amount | required | Integer | Maximum amount as per the agreement. |
max_count | required | Integer | Maximum transactions count as per the agreement. 99 - indicates infinite subsequent payments. |
validated | required | String | Indicates if the current transaction is valid as per the registered agreement. Values: true, false |
required* = conditionally required
Recurring Transactions
A recurring transaction describes a payment where the cardholder’s account is periodically charged for a repeated delivery and use of a product or service (subscription, membership fee, etc.) over time. A recurring payment consists of an initial transaction and one or several repeated transactions. The ”initial” transaction contains all relevant card and cardholder data, while the subsequent repeated transaction references an identifier which is returned with the response to the initial request.
Init Recurring Sale
An InitRecurringSale transaction initializes a recurring payment and is equal to a normal SaleTransaction except that it can be referenced as ”initial” transaction in a RecurringSale transaction.
Note that if an InitRecurringSale is fully refunded, the recurring series is stopped and no more RecurringSales can be performed for that recurring series.
If an InitRecurringSale is partially refunded, the recurring series can continue with more RecurringSales
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4200000000000000')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setRecurringCategory('subscription')
// Account Owner
->setAccountFirstName('Travis')
->setAccountMiddleName('Joe')
->setAccountLastName('Pastrana');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale request = new InitRecurringSale();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4200000000000000");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setRecurringCategory("subscription");
// Account Owner
request.setAccountFirstname("Travis");
request.setAccountMiddlename("Joe");
request.setAccountLastname("Pastrana");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4200000000000000",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"recurring_category": "subscription",
"account_owner": {
"first_name": "Travis",
"middle_name": "Joe",
"last_name": "Pastrana"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>init_recurring_sale</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<recurring_category>subscription</recurring_category>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: init_recurring_sale |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
amount | required | integer >= 0 | Transaction amount in minor currency unit, see Currency and Amount Handling for details. In certain cases, it is possible to submit a transaction with a zero-value amount in order not to charge the consumer with the initial recurring, but with the followed RecurringSale transactions only. For more information regarding the use cases and scenario, Contact tech-support@emerchantpay.com for more details. |
currency | required | string(3) | Currency code in ISO 4217 |
card_holder | required | string(255) | Full name of customer as printed on credit card (first name and last name at least) |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required* | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted. Cannot be set together with remember_card |
remember_card | optional | "true" | See Tokenize. Tokenizes cardholder parameters. Cannot be set together with token |
consumer_id | optional | string(10) | See Consumers and Tokenization. Combine with remember_card to tokenize or with token to use token |
scheme_tokenized | required* | "true" | Required when the card_number is DPAN instead of Funding Primary Account Number, see Tokenized e-commerce for details |
recurring_category | optional | string | Specifies whether the recurring transaction is a subscription(fixed amount, fixed intervals)or if it is a standing order(varying amount, fixed intervals). The allowed values aresubscription and standing_order . The default value is subscription |
credential_on_file | required* | See Credential On File (COF) for more details | |
initial_customer_initiated | required* | string(18) | Initial transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
subsequent_customer_initiated | required* | string(18) | Subsequent transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
merchant_unscheduled | optional | string(20) | Transaction is initiated by the merchant |
credential_on_file_transaction_identifier | optional | string(15..32) | See Credential On File (COF) for more details |
credential_on_file_settlement_date | optional | string(4) | See Credential On File (COF) for more details |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
birth_date | required* | dd-mm-yyyy | Required when MCC is a Financial Services one (e.g. MCC 6012) and either card brand is Visa or Mastercard/Maestro with UK-based merchant, UK-based bin (domestic), and DEBIT card type |
document_id | required* | string(255) | Document ID value. |
fx_rate_id | optional | integer | See Get rates for FX Service. Offers the option to use a specific FX rate to convert the transaction processing amount. Used FX rate should have the same source currency as the processing currency. Contact tech-support@emerchantpay.com for more details |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
funding | optional | Funding Transaction Params | |
identifier_type | required* | string | This is only required in case of Mastercard. Type of Funding Transaction. Please check Identifier Types |
business_application_identifier | required* | string | This is only required in case of VISA. Type of VISA Funding Transaction. Please check BAI |
receiver | optional | Funding Transaction Receiver details | |
first_name | required* | string | First name of the receiver |
last_name | required* | string | Last name of the receiver |
country | required* | string(2) | Country code in ISO 3166 |
account_number | required* | string | Receiver account number. Mandatory for Mastercard. If Sender Reference Number is provided then it becomes optional for VISA |
account_number_type | required* | string | This is only required in case of Mastercard. Receiver account number type. Please check Receiver Account Types |
address | required* | string | Receiver address. Only required in case of VISA and Canadian cards |
state | required* | string | Receiver state. Only required in case of VISA and Canadian cards |
city | required* | string | Receiver city. Only required in case of VISA and Canadian cards |
sender | optional | Funding Transaction Sender details | |
name | required* | string | Sender name. Only required in case of VISA |
reference_number | required* | string | Sender Reference Number. Only required in case of VISA. This is option if Receiver Account Number is provided |
country | required* | string | Sender country. Only required in case of VISA. If not provided billing address is used |
address | required* | string | Sender address. Only required in case of VISA. If not provided billing address is used |
state | required* | string | Sender state. Only required in case of VISA and Canadian card. If not provided billing address is used |
city | required* | string | Sender city. Only required in case of VISA. If not provided billing address is used |
account_owner | optional | Account owner parameters related to account owner inquiry requests | |
first_name | optional | string(35) | Account owner first name |
middle_name | optional | string(35) | Account owner middle name |
last_name | optional | string(35) | Account owner last name |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => init_recurring_sale
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[avs_response_code] => 5I
[avs_response_text] => Response provided by issuer processor; Address information not verified
[cvv_result_code] => M
[authorization_code] => 345678
[retrieval_reference_number] => 016813015184
[response_code] => 00
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
[scheme_transaction_identifier] => 019091214161031
[scheme_settlement_date] => 0326
[scheme_response_code] => 00
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
[account_owner] => {"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}
)
<payment_response content=[
<transaction_type content=[init_recurring_sale]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<avs_response_code content=[5I]>
<avs_response_text content=[Response provided by issuer processor; Address information not verified]>
<cvv_result_code content=[M]>
<authorization_code content=[345678]>
<retrieval_reference_number content=[016813015184]>
<response_code content=[00]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:43:59Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
<scheme_transaction_identifier content=[019091214161031]>
<scheme_settlement_date content=[0326]>
<scheme_response_code content=[00]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
<account_owner content=[{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}]>
]>
{
transaction_type: "init_recurring_sale",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
avs_response_code: "5I",
avs_response_text: "Response provided by issuer processor; Address information not verified",
cvv_result_code: "M",
authorization_code: "345678",
retrieval_reference_number: "016813015184",
response_code: "00",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:43:59Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
scheme_transaction_identifier: "019091214161031",
scheme_settlement_date: "0326",
scheme_response_code: "00",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
account_owner: "{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>init_recurring_sale</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<avs_response_code>5I</avs_response_code>
<avs_response_text>Response provided by issuer processor; Address information not verified</avs_response_text>
<cvv_result_code>M</cvv_result_code>
<authorization_code>345678</authorization_code>
<retrieval_reference_number>016813015184</retrieval_reference_number>
<response_code>00</response_code>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<scheme_transaction_identifier>019091214161031</scheme_transaction_identifier>
<scheme_settlement_date>0326</scheme_settlement_date>
<scheme_response_code>00</scheme_response_code>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
token | string(36) | Plain-text token value. See Tokenization |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
cvv_result_code | string(1) | Card Verification Value response code. Optional, returned only if acquirer supports it |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
recurring_advice_code | string(2) | Optional, if received in the response from the issuer |
recurring_advice_text | string | Optional, describes the specific recurring advice code |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
scheme_transaction_identifier | string(32) | Id defined by card schemes. Corresponds to NETWORK DATA (field 63) for MasterCard or TRANS ID (field 62.2/125) for VISA. |
scheme_settlement_date | string(4) | MasterCard settlement date in MMDD format (e.g. 0326). Corresponds to NETWORK DATA (field 15). |
scheme_response_code | string(2) | The response code returned from the schemes. See Scheme response codes for details. |
recurring_advice_code | string(2) | Optional, if received in the response from the issuer |
recurring_advice_text | string | Optional, describes the specific recurring advice code |
reason_for_not_honoring_exemption | string | Reason for not honoring exemption. Check SCA Reason For Not Honoring Exemption Values. |
sca_exemption_result | string | SCA exemption result. Check SCA Exemption Result Values. |
Error Response
stdClass Object
(
[transaction_type] => init_recurring_sale
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[response_code] => 57
[code] => 340
[message] => billing_address[zip_code] is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[init_recurring_sale]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<response_code content=[57]>
<code content=[340]>
<message content=[billing_address[zip_code] is invalid!]>
<timestamp content=[2025-03-25T08:43:59Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "init_recurring_sale",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
response_code: "57",
code: "340",
message: "billing_address[zip_code] is invalid!",
timestamp: "2025-03-25T08:43:59Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>init_recurring_sale</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<response_code>57</response_code>
<code>340</code>
<message>billing_address[zip_code] is invalid!</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Recurring Sale
A RecurringSale transaction is a ”repeated” transaction which follows and references a Init Recurring Sale transaction.
The card and cardholder data is omitted. Note that RecurringSales can be partially or fully refunded if configuration allows it, and this will not stop the recurring series.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\RecurringSale');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReferenceId('43672')
->setAmount('100');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.RecurringSale;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
RecurringSale request = new RecurringSale();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReferenceId("43672");
request.setAmount(new BigDecimal(100));
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.recurring_sale(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"reference_id": "43672",
"amount": "100",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>recurring_sale</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<reference_id>43672</reference_id>
<amount>100</amount>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: recurring_sale |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
gaming | optional | "true" | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995. Contact tech-support@emerchantpay.com for more details |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
reference_id | required | string(32) | Unique id returned by corresponding transaction |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
funding | optional | Funding Transaction Params | |
identifier_type | required* | string | This is only required in case of Mastercard. Type of Funding Transaction. Please check Identifier Types |
business_application_identifier | required* | string | This is only required in case of VISA. Type of VISA Funding Transaction. Please check BAI |
receiver | optional | Funding Transaction Receiver details | |
first_name | required* | string | First name of the receiver |
last_name | required* | string | Last name of the receiver |
country | required* | string(2) | Country code in ISO 3166 |
account_number | required* | string | Receiver account number. Mandatory for Mastercard. If Sender Reference Number is provided then it becomes optional for VISA |
account_number_type | required* | string | This is only required in case of Mastercard. Receiver account number type. Please check Receiver Account Types |
address | required* | string | Receiver address. Only required in case of VISA and Canadian cards |
state | required* | string | Receiver state. Only required in case of VISA and Canadian cards |
city | required* | string | Receiver city. Only required in case of VISA and Canadian cards |
sender | optional | Funding Transaction Sender details | |
name | required* | string | Sender name. Only required in case of VISA |
reference_number | required* | string | Sender Reference Number. Only required in case of VISA. This is option if Receiver Account Number is provided |
country | required* | string | Sender country. Only required in case of VISA. If not provided billing address is used |
address | required* | string | Sender address. Only required in case of VISA. If not provided billing address is used |
state | required* | string | Sender state. Only required in case of VISA and Canadian card. If not provided billing address is used |
city | required* | string | Sender city. Only required in case of VISA. If not provided billing address is used |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => recurring_sale
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[authorization_code] => 345678
[retrieval_reference_number] => 016813015184
[response_code] => 00
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[sent_to_acquirer] => true
[scheme_response_code] => 00
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
)
<payment_response content=[
<transaction_type content=[recurring_sale]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<authorization_code content=[345678]>
<retrieval_reference_number content=[016813015184]>
<response_code content=[00]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:43:59Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<sent_to_acquirer content=[true]>
<scheme_response_code content=[00]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
]>
{
transaction_type: "recurring_sale",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
authorization_code: "345678",
retrieval_reference_number: "016813015184",
response_code: "00",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:43:59Z",
descriptor: "Descriptor one",
amount: "100",
sent_to_acquirer: "true",
scheme_response_code: "00",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>recurring_sale</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<authorization_code>345678</authorization_code>
<retrieval_reference_number>016813015184</retrieval_reference_number>
<response_code>00</response_code>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<sent_to_acquirer>true</sent_to_acquirer>
<scheme_response_code>00</scheme_response_code>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
recurring_advice_code | string(2) | Optional, if received in the response from the issuer |
recurring_advice_text | string | Optional, describes the specific recurring advice code |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
sent_to_acquirer | string(255) | "true" or "false" |
scheme_response_code | string(2) | The response code returned from the schemes. See Scheme response codes for details. |
recurring_advice_code | string(2) | Optional, if received in the response from the issuer |
recurring_advice_text | string | Optional, describes the specific recurring advice code |
Error Response
stdClass Object
(
[transaction_type] => recurring_sale
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[response_code] => 57
[code] => 340
[message] => billing_address[zip_code] is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[recurring_sale]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<response_code content=[57]>
<code content=[340]>
<message content=[billing_address[zip_code] is invalid!]>
<timestamp content=[2025-03-25T08:43:59Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "recurring_sale",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
response_code: "57",
code: "340",
message: "billing_address[zip_code] is invalid!",
timestamp: "2025-03-25T08:43:59Z",
descriptor: "Descriptor one",
amount: "100",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>recurring_sale</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<response_code>57</response_code>
<code>340</code>
<message>billing_address[zip_code] is invalid!</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Recurring for Indian cards
Recurring transactions with cards issued in India are subject to special rules. Prior to requesting the recurring transaction, the merchant should register the recurring agreement as per the Reserve bank of India (RBI) regulations.
After that, use the managed_recurring
params section in order to provide the params from the agreement. Should be sent in both initial and subsequent recurring transactions.
How to use managed recurring for Indian cards in Processing API
Requests
Managed Recurring
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setToken('ee946db8-d7db-4bb7-b608-b65b153e127d')
->setCardHolder('Travis Pastrana')
->setCvv('834')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
->setManagedRecurring('{"mode"=>"manual", "payment_type"=>"subsequent", "amount_type"=>"fixed", "frequency"=>"weekly", "registration_reference_number"=>"123434", "max_amount"=>200, "max_count"=>99, "validated"=>"true"}');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale request = new InitRecurringSale();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setToken("ee946db8-d7db-4bb7-b608-b65b153e127d");
request.setCardHolder("Travis Pastrana");
request.setCvv("834");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
request.setManagedRecurring("{"mode"=>"manual", "payment_type"=>"subsequent", "amount_type"=>"fixed", "frequency"=>"weekly", "registration_reference_number"=>"123434", "max_amount"=>200, "max_count"=>99, "validated"=>"true"}");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"token": "ee946db8-d7db-4bb7-b608-b65b153e127d",
"card_holder": "Travis Pastrana",
"cvv": "834",
"expiration_month": "12",
"expiration_year": 2026,
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"managed_recurring": {
"mode": "manual",
"payment_type": "subsequent",
"amount_type": "fixed",
"frequency": "weekly",
"registration_reference_number": "123434",
"max_amount": 200,
"max_count": 99,
"validated": "true"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<card_holder>Travis Pastrana</card_holder>
<cvv>834</cvv>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<managed_recurring>
<mode>manual</mode>
<payment_type>subsequent</payment_type>
<amount_type>fixed</amount_type>
<frequency>weekly</frequency>
<registration_reference_number>123434</registration_reference_number>
<max_amount>200</max_amount>
<max_count>99</max_count>
<validated>true</validated>
</managed_recurring>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
managed_recurring | required | ||
mode | required | String | Fill in with 'manual'. This indicates that the merchant will manually manage the subsequent recurring transactions. |
payment_type | required | String | Type of the current recurring transaction. Values: initial, subsequent, modification, cancellation |
amount_type | required | String | Type of the amount. Values: fixed, max |
frequency | required | String | Frequency of the subsequent transactions. Values: daily, twice_weekly, weekly, ten_days, fortnightly, monthly, every_two_months, trimester, quarterly, twice_yearly, annually, unscheduled |
registration_reference_number | required | String(35) | Reference number as per the agreement. |
max_amount | required | Integer | Maximum amount as per the agreement. |
max_count | required | Integer | Maximum transactions count as per the agreement. 99 - indicates infinite subsequent payments. |
validated | required | String | Indicates if the current transaction is valid as per the registered agreement. Values: true, false |
required* = conditionally required
How to use managed recurring for Indian cards in WPF API
Requests
Merchants can send managed recurring params in the request when creating initial recurring transactions via our WPF API.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Wpf\Create');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setDescription('You are about to buy 3 shoes at www.shoes.com!')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnCancelUrl('http://www.example.com/cancel.html')
->setAmount('100')
->setCurrency('USD')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
->setLifetime('60')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// Risk Params
->setRiskUserId('123456')
// Transaction Types
->addTransactionType('transaction_type')
->setRememberCard('true')
->setManagedRecurring('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.wpf.WPFCreateRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
WPFCreateRequest request = new WPFCreateRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setDescription("You are about to buy 3 shoes at www.shoes.com!");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setReturnCancelUrl(new URL("http://www.example.com/cancel.html"));
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
request.setLifetime(60);
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Risk Params
request.setRiskUserId("123456");
// Transaction Types
request.addTransactionType("transaction_type").done();
request.setRememberCard("true");
request.setManagedRecurring("");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.wpf_create(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"description": "You are about to buy 3 shoes at www.shoes.com!",
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"return_cancel_url": "http://www.example.com/cancel.html",
"amount": "100",
"currency": "USD",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"lifetime": 60,
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"risk_params": {
"user_id": "123456"
},
"transaction_types": [
"transaction_type"
],
"remember_card": "true",
"managed_recurring": null
}
).send()
.then(success)
.catch(failure);
Request
curl https://staging.wpf.emerchantpay.net/wpf \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<wpf_payment>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<description>You are about to buy 3 shoes at www.shoes.com!</description>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_cancel_url>http://www.example.com/cancel.html</return_cancel_url>
<amount>100</amount>
<currency>USD</currency>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<lifetime>60</lifetime>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
<transaction_types>
<transaction_type>
<name>init_recurring_sale</name>
<managed_recurring>
<mode>manual</mode>
<payment_type>subsequent</payment_type>
<amount_type>fixed</amount_type>
<frequency>weekly</frequency>
<registration_reference_number>123434</registration_reference_number>
<max_amount>200</max_amount>
<max_count>99</max_count>
<validated>true</validated>
</managed_recurring>
</transaction_type>
</transaction_types>
<remember_card>true</remember_card>
<wpf_payment>managed_recurring</wpf_payment>
</wpf_payment>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
managed_recurring | required | ||
mode | required | String | Fill in with 'manual'. This indicates that the merchant will manually manage the subsequent recurring transactions. |
payment_type | required | String | Type of the current recurring transaction. Values: initial, subsequent, modification, cancellation |
amount_type | required | String | Type of the amount. Values: fixed, max |
frequency | required | String | Frequency of the subsequent transactions. Values: daily, twice_weekly, weekly, ten_days, fortnightly, monthly, every_two_months, trimester, quarterly, twice_yearly, annually, unscheduled |
registration_reference_number | required | String(35) | Reference number as per the agreement. |
max_amount | required | Integer | Maximum amount as per the agreement. |
max_count | required | Integer | Maximum transactions count as per the agreement. 99 - indicates infinite subsequent payments. |
validated | required | String | Indicates if the current transaction is valid as per the registered agreement. Values: true, false |
required* = conditionally required
Authorize
With authorize transactions, you can confirm that a credit card is valid and reserve the desired amount on the card.
After settling the transaction (e.g. shipping the goods), you can then capture the amount. The customer will not be billed until the capture has taken place, but the amount is reserved and the customer’s credit card limit is reduced. Authorizes will automatically be cancelled after a certain timeframe, most likely one week.
For a typical e-commerce application it is recommended to authorize the amount on incoming orders and capture it when shipping the goods. If you are selling services or non-tangible goods, you can use the sale transaction, which combines authorize and capture.
If you choose not to serve the customer, consider to void the authorize to unfreeze the amount on the client’s credit card.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4200000000000000')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// Account Owner
->setAccountFirstName('Travis')
->setAccountMiddleName('Joe')
->setAccountLastName('Pastrana');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.AuthorizeRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
AuthorizeRequest request = new AuthorizeRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4200000000000000");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Account Owner
request.setAccountFirstname("Travis");
request.setAccountMiddlename("Joe");
request.setAccountLastname("Pastrana");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4200000000000000",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"account_owner": {
"first_name": "Travis",
"middle_name": "Joe",
"last_name": "Pastrana"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_transaction>'
Funding Transaction Example
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<payment_transaction>transaction_type</payment_transaction>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
<funding>
<identifier_type>business_disbursement</identifier_type>
<receiver>
<first_name>Hamza</first_name>
<last_name>Arshad</last_name>
<country>AF</country>
<account_number>090078601</account_number>
<account_number_type>iban</account_number_type>
<address>Gulberg 21 street</address>
<state>CN</state>
<city>Lahore</city>
</receiver>
</funding>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: authorize |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
gaming | optional | "true" | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995. Contact tech-support@emerchantpay.com for more details |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
crypto | optional | "true" | Signifies whether a purchase of crypto-currency transaction is performed. Must be populated when purchasing crypto-currency with a VISA card. Must be populated when purchasing crypto-currency with a MASTER or INTL MAESTRO card and MCC is one of 6051, 6211. Contact tech-support@emerchantpay.com for more details |
preauthorization | optional | "true" | Signifies whether a preauthorization transaction is performed. Check the Preauthorizations section or contact tech support for more details. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
amount | required | integer >= 0 | Transaction amount in minor currency unit, see Currency and Amount Handling for details. In certain cases, it is possible to submit a transaction with a zero-value amount to act as an account verification transaction - Contact tech-support@emerchantpay.com for more details regarding this scenario. |
currency | required | string(3) | Currency code in ISO 4217 |
card_holder | required | string(255) | Full name of customer as printed on credit card (first name and last name at least) |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required* | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted. Cannot be set together with remember_card |
remember_card | optional | "true" | See Tokenize. Tokenizes cardholder parameters. Cannot be set together with token |
consumer_id | optional | string(10) | See Consumers and Tokenization. Combine with remember_card to tokenize or with token to use token |
scheme_tokenized | required* | "true" | Required when the card_number is DPAN instead of Funding Primary Account Number, see Tokenized e-commerce for details |
recurring_type | optional | string(255) | Specifies recurring type of the transaction, can be 'initial', 'managed' or 'subsequent'. |
installment_plan_id | optional | string | The ID of the chosen installment plan. Check Installments for more details. |
installment_plan_reference | optional | string | The installment plan reference identifier returned by the schemes. |
credential_on_file | required* | See Credential On File (COF) for more details | |
initial_customer_initiated | required* | string(18) | Initial transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
subsequent_customer_initiated | required* | string(18) | Subsequent transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
merchant_unscheduled | optional | string(20) | Transaction is initiated by the merchant |
credential_on_file_transaction_identifier | optional | string(15..32) | See Credential On File (COF) for more details |
credential_on_file_settlement_date | optional | string(4) | See Credential On File (COF) for more details |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
birth_date | required* | dd-mm-yyyy | Required when MCC is a Financial Services one (e.g. MCC 6012) and either card brand is Visa or Mastercard/Maestro with UK-based merchant, UK-based bin (domestic), and DEBIT card type |
document_id | required* | string(255) | Document ID value. |
fx_rate_id | optional | integer | See Get rates for FX Service. Offers the option to use a specific FX rate to convert the transaction processing amount. Used FX rate should have the same source currency as the processing currency. Contact tech-support@emerchantpay.com for more details |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
sca_params | optional | SCA params | |
exemption | optional | string | The exemption that the transaction should take advantage of. Note that the requested exemption may not be accepted due to internal risk validations. Check SCA exemption values. |
visa_merchant_id | required5 | string(8) | VMID assigned by Visa if participating in Trusted merchant program. |
funding | optional | Funding Transaction Params | |
identifier_type | required* | string | This is only required in case of Mastercard. Type of Funding Transaction. Please check Identifier Types |
business_application_identifier | required* | string | This is only required in case of VISA. Type of VISA Funding Transaction. Please check BAI |
receiver | optional | Funding Transaction Receiver details | |
first_name | required* | string | First name of the receiver |
last_name | required* | string | Last name of the receiver |
country | required* | string(2) | Country code in ISO 3166 |
account_number | required* | string | Receiver account number. Mandatory for Mastercard. If Sender Reference Number is provided then it becomes optional for VISA |
account_number_type | required* | string | This is only required in case of Mastercard. Receiver account number type. Please check Receiver Account Types |
address | required* | string | Receiver address. Only required in case of VISA and Canadian cards |
state | required* | string | Receiver state. Only required in case of VISA and Canadian cards |
city | required* | string | Receiver city. Only required in case of VISA and Canadian cards |
sender | optional | Funding Transaction Sender details | |
name | required* | string | Sender name. Only required in case of VISA |
reference_number | required* | string | Sender Reference Number. Only required in case of VISA. This is option if Receiver Account Number is provided |
country | required* | string | Sender country. Only required in case of VISA. If not provided billing address is used |
address | required* | string | Sender address. Only required in case of VISA. If not provided billing address is used |
state | required* | string | Sender state. Only required in case of VISA and Canadian card. If not provided billing address is used |
city | required* | string | Sender city. Only required in case of VISA. If not provided billing address is used |
account_owner | optional | Account owner parameters related to account owner inquiry requests | |
first_name | optional | string(35) | Account owner first name |
middle_name | optional | string(35) | Account owner middle name |
last_name | optional | string(35) | Account owner last name |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => authorize
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[avs_response_code] => 5I
[avs_response_text] => Response provided by issuer processor; Address information not verified
[cvv_result_code] => M
[authorization_code] => 345678
[retrieval_reference_number] => 016813015184
[payment_account_reference] => 50019P9LBXOLHN9G7QMU5VN520YSY
[response_code] => 00
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
[scheme_transaction_identifier] => 019091214161031
[scheme_transaction_link_id] => TLINKIDENTIFIER4521412
[scheme_pan_indicator] => V
[scheme_pan_tail] =>
[scheme_max_settlement_date] => 2024-07-31
[scheme_authentication_data_quality] => true
[scheme_settlement_date] => 0326
[scheme_response_code] => 00
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
[account_owner] => {"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}
)
<payment_response content=[
<transaction_type content=[authorize]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<avs_response_code content=[5I]>
<avs_response_text content=[Response provided by issuer processor; Address information not verified]>
<cvv_result_code content=[M]>
<authorization_code content=[345678]>
<retrieval_reference_number content=[016813015184]>
<payment_account_reference content=[50019P9LBXOLHN9G7QMU5VN520YSY]>
<response_code content=[00]>
<timestamp content=[2025-03-25T08:43:59Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
<scheme_transaction_identifier content=[019091214161031]>
<scheme_transaction_link_id content=[TLINKIDENTIFIER4521412]>
<scheme_pan_indicator content=[V]>
<scheme_pan_tail content=[]>
<scheme_max_settlement_date content=[2024-07-31]>
<scheme_authentication_data_quality content=[true]>
<scheme_settlement_date content=[0326]>
<scheme_response_code content=[00]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
<account_owner content=[{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}]>
]>
{
transaction_type: "authorize",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
avs_response_code: "5I",
avs_response_text: "Response provided by issuer processor; Address information not verified",
cvv_result_code: "M",
authorization_code: "345678",
retrieval_reference_number: "016813015184",
payment_account_reference: "50019P9LBXOLHN9G7QMU5VN520YSY",
response_code: "00",
timestamp: "2025-03-25T08:43:59Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
scheme_transaction_identifier: "019091214161031",
scheme_transaction_link_id: "TLINKIDENTIFIER4521412",
scheme_pan_indicator: "V",
scheme_pan_tail: "",
scheme_max_settlement_date: "2024-07-31",
scheme_authentication_data_quality: "true",
scheme_settlement_date: "0326",
scheme_response_code: "00",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
account_owner: "{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>authorize</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<avs_response_code>5I</avs_response_code>
<avs_response_text>Response provided by issuer processor; Address information not verified</avs_response_text>
<cvv_result_code>M</cvv_result_code>
<authorization_code>345678</authorization_code>
<retrieval_reference_number>016813015184</retrieval_reference_number>
<payment_account_reference>50019P9LBXOLHN9G7QMU5VN520YSY</payment_account_reference>
<response_code>00</response_code>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<scheme_transaction_identifier>019091214161031</scheme_transaction_identifier>
<scheme_transaction_link_id>TLINKIDENTIFIER4521412</scheme_transaction_link_id>
<scheme_pan_indicator>V</scheme_pan_indicator>
<payment_response>scheme_pan_tail</payment_response>
<scheme_max_settlement_date>2024-07-31</scheme_max_settlement_date>
<scheme_authentication_data_quality>true</scheme_authentication_data_quality>
<scheme_settlement_date>0326</scheme_settlement_date>
<scheme_response_code>00</scheme_response_code>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
token | string(36) | Plain-text token value. See Tokenization |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
cvv_result_code | string(1) | Card Verification Value response code. Optional, returned only if acquirer supports it |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
payment_account_reference | string(255) | Payment Account Reference value returned from the schemes. Links tokenized and PAN-based transactions. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
scheme_transaction_identifier | string(32) | Id defined by card schemes. Corresponds to NETWORK DATA (field 63) for MasterCard or TRANS ID (field 62.2/125) for VISA. |
scheme_transaction_link_id | string(22) | The transaction unique identifier returned from the schemes. Corresponds to ADDITIONAL SERVICE DATA (field 65, MasterCard Transaction Link Id [TLID]). |
scheme_pan_indicator | string(1) | The account number indicator in scheme-tokenized transactions. See Account number indicator codes for details. |
scheme_pan_tail | string(4) | The tail of the PAN number tail associated with the token in scheme-tokenized transactions. Returned in conjunction with scheme_pan_indicator . |
scheme_max_settlement_date | string(10) | The final date an authorization could be captured which is returned from the card scheme. See Scheme Maximum Settlement Date for more details. |
scheme_authentication_data_quality | boolean | The Authentication Data Quality Indicator returned by the card scheme is used to indicate whether a transaction meets the authentication data quality requirements. The value can be either true or false . |
scheme_settlement_date | string(4) | MasterCard settlement date in MMDD format (e.g. 0326). Corresponds to NETWORK DATA (field 15). |
scheme_response_code | string(2) | The response code returned from the schemes. See Scheme response codes for details. |
recurring_advice_code | string(2) | Additional response code returned from the schemes. See Recurring advice details |
recurring_advice_text | string(255) | The text representation of the recurring advice code. |
reason_for_not_honoring_exemption | string | Reason for not honoring exemption. Check SCA Reason For Not Honoring Exemption Values. |
sca_exemption_result | string | SCA exemption result. Check SCA Exemption Result Values. |
Error Response
stdClass Object
(
[transaction_type] => authorize
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[technical_message] => expiration_year is invalid
[message] => expiration_year is invalid
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[authorize]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[340]>
<technical_message content=[expiration_year is invalid]>
<message content=[expiration_year is invalid]>
<timestamp content=[2025-03-25T08:43:59Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "authorize",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "340",
technical_message: "expiration_year is invalid",
message: "expiration_year is invalid",
timestamp: "2025-03-25T08:43:59Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>authorize</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<technical_message>expiration_year is invalid</technical_message>
<message>expiration_year is invalid</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Capture
Capture settles a transaction which has been authorized before.
Do this when you are shipping goods, for example. A capture can only be used after an authorize on the same transaction and on the same terminal.
Therefore, the reference id of the authorized transaction is mandatory.
Transaction workflow:
- The merchant sends authorize transaction to the gateway.
- The gateway replies to it. One of returned values is the unique id of the transaction.
- The merchant sends capture transaction. Its reference id is unique id of authorize response.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Capture');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReferenceId('43672')
->setAmount('100')
->setCurrency('USD');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.CaptureRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
CaptureRequest request = new CaptureRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReferenceId("43672");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.capture(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"reference_id": "43672",
"amount": "100",
"currency": "USD",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>capture</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<reference_id>43672</reference_id>
<amount>100</amount>
<currency>USD</currency>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: capture |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
reference_id | required | string(32) | Unique id returned by corresponding transaction |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => capture
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[authorization_code] => 345678
[response_code] => 00
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[capture]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<authorization_code content=[345678]>
<response_code content=[00]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:43:59Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "capture",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
authorization_code: "345678",
response_code: "00",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:43:59Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>capture</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<authorization_code>345678</authorization_code>
<response_code>00</response_code>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => capture
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 430
[technical_message] => Reference transaction has already been captured, and acquirer does not support partial/multiple capture
[message] => Transaction declined.
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[capture]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[430]>
<technical_message content=[Reference transaction has already been captured, and acquirer does not support partial/multiple capture]>
<message content=[Transaction declined.]>
<timestamp content=[2025-03-25T08:43:59Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "capture",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "430",
technical_message: "Reference transaction has already been captured, and acquirer does not support partial/multiple capture",
message: "Transaction declined.",
timestamp: "2025-03-25T08:43:59Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>capture</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>430</code>
<technical_message>Reference transaction has already been captured, and acquirer does not support partial/multiple capture</technical_message>
<message>Transaction declined.</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Sale
Sale transactions combine authorize and capture into one step.
Using a sale transaction, the amount is immediately billed to the customer’s credit card. It can be reversed via a void transaction on the same day of the transaction. Use sale transactions, if you are e.g. selling non-tangible goods or services.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4200000000000000')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// Account Owner
->setAccountFirstName('Travis')
->setAccountMiddleName('Joe')
->setAccountLastName('Pastrana');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.SaleRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
SaleRequest request = new SaleRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4200000000000000");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Account Owner
request.setAccountFirstname("Travis");
request.setAccountMiddlename("Joe");
request.setAccountLastname("Pastrana");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4200000000000000",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"account_owner": {
"first_name": "Travis",
"middle_name": "Joe",
"last_name": "Pastrana"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_transaction>'
Funding Transaction Example
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<payment_transaction>transaction_type</payment_transaction>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
<funding>
<identifier_type>business_disbursement</identifier_type>
<receiver>
<first_name>Hamza</first_name>
<last_name>Arshad</last_name>
<country>AF</country>
<account_number>090078601</account_number>
<account_number_type>iban</account_number_type>
<address>Gulberg 21 street</address>
<state>CN</state>
<city>Lahore</city>
</receiver>
</funding>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sale |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
gaming | optional | "true" | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995. Contact tech-support@emerchantpay.com for more details |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
crypto | optional | "true" | Signifies whether a purchase of crypto-currency transaction is performed. Must be populated when purchasing crypto-currency with a VISA card. Must be populated when purchasing crypto-currency with a MASTER or INTL MAESTRO card and MCC is one of 6051, 6211. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
amount | required | integer >= 0 | Transaction amount in minor currency unit, see Currency and Amount Handling for details. In certain cases, it is possible to submit a transaction with a zero-value amount to act as an account verification transaction - Contact tech-support@emerchantpay.com for more details regarding this scenario. |
currency | required | string(3) | Currency code in ISO 4217 |
card_holder | required | string(255) | Full name of customer as printed on credit card (first name and last name at least) |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required* | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted. Cannot be set together with remember_card |
remember_card | optional | "true" | See Tokenize. Tokenizes cardholder parameters. Cannot be set together with token |
consumer_id | optional | string(10) | See Consumers and Tokenization. Combine with remember_card to tokenize or with token to use token |
scheme_tokenized | required* | "true" | Required when the card_number is DPAN instead of Funding Primary Account Number, see Tokenized e-commerce for details |
recurring_type | optional | string(255) | Specifies recurring type of the transaction, can be 'initial', 'managed' or 'subsequent'. |
reference_id | optional | string(32) | Unique id returned by corresponding transaction |
installment_plan_id | optional | string | The ID of the chosen installment plan. Check Installments for more details. |
installment_plan_reference | optional | string | The installment plan reference identifier returned by the schemes. |
credential_on_file | required* | See Credential On File (COF) for more details | |
initial_customer_initiated | required* | string(18) | Initial transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
subsequent_customer_initiated | required* | string(18) | Subsequent transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
merchant_unscheduled | optional | string(20) | Transaction is initiated by the merchant |
credential_on_file_transaction_identifier | optional | string(15..32) | See Credential On File (COF) for more details |
credential_on_file_settlement_date | optional | string(4) | See Credential On File (COF) for more details |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
birth_date | required* | dd-mm-yyyy | Required when MCC is a Financial Services one (e.g. MCC 6012) and either card brand is Visa or Mastercard/Maestro with UK-based merchant, UK-based bin (domestic), and DEBIT card type |
document_id | required* | string(255) | Document ID value. |
fx_rate_id | optional | integer | See Get rates for FX Service. Offers the option to use a specific FX rate to convert the transaction processing amount. Used FX rate should have the same source currency as the processing currency. Contact tech-support@emerchantpay.com for more details |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
sca_params | optional | SCA params | |
exemption | optional | string | The exemption that the transaction should take advantage of. Note that the requested exemption may not be accepted due to internal risk validations. Check SCA exemption values. |
visa_merchant_id | required5 | string(8) | VMID assigned by Visa if participating in Trusted merchant program. |
funding | optional | Funding Transaction Params | |
identifier_type | required* | string | This is only required in case of Mastercard. Type of Funding Transaction. Please check Identifier Types |
business_application_identifier | required* | string | This is only required in case of VISA. Type of VISA Funding Transaction. Please check BAI |
receiver | optional | Funding Transaction Receiver details | |
first_name | required* | string | First name of the receiver |
last_name | required* | string | Last name of the receiver |
country | required* | string(2) | Country code in ISO 3166 |
account_number | required* | string | Receiver account number. Mandatory for Mastercard. If Sender Reference Number is provided then it becomes optional for VISA |
account_number_type | required* | string | This is only required in case of Mastercard. Receiver account number type. Please check Receiver Account Types |
address | required* | string | Receiver address. Only required in case of VISA and Canadian cards |
state | required* | string | Receiver state. Only required in case of VISA and Canadian cards |
city | required* | string | Receiver city. Only required in case of VISA and Canadian cards |
sender | optional | Funding Transaction Sender details | |
name | required* | string | Sender name. Only required in case of VISA |
reference_number | required* | string | Sender Reference Number. Only required in case of VISA. This is option if Receiver Account Number is provided |
country | required* | string | Sender country. Only required in case of VISA. If not provided billing address is used |
address | required* | string | Sender address. Only required in case of VISA. If not provided billing address is used |
state | required* | string | Sender state. Only required in case of VISA and Canadian card. If not provided billing address is used |
city | required* | string | Sender city. Only required in case of VISA. If not provided billing address is used |
account_owner | optional | Account owner parameters related to account owner inquiry requests | |
first_name | optional | string(35) | Account owner first name |
middle_name | optional | string(35) | Account owner middle name |
last_name | optional | string(35) | Account owner last name |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => sale
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[avs_response_code] => 5I
[avs_response_text] => Response provided by issuer processor; Address information not verified
[cvv_result_code] => M
[authorization_code] => 345678
[retrieval_reference_number] => 016813015184
[payment_account_reference] => 50019P9LBXOLHN9G7QMU5VN520YSY
[response_code] => 00
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
[scheme_transaction_identifier] => 019091214161031
[scheme_transaction_link_id] => TLINKIDENTIFIER4521412
[scheme_pan_indicator] => V
[scheme_pan_tail] =>
[scheme_max_settlement_date] => 2024-07-31
[scheme_authentication_data_quality] => true
[scheme_settlement_date] => 0326
[scheme_response_code] => 00
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
[account_owner] => {"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}
)
<payment_response content=[
<transaction_type content=[sale]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<avs_response_code content=[5I]>
<avs_response_text content=[Response provided by issuer processor; Address information not verified]>
<cvv_result_code content=[M]>
<authorization_code content=[345678]>
<retrieval_reference_number content=[016813015184]>
<payment_account_reference content=[50019P9LBXOLHN9G7QMU5VN520YSY]>
<response_code content=[00]>
<timestamp content=[2025-03-25T08:43:59Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
<scheme_transaction_identifier content=[019091214161031]>
<scheme_transaction_link_id content=[TLINKIDENTIFIER4521412]>
<scheme_pan_indicator content=[V]>
<scheme_pan_tail content=[]>
<scheme_max_settlement_date content=[2024-07-31]>
<scheme_authentication_data_quality content=[true]>
<scheme_settlement_date content=[0326]>
<scheme_response_code content=[00]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
<account_owner content=[{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}]>
]>
{
transaction_type: "sale",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
avs_response_code: "5I",
avs_response_text: "Response provided by issuer processor; Address information not verified",
cvv_result_code: "M",
authorization_code: "345678",
retrieval_reference_number: "016813015184",
payment_account_reference: "50019P9LBXOLHN9G7QMU5VN520YSY",
response_code: "00",
timestamp: "2025-03-25T08:43:59Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
scheme_transaction_identifier: "019091214161031",
scheme_transaction_link_id: "TLINKIDENTIFIER4521412",
scheme_pan_indicator: "V",
scheme_pan_tail: "",
scheme_max_settlement_date: "2024-07-31",
scheme_authentication_data_quality: "true",
scheme_settlement_date: "0326",
scheme_response_code: "00",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
account_owner: "{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<avs_response_code>5I</avs_response_code>
<avs_response_text>Response provided by issuer processor; Address information not verified</avs_response_text>
<cvv_result_code>M</cvv_result_code>
<authorization_code>345678</authorization_code>
<retrieval_reference_number>016813015184</retrieval_reference_number>
<payment_account_reference>50019P9LBXOLHN9G7QMU5VN520YSY</payment_account_reference>
<response_code>00</response_code>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<scheme_transaction_identifier>019091214161031</scheme_transaction_identifier>
<scheme_transaction_link_id>TLINKIDENTIFIER4521412</scheme_transaction_link_id>
<scheme_pan_indicator>V</scheme_pan_indicator>
<payment_response>scheme_pan_tail</payment_response>
<scheme_max_settlement_date>2024-07-31</scheme_max_settlement_date>
<scheme_authentication_data_quality>true</scheme_authentication_data_quality>
<scheme_settlement_date>0326</scheme_settlement_date>
<scheme_response_code>00</scheme_response_code>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
token | string(36) | Plain-text token value. See Tokenization |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
cvv_result_code | string(1) | Card Verification Value response code. Optional, returned only if acquirer supports it |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
payment_account_reference | string(255) | Payment Account Reference value returned from the schemes. Links tokenized and PAN-based transactions. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
scheme_transaction_identifier | string(32) | Id defined by card schemes. Corresponds to NETWORK DATA (field 63) for MasterCard or TRANS ID (field 62.2/125) for VISA. |
scheme_transaction_link_id | string(22) | The transaction unique identifier returned from the schemes. Corresponds to ADDITIONAL SERVICE DATA (field 65, MasterCard Transaction Link Id [TLID]). |
scheme_pan_indicator | string(1) | The account number indicator in scheme-tokenized transactions. See Account number indicator codes for details. |
scheme_pan_tail | string(4) | The tail of the PAN number tail associated with the token in scheme-tokenized transactions. Returned in conjunction with scheme_pan_indicator . |
scheme_max_settlement_date | string(10) | The final date an authorization could be captured which is returned from the card scheme. See Scheme Maximum Settlement Date for more details. |
scheme_authentication_data_quality | boolean | The Authentication Data Quality Indicator returned by the card scheme is used to indicate whether a transaction meets the authentication data quality requirements. The value can be either true or false . |
scheme_settlement_date | string(4) | MasterCard settlement date in MMDD format (e.g. 0326). Corresponds to NETWORK DATA (field 15). |
scheme_response_code | string(2) | The response code returned from the schemes. See Scheme response codes for details. |
recurring_advice_code | string(2) | Additional response code returned from the schemes. See Recurring advice details |
recurring_advice_text | string(255) | The text representation of the recurring advice code. |
reason_for_not_honoring_exemption | string | Reason for not honoring exemption. Check SCA Reason For Not Honoring Exemption Values. |
sca_exemption_result | string | SCA exemption result. Check SCA Exemption Result Values. |
Error Response
stdClass Object
(
[transaction_type] => sale
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[response_code] => 57
[code] => 340
[technical_message] => billing_address[zip_code] is invalid!
[message] => billing_address[zip_code] is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[sale]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<response_code content=[57]>
<code content=[340]>
<technical_message content=[billing_address[zip_code] is invalid!]>
<message content=[billing_address[zip_code] is invalid!]>
<timestamp content=[2025-03-25T08:43:59Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "sale",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
response_code: "57",
code: "340",
technical_message: "billing_address[zip_code] is invalid!",
message: "billing_address[zip_code] is invalid!",
timestamp: "2025-03-25T08:43:59Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<response_code>57</response_code>
<code>340</code>
<technical_message>billing_address[zip_code] is invalid!</technical_message>
<message>billing_address[zip_code] is invalid!</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Argencard
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Argencard');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('barney@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Buenos Aires')
->setBillingNeighborhood('Recoleta')
->setBillingCountry('AR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>argencard</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>barney@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Buenos Aires</city>
<neighborhood>Recoleta</neighborhood>
<country>AR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: argencard |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National Identifier number of the customer |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
AR |
Successful Response
stdClass Object
(
[transaction_type] => argencard
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>argencard</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => argencard
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>argencard</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Aura
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Aura');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('barney@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Salvador')
->setBillingNeighborhood('Historic Center of Salvador')
->setBillingCountry('BR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>aura</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>barney@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Salvador</city>
<neighborhood>Historic Center of Salvador</neighborhood>
<country>BR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: aura |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National Identifier number of the customer |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
BR |
Successful Response
stdClass Object
(
[transaction_type] => aura
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>aura</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => aura
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:43:59.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>aura</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:43:59Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Bancontact
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>bcmc</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>EUR</currency>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>12114</zip_code>
<city>Brussels</city>
<neighborhood>City Center</neighborhood>
<country>BE</country>
</billing_address>
</payment_transaction>'
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Alternatives\Ppro');
$request = $genesis->request();
$request
->setPaymentType('bcmc')
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('EUR')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('12114')
->setBillingCity('Brussels')
->setBillingNeighborhood('City Center')
->setBillingCountry('BE');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.apm.PProRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
PProRequest request = new PProRequest();
request.setPaymentType("bcmc");
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("EUR");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("12114");
request.setBillingCity("Brussels");
request.setBillingNeighborhood("City Center");
request.setBillingCountry("BE");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.ppro(
{
"payment_type": "bcmc",
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "EUR",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "12114",
"city": "Brussels",
"neighborhood": "City Center",
"country": "BE"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>ppro</transaction_type>
<payment_type>bcmc</payment_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>EUR</currency>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>12114</zip_code>
<city>Brussels</city>
<neighborhood>City Center</neighborhood>
<country>BE</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | ppro or bcmc. Contact tech support at tech-support@emerchantpay.com for more details. |
payment_type | required* | bcmc | Bancontact Mr. Cash. Contact tech support for more details |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported currencies and countries:
Currency code | Country code |
---|---|
EUR | BE |
Successful Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>bcmc</transaction_type>
<status>pending_async</status>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<transaction_id>119643250547501c79d8295</transaction_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<mode>live</mode>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response
stdClass Object
(
[transaction_type] => ppro
[status] => pending_async
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[transaction_id] => 119643250547501c79d8295
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[mode] => live
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[ppro]>
<status content=[pending_async]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<transaction_id content=[119643250547501c79d8295]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<mode content=[live]>
<timestamp content=[2025-03-25T08:44:00Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "ppro",
status: "pending_async",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
transaction_id: "119643250547501c79d8295",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
mode: "live",
timestamp: "2025-03-25T08:44:00Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ppro</transaction_type>
<status>pending_async</status>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<transaction_id>119643250547501c79d8295</transaction_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<mode>live</mode>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
transaction_id | string(255) | Unique transaction id defined by merchant |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>bcmc</transaction_type>
<status>error</status>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<transaction_id>119643250547501c79d8295</transaction_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response
stdClass Object
(
[transaction_type] => ppro
[status] => error
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[transaction_id] => 119643250547501c79d8295
[code] => 110
[technical_message] =>
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[ppro]>
<status content=[error]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<transaction_id content=[119643250547501c79d8295]>
<code content=[110]>
<technical_message content=[]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:00Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "ppro",
status: "error",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
transaction_id: "119643250547501c79d8295",
code: "110",
technical_message: "",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:00Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ppro</transaction_type>
<status>error</status>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<transaction_id>119643250547501c79d8295</transaction_id>
<code>110</code>
<payment_response>technical_message</payment_response>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
transaction_id | string(255) | Unique transaction id defined by merchant |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Cabal
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Cabal');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('braney_rubble')
->setNationalId('8812128812')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>cabal</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>braney_rubble</consumer_reference>
<national_id>8812128812</national_id>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: cabal |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National Identifier number of the customer |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries
Country Name | Country Code |
---|---|
Argentina | AR |
Successful Response
stdClass Object
(
[status] => pending_async
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[transaction_id] => 119643250547501c79d8295
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61d0
[mode] => live
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<status>pending_async</status>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<transaction_id>119643250547501c79d8295</transaction_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61d0</redirect_url>
<mode>live</mode>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
status | string(255) | Status of the transaction, see states |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
transaction_id | string(255) | Unique transaction id defined by merchant |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[status] => error
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[transaction_id] => 119643250547501c79d8295
[code] => 110
[message] => Something went wrong, please contact support!
[mode] => live
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<status>error</status>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<transaction_id>119643250547501c79d8295</transaction_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<mode>live</mode>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
status | string(255) | Status of the transaction, see states |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
transaction_id | string(255) | Unique transaction id defined by merchant |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Cencosud
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Cencosud');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('barney@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Buenos Aires')
->setBillingNeighborhood('Recoleta')
->setBillingCountry('AR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>cencosud</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>barney@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Buenos Aires</city>
<neighborhood>Recoleta</neighborhood>
<country>AR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: cencosud |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National Identifier number of the customer |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
AR |
Successful Response
stdClass Object
(
[transaction_type] => cencosud
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>cencosud</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => cencosud
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>cencosud</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Credit (CFT)
Credits (also known as Credit Fund Transfer a.k.a. CFT) can be done with an initial reference transaction.
This transaction type allows you to transfer funds to a previously charged card. The amount can be higher than the charged reference. Credits can only be done on former sale, sale3d, init recurring sale, init recurring sale3d, recurring sale or capture transaction. Therefore, the reference_id for the corresponding transaction is mandatory.
Both Visa and Mastercard/Maestro credits are authorized real-time.
Note that for exceptional cases with some countries Visa OCTS will not be authorized through the schemes but batched for offline settlement on the same day. This means that the authorization code and issuer response code will not be available only for them.
Note that VISA OCT transactions with Australian or Canadian card bins will require the merchant zip code to be set, either through the dynamic descriptor parameter or through the merchant configuration.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Credit');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setReferenceId('43672')
->setAmount('100')
// Account Owner
->setAccountFirstName('Travis')
->setAccountMiddleName('Joe')
->setAccountLastName('Pastrana');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.CreditRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
CreditRequest request = new CreditRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setReferenceId("43672");
request.setAmount(new BigDecimal(100));
// Account Owner
request.setAccountFirstname("Travis");
request.setAccountMiddlename("Joe");
request.setAccountLastname("Pastrana");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.credit(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"reference_id": "43672",
"amount": "100",
"account_owner": {
"first_name": "Travis",
"middle_name": "Joe",
"last_name": "Pastrana"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>credit</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<reference_id>43672</reference_id>
<amount>100</amount>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: credit |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
crypto | optional | "true" | Signifies whether a crypto-currency transaction is performed. Must be populated when indicating crypto for VISA and MCC 6051. This is only applied to VISA OCT transactions. Contact Tech Support for more details. |
reference_id | required | string(32) | Unique id returned by corresponding transaction |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
source_of_funds | optional | string | Specify the source of funds with one of credit , debit , prepaid , cash , other_debit_account , other_credit_account . |
purpose_of_payment | required* | string (12) | Purpose of Payment code, required for Visa OCTs with recipients in Argentina, Bangladesh, Egypt, India, Chile and Colombia. |
customer_identification | required* | See Customer Identification Parameters for more details. | |
owner | required* | string(255) | The owner of the document ID |
type | required* | string(255) | The type of the document ID |
subtype | required* | string(255) | The subtype of the document ID |
document_id | required* | string(255) | Document ID value. |
issuing_country | required* | string(2) | The issuing country of the document ID |
account_owner | optional | Account owner parameters related to account owner inquiry requests | |
first_name | optional | string(35) | Account owner first name |
middle_name | optional | string(35) | Account owner middle name |
last_name | optional | string(35) | Account owner last name |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => credit
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[authorization_code] => 345678
[retrieval_reference_number] => 016813015184
[response_code] => 00
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[scheme_response_code] => 00
[account_owner] => {"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}
)
<payment_response content=[
<transaction_type content=[credit]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<authorization_code content=[345678]>
<retrieval_reference_number content=[016813015184]>
<response_code content=[00]>
<timestamp content=[2025-03-25T08:44:00Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<scheme_response_code content=[00]>
<account_owner content=[{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}]>
]>
{
transaction_type: "credit",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
authorization_code: "345678",
retrieval_reference_number: "016813015184",
response_code: "00",
timestamp: "2025-03-25T08:44:00Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
scheme_response_code: "00",
account_owner: "{"first_name"=>"Travis", "middle_name"=>"Joe", "last_name"=>"Pastrana"}",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>credit</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<authorization_code>345678</authorization_code>
<retrieval_reference_number>016813015184</retrieval_reference_number>
<response_code>00</response_code>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<scheme_response_code>00</scheme_response_code>
<account_owner>
<first_name>Travis</first_name>
<middle_name>Joe</middle_name>
<last_name>Pastrana</last_name>
</account_owner>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
scheme_response_code | string(2) | The response code returned from the schemes. See Scheme response codes for details. |
recurring_advice_code | string(2) | Additional response code returned from the schemes. See Recurring advice details |
recurring_advice_text | string(255) | The text representation of the recurring advice code. |
Error Response
stdClass Object
(
[transaction_type] => credit
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[response_code] => 57
[code] => 410
[technical_message] => No approved reference transaction found
[message] => No approved reference transaction found
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
)
<payment_response content=[
<transaction_type content=[credit]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<response_code content=[57]>
<code content=[410]>
<technical_message content=[No approved reference transaction found]>
<message content=[No approved reference transaction found]>
<timestamp content=[2025-03-25T08:44:00Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
]>
{
transaction_type: "credit",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
response_code: "57",
code: "410",
technical_message: "No approved reference transaction found",
message: "No approved reference transaction found",
timestamp: "2025-03-25T08:44:00Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>credit</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<response_code>57</response_code>
<code>410</code>
<technical_message>No approved reference transaction found</technical_message>
<message>No approved reference transaction found</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
Elo
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Elo');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('barney@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Salvador')
->setBillingNeighborhood('Historic Center of Salvador')
->setBillingCountry('BR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>elo</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>barney@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Salvador</city>
<neighborhood>Historic Center of Salvador</neighborhood>
<country>BR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: elo |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National Identifier number of the customer |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
BR |
Successful Response
stdClass Object
(
[transaction_type] => elo
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>elo</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => elo
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>elo</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Naranja
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Naranja');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('barney@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Buenos Aires')
->setBillingCountry('AR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>naranja</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>barney@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Buenos Aires</city>
<country>AR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: naranja |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National Identifier number of the customer |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
AR |
Successful Response
stdClass Object
(
[transaction_type] => naranja
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>naranja</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => naranja
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>naranja</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Nativa
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Nativa');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('barney@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Buenos Aires')
->setBillingCountry('AR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>nativa</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>barney@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Buenos Aires</city>
<country>AR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: nativa |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National Identifier number of the customer |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
AR |
Successful Response
stdClass Object
(
[transaction_type] => nativa
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>nativa</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => nativa
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>nativa</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Tarjeta Shopping
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\TarjetaShopping');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rubble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Rosario')
->setBillingCountry('AR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>tarjeta_shopping</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rubble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Rosario</city>
<country>AR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: tarjeta_shopping |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National Identifier number of the customer |
birth_date | optional | string(20) | Birth date of the customer |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
AR |
Successful Response
stdClass Object
(
[transaction_type] => tarjeta_shopping
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>tarjeta_shopping</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => tarjeta_shopping
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>tarjeta_shopping</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Non-financial Transactions
Account Verification v2
Account Verification transaction can be used to verify the account's existence for a given cardholder without any financial impact. To create an Account Verification transaction, you have to submit a Sale, Sale(3D), Authorize or Authorize(3d) transaction with zero amount.
Example Of Sale(3d) Transaction As Account Verification
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('0')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4200000000000000')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Sale3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Sale3DRequest request = new Sale3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(0));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4200000000000000");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": 0,
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4200000000000000",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>0</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Example Of Authorize(3d) Transaction As Account Verification
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('0')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4200000000000000')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Authorize3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Authorize3DRequest request = new Authorize3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(0));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4200000000000000");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": 0,
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4200000000000000",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>0</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sale, sale(3d), authorize or authorize(3d) |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
gaming | optional | "true" | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995. Contact tech-support@emerchantpay.com for more details |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
crypto | optional | "true" | Signifies whether a purchase of crypto-currency transaction is performed. Must be populated when purchasing crypto-currency with a VISA card. Must be populated when purchasing crypto-currency with a MASTER or INTL MAESTRO card and MCC is one of 6051, 6211. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
amount | required | integer = 0 | Transaction amount in minor currency unit, see Currency and Amount Handling for details. By submitting zero value amount you can verify the account's existence for a given cardholder without any financial impact. |
currency | required | string(3) | Currency code in ISO 4217 |
card_holder | required | string(255) | Full name of customer as printed on credit card (first name and last name at least) |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required* | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted. Cannot be set together with remember_card |
remember_card | optional | "true" | See Tokenize. Tokenizes cardholder parameters. Cannot be set together with token |
consumer_id | optional | string(10) | See Consumers and Tokenization. Combine with remember_card to tokenize or with token to use token |
scheme_tokenized | required* | "true" | Required when the card_number is DPAN instead of Funding Primary Account Number, see Tokenized e-commerce for details |
recurring_type | optional | string(255) | Specifies recurring type of the transaction, can be 'initial', 'managed' or 'subsequent'. |
reference_id | optional | string(32) | Unique id returned by corresponding transaction |
credential_on_file | required* | See Credential On File (COF) for more details | |
initial_customer_initiated | required* | string(18) | Initial transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
subsequent_customer_initiated | required* | string(18) | Subsequent transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
merchant_unscheduled | optional | string(20) | Transaction is initiated by the merchant |
credential_on_file_transaction_identifier | optional | string(15..32) | See Credential On File (COF) for more details |
credential_on_file_settlement_date | optional | string(4) | See Credential On File (COF) for more details |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
birth_date | required* | dd-mm-yyyy | Required when MCC is a Financial Services one (e.g. MCC 6012) and either card brand is Visa or Mastercard/Maestro with UK-based merchant, UK-based bin (domestic), and DEBIT card type |
document_id | required* | string(255) | Document ID value. |
fx_rate_id | optional | integer | See Get rates for FX Service. Offers the option to use a specific FX rate to convert the transaction processing amount. Used FX rate should have the same source currency as the processing currency. Contact tech-support@emerchantpay.com for more details |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
sca_params | optional | SCA params | |
exemption | optional | string | The exemption that the transaction should take advantage of. Note that the requested exemption may not be accepted due to internal risk validations. Check SCA exemption values. |
visa_merchant_id | required5 | string(8) | VMID assigned by Visa if participating in Trusted merchant program. |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => sale3d
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[cvv_result_code] => P
[authorization_code] => 271621
[retrieval_reference_number] => 311709000149
[response_code] => 83
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 0
[currency] => USD
[scheme_transaction_identifier] => 427105912289261
[scheme_response_code] => 00
)
<payment_response content=[
<transaction_type content=[sale3d]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<cvv_result_code content=[P]>
<authorization_code content=[271621]>
<retrieval_reference_number content=[311709000149]>
<response_code content=[83]>
<timestamp content=[2025-03-25T08:44:00Z]>
<descriptor content=[Descriptor one]>
<amount content=[0]>
<currency content=[USD]>
<scheme_transaction_identifier content=[427105912289261]>
<scheme_response_code content=[00]>
]>
{
transaction_type: "sale3d",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
cvv_result_code: "P",
authorization_code: "271621",
retrieval_reference_number: "311709000149",
response_code: "83",
timestamp: "2025-03-25T08:44:00Z",
descriptor: "Descriptor one",
amount: "0",
currency: "USD",
scheme_transaction_identifier: "427105912289261",
scheme_response_code: "00",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale3d</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<cvv_result_code>P</cvv_result_code>
<authorization_code>271621</authorization_code>
<retrieval_reference_number>311709000149</retrieval_reference_number>
<response_code>83</response_code>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>0</amount>
<currency>USD</currency>
<scheme_transaction_identifier>427105912289261</scheme_transaction_identifier>
<scheme_response_code>00</scheme_response_code>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
token | string(36) | Plain-text token value. See Tokenization |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
cvv_result_code | string(1) | Card Verification Value response code. Optional, returned only if acquirer supports it |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
scheme_transaction_identifier | string(32) | Id defined by card schemes. Corresponds to NETWORK DATA (field 63) for MasterCard or TRANS ID (field 62.2/125) for VISA. |
scheme_settlement_date | string(4) | MasterCard settlement date in MMDD format (e.g. 0326). Corresponds to NETWORK DATA (field 15). |
scheme_response_code | string(2) | The response code returned from the schemes. See Scheme response codes for details. |
recurring_advice_code | string(2) | Additional response code returned from the schemes. See Recurring advice details |
recurring_advice_text | string(255) | The text representation of the recurring advice code. |
reason_for_not_honoring_exemption | string | Reason for not honoring exemption. Check SCA Reason For Not Honoring Exemption Values. |
sca_exemption_result | string | SCA exemption result. Check SCA Exemption Result Values. |
Error Response
stdClass Object
(
[transaction_type] => sale3d
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[technical_message] => billing_address[zip_code] is invalid!
[message] => billing_address[zip_code] is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 0
[currency] => USD
)
<payment_response content=[
<transaction_type content=[sale3d]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[340]>
<technical_message content=[billing_address[zip_code] is invalid!]>
<message content=[billing_address[zip_code] is invalid!]>
<timestamp content=[2025-03-25T08:44:00Z]>
<descriptor content=[Descriptor one]>
<amount content=[0]>
<currency content=[USD]>
]>
{
transaction_type: "sale3d",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "340",
technical_message: "billing_address[zip_code] is invalid!",
message: "billing_address[zip_code] is invalid!",
timestamp: "2025-03-25T08:44:00Z",
descriptor: "Descriptor one",
amount: "0",
currency: "USD",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale3d</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<technical_message>billing_address[zip_code] is invalid!</technical_message>
<message>billing_address[zip_code] is invalid!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>0</amount>
<currency>USD</currency>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Account Verification
Account Verification transactions are implemented using the so-called zero-value auths.
Using an account verification transaction, the account existence for a given cardholder can be verified without any financial impact.
Note the account verification can also carry on an AVS request, thus you can also get the AVS response code and text by the schemes along with it. Refer to section AVS Status Codes for more information.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('NonFinancial\AccountVerification');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setCardHolder('Travis Pastrana')
->setCardNumber('4200000000000000')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.nonfinancial.AccountVerificationRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
AccountVerificationRequest request = new AccountVerificationRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4200000000000000");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.account_verification(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"card_holder": "Travis Pastrana",
"card_number": "4200000000000000",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>account_verification</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Example When Issuer Supports Oct For This Pan:
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('NonFinancial\AccountVerification');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setIssuerOctEnabled('true')
->setRemoteIp('245.253.2.12')
->setCardHolder('Travis Pastrana')
->setCardNumber('4200000000000000')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.nonfinancial.AccountVerificationRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
AccountVerificationRequest request = new AccountVerificationRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setIssuerOctEnabled("true");
request.setRemoteIp("245.253.2.12");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4200000000000000");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.account_verification(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"issuer_oct_enabled": true,
"remote_ip": "245.253.2.12",
"card_holder": "Travis Pastrana",
"card_number": "4200000000000000",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>account_verification</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<issuer_oct_enabled>true</issuer_oct_enabled>
<remote_ip>245.253.2.12</remote_ip>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: account_verification |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
issuer_oct_enabled | optional | true | Supported only by Visa. When submitted, Visa checks if the given PAN supports OCTs at the issuer. When not submitted, it is interpreted as a normal account verification. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
card_holder | required | string(255) | Full name of customer as printed on credit card (first name and last name at least) |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required* | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted. Cannot be set together with remember_card |
remember_card | optional | "true" | See Tokenize. Tokenizes cardholder parameters. Cannot be set together with token |
consumer_id | optional | string(10) | See Consumers and Tokenization. Combine with remember_card to tokenize or with token to use token |
credential_on_file | required* | See Credential On File (COF) for more details | |
initial_customer_initiated | required* | string(18) | Initial transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
subsequent_customer_initiated | required* | string(18) | Subsequent transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
merchant_unscheduled | optional | string(20) | Transaction is initiated by the merchant |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
document_id | required* | string(255) | Document ID value. |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => account_verification
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[avs_response_code] => 5I
[avs_response_text] => Response provided by issuer processor; Address information not verified
[authorization_code] => 345678
[response_code] => 00
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[sent_to_acquirer] => true
[scheme_transaction_identifier] => 019091214161031
[scheme_settlement_date] => 0326
[scheme_response_code] => 00
)
<payment_response content=[
<transaction_type content=[account_verification]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<avs_response_code content=[5I]>
<avs_response_text content=[Response provided by issuer processor; Address information not verified]>
<authorization_code content=[345678]>
<response_code content=[00]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:00Z]>
<descriptor content=[Descriptor one]>
<sent_to_acquirer content=[true]>
<scheme_transaction_identifier content=[019091214161031]>
<scheme_settlement_date content=[0326]>
<scheme_response_code content=[00]>
]>
{
transaction_type: "account_verification",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
avs_response_code: "5I",
avs_response_text: "Response provided by issuer processor; Address information not verified",
authorization_code: "345678",
response_code: "00",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:44:00Z",
descriptor: "Descriptor one",
sent_to_acquirer: "true",
scheme_transaction_identifier: "019091214161031",
scheme_settlement_date: "0326",
scheme_response_code: "00",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>account_verification</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<avs_response_code>5I</avs_response_code>
<avs_response_text>Response provided by issuer processor; Address information not verified</avs_response_text>
<authorization_code>345678</authorization_code>
<response_code>00</response_code>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<sent_to_acquirer>true</sent_to_acquirer>
<scheme_transaction_identifier>019091214161031</scheme_transaction_identifier>
<scheme_settlement_date>0326</scheme_settlement_date>
<scheme_response_code>00</scheme_response_code>
</payment_response>
Example When Issuer Supports Oct For This Pan:
Successful Response
stdClass Object
(
[transaction_type] => account_verification
[status] => approved
[issuer_oct_enabled] => true
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[avs_response_code] => 5I
[avs_response_text] => Response provided by issuer processor; Address information not verified
[authorization_code] => 345678
[response_code] => 00
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[sent_to_acquirer] => true
[scheme_transaction_identifier] => 019091214161031
[scheme_settlement_date] => 0326
[scheme_response_code] => 00
)
<payment_response content=[
<transaction_type content=[account_verification]>
<status content=[approved]>
<issuer_oct_enabled content=[true]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<avs_response_code content=[5I]>
<avs_response_text content=[Response provided by issuer processor; Address information not verified]>
<authorization_code content=[345678]>
<response_code content=[00]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:00Z]>
<descriptor content=[Descriptor one]>
<sent_to_acquirer content=[true]>
<scheme_transaction_identifier content=[019091214161031]>
<scheme_settlement_date content=[0326]>
<scheme_response_code content=[00]>
]>
{
transaction_type: "account_verification",
status: "approved",
issuer_oct_enabled: "true",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
avs_response_code: "5I",
avs_response_text: "Response provided by issuer processor; Address information not verified",
authorization_code: "345678",
response_code: "00",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:44:00Z",
descriptor: "Descriptor one",
sent_to_acquirer: "true",
scheme_transaction_identifier: "019091214161031",
scheme_settlement_date: "0326",
scheme_response_code: "00",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>account_verification</transaction_type>
<status>approved</status>
<issuer_oct_enabled>true</issuer_oct_enabled>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<avs_response_code>5I</avs_response_code>
<avs_response_text>Response provided by issuer processor; Address information not verified</avs_response_text>
<authorization_code>345678</authorization_code>
<response_code>00</response_code>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<sent_to_acquirer>true</sent_to_acquirer>
<scheme_transaction_identifier>019091214161031</scheme_transaction_identifier>
<scheme_settlement_date>0326</scheme_settlement_date>
<scheme_response_code>00</scheme_response_code>
</payment_response>
Example When Issuer Does Not Support Oct For This Pan:
Successful Response
stdClass Object
(
[transaction_type] => account_verification
[status] => declined
[issuer_oct_enabled] => false
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[avs_response_code] => 5I
[avs_response_text] => Response provided by issuer processor; Address information not verified
[authorization_code] => 345678
[response_code] => 00
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[sent_to_acquirer] => true
[scheme_transaction_identifier] => 019091214161031
[scheme_settlement_date] => 0326
[scheme_response_code] => 00
)
<payment_response content=[
<transaction_type content=[account_verification]>
<status content=[declined]>
<issuer_oct_enabled content=[false]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<avs_response_code content=[5I]>
<avs_response_text content=[Response provided by issuer processor; Address information not verified]>
<authorization_code content=[345678]>
<response_code content=[00]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:00Z]>
<descriptor content=[Descriptor one]>
<sent_to_acquirer content=[true]>
<scheme_transaction_identifier content=[019091214161031]>
<scheme_settlement_date content=[0326]>
<scheme_response_code content=[00]>
]>
{
transaction_type: "account_verification",
status: "declined",
issuer_oct_enabled: "false",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
avs_response_code: "5I",
avs_response_text: "Response provided by issuer processor; Address information not verified",
authorization_code: "345678",
response_code: "00",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:44:00Z",
descriptor: "Descriptor one",
sent_to_acquirer: "true",
scheme_transaction_identifier: "019091214161031",
scheme_settlement_date: "0326",
scheme_response_code: "00",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>account_verification</transaction_type>
<status>declined</status>
<issuer_oct_enabled>false</issuer_oct_enabled>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<avs_response_code>5I</avs_response_code>
<avs_response_text>Response provided by issuer processor; Address information not verified</avs_response_text>
<authorization_code>345678</authorization_code>
<response_code>00</response_code>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<sent_to_acquirer>true</sent_to_acquirer>
<scheme_transaction_identifier>019091214161031</scheme_transaction_identifier>
<scheme_settlement_date>0326</scheme_settlement_date>
<scheme_response_code>00</scheme_response_code>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
token | string(36) | Plain-text token value. See Tokenization |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
issuer_oct_enabled | string | Present only if merchant has submitted issuer oct enabled flag in the request to check if issuer supports OCTs for the given PAN. True if the issuer supports OCTs for this PAN, false otherwise. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
sent_to_acquirer | string(255) | "true" or "false" |
scheme_transaction_identifier | string(32) | Id defined by card schemes. Corresponds to NETWORK DATA (field 63) for MasterCard or TRANS ID (field 62.2/125) for VISA. |
scheme_settlement_date | string(4) | MasterCard settlement date in MMDD format (e.g. 0326). Corresponds to NETWORK DATA (field 15). |
scheme_response_code | string(2) | The response code returned from the schemes. See Scheme response codes for details. |
recurring_advice_code | string(2) | Additional response code returned from the schemes. See Recurring advice details |
recurring_advice_text | string(255) | The text representation of the recurring advice code. |
Error Response
stdClass Object
(
[transaction_type] => account_verification
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[technical_message] => expiration_year is invalid
[message] => expiration_year is invalid
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:00.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[account_verification]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[340]>
<technical_message content=[expiration_year is invalid]>
<message content=[expiration_year is invalid]>
<timestamp content=[2025-03-25T08:44:00Z]>
<descriptor content=[Descriptor one]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "account_verification",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "340",
technical_message: "expiration_year is invalid",
message: "expiration_year is invalid",
timestamp: "2025-03-25T08:44:00Z",
descriptor: "Descriptor one",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>account_verification</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<technical_message>expiration_year is invalid</technical_message>
<message>expiration_year is invalid</message>
<timestamp>2025-03-25T08:44:00Z</timestamp>
<descriptor>Descriptor one</descriptor>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
3DS Card
To learn more about 3D Secure and supported authentication protocols, please, visit 3D-Secure Section.
Authorize 3D
Authorize3D transactions basically have the same request as standard authorize transactions.
Visa Synchronous 3 D Sv2 Fully Authenticated Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4012000000060085')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('05')
->setMpiCavv('MDAwMDAwMDAwMDAxMTA2Njk5NFg=')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('637700e0-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('63770210-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('trusted_merchant')
->setScaVisaMerchantId('00000000')
->set#<Proc:0x0000ffff8c3d2638 includes::Transactions::3ds::V2::Examples::Requests.md.erb:43 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Authorize3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Authorize3DRequest request = new Authorize3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4012000000060085");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"05", "cavv"=>"MDAwMDAwMDAwMDAxMTA2Njk5NFg=", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"637700e0-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"63770210-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("trusted_merchant");
request.setScaVisaMerchantId("00000000");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4012000000060085",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "05",
"cavv": "MDAwMDAwMDAwMDAxMTA2Njk5NFg=",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "637700e0-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "63770210-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "trusted_merchant",
"visa_merchant_id": "00000000"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4012000000060085</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>05</eci>
<cavv>MDAwMDAwMDAwMDAxMTA2Njk5NFg=</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>637700e0-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>63770210-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>trusted_merchant</exemption>
<visa_merchant_id>00000000</visa_merchant_id>
</sca_params>
</payment_transaction>'
Master Synchronous 3 D Sv2 Fully Authenticated Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('5555555555559997')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('02')
->setMpiCavv('kAOImea0C/2ta1NZl4Hhwslmomqj')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('637be480-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('637be530-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
->set#<Proc:0x0000ffff87582f78 includes::Transactions::3ds::V2::Examples::Requests.md.erb:85 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Authorize3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Authorize3DRequest request = new Authorize3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("5555555555559997");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"02", "cavv"=>"kAOImea0C/2ta1NZl4Hhwslmomqj", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"637be480-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"637be530-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "5555555555559997",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "02",
"cavv": "kAOImea0C/2ta1NZl4Hhwslmomqj",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "637be480-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "637be530-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>5555555555559997</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>02</eci>
<cavv>kAOImea0C/2ta1NZl4Hhwslmomqj</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>637be480-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>637be530-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
</payment_transaction>'
Visa Synchronous 3 D Sv2 Attempted Authentication Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4012000000060085')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('06')
->setMpiCavv('MDAwMDAwMDAwMDAxMTA2Njk5NFg=')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('63808f90-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('63809030-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('trusted_merchant')
->setScaVisaMerchantId('00000000')
->set#<Proc:0x0000ffff872fc150 includes::Transactions::3ds::V2::Examples::Requests.md.erb:43 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Authorize3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Authorize3DRequest request = new Authorize3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4012000000060085");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"06", "cavv"=>"MDAwMDAwMDAwMDAxMTA2Njk5NFg=", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"63808f90-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"63809030-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("trusted_merchant");
request.setScaVisaMerchantId("00000000");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4012000000060085",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "06",
"cavv": "MDAwMDAwMDAwMDAxMTA2Njk5NFg=",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "63808f90-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "63809030-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "trusted_merchant",
"visa_merchant_id": "00000000"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4012000000060085</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>06</eci>
<cavv>MDAwMDAwMDAwMDAxMTA2Njk5NFg=</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>63808f90-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>63809030-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>trusted_merchant</exemption>
<visa_merchant_id>00000000</visa_merchant_id>
</sca_params>
</payment_transaction>'
Master Synchronous 3 D Sv2 Attempted Authentication Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('5555555555559997')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('01')
->setMpiCavv('kEOImea0C/2ta1NZl4Hhwslmomqj')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('63854320-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('638543a0-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
->set#<Proc:0x0000ffff86fc99d8 includes::Transactions::3ds::V2::Examples::Requests.md.erb:85 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Authorize3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Authorize3DRequest request = new Authorize3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("5555555555559997");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"01", "cavv"=>"kEOImea0C/2ta1NZl4Hhwslmomqj", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"63854320-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"638543a0-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "5555555555559997",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "01",
"cavv": "kEOImea0C/2ta1NZl4Hhwslmomqj",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "63854320-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "638543a0-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>5555555555559997</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>01</eci>
<cavv>kEOImea0C/2ta1NZl4Hhwslmomqj</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>63854320-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>638543a0-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
</payment_transaction>'
Master Synchronous 3 D Sv2 Acquirer Exemption Accepted (Tra Already Performed) Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('5169750000001111')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('06')
->setMpiCavv('kNMAAAAA3S13awBkrWtTWZeBBCmy')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('6389aba0-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('6389ac50-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff87382778 includes::Transactions::3ds::V2::Examples::Requests.md.erb:132 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Authorize3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Authorize3DRequest request = new Authorize3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("5169750000001111");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"06", "cavv"=>"kNMAAAAA3S13awBkrWtTWZeBBCmy", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"6389aba0-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"6389ac50-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "5169750000001111",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "06",
"cavv": "kNMAAAAA3S13awBkrWtTWZeBBCmy",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "6389aba0-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "6389ac50-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>5169750000001111</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>06</eci>
<cavv>kNMAAAAA3S13awBkrWtTWZeBBCmy</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>6389aba0-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>6389ac50-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Visa Synchronous 3 D Sv2 Acquirer Exemption Accepted (Tra Already Performed) Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4378510000000004')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('07')
->setMpiCavv('ApkCAlgGQCECEBJWNgZAAAAAAAA=')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('638e1970-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('638e1a30-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff8c4d4298 includes::Transactions::3ds::V2::Examples::Requests.md.erb:179 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Authorize3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Authorize3DRequest request = new Authorize3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4378510000000004");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"07", "cavv"=>"ApkCAlgGQCECEBJWNgZAAAAAAAA=", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"638e1970-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"638e1a30-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4378510000000004",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "07",
"cavv": "ApkCAlgGQCECEBJWNgZAAAAAAAA=",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "638e1970-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "638e1a30-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4378510000000004</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>07</eci>
<cavv>ApkCAlgGQCECEBJWNgZAAAAAAAA=</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>638e1970-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>638e1a30-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Asynchronous 3 D Sv2 Frictionless No 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4012000000060085')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff8c3b5010 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Authorize3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Authorize3DRequest request = new Authorize3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4012000000060085");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4012000000060085",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4012000000060085</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Asynchronous 3 D Sv2 Frictionless With 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4066330000000004')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff874ecb18 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Authorize3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Authorize3DRequest request = new Authorize3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4066330000000004");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4066330000000004",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4066330000000004</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Asynchronous 3 D Sv2 Challenge No 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4918190000000002')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff871ea6b8 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Authorize3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Authorize3DRequest request = new Authorize3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4918190000000002");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4918190000000002",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4918190000000002</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Asynchronous 3 D Sv2 Challenge With 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Authorize3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4938730000000001')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff871c4328 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Authorize3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Authorize3DRequest request = new Authorize3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4938730000000001");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.authorize3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4938730000000001",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>authorize3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4938730000000001</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: authorize3d |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
gaming | optional | "true" | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995. Contact tech-support@emerchantpay.com for more details |
preauthorization | optional | "true" | Signifies whether a preauthorization transaction is performed. Check the Preauthorizations section or contact tech support for more details. |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
crypto | optional | "true" | Signifies whether a purchase of crypto-currency transaction is performed. Must be populated when purchasing crypto-currency with a VISA card. Must be populated when purchasing crypto-currency with a MASTER or INTL MAESTRO card and MCC is one of 6051, 6211. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
notification_url | required1 | url | URL at merchant where gateway sends outcome of transaction. |
return_success_url | required1 | url | URL where customer is sent to after successful payment |
return_failure_url | required1 | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer >= 0 | Transaction amount in minor currency unit, see Currency and Amount Handling for details. In certain cases, it is possible to submit a transaction with a zero-value amount to act as an account verification transaction - Contact tech-support@emerchantpay.com for more details regarding this scenario. |
currency | required | string(3) | Currency code in ISO 4217 |
card_holder | required | string(45) | Full name of customer as printed on credit card (first name and last name at least). Note, for async 3DSv2 transactions, the card holder name must NOT contain more than 45 chars. Otherwise, the rest will be truncated in the authentication request. |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted. Cannot be set together with remember_card |
remember_card | optional | "true" | See Tokenize. Tokenizes cardholder parameters. Cannot be set together with token |
consumer_id | optional | string(10) | See Consumers and Tokenization. Combine with remember_card to tokenize or with token to use token |
scheme_tokenized | required* | "true" | Required when the card_number is DPAN instead of Funding Primary Account Number, see Tokenized e-commerce for details |
recurring_type | optional | string(255) | Specifies recurring type of the transaction, can be 'initial' or 'managed'. |
installment_plan_id | optional | string | The ID of the chosen installment plan. Check Installments for more details. |
installment_plan_reference | optional | string | The installment plan reference identifier returned by the schemes. |
credential_on_file | required* | See Credential On File (COF) for more details | |
initial_customer_initiated | required* | string(18) | Initial transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
subsequent_customer_initiated | required* | string(18) | Subsequent transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
merchant_unscheduled | optional | string(20) | Transaction is initiated by the merchant |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(16) | Must contain а valid international phone number of the customer as per the ITU-T E.164. It's recommended to not submit a customer phone number containing more than 15 digits or less than 7 digits. Note, for async 3DS transactions that are using the 3DSv2 authentication protocol, it will be shortened up to 15 digits and a prefix + for international phone number will be added if missing. |
birth_date | required* | dd-mm-yyyy | Required when MCC is a Financial Services one (e.g. MCC 6012) and either card brand is Visa or Mastercard/Maestro with UK-based merchant, UK-based bin (domestic), and DEBIT card type |
document_id | required* | string(255) | Document ID value. |
fx_rate_id | optional | integer | See Get rates for FX Service. Offers the option to use a specific FX rate to convert the transaction processing amount. Used FX rate should have the same source currency as the processing currency. Contact tech-support@emerchantpay.com for more details |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(150) | Primary address. The field length is limited to 150 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string(16) | The field that holds the zip code is limited to 16 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
city | required* | string(50) | The field that holds the city is limited to 50 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(3) | The field that holds the country state is limited to 3 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. Note: The value should be the country subdivision code defined in ISO 3166-2. Invalid values submitted NOT as per the ISO might lead to data integrity issues. |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(150) | Primary address. The field length is limited to 150 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string(16) | The field that holds the zip code is limited to 16 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
city | optional | string(50) | The field that holds the city is limited to 50 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(3) | The field that holds the country state is limited to 3 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. Note: The value should be the country subdivision code defined in ISO 3166-2. Invalid values submitted NOT as per the ISO might lead to data integrity issues. |
country | optional | string(2) | Country code in ISO 3166 |
mpi_params | required2 | ||
cavv | required3 | string(255) | Verification Id of the authentication. Please note this can be the CAVV for Visa Card or UCAF to identify MasterCard. |
eci | required3 | string(255) | See Electronic Commerce Indicator as returned from the MPI for details |
protocol_version | required4 | string | The used 3DS protocol version. |
protocol_sub_version | required4 | string | The used 3DS protocol sub-version. |
directory_server_id | required4 | string | The Directory Server ID used for 3DSecure transactions through the 3DSv2 authentication protocol. |
acs_transaction_id | optional | string | The ACS Transaction ID and is optional for 3DS transactions, but highly recommended for increasing the approval ratio. |
threeds_challenge_indicator | optional | string | The 3DS challenge indicator that represents the exact indicator used during the authentication request to the MPI provider for synchronous 3DS transactions. It is optional but highly recommended for increasing the approval ratio. It can only contain one of the following values no_preference, no_challenge_requested, preference and mandate. The default value is no_preference. Check 3DS Challenge Indicators for more details. |
sca_params | optional | SCA params | |
exemption | optional | string | The exemption that the transaction should take advantage of. Note that the requested exemption may not be accepted due to internal risk validations. Check SCA exemption values. |
visa_merchant_id | required5 | string(8) | VMID assigned by Visa if participating in Trusted merchant program. |
funding | optional | Funding Transaction Params | |
identifier_type | required* | string | This is only required in case of Mastercard. Type of Funding Transaction. Please check Identifier Types |
business_application_identifier | required* | string | This is only required in case of VISA. Type of VISA Funding Transaction. Please check BAI |
receiver | optional | Funding Transaction Receiver details | |
first_name | required* | string | First name of the receiver |
last_name | required* | string | Last name of the receiver |
country | required* | string(2) | Country code in ISO 3166 |
account_number | required* | string | Receiver account number. Mandatory for Mastercard. If Sender Reference Number is provided then it becomes optional for VISA |
account_number_type | required* | string | This is only required in case of Mastercard. Receiver account number type. Please check Receiver Account Types |
address | required* | string | Receiver address. Only required in case of VISA and Canadian cards |
state | required* | string | Receiver state. Only required in case of VISA and Canadian cards |
city | required* | string | Receiver city. Only required in case of VISA and Canadian cards |
sender | optional | Funding Transaction Sender details | |
name | required* | string | Sender name. Only required in case of VISA |
reference_number | required* | string | Sender Reference Number. Only required in case of VISA. This is option if Receiver Account Number is provided |
country | required* | string | Sender country. Only required in case of VISA. If not provided billing address is used |
address | required* | string | Sender address. Only required in case of VISA. If not provided billing address is used |
state | required* | string | Sender state. Only required in case of VISA and Canadian card. If not provided billing address is used |
city | required* | string | Sender city. Only required in case of VISA. If not provided billing address is used |
threeds_v2_params | required* | 3DSv2 async parameters. They must be submitted in order to use the 3DSv2 authentication protocol in asynchronous workflow | |
threeds_method | optional | 3DS-Method related parameters for any callbacks and notifications. | |
callback_url | optional | url | Specific 3DS-Method callback URL after the 3DS-Method completes. The actual status will be provided via HTTP POST to that URL. For more information, go to 3DSv2 method params |
control | required* | General params for preferences in authentication flow and providing device interface information. | |
device_type | required* | string | Identifies the device channel of the consumer, required in the 3DSv2 authentication protocol. For more information, go to 3DSv2 control params |
challenge_window_size | required* | string | Identifies the size of the challenge window for the consumer. For more information, go to 3DSv2 control params |
challenge_indicator | optional | string | The value has weight and might impact the decision whether a challenge will be required for the transaction or not. If not provided, it will be interpreted as no_preference. For more information, go to 3DSv2 control params |
purchase | optional | Purchase related params providing with additional information regarding the order. | |
category | optional | string | Identifies the type of transaction being authenticated. This field is required in some markets.Accepted values are: goods, service, check_acceptance, account_funding, quasi_cash, prepaid_activation, loan. |
merchant_risk | recommended | Merchant risk assessment params. They are all optional, but recommended. | |
shipping_indicator | optional | string(16) | Indicator code that most accurately describes the shipping method for the cardholder specific transaction. If one or more items are included in the sale, use the Shipping Indicator code for the physical goods. If all digital goods, use the code that describes the most expensive item. Accepted values are: same_as_billing, stored_address, verified_address, pick_up, digital_goods, travel, event_tickets, other. |
delivery_timeframe | optional | string(11) | Indicates the merchandise delivery timeframe. Accepted values are: electronic, same_day, over_night, another_day. |
reorder_items_indicator | optional | string(10) | Indicates whether the cardholder is reordering previously purchased merchandise. Accepted values are: first_time, reordered. |
pre_order_purchase_indicator | optional | string(21) | Indicates whether cardholder is placing an order for merchandise with a future-availability or release date. Accepted values are: merchandise_available, future_availability. |
pre_order_date | optional | dd-mm-yyyy | For a pre-ordered purchase, the expected date that the merchandise will be available. |
gift_card | optional | 'true' | Prepaid or gift card purchase. |
gift_card_count | optional | integer | For prepaid or gift card purchase, total count of individual prepaid or gift cards/codes purchased. The value is limited to 99. |
card_holder_account | recommended | Cardholder account additional information. They are all optional, but recommended, because they have a significant impact on approval rates | |
creation_date | optional | dd-mm-yyyy | Date that the cardholder opened the account with the 3DS Requester. |
update_indicator | optional | string(19) | Length of time since the cardholder’s account information with the 3DS Requestor was last changed. Includes Billing or Shipping address, new payment account, or new user(s) added. Accepted values are: current_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
last_change_date | optional | dd-mm-yyyy | Date that the cardholder’s account with the 3DS Requestor was last changed. Including Billing or Shipping address, new payment accout, or new user(s) added. |
password_change_indicator | optional | string(18) | Length of time since the cardholder account with the 3DS Requestor had a password change or account reset. Accepted values are: no_change, during_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
password_change_date | optional | dd-mm-yyyy | Date that cardholder’s account with the 3DS Requestor had a password change or account reset. |
shipping_address_usage_indicator | optional | string(19) | Indicates when the shipping address used for this transaction was first used with the 3DS Requestor. Accepted values are: current_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
shipping_address_date_first_used | optional | dd-mm-yyyy | Date when the shipping address used for this transaction was first used with the 3DS Requestor. |
transactions_activity_last_24_hours | optional | integer | Number of transactions (successful and abandoned) for this cardholder account with the 3DS Requestor across all payment accounts in the previous 24 hours. |
transactions_activity_previous_year | optional | integer | Number of transactions (successful and abandoned) for this cardholder account with the 3DS Requestor across all payment accounts in the previous year. |
provision_attempts_last_24_hours | optional | integer | Number of Add Card attempts in the last 24 hours. |
purchases_count_last_6_months | optional | integer | Number of purchases with this cardholder account during the previous six months. |
suspicious_activity_indicator | optional | string(22) | Indicates whether the 3DS Requestor has experienced suspicious activity (including previous fraud) on the cardholder account. Accepted values are: no_suspicious_observed, suspicious_observed. |
registration_indicator | optional | string(19) | Indicates the length of time that the payment account was enrolled in the cardholder’s account with the 3DS Requester. Accepted values are: guest_checkout, current_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
registration_date | optional | dd-mm-yyyy | Date that the payment account was enrolled in the cardholder’s account with the 3DS Requestor. |
browser | required* | For browser-based transactions. They are all required in case the device_type is set to browser | |
accept_header | required* | string(2048) | The exact content of the HTTP ACCEPT header as sent to the 3DS Requester from the Cardholder browser. Any other header different than the ACCEPT header will be rejected. Example: application/json,text/plain,text/html,*/* . |
java_enabled | required* | boolean | Boolean that represents the ability of the cardholder browser to execute Java. The value can be retrieved by accessing a property of the navigator with JavaScript, navigator.javaEnabled . |
language | required* | string(8) | Value representing the browser language as defined in IETF BCP47. Note that only one browser language tag is about to be submitted as per the above IETF BCP47. Numeric chars are also allowed in the subtag and will represent the region.Example: en-GB , zh-guoyu , fil-PH , gsw , es-419 , de-1996 , etc. The value can be retrieved by accessing a property of the navigator with JavaScript, navigator.language . |
color_depth | required* | integer | Value representing the bit depth of the colour palette for displaying images, in bits per pixel. Obtained from Cardholder browser using the screen.colorDepth property. The value as per EMVCo specs can be one of 1, 4, 8, 15, 16, 24, 32, 48. In case, an unsupported color_depth is determined, the nearest supported value that is less than the actual one needs to be submitted. For example, if the obtained value is 30, which is not supported as per EMVCo specs, 24 has to be submitted. |
screen_height | required* | integer | Total height of the Cardholder's screen in pixels. Value is returned from the screen.height property. |
screen_width | required* | integer | Total width of the Cardholder's screen in pixels. Value is returned from the screen.width property. |
time_zone_offset | required* | string(5) | Time difference between UTC time and the Cardholder browser local time, in minutes. Note that the offset is positive if the local time zone is behind UTC and negative if it is ahead. If UTC -5 hours then submit 300 or +300 , If UTC +2 hours then -120 . The value can be retrieved using Javascript getTimezoneOffset() method over Date object. |
user_agent | required* | string(2048) | Exact content of the HTTP user-agent header. |
sdk | required* | For application-based transactions. They are all required in case the device_type is set to application | |
interface | required* | string(6) | SDK Interface types that the device of the consumer supports for displaying specific challenge interfaces within the SDK. Accepted values are: native, html, both. |
ui_types | required* | Lists all UI types that the device of the consumer supports for displaying specific challenge interfaces within the SDK. | |
ui_type | required* | string(13) | UI type that the device of the consumer supports for displaying specific challenge interface. Accepted values are: text, single_select, multi_select, out_of_bag, other_html. |
application_id | required* | string(36) | Universally unique ID created upon all installations and updates of the 3DS Requestor APp on a Customer Device. This will be newly generated and stored by the 3DS SDK for each installation or update. The field is limited to 36 characters and it shall have a canonical format as defined in IETF RFC 4122. |
encrypted_data | required* | string(64000) | JWE Object as defined Section 6.2.2.1 containing data encrypted by the SDK for the DS to decrypt. The data will be present when sending to DS, but not present from DS to ACS. |
ephemeral_public_key_pair | required* | string(256) | Public key component of the ephemeral key pair generated by the 3DS SDK and used to establish session keys between the 3DS SDK and ACS. In AReq, this data element is contained within the ACS Signed Content JWS Object. The field is limited to maximum 256 characters. |
max_timeout | required* | integer | Indicates the maximum amount of time (in minutes) for all exchanges. The field shall have value greater or equals than 05. |
reference_number | required* | string(32) | Identifies the vendor and version of the 3DS SDK that is integrated in a 3DS Requestor App, assigned by EMVCo when the 3DS SDK is approved. The field is limited to 32 characters. |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
1 - Required if mpi_params
is not present, the transaction will be handled asynchronously. Not required if configured on Terminal or Merchant level. Contact Tech Support for more details.
2 - Required if transaction should be handled synchronous.
3 - eci
is always required if mpi_params
is present.
cavv
is not required for the 3D attempted only workflow, but it is strongly recommended in a combination with the Directory Server ID in order to be in the scope of the 3DSv2 authentication protocol.
4 - protocol_version
is required due to the only one 3DSv2 authentication protocol that is currently supported.
directory_server_id
is mandatory when protocol_version is 2. May be omitted for scheme tokenized transactions.
5 - visa_merchant_id
is required when exemption value is trusted_merchant
.
Frictionless / Challenge Response
stdClass Object
(
[transaction_type] => authorize3d
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[threeds_method_url] => https://staging.gate.emerchantpay.net/threeds/threeds_method
[threeds_method_continue_url] => https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:01.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
)
<payment_response content=[
<transaction_type content=[authorize3d]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<threeds_method_url content=[https://staging.gate.emerchantpay.net/threeds/threeds_method]>
<threeds_method_continue_url content=[https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48]>
<timestamp content=[2025-03-25T08:44:01Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
]>
{
transaction_type: "authorize3d",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
threeds_method_url: "https://staging.gate.emerchantpay.net/threeds/threeds_method",
threeds_method_continue_url: "https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48",
timestamp: "2025-03-25T08:44:01Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>authorize3d</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<threeds_method_url>https://staging.gate.emerchantpay.net/threeds/threeds_method</threeds_method_url>
<threeds_method_continue_url>https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48</threeds_method_continue_url>
<timestamp>2025-03-25T08:44:01Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
</payment_response>
Challenge Without 3 Ds Mеthod Response
stdClass Object
(
[transaction_type] => authorize3d
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[redirect_url] => https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48
[redirect_url_type] => 3ds_v2_challenge
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:01.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
)
<payment_response content=[
<transaction_type content=[authorize3d]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<redirect_url content=[https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48]>
<redirect_url_type content=[3ds_v2_challenge]>
<timestamp content=[2025-03-25T08:44:01Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
]>
{
transaction_type: "authorize3d",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
redirect_url: "https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48",
redirect_url_type: "3ds_v2_challenge",
timestamp: "2025-03-25T08:44:01Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>authorize3d</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<redirect_url>https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48</redirect_url>
<redirect_url_type>3ds_v2_challenge</redirect_url_type>
<timestamp>2025-03-25T08:44:01Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
token | string(36) | Plain-text token value. See Tokenization |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
cvv_result_code | string(1) | Card Verification Value response code. Optional, returned only if acquirer supports it |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
payment_account_reference | string(255) | Payment Account Reference value returned from the schemes. Links tokenized and PAN-based transactions. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where the consumer has to be redirected to complete the payment process unless a 3DSecure Method is required. This redirect_url will not be included in the response if a 3DS-Method submission is required. For more information, to go 3DSv2 authentication flows |
redirect_url_type | string(64) | The type of the redirect URL in the 3DS scope. It will be present only for asynchronous 3D transactions when an interaction between consumer and issuer is required. This type identifies what kind of redirect url is returned, namely 3DSv2 Challenge. For more information, to go 3DSv2 authentication flows |
threeds_method_url | url | 3DSecure Method URL. It will be present only then 3DS-Method is required for 3D transaction. A 3DS-Method submission inside an iframe is required to be submitted using HTTP POST. For more information, to go 3DSv2 authentication flows |
threeds_method_continue_url | url | This is an API endpoint that accepts HTTP PUT & HTTP PATCH requests. It will be present when the threeds_method_url is included in the response. An HTTP PUT request must be submitted to that endpoint together with the proper signature to determine what the next step in the authentication is. For more information, to go 3DSv2 authentication flows |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
scheme_transaction_identifier | string(32) | Id defined by card schemes. Corresponds to NETWORK DATA (field 63) for MasterCard or TRANS ID (field 62.2/125) for VISA. |
scheme_transaction_link_id | string(22) | The transaction unique identifier returned from the schemes. Corresponds to ADDITIONAL SERVICE DATA (field 65, MasterCard Transaction Link Id [TLID]). |
scheme_pan_indicator | string(1) | The account number indicator in scheme-tokenized transactions. See Account number indicator codes for details. |
scheme_pan_tail | string(4) | The tail of the PAN number tail associated with the token in scheme-tokenized transactions. Returned in conjunction with scheme_pan_indicator . |
scheme_max_settlement_date | string(10) | The final date an authorization could be captured which is returned from the card scheme. See Scheme Maximum Settlement Date for more details. |
scheme_authentication_data_quality | boolean | The Authentication Data Quality Indicator returned by the card scheme is used to indicate whether a transaction meets the authentication data quality requirements. The value can be either true or false . |
scheme_settlement_date | string(4) | MasterCard settlement date in MMDD format (e.g. 0326). Corresponds to NETWORK DATA (field 15). |
reason_for_not_honoring_exemption | string | Reason for not honoring exemption. Check SCA Reason For Not Honoring Exemption Values. |
sca_exemption_result | string | SCA exemption result. Check SCA Exemption Result Values. |
threeds | ||
eci | string(2) | See Electronic Commerce Indicator as returned from the MPI for details |
Error Response
stdClass Object
(
[transaction_type] => authorize3d
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[response_code] => 57
[code] => 340
[technical_message] => expiration_year is invalid
[message] => expiration_year is invalid
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:01.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[authorize3d]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<response_code content=[57]>
<code content=[340]>
<technical_message content=[expiration_year is invalid]>
<message content=[expiration_year is invalid]>
<timestamp content=[2025-03-25T08:44:01Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "authorize3d",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
response_code: "57",
code: "340",
technical_message: "expiration_year is invalid",
message: "expiration_year is invalid",
timestamp: "2025-03-25T08:44:01Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>authorize3d</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<response_code>57</response_code>
<code>340</code>
<technical_message>expiration_year is invalid</technical_message>
<message>expiration_year is invalid</message>
<timestamp>2025-03-25T08:44:01Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
threeds | ||
authentication | ||
status_reason_code | string(2) | See 3DS Authentication Status Reason Codes for details. |
Error Response
stdClass Object
(
[transaction_type] => authorize3d
[status] => declined
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 600
[technical_message] => Cardholder not participating 3DS.
[message] => Transaction failed, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:01.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
[threeds] => {"eci"=>"06", "authentication"=>{"status_reason_code"=>"08"}}
)
<payment_response content=[
<transaction_type content=[authorize3d]>
<status content=[declined]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[600]>
<technical_message content=[Cardholder not participating 3DS.]>
<message content=[Transaction failed, please contact support!]>
<timestamp content=[2025-03-25T08:44:01Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
<threeds content=[{"eci"=>"06", "authentication"=>{"status_reason_code"=>"08"}}]>
]>
{
transaction_type: "authorize3d",
status: "declined",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "600",
technical_message: "Cardholder not participating 3DS.",
message: "Transaction failed, please contact support!",
timestamp: "2025-03-25T08:44:01Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
threeds: "{"eci"=>"06", "authentication"=>{"status_reason_code"=>"08"}}",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>authorize3d</transaction_type>
<status>declined</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>600</code>
<technical_message>Cardholder not participating 3DS.</technical_message>
<message>Transaction failed, please contact support!</message>
<timestamp>2025-03-25T08:44:01Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<threeds>
<eci>06</eci>
<authentication>
<status_reason_code>08</status_reason_code>
</authentication>
</threeds>
</payment_response>
Sale 3D
Sale3D transactions basically have the same request as standard sale transactions.
Visa Synchronous 3 D Sv2 Fully Authenticated Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4012000000060085')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('05')
->setMpiCavv('MDAwMDAwMDAwMDAxMTA2Njk5NFg=')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('63c48bd0-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('63c48c80-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('trusted_merchant')
->setScaVisaMerchantId('00000000')
->set#<Proc:0x0000ffff870b7318 includes::Transactions::3ds::V2::Examples::Requests.md.erb:43 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Sale3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Sale3DRequest request = new Sale3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4012000000060085");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"05", "cavv"=>"MDAwMDAwMDAwMDAxMTA2Njk5NFg=", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"63c48bd0-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"63c48c80-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("trusted_merchant");
request.setScaVisaMerchantId("00000000");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4012000000060085",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "05",
"cavv": "MDAwMDAwMDAwMDAxMTA2Njk5NFg=",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "63c48bd0-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "63c48c80-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "trusted_merchant",
"visa_merchant_id": "00000000"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4012000000060085</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>05</eci>
<cavv>MDAwMDAwMDAwMDAxMTA2Njk5NFg=</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>63c48bd0-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>63c48c80-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>trusted_merchant</exemption>
<visa_merchant_id>00000000</visa_merchant_id>
</sca_params>
</payment_transaction>'
Master Synchronous 3 D Sv2 Fully Authenticated Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('5555555555559997')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('02')
->setMpiCavv('kCOImea0C/2ta1NZl4Hhwslmomqj')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('63c90250-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('63c902f0-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
->set#<Proc:0x0000ffff8759daa8 includes::Transactions::3ds::V2::Examples::Requests.md.erb:85 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Sale3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Sale3DRequest request = new Sale3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("5555555555559997");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"02", "cavv"=>"kCOImea0C/2ta1NZl4Hhwslmomqj", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"63c90250-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"63c902f0-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "5555555555559997",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "02",
"cavv": "kCOImea0C/2ta1NZl4Hhwslmomqj",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "63c90250-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "63c902f0-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>5555555555559997</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>02</eci>
<cavv>kCOImea0C/2ta1NZl4Hhwslmomqj</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>63c90250-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>63c902f0-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
</payment_transaction>'
Visa Synchronous 3 D Sv2 Attempted Authentication Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4012000000060085')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('06')
->setMpiCavv('MDAwMDAwMDAwMDAxMTA2Njk5NFg=')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('63cde440-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('63cde4d0-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('trusted_merchant')
->setScaVisaMerchantId('00000000')
->set#<Proc:0x0000ffff8c745590 includes::Transactions::3ds::V2::Examples::Requests.md.erb:43 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Sale3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Sale3DRequest request = new Sale3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4012000000060085");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"06", "cavv"=>"MDAwMDAwMDAwMDAxMTA2Njk5NFg=", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"63cde440-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"63cde4d0-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("trusted_merchant");
request.setScaVisaMerchantId("00000000");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4012000000060085",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "06",
"cavv": "MDAwMDAwMDAwMDAxMTA2Njk5NFg=",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "63cde440-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "63cde4d0-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "trusted_merchant",
"visa_merchant_id": "00000000"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4012000000060085</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>06</eci>
<cavv>MDAwMDAwMDAwMDAxMTA2Njk5NFg=</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>63cde440-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>63cde4d0-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>trusted_merchant</exemption>
<visa_merchant_id>00000000</visa_merchant_id>
</sca_params>
</payment_transaction>'
Master Synchronous 3 D Sv2 Attempted Authentication Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('5555555555559997')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('01')
->setMpiCavv('kFOImea0C/2ta1NZl4Hhwslmomqj')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('63d30df0-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('63d30e80-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
->set#<Proc:0x0000ffff8766a3a0 includes::Transactions::3ds::V2::Examples::Requests.md.erb:85 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Sale3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Sale3DRequest request = new Sale3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("5555555555559997");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"01", "cavv"=>"kFOImea0C/2ta1NZl4Hhwslmomqj", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"63d30df0-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"63d30e80-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "5555555555559997",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "01",
"cavv": "kFOImea0C/2ta1NZl4Hhwslmomqj",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "63d30df0-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "63d30e80-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>5555555555559997</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>01</eci>
<cavv>kFOImea0C/2ta1NZl4Hhwslmomqj</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>63d30df0-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>63d30e80-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
</payment_transaction>'
Master Synchronous 3 D Sv2 Acquirer Exemption Accepted (Tra Already Performed) Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('5169750000001111')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('06')
->setMpiCavv('kNMAAAAA3S13awBkrWtTWZeBBCmy')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('63d7a850-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('63d7a8f0-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff874a34b8 includes::Transactions::3ds::V2::Examples::Requests.md.erb:132 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Sale3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Sale3DRequest request = new Sale3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("5169750000001111");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"06", "cavv"=>"kNMAAAAA3S13awBkrWtTWZeBBCmy", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"63d7a850-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"63d7a8f0-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "5169750000001111",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "06",
"cavv": "kNMAAAAA3S13awBkrWtTWZeBBCmy",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "63d7a850-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "63d7a8f0-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>5169750000001111</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>06</eci>
<cavv>kNMAAAAA3S13awBkrWtTWZeBBCmy</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>63d7a850-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>63d7a8f0-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Visa Synchronous 3 D Sv2 Acquirer Exemption Accepted (Tra Already Performed) Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4378510000000004')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('07')
->setMpiCavv('ApkCAlgGQCECEBJWNgZAAAAAAAA=')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('63dc4db0-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('63dc4e60-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff872488f8 includes::Transactions::3ds::V2::Examples::Requests.md.erb:179 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Sale3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Sale3DRequest request = new Sale3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4378510000000004");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"07", "cavv"=>"ApkCAlgGQCECEBJWNgZAAAAAAAA=", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"63dc4db0-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"63dc4e60-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4378510000000004",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "07",
"cavv": "ApkCAlgGQCECEBJWNgZAAAAAAAA=",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "63dc4db0-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "63dc4e60-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4378510000000004</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>07</eci>
<cavv>ApkCAlgGQCECEBJWNgZAAAAAAAA=</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>63dc4db0-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>63dc4e60-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Asynchronous 3 D Sv2 Frictionless No 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4012000000060085')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff87013a60 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Sale3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Sale3DRequest request = new Sale3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4012000000060085");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4012000000060085",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4012000000060085</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Asynchronous 3 D Sv2 Frictionless With 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4066330000000004')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff8760dad8 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Sale3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Sale3DRequest request = new Sale3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4066330000000004");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4066330000000004",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4066330000000004</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Asynchronous 3 D Sv2 Challenge No 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4918190000000002')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff8c5ad818 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Sale3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Sale3DRequest request = new Sale3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4918190000000002");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4918190000000002",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4918190000000002</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Asynchronous 3 D Sv2 Challenge With 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4938730000000001')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff87589f58 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.Sale3DRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
Sale3DRequest request = new Sale3DRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4938730000000001");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4938730000000001",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4938730000000001</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sale3d |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
gaming | optional | "true" | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995. Contact tech-support@emerchantpay.com for more details |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
crypto | optional | "true" | Signifies whether a purchase of crypto-currency transaction is performed. Must be populated when purchasing crypto-currency with a VISA card. Must be populated when purchasing crypto-currency with a MASTER or INTL MAESTRO card and MCC is one of 6051, 6211. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
notification_url | required1 | url | URL at merchant where gateway sends outcome of transaction. |
return_success_url | required1 | url | URL where customer is sent to after successful payment |
return_failure_url | required1 | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer >= 0 | Transaction amount in minor currency unit, see Currency and Amount Handling for details. In certain cases, it is possible to submit a transaction with a zero-value amount to act as an account verification transaction - Contact tech-support@emerchantpay.com for more details regarding this scenario. |
currency | required | string(3) | Currency code in ISO 4217 |
card_holder | required | string(45) | Full name of customer as printed on credit card (first name and last name at least). Note, for async 3DSv2 transactions, the card holder name must NOT contain more than 45 chars. Otherwise, the rest will be truncated in the authentication request. |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted. Cannot be set together with remember_card |
remember_card | optional | "true" | See Tokenize. Tokenizes cardholder parameters. Cannot be set together with token |
consumer_id | optional | string(10) | See Consumers and Tokenization. Combine with remember_card to tokenize or with token to use token |
scheme_tokenized | required* | "true" | Required when the card_number is DPAN instead of Funding Primary Account Number, see Tokenized e-commerce for details |
recurring_type | optional | string(255) | Specifies recurring type of the transaction, can be 'initial' or 'managed'. |
installment_plan_id | optional | string | The ID of the chosen installment plan. Check Installments for more details. |
installment_plan_reference | optional | string | The installment plan reference identifier returned by the schemes. |
credential_on_file | required* | See Credential On File (COF) for more details | |
initial_customer_initiated | required* | string(18) | Initial transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
subsequent_customer_initiated | required* | string(18) | Subsequent transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
merchant_unscheduled | optional | string(20) | Transaction is initiated by the merchant |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(16) | Must contain а valid international phone number of the customer as per the ITU-T E.164. It's recommended to not submit a customer phone number containing more than 15 digits or less than 7 digits. Note, for async 3DS transactions that are using the 3DSv2 authentication protocol, it will be shortened up to 15 digits and a prefix + for international phone number will be added if missing. |
birth_date | required* | dd-mm-yyyy | Required when MCC is a Financial Services one (e.g. MCC 6012) and either card brand is Visa or Mastercard/Maestro with UK-based merchant, UK-based bin (domestic), and DEBIT card type |
document_id | required* | string(255) | Document ID value. |
fx_rate_id | optional | integer | See Get rates for FX Service. Offers the option to use a specific FX rate to convert the transaction processing amount. Used FX rate should have the same source currency as the processing currency. Contact tech-support@emerchantpay.com for more details |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(150) | Primary address. The field length is limited to 150 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string(16) | The field that holds the zip code is limited to 16 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
city | required* | string(50) | The field that holds the city is limited to 50 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(3) | The field that holds the country state is limited to 3 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. Note: The value should be the country subdivision code defined in ISO 3166-2. Invalid values submitted NOT as per the ISO might lead to data integrity issues. |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(150) | Primary address. The field length is limited to 150 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string(16) | The field that holds the zip code is limited to 16 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
city | optional | string(50) | The field that holds the city is limited to 50 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(3) | The field that holds the country state is limited to 3 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. Note: The value should be the country subdivision code defined in ISO 3166-2. Invalid values submitted NOT as per the ISO might lead to data integrity issues. |
country | optional | string(2) | Country code in ISO 3166 |
mpi_params | required2 | ||
cavv | required3 | string(255) | Verification Id of the authentication. Please note this can be the CAVV for Visa Card or UCAF to identify MasterCard. |
eci | required3 | string(255) | See Electronic Commerce Indicator as returned from the MPI for details |
protocol_version | required4 | string | The used 3DS protocol version. |
protocol_sub_version | required4 | string | The used 3DS protocol sub-version. |
directory_server_id | required4 | string | The Directory Server ID used for 3DSecure transactions through the 3DSv2 authentication protocol. |
acs_transaction_id | optional | string | The ACS Transaction ID and is optional for 3DS transactions, but highly recommended for increasing the approval ratio. |
threeds_challenge_indicator | optional | string | The 3DS challenge indicator that represents the exact indicator used during the authentication request to the MPI provider for synchronous 3DS transactions. It is optional but highly recommended for increasing the approval ratio. It can only contain one of the following values no_preference, no_challenge_requested, preference and mandate. The default value is no_preference. Check 3DS Challenge Indicators for more details. |
sca_params | optional | SCA params | |
exemption | optional | string | The exemption that the transaction should take advantage of. Note that the requested exemption may not be accepted due to internal risk validations. Check SCA exemption values. |
visa_merchant_id | required5 | string(8) | VMID assigned by Visa if participating in Trusted merchant program. |
funding | optional | Funding Transaction Params | |
identifier_type | required* | string | This is only required in case of Mastercard. Type of Funding Transaction. Please check Identifier Types |
business_application_identifier | required* | string | This is only required in case of VISA. Type of VISA Funding Transaction. Please check BAI |
receiver | optional | Funding Transaction Receiver details | |
first_name | required* | string | First name of the receiver |
last_name | required* | string | Last name of the receiver |
country | required* | string(2) | Country code in ISO 3166 |
account_number | required* | string | Receiver account number. Mandatory for Mastercard. If Sender Reference Number is provided then it becomes optional for VISA |
account_number_type | required* | string | This is only required in case of Mastercard. Receiver account number type. Please check Receiver Account Types |
address | required* | string | Receiver address. Only required in case of VISA and Canadian cards |
state | required* | string | Receiver state. Only required in case of VISA and Canadian cards |
city | required* | string | Receiver city. Only required in case of VISA and Canadian cards |
sender | optional | Funding Transaction Sender details | |
name | required* | string | Sender name. Only required in case of VISA |
reference_number | required* | string | Sender Reference Number. Only required in case of VISA. This is option if Receiver Account Number is provided |
country | required* | string | Sender country. Only required in case of VISA. If not provided billing address is used |
address | required* | string | Sender address. Only required in case of VISA. If not provided billing address is used |
state | required* | string | Sender state. Only required in case of VISA and Canadian card. If not provided billing address is used |
city | required* | string | Sender city. Only required in case of VISA. If not provided billing address is used |
threeds_v2_params | required* | 3DSv2 async parameters. They must be submitted in order to use the 3DSv2 authentication protocol in asynchronous workflow | |
threeds_method | optional | 3DS-Method related parameters for any callbacks and notifications. | |
callback_url | optional | url | Specific 3DS-Method callback URL after the 3DS-Method completes. The actual status will be provided via HTTP POST to that URL. For more information, go to 3DSv2 method params |
control | required* | General params for preferences in authentication flow and providing device interface information. | |
device_type | required* | string | Identifies the device channel of the consumer, required in the 3DSv2 authentication protocol. For more information, go to 3DSv2 control params |
challenge_window_size | required* | string | Identifies the size of the challenge window for the consumer. For more information, go to 3DSv2 control params |
challenge_indicator | optional | string | The value has weight and might impact the decision whether a challenge will be required for the transaction or not. If not provided, it will be interpreted as no_preference. For more information, go to 3DSv2 control params |
purchase | optional | Purchase related params providing with additional information regarding the order. | |
category | optional | string | Identifies the type of transaction being authenticated. This field is required in some markets.Accepted values are: goods, service, check_acceptance, account_funding, quasi_cash, prepaid_activation, loan. |
merchant_risk | recommended | Merchant risk assessment params. They are all optional, but recommended. | |
shipping_indicator | optional | string(16) | Indicator code that most accurately describes the shipping method for the cardholder specific transaction. If one or more items are included in the sale, use the Shipping Indicator code for the physical goods. If all digital goods, use the code that describes the most expensive item. Accepted values are: same_as_billing, stored_address, verified_address, pick_up, digital_goods, travel, event_tickets, other. |
delivery_timeframe | optional | string(11) | Indicates the merchandise delivery timeframe. Accepted values are: electronic, same_day, over_night, another_day. |
reorder_items_indicator | optional | string(10) | Indicates whether the cardholder is reordering previously purchased merchandise. Accepted values are: first_time, reordered. |
pre_order_purchase_indicator | optional | string(21) | Indicates whether cardholder is placing an order for merchandise with a future-availability or release date. Accepted values are: merchandise_available, future_availability. |
pre_order_date | optional | dd-mm-yyyy | For a pre-ordered purchase, the expected date that the merchandise will be available. |
gift_card | optional | 'true' | Prepaid or gift card purchase. |
gift_card_count | optional | integer | For prepaid or gift card purchase, total count of individual prepaid or gift cards/codes purchased. The value is limited to 99. |
card_holder_account | recommended | Cardholder account additional information. They are all optional, but recommended, because they have a significant impact on approval rates | |
creation_date | optional | dd-mm-yyyy | Date that the cardholder opened the account with the 3DS Requester. |
update_indicator | optional | string(19) | Length of time since the cardholder’s account information with the 3DS Requestor was last changed. Includes Billing or Shipping address, new payment account, or new user(s) added. Accepted values are: current_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
last_change_date | optional | dd-mm-yyyy | Date that the cardholder’s account with the 3DS Requestor was last changed. Including Billing or Shipping address, new payment accout, or new user(s) added. |
password_change_indicator | optional | string(18) | Length of time since the cardholder account with the 3DS Requestor had a password change or account reset. Accepted values are: no_change, during_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
password_change_date | optional | dd-mm-yyyy | Date that cardholder’s account with the 3DS Requestor had a password change or account reset. |
shipping_address_usage_indicator | optional | string(19) | Indicates when the shipping address used for this transaction was first used with the 3DS Requestor. Accepted values are: current_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
shipping_address_date_first_used | optional | dd-mm-yyyy | Date when the shipping address used for this transaction was first used with the 3DS Requestor. |
transactions_activity_last_24_hours | optional | integer | Number of transactions (successful and abandoned) for this cardholder account with the 3DS Requestor across all payment accounts in the previous 24 hours. |
transactions_activity_previous_year | optional | integer | Number of transactions (successful and abandoned) for this cardholder account with the 3DS Requestor across all payment accounts in the previous year. |
provision_attempts_last_24_hours | optional | integer | Number of Add Card attempts in the last 24 hours. |
purchases_count_last_6_months | optional | integer | Number of purchases with this cardholder account during the previous six months. |
suspicious_activity_indicator | optional | string(22) | Indicates whether the 3DS Requestor has experienced suspicious activity (including previous fraud) on the cardholder account. Accepted values are: no_suspicious_observed, suspicious_observed. |
registration_indicator | optional | string(19) | Indicates the length of time that the payment account was enrolled in the cardholder’s account with the 3DS Requester. Accepted values are: guest_checkout, current_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
registration_date | optional | dd-mm-yyyy | Date that the payment account was enrolled in the cardholder’s account with the 3DS Requestor. |
browser | required* | For browser-based transactions. They are all required in case the device_type is set to browser | |
accept_header | required* | string(2048) | The exact content of the HTTP ACCEPT header as sent to the 3DS Requester from the Cardholder browser. Any other header different than the ACCEPT header will be rejected. Example: application/json,text/plain,text/html,*/* . |
java_enabled | required* | boolean | Boolean that represents the ability of the cardholder browser to execute Java. The value can be retrieved by accessing a property of the navigator with JavaScript, navigator.javaEnabled . |
language | required* | string(8) | Value representing the browser language as defined in IETF BCP47. Note that only one browser language tag is about to be submitted as per the above IETF BCP47. Numeric chars are also allowed in the subtag and will represent the region.Example: en-GB , zh-guoyu , fil-PH , gsw , es-419 , de-1996 , etc. The value can be retrieved by accessing a property of the navigator with JavaScript, navigator.language . |
color_depth | required* | integer | Value representing the bit depth of the colour palette for displaying images, in bits per pixel. Obtained from Cardholder browser using the screen.colorDepth property. The value as per EMVCo specs can be one of 1, 4, 8, 15, 16, 24, 32, 48. In case, an unsupported color_depth is determined, the nearest supported value that is less than the actual one needs to be submitted. For example, if the obtained value is 30, which is not supported as per EMVCo specs, 24 has to be submitted. |
screen_height | required* | integer | Total height of the Cardholder's screen in pixels. Value is returned from the screen.height property. |
screen_width | required* | integer | Total width of the Cardholder's screen in pixels. Value is returned from the screen.width property. |
time_zone_offset | required* | string(5) | Time difference between UTC time and the Cardholder browser local time, in minutes. Note that the offset is positive if the local time zone is behind UTC and negative if it is ahead. If UTC -5 hours then submit 300 or +300 , If UTC +2 hours then -120 . The value can be retrieved using Javascript getTimezoneOffset() method over Date object. |
user_agent | required* | string(2048) | Exact content of the HTTP user-agent header. |
sdk | required* | For application-based transactions. They are all required in case the device_type is set to application | |
interface | required* | string(6) | SDK Interface types that the device of the consumer supports for displaying specific challenge interfaces within the SDK. Accepted values are: native, html, both. |
ui_types | required* | Lists all UI types that the device of the consumer supports for displaying specific challenge interfaces within the SDK. | |
ui_type | required* | string(13) | UI type that the device of the consumer supports for displaying specific challenge interface. Accepted values are: text, single_select, multi_select, out_of_bag, other_html. |
application_id | required* | string(36) | Universally unique ID created upon all installations and updates of the 3DS Requestor APp on a Customer Device. This will be newly generated and stored by the 3DS SDK for each installation or update. The field is limited to 36 characters and it shall have a canonical format as defined in IETF RFC 4122. |
encrypted_data | required* | string(64000) | JWE Object as defined Section 6.2.2.1 containing data encrypted by the SDK for the DS to decrypt. The data will be present when sending to DS, but not present from DS to ACS. |
ephemeral_public_key_pair | required* | string(256) | Public key component of the ephemeral key pair generated by the 3DS SDK and used to establish session keys between the 3DS SDK and ACS. In AReq, this data element is contained within the ACS Signed Content JWS Object. The field is limited to maximum 256 characters. |
max_timeout | required* | integer | Indicates the maximum amount of time (in minutes) for all exchanges. The field shall have value greater or equals than 05. |
reference_number | required* | string(32) | Identifies the vendor and version of the 3DS SDK that is integrated in a 3DS Requestor App, assigned by EMVCo when the 3DS SDK is approved. The field is limited to 32 characters. |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
1 - Required if mpi_params
is not present, the transaction will be handled asynchronously. Not required if configured on Terminal or Merchant level. Contact Tech Support for more details.
2 - Required if transaction should be handled synchronous.
3 - eci
is always required if mpi_params
is present.
cavv
is not required for the 3D attempted only workflow, but it is strongly recommended in a combination with the Directory Server ID in order to be in the scope of the 3DSv2 authentication protocol.
4 - protocol_version
is required due to the only one 3DSv2 authentication protocol that is currently supported.
directory_server_id
is mandatory when protocol_version is 2. May be omitted for scheme tokenized transactions.
5 - visa_merchant_id
is required when exemption value is trusted_merchant
.
Frictionless / Challenge Response
stdClass Object
(
[transaction_type] => sale3d
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[threeds_method_url] => https://staging.gate.emerchantpay.net/threeds/threeds_method
[threeds_method_continue_url] => https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:01.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
)
<payment_response content=[
<transaction_type content=[sale3d]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<threeds_method_url content=[https://staging.gate.emerchantpay.net/threeds/threeds_method]>
<threeds_method_continue_url content=[https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48]>
<timestamp content=[2025-03-25T08:44:01Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
]>
{
transaction_type: "sale3d",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
threeds_method_url: "https://staging.gate.emerchantpay.net/threeds/threeds_method",
threeds_method_continue_url: "https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48",
timestamp: "2025-03-25T08:44:01Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale3d</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<threeds_method_url>https://staging.gate.emerchantpay.net/threeds/threeds_method</threeds_method_url>
<threeds_method_continue_url>https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48</threeds_method_continue_url>
<timestamp>2025-03-25T08:44:01Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
</payment_response>
Challenge Without 3 Ds Mеthod Response
stdClass Object
(
[transaction_type] => sale3d
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[redirect_url] => https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48
[redirect_url_type] => 3ds_v2_challenge
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:01.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
)
<payment_response content=[
<transaction_type content=[sale3d]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<redirect_url content=[https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48]>
<redirect_url_type content=[3ds_v2_challenge]>
<timestamp content=[2025-03-25T08:44:01Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
]>
{
transaction_type: "sale3d",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
redirect_url: "https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48",
redirect_url_type: "3ds_v2_challenge",
timestamp: "2025-03-25T08:44:01Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale3d</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<redirect_url>https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48</redirect_url>
<redirect_url_type>3ds_v2_challenge</redirect_url_type>
<timestamp>2025-03-25T08:44:01Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
token | string(36) | Plain-text token value. See Tokenization |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
cvv_result_code | string(1) | Card Verification Value response code. Optional, returned only if acquirer supports it |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
payment_account_reference | string(255) | Payment Account Reference value returned from the schemes. Links tokenized and PAN-based transactions. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where the consumer has to be redirected to complete the payment process unless a 3DSecure Method is required. This redirect_url will not be included in the response if a 3DS-Method submission is required. For more information, to go 3DSv2 authentication flows |
redirect_url_type | string(64) | The type of the redirect URL in the 3DS scope. It will be present only for asynchronous 3D transactions when an interaction between consumer and issuer is required. This type identifies what kind of redirect url is returned, namely 3DSv2 Challenge. For more information, to go 3DSv2 authentication flows |
threeds_method_url | url | 3DSecure Method URL. It will be present only then 3DS-Method is required for 3D transaction. A 3DS-Method submission inside an iframe is required to be submitted using HTTP POST. For more information, to go 3DSv2 authentication flows |
threeds_method_continue_url | url | This is an API endpoint that accepts HTTP PUT & HTTP PATCH requests. It will be present when the threeds_method_url is included in the response. An HTTP PUT request must be submitted to that endpoint together with the proper signature to determine what the next step in the authentication is. For more information, to go 3DSv2 authentication flows |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
scheme_transaction_identifier | string(32) | Id defined by card schemes. Corresponds to NETWORK DATA (field 63) for MasterCard or TRANS ID (field 62.2/125) for VISA. |
scheme_transaction_link_id | string(22) | The transaction unique identifier returned from the schemes. Corresponds to ADDITIONAL SERVICE DATA (field 65, MasterCard Transaction Link Id [TLID]). |
scheme_pan_indicator | string(1) | The account number indicator in scheme-tokenized transactions. See Account number indicator codes for details. |
scheme_pan_tail | string(4) | The tail of the PAN number tail associated with the token in scheme-tokenized transactions. Returned in conjunction with scheme_pan_indicator . |
scheme_max_settlement_date | string(10) | The final date an authorization could be captured which is returned from the card scheme. See Scheme Maximum Settlement Date for more details. |
scheme_authentication_data_quality | boolean | The Authentication Data Quality Indicator returned by the card scheme is used to indicate whether a transaction meets the authentication data quality requirements. The value can be either true or false . |
scheme_settlement_date | string(4) | MasterCard settlement date in MMDD format (e.g. 0326). Corresponds to NETWORK DATA (field 15). |
reason_for_not_honoring_exemption | string | Reason for not honoring exemption. Check SCA Reason For Not Honoring Exemption Values. |
sca_exemption_result | string | SCA exemption result. Check SCA Exemption Result Values. |
threeds | ||
eci | string(2) | See Electronic Commerce Indicator as returned from the MPI for details |
Error Response
stdClass Object
(
[transaction_type] => sale3d
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[response_code] => 57
[code] => 340
[technical_message] => expiration_year is invalid
[message] => expiration_year is invalid
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:01.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[sale3d]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<response_code content=[57]>
<code content=[340]>
<technical_message content=[expiration_year is invalid]>
<message content=[expiration_year is invalid]>
<timestamp content=[2025-03-25T08:44:01Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "sale3d",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
response_code: "57",
code: "340",
technical_message: "expiration_year is invalid",
message: "expiration_year is invalid",
timestamp: "2025-03-25T08:44:01Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale3d</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<response_code>57</response_code>
<code>340</code>
<technical_message>expiration_year is invalid</technical_message>
<message>expiration_year is invalid</message>
<timestamp>2025-03-25T08:44:01Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
threeds | ||
authentication | ||
status_reason_code | string(2) | See 3DS Authentication Status Reason Codes for details. |
Error Response
stdClass Object
(
[transaction_type] => sale3d
[status] => declined
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 600
[technical_message] => Cardholder not participating 3DS.
[message] => Transaction failed, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:01.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
[threeds] => {"eci"=>"06", "authentication"=>{"status_reason_code"=>"08"}}
)
<payment_response content=[
<transaction_type content=[sale3d]>
<status content=[declined]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[600]>
<technical_message content=[Cardholder not participating 3DS.]>
<message content=[Transaction failed, please contact support!]>
<timestamp content=[2025-03-25T08:44:01Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
<threeds content=[{"eci"=>"06", "authentication"=>{"status_reason_code"=>"08"}}]>
]>
{
transaction_type: "sale3d",
status: "declined",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "600",
technical_message: "Cardholder not participating 3DS.",
message: "Transaction failed, please contact support!",
timestamp: "2025-03-25T08:44:01Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
threeds: "{"eci"=>"06", "authentication"=>{"status_reason_code"=>"08"}}",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale3d</transaction_type>
<status>declined</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>600</code>
<technical_message>Cardholder not participating 3DS.</technical_message>
<message>Transaction failed, please contact support!</message>
<timestamp>2025-03-25T08:44:01Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<threeds>
<eci>06</eci>
<authentication>
<status_reason_code>08</status_reason_code>
</authentication>
</threeds>
</payment_response>
Init Recurring Sale 3D
InitRecurringSale3D transactions basically have the same request as standard InitRecurringSale transactions.
Visa Synchronous 3 D Sv2 Fully Authenticated Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4012000000060085')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('05')
->setMpiCavv('MDAwMDAwMDAwMDAxMTA2Njk5NFg=')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('64137110-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('641371c0-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('trusted_merchant')
->setScaVisaMerchantId('00000000')
->set#<Proc:0x0000ffff875fb978 includes::Transactions::3ds::V2::Examples::Requests.md.erb:43 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale3D;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale3D request = new InitRecurringSale3D();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4012000000060085");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"05", "cavv"=>"MDAwMDAwMDAwMDAxMTA2Njk5NFg=", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"64137110-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"641371c0-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("trusted_merchant");
request.setScaVisaMerchantId("00000000");
request.setRecurringCategory("subscription");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4012000000060085",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "05",
"cavv": "MDAwMDAwMDAwMDAxMTA2Njk5NFg=",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "64137110-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "641371c0-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "trusted_merchant",
"visa_merchant_id": "00000000"
},
"recurring_category": "subscription"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>init_recurring_sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4012000000060085</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>05</eci>
<cavv>MDAwMDAwMDAwMDAxMTA2Njk5NFg=</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>64137110-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>641371c0-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>trusted_merchant</exemption>
<visa_merchant_id>00000000</visa_merchant_id>
</sca_params>
<recurring_category>subscription</recurring_category>
</payment_transaction>'
Master Synchronous 3 D Sv2 Fully Authenticated Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('5555555555559997')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('02')
->setMpiCavv('kBOImea0C/2ta1NZl4Hhwslmomqj')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('64182df0-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('64182ea0-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
->set#<Proc:0x0000ffff873baba0 includes::Transactions::3ds::V2::Examples::Requests.md.erb:85 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale3D;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale3D request = new InitRecurringSale3D();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("5555555555559997");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"02", "cavv"=>"kBOImea0C/2ta1NZl4Hhwslmomqj", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"64182df0-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"64182ea0-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
request.setRecurringCategory("subscription");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "5555555555559997",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "02",
"cavv": "kBOImea0C/2ta1NZl4Hhwslmomqj",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "64182df0-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "64182ea0-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"recurring_category": "subscription"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>init_recurring_sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>5555555555559997</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>02</eci>
<cavv>kBOImea0C/2ta1NZl4Hhwslmomqj</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>64182df0-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>64182ea0-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<recurring_category>subscription</recurring_category>
</payment_transaction>'
Visa Synchronous 3 D Sv2 Attempted Authentication Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4012000000060085')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('06')
->setMpiCavv('MDAwMDAwMDAwMDAxMTA2Njk5NFg=')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('641cc940-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('641cc9d0-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('trusted_merchant')
->setScaVisaMerchantId('00000000')
->set#<Proc:0x0000ffff87153588 includes::Transactions::3ds::V2::Examples::Requests.md.erb:43 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale3D;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale3D request = new InitRecurringSale3D();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4012000000060085");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"06", "cavv"=>"MDAwMDAwMDAwMDAxMTA2Njk5NFg=", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"641cc940-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"641cc9d0-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("trusted_merchant");
request.setScaVisaMerchantId("00000000");
request.setRecurringCategory("subscription");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4012000000060085",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "06",
"cavv": "MDAwMDAwMDAwMDAxMTA2Njk5NFg=",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "641cc940-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "641cc9d0-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "trusted_merchant",
"visa_merchant_id": "00000000"
},
"recurring_category": "subscription"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>init_recurring_sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4012000000060085</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>06</eci>
<cavv>MDAwMDAwMDAwMDAxMTA2Njk5NFg=</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>641cc940-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>641cc9d0-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>trusted_merchant</exemption>
<visa_merchant_id>00000000</visa_merchant_id>
</sca_params>
<recurring_category>subscription</recurring_category>
</payment_transaction>'
Master Synchronous 3 D Sv2 Attempted Authentication Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('5555555555559997')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('01')
->setMpiCavv('kEOImea0C/2ta1NZl4Hhwslmomqj')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('64216a00-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('64216a90-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
->set#<Proc:0x0000ffff8727e020 includes::Transactions::3ds::V2::Examples::Requests.md.erb:85 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale3D;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale3D request = new InitRecurringSale3D();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("5555555555559997");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"01", "cavv"=>"kEOImea0C/2ta1NZl4Hhwslmomqj", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"64216a00-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"64216a90-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
request.setRecurringCategory("subscription");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "5555555555559997",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "01",
"cavv": "kEOImea0C/2ta1NZl4Hhwslmomqj",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "64216a00-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "64216a90-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"recurring_category": "subscription"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>init_recurring_sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>5555555555559997</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>01</eci>
<cavv>kEOImea0C/2ta1NZl4Hhwslmomqj</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>64216a00-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>64216a90-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<recurring_category>subscription</recurring_category>
</payment_transaction>'
Master Synchronous 3 D Sv2 Acquirer Exemption Accepted (Tra Already Performed) Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('5169750000001111')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('06')
->setMpiCavv('kNMAAAAA3S13awBkrWtTWZeBBCmy')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('6425c2d0-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('6425c350-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff876ae848 includes::Transactions::3ds::V2::Examples::Requests.md.erb:132 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale3D;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale3D request = new InitRecurringSale3D();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("5169750000001111");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"06", "cavv"=>"kNMAAAAA3S13awBkrWtTWZeBBCmy", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"6425c2d0-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"6425c350-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("low_risk");
request.setRecurringCategory("subscription");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "5169750000001111",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "06",
"cavv": "kNMAAAAA3S13awBkrWtTWZeBBCmy",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "6425c2d0-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "6425c350-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "low_risk"
},
"recurring_category": "subscription"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>init_recurring_sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>5169750000001111</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>06</eci>
<cavv>kNMAAAAA3S13awBkrWtTWZeBBCmy</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>6425c2d0-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>6425c350-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
<recurring_category>subscription</recurring_category>
</payment_transaction>'
Visa Synchronous 3 D Sv2 Acquirer Exemption Accepted (Tra Already Performed) Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4378510000000004')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
// MPI Synchronous 3DSv2
->setMpiEci('07')
->setMpiCavv('ApkCAlgGQCECEBJWNgZAAAAAAAA=')
->setMpiProtocolVersion('2')
->setMpiProtocolSubVersion('2')
->setMpiDirectoryServerId('642acc80-ec4c-013d-ed00-0a58a9feac02')
->setMpiAcsTransactionId('642acd10-ec4c-013d-ed00-0a58a9feac02')
->setMpiThreedsChallengeIndicator('preference')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff8c624710 includes::Transactions::3ds::V2::Examples::Requests.md.erb:179 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale3D;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale3D request = new InitRecurringSale3D();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4378510000000004");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
// Mpi Synchronous V2
request.setMpiParams("{"eci"=>"07", "cavv"=>"ApkCAlgGQCECEBJWNgZAAAAAAAA=", "protocol_version"=>"2", "protocol_sub_version"=>"2", "directory_server_id"=>"642acc80-ec4c-013d-ed00-0a58a9feac02", "acs_transaction_id"=>"642acd10-ec4c-013d-ed00-0a58a9feac02", "threeds_challenge_indicator"=>"preference"}");
// Sca Params
request.setScaExemption("low_risk");
request.setRecurringCategory("subscription");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4378510000000004",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"mpi_params": {
"eci": "07",
"cavv": "ApkCAlgGQCECEBJWNgZAAAAAAAA=",
"protocol_version": "2",
"protocol_sub_version": "2",
"directory_server_id": "642acc80-ec4c-013d-ed00-0a58a9feac02",
"acs_transaction_id": "642acd10-ec4c-013d-ed00-0a58a9feac02",
"threeds_challenge_indicator": "preference"
},
"sca_params": {
"exemption": "low_risk"
},
"recurring_category": "subscription"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>init_recurring_sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4378510000000004</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<mpi_params>
<eci>07</eci>
<cavv>ApkCAlgGQCECEBJWNgZAAAAAAAA=</cavv>
<protocol_version>2</protocol_version>
<protocol_sub_version>2</protocol_sub_version>
<directory_server_id>642acc80-ec4c-013d-ed00-0a58a9feac02</directory_server_id>
<acs_transaction_id>642acd10-ec4c-013d-ed00-0a58a9feac02</acs_transaction_id>
<threeds_challenge_indicator>preference</threeds_challenge_indicator>
</mpi_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
<recurring_category>subscription</recurring_category>
</payment_transaction>'
Asynchronous 3 D Sv2 Frictionless No 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4012000000060085')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff875e2ba8 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale3D;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale3D request = new InitRecurringSale3D();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4012000000060085");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
request.setRecurringCategory("subscription");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4012000000060085",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
},
"recurring_category": "subscription"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>init_recurring_sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4012000000060085</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<recurring>
<expiration_date>26-09-2025</expiration_date>
<frequency>30</frequency>
</recurring>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
<recurring_category>subscription</recurring_category>
</payment_transaction>'
Asynchronous 3 D Sv2 Frictionless With 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4066330000000004')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff8736e408 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale3D;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale3D request = new InitRecurringSale3D();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4066330000000004");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
request.setRecurringCategory("subscription");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4066330000000004",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
},
"recurring_category": "subscription"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>init_recurring_sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4066330000000004</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<recurring>
<expiration_date>26-09-2025</expiration_date>
<frequency>30</frequency>
</recurring>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
<recurring_category>subscription</recurring_category>
</payment_transaction>'
Asynchronous 3 D Sv2 Challenge No 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4918190000000002')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff86f54c28 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale3D;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale3D request = new InitRecurringSale3D();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4918190000000002");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
request.setRecurringCategory("subscription");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4918190000000002",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
},
"recurring_category": "subscription"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>init_recurring_sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4918190000000002</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<recurring>
<expiration_date>26-09-2025</expiration_date>
<frequency>30</frequency>
</recurring>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
<recurring_category>subscription</recurring_category>
</payment_transaction>'
Asynchronous 3 D Sv2 Challenge With 3ds Method Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Recurring\InitRecurringSale3D');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardHolder('Travis Pastrana')
->setCardNumber('4938730000000001')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
// Threeds V2 Params
->setThreedsThreedsMethod('{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}')
->setThreedsControl('{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}')
->setThreedsPurchase('{"category"=>"service"}')
->setThreedsRecurring('{"expiration_date"=>"26-09-2025", "frequency"=>30}')
->setThreedsMerchantRisk('{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}')
->setThreedsCardHolderAccount('{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}')
->setThreedsBrowser('{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}')
->setThreedsSdk('{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}')
// Sca Params
->setScaExemption('low_risk')
->set#<Proc:0x0000ffff875581b0 includes::Transactions::3ds::V2::Examples::Requests.md.erb:219 (lambda)>('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.recurring.InitRecurringSale3D;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InitRecurringSale3D request = new InitRecurringSale3D();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4938730000000001");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
// Threeds V2 Params
request.setThreedsThreedsMethod("{"callback_url"=>"https://www.example.com/threeds/threeds_method/callback"}");
request.setThreedsControl("{"device_type"=>"browser", "challenge_window_size"=>"full_screen", "challenge_indicator"=>"preference"}");
request.setThreedsPurchase("{"category"=>"service"}");
request.setThreedsRecurring("{"expiration_date"=>"26-09-2025", "frequency"=>30}");
request.setThreedsMerchantRisk("{"shipping_indicator"=>"verified_address", "delivery_timeframe"=>"electronic", "reorder_items_indicator"=>"reordered", "pre_order_purchase_indicator"=>"merchandise_available", "pre_order_date"=>"26-04-2025", "gift_card"=>"true", "gift_card_count"=>"2"}");
request.setThreedsCardHolderAccount("{"creation_date"=>"26-03-2024", "update_indicator"=>"more_than_60days", "last_change_date"=>"26-12-2024", "password_change_indicator"=>"no_change", "password_change_date"=>"11-03-2025", "shipping_address_usage_indicator"=>"current_transaction", "shipping_address_date_first_used"=>"21-03-2025", "transactions_activity_last_24_hours"=>"2", "transactions_activity_previous_year"=>"10", "provision_attempts_last_24_hours"=>"1", "purchases_count_last_6_months"=>"5", "suspicious_activity_indicator"=>"no_suspicious_observed", "registration_indicator"=>"30_to_60_days", "registration_date"=>"26-03-2023"}");
request.setThreedsBrowser("{"accept_header"=>"*/*", "java_enabled"=>"false", "language"=>"en-GB", "color_depth"=>"24", "screen_height"=>"900", "screen_width"=>"1440", "time_zone_offset"=>"-120", "user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}");
request.setThreedsSdk("{"interface"=>"native", "ui_types"=>{"ui_type"=>"multi_select"}, "application_id"=>"fc1650c0-5778-0138-8205-2cbc32a32d65", "encrypted_data"=>"encrypted-data-here", "ephemeral_public_key_pair"=>"public-key-pair", "max_timeout"=>"10", "reference_number"=>"sdk-reference-number-here"}");
// Sca Params
request.setScaExemption("low_risk");
request.setRecurringCategory("subscription");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.init_recurring_sale3d(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"card_holder": "Travis Pastrana",
"card_number": "4938730000000001",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
},
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"threeds_v2_params": {
"threeds_method": {
"callback_url": "https://www.example.com/threeds/threeds_method/callback"
},
"control": {
"device_type": "browser",
"challenge_window_size": "full_screen",
"challenge_indicator": "preference"
},
"purchase": {
"category": "service"
},
"recurring": {
"expiration_date": "26-09-2025",
"frequency": 30
},
"merchant_risk": {
"shipping_indicator": "verified_address",
"delivery_timeframe": "electronic",
"reorder_items_indicator": "reordered",
"pre_order_purchase_indicator": "merchandise_available",
"pre_order_date": "26-04-2025",
"gift_card": "true",
"gift_card_count": "2"
},
"card_holder_account": {
"creation_date": "26-03-2024",
"update_indicator": "more_than_60days",
"last_change_date": "26-12-2024",
"password_change_indicator": "no_change",
"password_change_date": "11-03-2025",
"shipping_address_usage_indicator": "current_transaction",
"shipping_address_date_first_used": "21-03-2025",
"transactions_activity_last_24_hours": "2",
"transactions_activity_previous_year": "10",
"provision_attempts_last_24_hours": "1",
"purchases_count_last_6_months": "5",
"suspicious_activity_indicator": "no_suspicious_observed",
"registration_indicator": "30_to_60_days",
"registration_date": "26-03-2023"
},
"browser": {
"accept_header": "*/*",
"java_enabled": "false",
"language": "en-GB",
"color_depth": "24",
"screen_height": "900",
"screen_width": "1440",
"time_zone_offset": "-120",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
},
"sdk": {
"interface": "native",
"ui_types": {
"ui_type": "multi_select"
},
"application_id": "fc1650c0-5778-0138-8205-2cbc32a32d65",
"encrypted_data": "encrypted-data-here",
"ephemeral_public_key_pair": "public-key-pair",
"max_timeout": "10",
"reference_number": "sdk-reference-number-here"
}
},
"sca_params": {
"exemption": "low_risk"
},
"recurring_category": "subscription"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>init_recurring_sale3d</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4938730000000001</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<threeds_v2_params>
<threeds_method>
<callback_url>https://www.example.com/threeds/threeds_method/callback</callback_url>
</threeds_method>
<control>
<device_type>browser</device_type>
<challenge_window_size>full_screen</challenge_window_size>
<challenge_indicator>preference</challenge_indicator>
</control>
<purchase>
<category>service</category>
</purchase>
<recurring>
<expiration_date>26-09-2025</expiration_date>
<frequency>30</frequency>
</recurring>
<merchant_risk>
<shipping_indicator>verified_address</shipping_indicator>
<delivery_timeframe>electronic</delivery_timeframe>
<reorder_items_indicator>reordered</reorder_items_indicator>
<pre_order_purchase_indicator>merchandise_available</pre_order_purchase_indicator>
<pre_order_date>26-04-2025</pre_order_date>
<gift_card>true</gift_card>
<gift_card_count>2</gift_card_count>
</merchant_risk>
<card_holder_account>
<creation_date>26-03-2024</creation_date>
<update_indicator>more_than_60days</update_indicator>
<last_change_date>26-12-2024</last_change_date>
<password_change_indicator>no_change</password_change_indicator>
<password_change_date>11-03-2025</password_change_date>
<shipping_address_usage_indicator>current_transaction</shipping_address_usage_indicator>
<shipping_address_date_first_used>21-03-2025</shipping_address_date_first_used>
<transactions_activity_last_24_hours>2</transactions_activity_last_24_hours>
<transactions_activity_previous_year>10</transactions_activity_previous_year>
<provision_attempts_last_24_hours>1</provision_attempts_last_24_hours>
<purchases_count_last_6_months>5</purchases_count_last_6_months>
<suspicious_activity_indicator>no_suspicious_observed</suspicious_activity_indicator>
<registration_indicator>30_to_60_days</registration_indicator>
<registration_date>26-03-2023</registration_date>
</card_holder_account>
<browser>
<accept_header>*/*</accept_header>
<java_enabled>false</java_enabled>
<language>en-GB</language>
<color_depth>24</color_depth>
<screen_height>900</screen_height>
<screen_width>1440</screen_width>
<time_zone_offset>-120</time_zone_offset>
<user_agent>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36</user_agent>
</browser>
<sdk>
<interface>native</interface>
<ui_types>
<ui_type>multi_select</ui_type>
</ui_types>
<application_id>fc1650c0-5778-0138-8205-2cbc32a32d65</application_id>
<encrypted_data>encrypted-data-here</encrypted_data>
<ephemeral_public_key_pair>public-key-pair</ephemeral_public_key_pair>
<max_timeout>10</max_timeout>
<reference_number>sdk-reference-number-here</reference_number>
</sdk>
</threeds_v2_params>
<sca_params>
<exemption>low_risk</exemption>
</sca_params>
<recurring_category>subscription</recurring_category>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: init_recurring_sale3d |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
notification_url | required1 | url | URL at merchant where gateway sends outcome of transaction. |
return_success_url | required1 | url | URL where customer is sent to after successful payment |
return_failure_url | required1 | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer >= 0 | Transaction amount in minor currency unit, see Currency and Amount Handling for details. In certain cases, it is possible to submit a transaction with a zero-value amount in order not to charge the consumer with the initial recurring, but with the followed RecurringSale transactions only. For more information regarding the use cases and scenario, Contact tech-support@emerchantpay.com for more details. |
currency | required | string(3) | Currency code in ISO 4217 |
card_holder | required | string(45) | Full name of customer as printed on credit card (first name and last name at least). Note, for async 3DSv2 transactions, the card holder name must NOT contain more than 45 chars. Otherwise, the rest will be truncated in the authentication request. |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required* | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted. Cannot be set together with remember_card |
remember_card | optional | "true" | See Tokenize. Tokenizes cardholder parameters. Cannot be set together with token |
consumer_id | optional | string(10) | See Consumers and Tokenization. Combine with remember_card to tokenize or with token to use token |
recurring_category | optional | string | Specifies whether the recurring transaction is a subscription(fixed amount, fixed intervals)or if it is a standing order(varying amount, fixed intervals). The allowed values aresubscription and standing_order . The default value is subscription |
scheme_tokenized | required* | "true" | Required when the card_number is DPAN instead of Funding Primary Account Number, see Tokenized e-commerce for details |
credential_on_file | required* | See Credential On File (COF) for more details | |
initial_customer_initiated | required* | string(18) | Initial transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
subsequent_customer_initiated | required* | string(18) | Subsequent transaction initiated by customer. Required for external tokenization, and optional for gateway-based tokenization |
merchant_unscheduled | optional | string(20) | Transaction is initiated by the merchant |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(16) | Must contain а valid international phone number of the customer as per the ITU-T E.164. It's recommended to not submit a customer phone number containing more than 15 digits or less than 7 digits. Note, for async 3DS transactions that are using the 3DSv2 authentication protocol, it will be shortened up to 15 digits and a prefix + for international phone number will be added if missing. |
birth_date | required* | dd-mm-yyyy | Required when MCC is a Financial Services one (e.g. MCC 6012) and either card brand is Visa or Mastercard/Maestro with UK-based merchant, UK-based bin (domestic), and DEBIT card type |
document_id | required* | string(255) | Document ID value. |
fx_rate_id | optional | integer | See Get rates for FX Service. Offers the option to use a specific FX rate to convert the transaction processing amount. Used FX rate should have the same source currency as the processing currency. Contact tech-support@emerchantpay.com for more details |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(150) | Primary address. The field length is limited to 150 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string(16) | The field that holds the zip code is limited to 16 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
city | required* | string(50) | The field that holds the city is limited to 50 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(3) | The field that holds the country state is limited to 3 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. Note: The value should be the country subdivision code defined in ISO 3166-2. Invalid values submitted NOT as per the ISO might lead to data integrity issues. |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(150) | Primary address. The field length is limited to 150 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string(16) | The field that holds the zip code is limited to 16 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
city | optional | string(50) | The field that holds the city is limited to 50 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(3) | The field that holds the country state is limited to 3 chars only for async 3DS transactions that are using the 3DSv2 authentication protocol. Note: The value should be the country subdivision code defined in ISO 3166-2. Invalid values submitted NOT as per the ISO might lead to data integrity issues. |
country | optional | string(2) | Country code in ISO 3166 |
mpi_params | required2 | ||
cavv | required3 | string(255) | Verification Id of the authentication. Please note this can be the CAVV for Visa Card or UCAF to identify MasterCard. |
eci | required3 | string(255) | See Electronic Commerce Indicator as returned from the MPI for details |
protocol_version | required4 | string | The used 3DS protocol version. |
protocol_sub_version | required4 | string | The used 3DS protocol sub-version. |
directory_server_id | required4 | string | The Directory Server ID used for 3DSecure transactions through the 3DSv2 authentication protocol. |
acs_transaction_id | optional | string | The ACS Transaction ID and is optional for 3DS transactions, but highly recommended for increasing the approval ratio. |
threeds_challenge_indicator | optional | string | The 3DS challenge indicator that represents the exact indicator used during the authentication request to the MPI provider for synchronous 3DS transactions. It is optional but highly recommended for increasing the approval ratio. It can only contain one of the following values no_preference, no_challenge_requested, preference and mandate. The default value is no_preference. Check 3DS Challenge Indicators for more details. |
sca_params | optional | SCA params | |
exemption | optional | string | The exemption that the transaction should take advantage of. Note that the requested exemption may not be accepted due to internal risk validations. Check SCA exemption values. |
visa_merchant_id | required5 | string(8) | VMID assigned by Visa if participating in Trusted merchant program. |
funding | optional | Funding Transaction Params | |
identifier_type | required* | string | This is only required in case of Mastercard. Type of Funding Transaction. Please check Identifier Types |
business_application_identifier | required* | string | This is only required in case of VISA. Type of VISA Funding Transaction. Please check BAI |
receiver | optional | Funding Transaction Receiver details | |
first_name | required* | string | First name of the receiver |
last_name | required* | string | Last name of the receiver |
country | required* | string(2) | Country code in ISO 3166 |
account_number | required* | string | Receiver account number. Mandatory for Mastercard. If Sender Reference Number is provided then it becomes optional for VISA |
account_number_type | required* | string | This is only required in case of Mastercard. Receiver account number type. Please check Receiver Account Types |
address | required* | string | Receiver address. Only required in case of VISA and Canadian cards |
state | required* | string | Receiver state. Only required in case of VISA and Canadian cards |
city | required* | string | Receiver city. Only required in case of VISA and Canadian cards |
sender | optional | Funding Transaction Sender details | |
name | required* | string | Sender name. Only required in case of VISA |
reference_number | required* | string | Sender Reference Number. Only required in case of VISA. This is option if Receiver Account Number is provided |
country | required* | string | Sender country. Only required in case of VISA. If not provided billing address is used |
address | required* | string | Sender address. Only required in case of VISA. If not provided billing address is used |
state | required* | string | Sender state. Only required in case of VISA and Canadian card. If not provided billing address is used |
city | required* | string | Sender city. Only required in case of VISA. If not provided billing address is used |
threeds_v2_params | required* | 3DSv2 async parameters. They must be submitted in order to use the 3DSv2 authentication protocol in asynchronous workflow | |
threeds_method | optional | 3DS-Method related parameters for any callbacks and notifications. | |
callback_url | optional | url | Specific 3DS-Method callback URL after the 3DS-Method completes. The actual status will be provided via HTTP POST to that URL. For more information, go to 3DSv2 method params |
control | required* | General params for preferences in authentication flow and providing device interface information. | |
device_type | required* | string | Identifies the device channel of the consumer, required in the 3DSv2 authentication protocol. For more information, go to 3DSv2 control params |
challenge_window_size | required* | string | Identifies the size of the challenge window for the consumer. For more information, go to 3DSv2 control params |
challenge_indicator | optional | string | The value has weight and might impact the decision whether a challenge will be required for the transaction or not. If not provided, it will be interpreted as no_preference. For more information, go to 3DSv2 control params |
purchase | optional | Purchase related params providing with additional information regarding the order. | |
category | optional | string | Identifies the type of transaction being authenticated. This field is required in some markets.Accepted values are: goods, service, check_acceptance, account_funding, quasi_cash, prepaid_activation, loan. |
merchant_risk | recommended | Merchant risk assessment params. They are all optional, but recommended. | |
shipping_indicator | optional | string(16) | Indicator code that most accurately describes the shipping method for the cardholder specific transaction. If one or more items are included in the sale, use the Shipping Indicator code for the physical goods. If all digital goods, use the code that describes the most expensive item. Accepted values are: same_as_billing, stored_address, verified_address, pick_up, digital_goods, travel, event_tickets, other. |
delivery_timeframe | optional | string(11) | Indicates the merchandise delivery timeframe. Accepted values are: electronic, same_day, over_night, another_day. |
reorder_items_indicator | optional | string(10) | Indicates whether the cardholder is reordering previously purchased merchandise. Accepted values are: first_time, reordered. |
pre_order_purchase_indicator | optional | string(21) | Indicates whether cardholder is placing an order for merchandise with a future-availability or release date. Accepted values are: merchandise_available, future_availability. |
pre_order_date | optional | dd-mm-yyyy | For a pre-ordered purchase, the expected date that the merchandise will be available. |
gift_card | optional | 'true' | Prepaid or gift card purchase. |
gift_card_count | optional | integer | For prepaid or gift card purchase, total count of individual prepaid or gift cards/codes purchased. The value is limited to 99. |
card_holder_account | recommended | Cardholder account additional information. They are all optional, but recommended, because they have a significant impact on approval rates | |
creation_date | optional | dd-mm-yyyy | Date that the cardholder opened the account with the 3DS Requester. |
update_indicator | optional | string(19) | Length of time since the cardholder’s account information with the 3DS Requestor was last changed. Includes Billing or Shipping address, new payment account, or new user(s) added. Accepted values are: current_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
last_change_date | optional | dd-mm-yyyy | Date that the cardholder’s account with the 3DS Requestor was last changed. Including Billing or Shipping address, new payment accout, or new user(s) added. |
password_change_indicator | optional | string(18) | Length of time since the cardholder account with the 3DS Requestor had a password change or account reset. Accepted values are: no_change, during_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
password_change_date | optional | dd-mm-yyyy | Date that cardholder’s account with the 3DS Requestor had a password change or account reset. |
shipping_address_usage_indicator | optional | string(19) | Indicates when the shipping address used for this transaction was first used with the 3DS Requestor. Accepted values are: current_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
shipping_address_date_first_used | optional | dd-mm-yyyy | Date when the shipping address used for this transaction was first used with the 3DS Requestor. |
transactions_activity_last_24_hours | optional | integer | Number of transactions (successful and abandoned) for this cardholder account with the 3DS Requestor across all payment accounts in the previous 24 hours. |
transactions_activity_previous_year | optional | integer | Number of transactions (successful and abandoned) for this cardholder account with the 3DS Requestor across all payment accounts in the previous year. |
provision_attempts_last_24_hours | optional | integer | Number of Add Card attempts in the last 24 hours. |
purchases_count_last_6_months | optional | integer | Number of purchases with this cardholder account during the previous six months. |
suspicious_activity_indicator | optional | string(22) | Indicates whether the 3DS Requestor has experienced suspicious activity (including previous fraud) on the cardholder account. Accepted values are: no_suspicious_observed, suspicious_observed. |
registration_indicator | optional | string(19) | Indicates the length of time that the payment account was enrolled in the cardholder’s account with the 3DS Requester. Accepted values are: guest_checkout, current_transaction, less_than_30days, 30_to_60_days, more_than_60days. |
registration_date | optional | dd-mm-yyyy | Date that the payment account was enrolled in the cardholder’s account with the 3DS Requestor. |
browser | required* | For browser-based transactions. They are all required in case the device_type is set to browser | |
accept_header | required* | string(2048) | The exact content of the HTTP ACCEPT header as sent to the 3DS Requester from the Cardholder browser. Any other header different than the ACCEPT header will be rejected. Example: application/json,text/plain,text/html,*/* . |
java_enabled | required* | boolean | Boolean that represents the ability of the cardholder browser to execute Java. The value can be retrieved by accessing a property of the navigator with JavaScript, navigator.javaEnabled . |
language | required* | string(8) | Value representing the browser language as defined in IETF BCP47. Note that only one browser language tag is about to be submitted as per the above IETF BCP47. Numeric chars are also allowed in the subtag and will represent the region.Example: en-GB , zh-guoyu , fil-PH , gsw , es-419 , de-1996 , etc. The value can be retrieved by accessing a property of the navigator with JavaScript, navigator.language . |
color_depth | required* | integer | Value representing the bit depth of the colour palette for displaying images, in bits per pixel. Obtained from Cardholder browser using the screen.colorDepth property. The value as per EMVCo specs can be one of 1, 4, 8, 15, 16, 24, 32, 48. In case, an unsupported color_depth is determined, the nearest supported value that is less than the actual one needs to be submitted. For example, if the obtained value is 30, which is not supported as per EMVCo specs, 24 has to be submitted. |
screen_height | required* | integer | Total height of the Cardholder's screen in pixels. Value is returned from the screen.height property. |
screen_width | required* | integer | Total width of the Cardholder's screen in pixels. Value is returned from the screen.width property. |
time_zone_offset | required* | string(5) | Time difference between UTC time and the Cardholder browser local time, in minutes. Note that the offset is positive if the local time zone is behind UTC and negative if it is ahead. If UTC -5 hours then submit 300 or +300 , If UTC +2 hours then -120 . The value can be retrieved using Javascript getTimezoneOffset() method over Date object. |
user_agent | required* | string(2048) | Exact content of the HTTP user-agent header. |
sdk | required* | For application-based transactions. They are all required in case the device_type is set to application | |
interface | required* | string(6) | SDK Interface types that the device of the consumer supports for displaying specific challenge interfaces within the SDK. Accepted values are: native, html, both. |
ui_types | required* | Lists all UI types that the device of the consumer supports for displaying specific challenge interfaces within the SDK. | |
ui_type | required* | string(13) | UI type that the device of the consumer supports for displaying specific challenge interface. Accepted values are: text, single_select, multi_select, out_of_bag, other_html. |
application_id | required* | string(36) | Universally unique ID created upon all installations and updates of the 3DS Requestor APp on a Customer Device. This will be newly generated and stored by the 3DS SDK for each installation or update. The field is limited to 36 characters and it shall have a canonical format as defined in IETF RFC 4122. |
encrypted_data | required* | string(64000) | JWE Object as defined Section 6.2.2.1 containing data encrypted by the SDK for the DS to decrypt. The data will be present when sending to DS, but not present from DS to ACS. |
ephemeral_public_key_pair | required* | string(256) | Public key component of the ephemeral key pair generated by the 3DS SDK and used to establish session keys between the 3DS SDK and ACS. In AReq, this data element is contained within the ACS Signed Content JWS Object. The field is limited to maximum 256 characters. |
max_timeout | required* | integer | Indicates the maximum amount of time (in minutes) for all exchanges. The field shall have value greater or equals than 05. |
reference_number | required* | string(32) | Identifies the vendor and version of the 3DS SDK that is integrated in a 3DS Requestor App, assigned by EMVCo when the 3DS SDK is approved. The field is limited to 32 characters. |
recurring | optional | Additional recurring details. | |
expiration_date | optional | dd-mm-yyyy | A future date indicating the end date for any further subsequent transactions. For more information, go to 3DSv2 recurring params |
frequency | optional | integer | Indicates the minimum number of days between subsequent transactions. An empty value indicates the payment frequency is not set.For more information, go to 3DSv2 recurring params |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
1 - Required if mpi_params
is not present, the transaction will be handled asynchronously. Not required if configured on Terminal or Merchant level. Contact Tech Support for more details.
2 - Required if transaction should be handled synchronous.
3 - eci
is always required if mpi_params
is present.
cavv
is not required for the 3D attempted only workflow, but it is strongly recommended in a combination with the Directory Server ID in order to be in the scope of the 3DSv2 authentication protocol.
4 - protocol_version
is required due to the only one 3DSv2 authentication protocol that is currently supported.
directory_server_id
is mandatory when protocol_version is 2. May be omitted for scheme tokenized transactions.
5 - visa_merchant_id
is required when exemption value is trusted_merchant
.
Frictionless / Challenge Response
stdClass Object
(
[transaction_type] => init_recurring_sale3d
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[threeds_method_url] => https://staging.gate.emerchantpay.net/threeds/threeds_method
[threeds_method_continue_url] => https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
)
<payment_response content=[
<transaction_type content=[init_recurring_sale3d]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<threeds_method_url content=[https://staging.gate.emerchantpay.net/threeds/threeds_method]>
<threeds_method_continue_url content=[https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
]>
{
transaction_type: "init_recurring_sale3d",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
threeds_method_url: "https://staging.gate.emerchantpay.net/threeds/threeds_method",
threeds_method_continue_url: "https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>init_recurring_sale3d</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<threeds_method_url>https://staging.gate.emerchantpay.net/threeds/threeds_method</threeds_method_url>
<threeds_method_continue_url>https://staging.gate.emerchantpay.net/threeds/threeds_method/44177a21403427eb96664a6d7e5d5d48</threeds_method_continue_url>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
</payment_response>
Challenge Without 3 Ds Mеthod Response
stdClass Object
(
[transaction_type] => init_recurring_sale3d
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[redirect_url] => https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48
[redirect_url_type] => 3ds_v2_challenge
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
[reason_for_not_honoring_exemption] => 8A01
[sca_exemption_result] => 13
)
<payment_response content=[
<transaction_type content=[init_recurring_sale3d]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<redirect_url content=[https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48]>
<redirect_url_type content=[3ds_v2_challenge]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
<reason_for_not_honoring_exemption content=[8A01]>
<sca_exemption_result content=[13]>
]>
{
transaction_type: "init_recurring_sale3d",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
consumer_id: "123456",
token: "ee946db8-d7db-4bb7-b608-b65b153e127d",
redirect_url: "https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48",
redirect_url_type: "3ds_v2_challenge",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
reason_for_not_honoring_exemption: "8A01",
sca_exemption_result: "13",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>init_recurring_sale3d</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<redirect_url>https://staging.gate.emerchantpay.net/threeds/authentication/44177a21403427eb96664a6d7e5d5d48</redirect_url>
<redirect_url_type>3ds_v2_challenge</redirect_url_type>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
<reason_for_not_honoring_exemption>8A01</reason_for_not_honoring_exemption>
<sca_exemption_result>13</sca_exemption_result>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
token | string(36) | Plain-text token value. See Tokenization |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
cvv_result_code | string(1) | Card Verification Value response code. Optional, returned only if acquirer supports it |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
retrieval_reference_number | string(255) | A reference number used for tracking all messages related to a given cardholder transaction returned by some acquirers. |
payment_account_reference | string(255) | Payment Account Reference value returned from the schemes. Links tokenized and PAN-based transactions. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where the consumer has to be redirected to complete the payment process unless a 3DSecure Method is required. This redirect_url will not be included in the response if a 3DS-Method submission is required. For more information, to go 3DSv2 authentication flows |
redirect_url_type | string(64) | The type of the redirect URL in the 3DS scope. It will be present only for asynchronous 3D transactions when an interaction between consumer and issuer is required. This type identifies what kind of redirect url is returned, namely 3DSv2 Challenge. For more information, to go 3DSv2 authentication flows |
threeds_method_url | url | 3DSecure Method URL. It will be present only then 3DS-Method is required for 3D transaction. A 3DS-Method submission inside an iframe is required to be submitted using HTTP POST. For more information, to go 3DSv2 authentication flows |
threeds_method_continue_url | url | This is an API endpoint that accepts HTTP PUT & HTTP PATCH requests. It will be present when the threeds_method_url is included in the response. An HTTP PUT request must be submitted to that endpoint together with the proper signature to determine what the next step in the authentication is. For more information, to go 3DSv2 authentication flows |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
scheme_transaction_identifier | string(32) | Id defined by card schemes. Corresponds to NETWORK DATA (field 63) for MasterCard or TRANS ID (field 62.2/125) for VISA. |
scheme_transaction_link_id | string(22) | The transaction unique identifier returned from the schemes. Corresponds to ADDITIONAL SERVICE DATA (field 65, MasterCard Transaction Link Id [TLID]). |
scheme_pan_indicator | string(1) | The account number indicator in scheme-tokenized transactions. See Account number indicator codes for details. |
scheme_pan_tail | string(4) | The tail of the PAN number tail associated with the token in scheme-tokenized transactions. Returned in conjunction with scheme_pan_indicator . |
scheme_max_settlement_date | string(10) | The final date an authorization could be captured which is returned from the card scheme. See Scheme Maximum Settlement Date for more details. |
scheme_authentication_data_quality | boolean | The Authentication Data Quality Indicator returned by the card scheme is used to indicate whether a transaction meets the authentication data quality requirements. The value can be either true or false . |
scheme_settlement_date | string(4) | MasterCard settlement date in MMDD format (e.g. 0326). Corresponds to NETWORK DATA (field 15). |
reason_for_not_honoring_exemption | string | Reason for not honoring exemption. Check SCA Reason For Not Honoring Exemption Values. |
sca_exemption_result | string | SCA exemption result. Check SCA Exemption Result Values. |
threeds | ||
eci | string(2) | See Electronic Commerce Indicator as returned from the MPI for details |
Error Response
stdClass Object
(
[transaction_type] => init_recurring_sale3d
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[response_code] => 57
[code] => 340
[technical_message] => expiration_year is invalid
[message] => expiration_year is invalid
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[init_recurring_sale3d]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<response_code content=[57]>
<code content=[340]>
<technical_message content=[expiration_year is invalid]>
<message content=[expiration_year is invalid]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "init_recurring_sale3d",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
response_code: "57",
code: "340",
technical_message: "expiration_year is invalid",
message: "expiration_year is invalid",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>init_recurring_sale3d</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<response_code>57</response_code>
<code>340</code>
<technical_message>expiration_year is invalid</technical_message>
<message>expiration_year is invalid</message>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
threeds | ||
authentication | ||
status_reason_code | string(2) | See 3DS Authentication Status Reason Codes for details. |
Error Response
stdClass Object
(
[transaction_type] => init_recurring_sale3d
[status] => declined
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 600
[technical_message] => Cardholder not participating 3DS.
[message] => Transaction failed, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
[threeds] => {"eci"=>"06", "authentication"=>{"status_reason_code"=>"08"}}
)
<payment_response content=[
<transaction_type content=[init_recurring_sale3d]>
<status content=[declined]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[600]>
<technical_message content=[Cardholder not participating 3DS.]>
<message content=[Transaction failed, please contact support!]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
<threeds content=[{"eci"=>"06", "authentication"=>{"status_reason_code"=>"08"}}]>
]>
{
transaction_type: "init_recurring_sale3d",
status: "declined",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "600",
technical_message: "Cardholder not participating 3DS.",
message: "Transaction failed, please contact support!",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
threeds: "{"eci"=>"06", "authentication"=>{"status_reason_code"=>"08"}}",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>init_recurring_sale3d</transaction_type>
<status>declined</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>600</code>
<technical_message>Cardholder not participating 3DS.</technical_message>
<message>Transaction failed, please contact support!</message>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<threeds>
<eci>06</eci>
<authentication>
<status_reason_code>08</status_reason_code>
</authentication>
</threeds>
</payment_response>
Notification for Asynchronous Payments
When using asynchronous payments like 3D-Secure transactions, the transaction might depend on user input. Therefore, the outcome of the transaction is not available immediately after sending the request.
The gateway will send a notification to the merchant’s server as soon as the payment has been completed (either approved or declined).
If the user cancels the payment (or the user has not completed the payment within the given time frame, e.g. 2 hours), the transaction will time out and a notification will be sent.
The notification will be sent as an HTTP POST to the notification_url
specified in the transaction request XML.
See Notifications for the HTTP POST-Data and format.
The Notification will be pure HTTP or HTTPS-based, depending on the URL given by the merchant in the notification_url
.
In case it is a HTTPS-based notification, no SSL verification of the merchant SSL certificate will be performed.
Until a notification echo is rendered by the merchant, there will be up to 10 notifications sent, each with a timeout of 15 minutes.
Note, the originated IP address of a notification will be one of the following per environment:
- Staging - 52.208.124.201, 52.30.134.55
- Production - 52.49.192.214, 34.242.204.253
Please, make sure IP addresses above are whitelisted respectively.
The notifications are delivered to either port 80 (HTTP notification) or port 443 (HTTPS notification), so
make sure the correct notification_url
is submitted in the transaction request within the first place.
Also see 3-D secure workflow.
Wallets
Neteller
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Wallets\Neteller');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setCustomerAccount('453501020503')
->setAccountPassword('908379')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.wallets.NetellerRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
NetellerRequest request = new NetellerRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCustomerAccount("453501020503");
request.setAccountPassword("908379");
request.setCustomerEmail("travis@example.com");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.neteller(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "USD",
"customer_account": "453501020503",
"account_password": "908379",
"customer_email": "travis@example.com",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>neteller</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<customer_account>453501020503</customer_account>
<account_password>908379</account_password>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: neteller |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
customer_account | required | string(100) | Customer email/id of neteller account |
account_password | required | string(6) | Account secret password |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => neteller
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[neteller]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "neteller",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>neteller</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => neteller
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[neteller]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "neteller",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>neteller</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
PayPal
The following payment types are supported:
Payment type | Description |
---|---|
authorize | Creates an order that should be captured later. |
sale | Captures the created order immediately after the buyer confirms the payment. |
express | Creates an Express Checkout PayPal payment. Express Checkout eliminates one of the major causes of checkout abandonment by giving buyers all the transaction details at once, including order details, shipping options, insurance choices, and tax totals. |
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>pay_pal</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<payment_type>authorize</payment_type>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: pay_pal |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
payment_type | required | string | Use either authorize for Authorize or sale for Sale transactions |
usage | optional | string(255) | Description of the transaction for later use. |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
birth_date | required* | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
document_id | required* | string(255) | Document ID value. |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Successful Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>pay_pal</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<avs_response_code>5I</avs_response_code>
<avs_response_text>Response provided by issuer processor; Address information not verified</avs_response_text>
<authorization_code>345678</authorization_code>
<response_code>00</response_code>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<scheme_transaction_identifier>019091214161031</scheme_transaction_identifier>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
scheme_transaction_identifier | string(32) | Id defined by card schemes. Corresponds to NETWORK DATA (field 63) for MasterCard or TRANS ID (field 62.2/125) for VISA. |
Error Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>pay_pal</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<technical_message>expiration_year is invalid</technical_message>
<message>expiration_year is invalid</message>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
WebMoney
Auth Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Wallets\WebMoney');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setCustomerPhone('+1987987987987')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.wallets.WebMoneyRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
WebMoneyRequest request = new WebMoneyRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setCustomerPhone("+1987987987987");
request.setCustomerEmail("travis@example.com");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.webmoney(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"customer_phone": "+1987987987987",
"customer_email": "travis@example.com",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>webmoney</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<customer_phone>+1987987987987</customer_phone>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Payout Request
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Wallets\WebMoney');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setIsPayout('true')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setCustomerPhone('+1987987987987')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.wallets.WebMoneyRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
WebMoneyRequest request = new WebMoneyRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setIsPayout("true");
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setCustomerPhone("+1987987987987");
request.setCustomerEmail("travis@example.com");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.webmoney(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "USD",
"is_payout": "true",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"customer_phone": "+1987987987987",
"customer_email": "travis@example.com",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>webmoney</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<is_payout>true</is_payout>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<customer_phone>+1987987987987</customer_phone>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: webmoney |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
is_payout | required* | string | Value:true/false Flag for payout transaction |
customer_account_id | required* | string(12) | Webmoney account ID (WMID). This field is required if is payout is set to "true" |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Auth Response
stdClass Object
(
[transaction_type] => webmoney
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[webmoney]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "webmoney",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>webmoney</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Payout Response
stdClass Object
(
[transaction_type] => webmoney
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[webmoney]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "webmoney",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>webmoney</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => webmoney
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[webmoney]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "webmoney",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>webmoney</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Supported countries: All countries are supported
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\WeChat');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnUrl('https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f')
->setAmount('100')
->setCurrency('USD')
->setProductCode('product-code')
->setProductNum('1234')
->setProductDesc('Product description')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.oBeP.WechatRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
WechatRequest request = new WechatRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnUrl(new URL("https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f"));
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setProductCode("product-code");
request.setProductNum("1234");
request.setProductDesc("Product description");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.wechat(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"notification_url": "https://www.example.com/notification",
"return_url": "https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f",
"amount": "100",
"currency": "USD",
"product_code": "product-code",
"product_num": "1234",
"product_desc": "Product description",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>wechat</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f</return_url>
<amount>100</amount>
<currency>USD</currency>
<product_code>product-code</product_code>
<product_num>1234</product_num>
<product_desc>Product description</product_desc>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: wechat |
transaction_id | required | string(30) | Unique transaction id defined by merchant |
usage | required | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
notification_url | required | url | URL at merchant where gateway sends outcome of transaction. |
return_url | required | url | URL where consumer is sent to after payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details Max amount in minor currency unit: 999999 |
currency | required | string(3) | Currency code in ISO 4217 |
product_code | optional | string(60) | Product code |
product_num | optional | integer(10) | Product number |
product_desc | optional | string(255) | Product description |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => wechat
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[wechat]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "wechat",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>wechat</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(30) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => wechat
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Please check input data for errors!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[wechat]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Please check input data for errors!]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "wechat",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Please check input data for errors!",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>wechat</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Please check input data for errors!</message>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(30) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Alipay
Alipay is an oBeP-style alternative payment method that allows you to pay directly with your ebank account.
After initiating a transaction Alipay will redirect you to their page.
There you will see a picture of a QR code, which you will have to scan with your Alipay mobile application.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Alipay');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('CNY')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.oBeP.AlipayRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
AlipayRequest request = new AlipayRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("CNY");
request.setCustomerEmail("travis@example.com");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.alipay(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "CNY",
"customer_email": "travis@example.com",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>alipay</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>CNY</currency>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: alipay |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | optional | e-mail address | Must contain valid e-mail of customer |
customer_phone | optional | string(32) | Must contain valid phone number of customer |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
billing_address | optional | See Required vs Optional API params for details | |
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported currencies
Currency name | Currency code |
---|---|
China yen | CNY |
Euro | EUR |
Successful Response
stdClass Object
(
[transaction_type] => alipay
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:02.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => CNY
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[alipay]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:02Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[CNY]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "alipay",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:02Z",
descriptor: "Descriptor one",
amount: "100",
currency: "CNY",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>alipay</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:02Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>CNY</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => alipay
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => CNY
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[alipay]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[CNY]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "alipay",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "CNY",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>alipay</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>CNY</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
eZeeWallet
eZeeWallet is a comprehensive digital wallet, connecting multiple payment methods simultaneously. It has the highest level of security, offering you a unique way to make secure and quick online payments. Consumers can upload funds to your account using P24, Trustly, Invoice (Sofort), iDeal, eps, NeoSurf and bank transfer and pay fast for goods and services with their available eZeeWallet balances.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Wallets\EzeeWallet');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setSourceWalletId('john@example.com')
->setSourceWalletPwd('UDBydsDBrYWxAQA==\n')
->setAmount('100')
->setCurrency('USD');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.wallets.EzeewalletRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
EzeewalletRequest request = new EzeewalletRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setSourceWalletId("john@example.com");
request.setSourceWalletPwd("UDBydsDBrYWxAQA==\n");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.ezeewallet(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"source_wallet_id": "john@example.com",
"source_wallet_pwd": "UDBydsDBrYWxAQA==\\n",
"amount": "100",
"currency": "USD"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>ezeewallet</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<source_wallet_id>john@example.com</source_wallet_id>
<source_wallet_pwd>UDBydsDBrYWxAQA==\n</source_wallet_pwd>
<amount>100</amount>
<currency>USD</currency>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: ezeewallet |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
source_wallet_id | required | string(255) | Email address of consumer who owns the wallet |
source_wallet_pwd | required | string(255) | Password of consumer who owns the wallet, in Base64 encoded form |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
notification_url | optional | url | URL at merchant where gateway sends outcome of transaction. |
merchant_website | required | url | Website URL of the merchant initiating the wallet transfer |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => ezeewallet
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[ezeewallet]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "ezeewallet",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ezeewallet</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Pending Response
stdClass Object
(
[transaction_type] => ezeewallet
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[ezeewallet]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "ezeewallet",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ezeewallet</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Pending Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => ezeewallet
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 930
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[ezeewallet]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[930]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "ezeewallet",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "930",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ezeewallet</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>930</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
eWallet
eWallet transaction that handles different e-wallet providers
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Wallets\Ewallet');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setPaymentType('Free Charge')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('50000')
->setCurrency('INR')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>e_wallet</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<payment_type>Free Charge</payment_type>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>50000</amount>
<currency>INR</currency>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: e_wallet |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
payment_type | required | string | eWallet provider name that can be one of Airtel Money, Amazon pay, Free Charge, Jio Money, Ola Money, Paytm, Payzapp, PhonePe.Note, the list with the supported providers might be restricted based on the gateway configuration and currency. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported currencies
Currency name | Currency code |
---|---|
Indian rupee | INR |
Successful Response
stdClass Object
(
[transaction_type] => e_wallet
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 50000
[currency] => INR
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>e_wallet</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>50000</amount>
<currency>INR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => e_wallet
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[technical_message] => amount is missing
[message] => Please check input data for errors!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 50000
[currency] => INR
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>e_wallet</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<technical_message>amount is missing</technical_message>
<message>Please check input data for errors!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>50000</amount>
<currency>INR</currency>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
Vouchers
CashU
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Vouchers\CashU');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('EUR')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.apm.CashURequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
CashURequest request = new CashURequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("EUR");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.cashu(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "EUR",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>cashu</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>EUR</currency>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: cashu |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries
Country name | Country code |
---|---|
Algeria | DZ |
Bahrain | BH |
Egypt | EG |
Gambia | GM |
Ghana | GH |
India | IN |
Iran | IR |
Iraq | IQ |
Israel | IL |
Jordan | JO |
Kenya | KE |
Korea | KP |
Kuwait | KW |
Lebanon | LB |
Libya | LY |
Malaysia | MY |
Mauritania | MR |
Morocco | MA |
Nigeria | NG |
Oman | OM |
Pakistan | PK |
Palestine | PS |
Qatar | QA |
Saudi Arabia | SA |
Sierra Leone | SL |
Sudan | SD |
Syria | SY |
Tanzania | TZ |
Tunisia | TN |
Turkey | TR |
United Arab Emirates | AE |
United States | US |
Yemen | YE |
Supported currencies
Currency name | Currency code |
---|---|
Algerian Dinar | DZD |
AmericanDollar | USD |
EgyptianPound | EGP |
Euro | EUR |
JordanianDinar | JOD |
LebanesePound | LBP |
MoroccanDirham | MAD |
Qatar Riyal | QAR |
Saudi Riyal | SAR |
Turkish Lira | TRY |
UAE Dirham | AED |
Successful Response
stdClass Object
(
[transaction_type] => cashu
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[cashu]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "cashu",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>cashu</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => cashu
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[cashu]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "cashu",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>cashu</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Neosurf
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Vouchers\Neosurf');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('EUR')
->setVoucherNumber('Vo23')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('23, Doestreet')
->setBillingZipCode('11923')
->setBillingCity('New York City')
->setBillingNeighborhood('Manhattan')
->setBillingCountry('DE');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>neosurf</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>EUR</currency>
<voucher_number>Vo23</voucher_number>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>23, Doestreet</address1>
<zip_code>11923</zip_code>
<city>New York City</city>
<neighborhood>Manhattan</neighborhood>
<country>DE</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: neosurf |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
voucher_number | required* | string(10) | Voucher number. Alphanumeric maximum 10 characters |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
return_success_url | required* | url | URL where customer is sent to after successful payment. It might be required depending on the gateway, it is strongly recommended for the URL to be set in order to avoid any invalidated transactions. |
return_failure_url | required* | url | URL where customer is sent to after unsuccessful payment. It might be required depending on the gateway, it is strongly recommended for the URL to be set in order to avoid any invalidated transactions. |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries
Country Name | Country code |
---|---|
Austria | AT |
Algeria | DZ |
Australia | AU |
Burundi | BI |
Burkina Faso | BF |
Benin | BJ |
Belgium | BE |
Cape Verde | CV |
Cyprus | CY |
Canada | CA |
Central African Republic | CF |
Chad | TD |
Colombia | CO |
Congo | CG |
Cameroon | CM |
Democratic Republic of Congo | CD |
Denmark | DK |
Equatorial Guinea | GQ |
France | FR |
Gambia | GM |
Germany | DE |
Gabon | GA |
Guinea | GN |
Ghana | GH |
Guinea-Bissau | GW |
Hong Kong | HK |
Ireland | IE |
Italy | IT |
Ivory Coast | CI |
Kenya | KE |
Luxembourg | LU |
Malawi | MW |
Mozambique | MZ |
Morocco | MA |
Mauritania | MR |
Mali | ML |
Niger | NE |
Nigeria | NG |
Netherlands | NL |
New Zealand | NZ |
Norway | NO |
Poland | PL |
Portugal | PT |
Rwanda | RW |
Russia | RU |
Romania | RO |
Sweden | SE |
Spain | ES |
Sierra Leone | SL |
Senegal | SN |
Sao Tome and Principe | ST |
Switzerland | CH |
Serbia | RS |
Turkey | TR |
Togo | TG |
Tunisia | TN |
United Kingdom | GB |
United Republic of Tanzania | TZ |
Uganda | UG |
Zimbabwe | ZW |
Zambia | ZM |
Supported currencies
Currency name | Currency code |
---|---|
Australian dollar | AUD |
Bulgarian lev | BGN |
Brazilian real | BRL |
Canadian dollar | CAD |
Swiss franc | CHF |
Chinese yuan | CNY |
Czech koruna | CZK |
Danish krone | DKK |
Euro | EUR |
Pound sterling | GBP |
Hong Kong dollar | HKD |
Croatian kuna | HRK |
Hungarian forint | HUF |
Indonesian rupiah | IDR |
Israeli new shekel | ILS |
Indian rupee | INR |
Japanese yen | JPY |
South Korean won | KRW |
Mexican peso | MXN |
Malaysian ringgit | MYR |
Norwegian krone | NOK |
New Zealand dollar | NZD |
Philippine peso | PHP |
Polish złoty | PLN |
Romanian leu | RON |
Russian ruble | RUB |
Swedish kronor | SEK |
Singapore dollar | SGD |
Thai baht | THB |
Turkish lira | TRY |
United States dollar | USD |
CFA franc BCEAO | XOF |
South African rand | ZAR |
Successful Response
stdClass Object
(
[transaction_type] => neosurf
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>neosurf</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => neosurf
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => false
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>neosurf</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Paysafecard
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Vouchers\Paysafecard');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setCustomerId('3192481752123')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.apm.PaySafeCardRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
PaySafeCardRequest request = new PaySafeCardRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCustomerId("3192481752123");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.paysafecard(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "USD",
"customer_id": "3192481752123",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>paysafecard</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<customer_id>3192481752123</customer_id>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: paysafecard |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_id | required | string(32) | A value that uniquely identifies the end user (customer) and is disconnected from any personal information, it should be the same for all transactions of the customer. |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country name | Country code |
---|---|
Australia | AU |
Austria | AT |
Belgium | BE |
Bulgaria | BG |
Canada | CA |
Croatia | HR |
Cyprus | CY |
Czech Republic | CZ |
Denmark | DK |
Finland | FI |
France | FR |
Georgia | GE |
Germany | DE |
Gibraltar | GI |
Greece | GR |
Hungary | HU |
Iceland | IS |
Ireland | IE |
Italy | IT |
Kuwait | KW |
Latvia | LV |
Liechtenstein | LI |
Lithuania | LT |
Luxembourg | LU |
Malta | MT |
Mexico | MX |
Moldova | MD |
Montenegro | ME |
Netherlands | NL |
New Zealand | NZ |
Norway | NO |
Paraguay | PY |
Peru | PE |
Poland | PL |
Portugal | PT |
Romania | RO |
Saudi Arabia | SA |
Slovakia | SK |
Slovenia | SI |
Spain | ES |
Sweden | SE |
Switzerland | CH |
Turkey | TR |
United Arab Emirates | AE |
United Kingdom | GB |
United States of America | US |
Uruguay | UY |
Successful Response
stdClass Object
(
[transaction_type] => paysafecard
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[paysafecard]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "paysafecard",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>paysafecard</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => paysafecard
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[paysafecard]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "paysafecard",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>paysafecard</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Online Banking ePayments (oBeP)
Online Banking ePayments refer to payment methods that are used as an alternative to credit card payments allowing consumers to pay online with their bank account.
Banco do Brasil
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\BancoDoBrasil');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rubble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Natal')
->setBillingCountry('BR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>banco_do_brasil</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rubble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Natal</city>
<country>BR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: banco_do_brasil |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | string(20) | Birth date of the customer |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
BR |
Successful Response
stdClass Object
(
[transaction_type] => banco_do_brasil
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>banco_do_brasil</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => banco_do_brasil
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>banco_do_brasil</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Bancomer
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Bancomer');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rubble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Mexico City')
->setBillingCountry('MX')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>bancomer</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rubble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Mexico City</city>
<country>MX</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: bancomer |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | string(20) | Birth date of the customer |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
MX |
Successful Response
stdClass Object
(
[transaction_type] => bancomer
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>bancomer</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => bancomer
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>bancomer</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Bradesco
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Bradesco');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rubble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Rio de Janeiro')
->setBillingCountry('BR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>bradesco</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rubble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Rio de Janeiro</city>
<country>BR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: bradesco |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | string(20) | Birth date of the customer |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
BR |
Successful Response
stdClass Object
(
[transaction_type] => bradesco
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>bradesco</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => bradesco
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>bradesco</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
EPS
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>eps</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>EUR</currency>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Vienna</city>
<country>AT</country>
</billing_address>
</payment_transaction>'
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Alternatives\Ppro');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setPaymentType('eps')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('EUR')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Vienna')
->setBillingCountry('AT');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.apm.PProRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
PProRequest request = new PProRequest();
request.setTransactionId("119643250547501c79d8295");
request.setPaymentType("eps");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("EUR");
// Billing Address
request.setBillingFirstname("Barney");
request.setBillingLastname("Rubble");
request.setBillingPrimaryAddress("14, Nerazdelni str");
request.setBillingZipCode("1407");
request.setBillingCity("Vienna");
request.setBillingCountry("AT");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.ppro(
{
"transaction_id": "119643250547501c79d8295",
"payment_type": "eps",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "EUR",
"billing_address": {
"first_name": "Barney",
"last_name": "Rubble",
"address1": "14, Nerazdelni str",
"zip_code": "1407",
"city": "Vienna",
"country": "AT"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>ppro</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<payment_type>eps</payment_type>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>EUR</currency>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Vienna</city>
<country>AT</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | ppro or eps. Contact tech support at tech-support@emerchantpay.com for more details. |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
payment_type | required1 | eps | EPS. Contact tech support for more details. |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
1 - payment_type must be submitted only when the transaction type is set to ppro
Supported countries and countries
Currency code | Country code |
---|---|
EUR | AT |
Successful Response
stdClass Object
(
[transaction_type] => ppro
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[ppro]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "ppro",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ppro</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => ppro
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[ppro]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "ppro",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ppro</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
iDebit
Supported countries
Country name | Country code |
---|---|
Canada | CA |
iDebit is available only for Canadian merchants and consumers.
Payin
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Idebit\Payin');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setCustomerAccountId('1534537')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnUrl('https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f')
->setAmount('100')
->setCurrency('CAD')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('46 Donora Dr')
->setBillingZipCode('M4B1B3')
->setBillingCity('Toronto')
->setBillingState('ON')
->setBillingCountry('CA');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.oBeP.IDebitPayInRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
IDebitPayInRequest request = new IDebitPayInRequest();
request.setTransactionId("119643250547501c79d8295");
request.setCustomerAccountId("1534537");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnUrl(new URL("https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f"));
request.setAmount(new BigDecimal(100));
request.setCurrency("CAD");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("46 Donora Dr");
request.setBillingZipCode("M4B1B3");
request.setBillingCity("Toronto");
request.setBillingState("ON");
request.setBillingCountry("CA");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.idebit_payin(
{
"transaction_id": "119643250547501c79d8295",
"customer_account_id": "1534537",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"notification_url": "https://www.example.com/notification",
"return_url": "https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f",
"amount": "100",
"currency": "CAD",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "46 Donora Dr",
"zip_code": "M4B1B3",
"city": "Toronto",
"state": "ON",
"country": "CA"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>idebit_payin</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<customer_account_id>1534537</customer_account_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f</return_url>
<amount>100</amount>
<currency>CAD</currency>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>46 Donora Dr</address1>
<zip_code>M4B1B3</zip_code>
<city>Toronto</city>
<state>ON</state>
<country>CA</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: idebit_payin |
transaction_id | required | string(30) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
customer_account_id | required | string(20) | Unique consumer account ID |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
birth_date | required* | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => idebit_payin
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => CAD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[idebit_payin]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[CAD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "idebit_payin",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "CAD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>idebit_payin</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>CAD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(30) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => idebit_payin
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 320
[message] => amount is missing!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => CAD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[idebit_payin]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[320]>
<message content=[amount is missing!]>
<timestamp content=[2025-03-25T08:44:03Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[CAD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "idebit_payin",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "320",
message: "amount is missing!",
timestamp: "2025-03-25T08:44:03Z",
descriptor: "Descriptor one",
amount: "100",
currency: "CAD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>idebit_payin</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>320</code>
<message>amount is missing!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>CAD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(30) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Payout
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Idebit\Payout');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setReferenceId('43672')
->setAmount('100')
->setCurrency('CAD');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.oBeP.IDebitPayOutRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
IDebitPayOutRequest request = new IDebitPayOutRequest();
request.setTransactionId("119643250547501c79d8295");
request.setReferenceId("43672");
request.setAmount(new BigDecimal(100));
request.setCurrency("CAD");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.idebit_payout(
{
"transaction_id": "119643250547501c79d8295",
"reference_id": "43672",
"amount": "100",
"currency": "CAD"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>idebit_payout</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<reference_id>43672</reference_id>
<amount>100</amount>
<currency>CAD</currency>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: idebit_payout |
transaction_id | required | string(30) | Unique transaction id defined by merchant |
reference_id | required | string(32) | Unique id returned by corresponding transaction |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => idebit_payout
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[amount] => 100
[currency] => CAD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[idebit_payout]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:03Z]>
<amount content=[100]>
<currency content=[CAD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "idebit_payout",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:44:03Z",
amount: "100",
currency: "CAD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>idebit_payout</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<amount>100</amount>
<currency>CAD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(30) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => idebit_payout
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[technical_message] => amount is missing!
[message] => Please check input data for errors!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:03.000000
[timezone_type] => 2
[timezone] => Z
)
[amount] => 100
[currency] => CAD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[idebit_payout]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<technical_message content=[amount is missing!]>
<message content=[Please check input data for errors!]>
<timestamp content=[2025-03-25T08:44:03Z]>
<amount content=[100]>
<currency content=[CAD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "idebit_payout",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
technical_message: "amount is missing!",
message: "Please check input data for errors!",
timestamp: "2025-03-25T08:44:03Z",
amount: "100",
currency: "CAD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>idebit_payout</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<technical_message>amount is missing!</technical_message>
<message>Please check input data for errors!</message>
<timestamp>2025-03-25T08:44:03Z</timestamp>
<amount>100</amount>
<currency>CAD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(30) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
iDeal
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>ideal</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<payment_transaction>payment_type</payment_transaction>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>EUR</currency>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Amsterdam</city>
<country>NL</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: ideal |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
bic | optional | string(11) | SWIFT/BIC code of the customer’s bank. If BIC is not provided, the consumer is redirected to a bank selection page. Get BIC list |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
notification_url | optional | url | URL at merchant where gateway sends outcome of transaction. |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported currencies and countries
Currency code | Country code |
---|---|
EUR | NL |
Successful Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ideal</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ideal</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Bank Name | BIC |
---|---|
Rabobank | RABONL2U |
ABN AMRO | ABNANL2A |
Van Lanschot Bankiers | FVLBNL22 |
Triodos Bank | TRIONL2U |
ING Bank | INGBNL2A |
SNS Bank | SNSBNL2A |
ASN | ASNBNL21 |
RegioBank | RBRBNL21 |
Knab | KNABNL2H |
Bunq | BUNQNL2A |
Handelsbanken | HANDNL2A |
Revolut | REVOLT21 |
InstaDebit
Supported countries
Country name | Country code |
---|---|
Canada | CA |
InstaDebit is available only for Canadian merchants and consumers.
Payin
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\InstaDebit\Payin');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setCustomerAccountId('118221674199')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnUrl('https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f')
->setAmount('100')
->setCurrency('CAD')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('46 Donora Dr')
->setBillingZipCode('M4B1B3')
->setBillingCity('Toronto')
->setBillingState('ON')
->setBillingCountry('CA');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.oBeP.InstaDebitPayInRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InstaDebitPayInRequest request = new InstaDebitPayInRequest();
request.setTransactionId("119643250547501c79d8295");
request.setCustomerAccountId("118221674199");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnUrl(new URL("https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f"));
request.setAmount(new BigDecimal(100));
request.setCurrency("CAD");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("46 Donora Dr");
request.setBillingZipCode("M4B1B3");
request.setBillingCity("Toronto");
request.setBillingState("ON");
request.setBillingCountry("CA");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.insta_debit_payin(
{
"transaction_id": "119643250547501c79d8295",
"customer_account_id": "118221674199",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"notification_url": "https://www.example.com/notification",
"return_url": "https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f",
"amount": "100",
"currency": "CAD",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "46 Donora Dr",
"zip_code": "M4B1B3",
"city": "Toronto",
"state": "ON",
"country": "CA"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>insta_debit_payin</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<customer_account_id>118221674199</customer_account_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f</return_url>
<amount>100</amount>
<currency>CAD</currency>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>46 Donora Dr</address1>
<zip_code>M4B1B3</zip_code>
<city>Toronto</city>
<state>ON</state>
<country>CA</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: insta_debit_payin |
transaction_id | required | string(30) | Unique transaction id defined by merchant |
customer_account_id | required | string(20) | Unique consumer account ID |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_url | required | url | URL where consumer is sent to after payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => insta_debit_payin
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => CAD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[insta_debit_payin]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:04Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[CAD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "insta_debit_payin",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:04Z",
descriptor: "Descriptor one",
amount: "100",
currency: "CAD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>insta_debit_payin</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>CAD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(30) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => insta_debit_payin
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[message] => Please check input data for errors!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => CAD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[insta_debit_payin]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<message content=[Please check input data for errors!]>
<timestamp content=[2025-03-25T08:44:04Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[CAD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "insta_debit_payin",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
message: "Please check input data for errors!",
timestamp: "2025-03-25T08:44:04Z",
descriptor: "Descriptor one",
amount: "100",
currency: "CAD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>insta_debit_payin</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<message>Please check input data for errors!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>CAD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(30) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Payout
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\InstaDebit\Payout');
$request = $genesis->request();
$request
->setReferenceId('43672')
->setAmount('100')
->setCurrency('CAD');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.oBeP.InstaDebitPayOutRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
InstaDebitPayOutRequest request = new InstaDebitPayOutRequest();
request.setReferenceId("43672");
request.setAmount(new BigDecimal(100));
request.setCurrency("CAD");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.insta_debit_payout(
{
"reference_id": "43672",
"amount": "100",
"currency": "CAD"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<reference_id>43672</reference_id>
<amount>100</amount>
<currency>CAD</currency>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: insta_debit_payout |
transaction_id | required | string(30) | Unique transaction id defined by merchant |
reference_id | required | string(32) | unique id of approved InstaDebit Payin transaction. See InstaDebit Payin Response, unique id |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details Max amount in minor currency unit: 999999 |
currency | required | string(3) | Currency code in ISO 4217 |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => insta_debit_payout
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[amount] => 100
[currency] => CAD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[insta_debit_payout]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:04Z]>
<amount content=[100]>
<currency content=[CAD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "insta_debit_payout",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:44:04Z",
amount: "100",
currency: "CAD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>insta_debit_payout</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<amount>100</amount>
<currency>CAD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(30) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => insta_debit_payout
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 320
[technical_message] => amount is missing!
[message] => Please check input data for errors!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[amount] => 100
[currency] => CAD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[insta_debit_payout]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[320]>
<technical_message content=[amount is missing!]>
<message content=[Please check input data for errors!]>
<timestamp content=[2025-03-25T08:44:04Z]>
<amount content=[100]>
<currency content=[CAD]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "insta_debit_payout",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "320",
technical_message: "amount is missing!",
message: "Please check input data for errors!",
timestamp: "2025-03-25T08:44:04Z",
amount: "100",
currency: "CAD",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>insta_debit_payout</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>320</code>
<technical_message>amount is missing!</technical_message>
<message>Please check input data for errors!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<amount>100</amount>
<currency>CAD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(30) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Itau
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Itau');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rubble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Rio de Janeiro')
->setBillingCountry('BR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>itau</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rubble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Rio de Janeiro</city>
<country>BR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: itau |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | string(20) | Birth date of the customer |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
BR |
Successful Response
stdClass Object
(
[transaction_type] => itau
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>itau</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => itau
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>itau</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Multibanco
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Multibanco');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('EUR')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Porto')
->setBillingCountry('PT')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>multibanco</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>EUR</currency>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Porto</city>
<country>PT</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: multibanco |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | optional | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country code |
---|
PT |
Successful Response
stdClass Object
(
[transaction_type] => multibanco
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>multibanco</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => multibanco
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>multibanco</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
MyBank
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>my_bank</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>EUR</currency>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Rome</city>
<country>IT</country>
</billing_address>
</payment_transaction>'
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Alternatives\Ppro');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setPaymentType('mybank')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('EUR')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Rome')
->setBillingCountry('IT');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.apm.PProRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
PProRequest request = new PProRequest();
request.setTransactionId("119643250547501c79d8295");
request.setPaymentType("mybank");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("EUR");
// Billing Address
request.setBillingFirstname("Barney");
request.setBillingLastname("Rubble");
request.setBillingPrimaryAddress("14, Nerazdelni str");
request.setBillingZipCode("1407");
request.setBillingCity("Rome");
request.setBillingCountry("IT");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.ppro(
{
"transaction_id": "119643250547501c79d8295",
"payment_type": "mybank",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "EUR",
"billing_address": {
"first_name": "Barney",
"last_name": "Rubble",
"address1": "14, Nerazdelni str",
"zip_code": "1407",
"city": "Rome",
"country": "IT"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>ppro</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<payment_type>mybank</payment_type>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>EUR</currency>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Rome</city>
<country>IT</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | ppro or my_bank. Contact tech support at tech-support@emerchantpay.com for more details. |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
payment_type | required1 | ppro | MyBank. Contact tech support at tech-support@emerchantpay.com for more details. |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
1 - payment_type must be submitted only when the transaction type is set to ppro
Supported currencies and countries
Currency code | Country code |
---|---|
EUR | IT |
EUR | BE |
EUR | PT |
EUR | ES |
Successful Response
stdClass Object
(
[transaction_type] => ppro
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[ppro]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:04Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "ppro",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:04Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ppro</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => ppro
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[ppro]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:04Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "ppro",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:04Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ppro</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Online Banking
Online Banking is an oBeP-style alternative payment method that allows you to pay directly with your ebank account. After initiating a transaction, the online banking will redirect you to their page. There you will find a list with available banks to finish the payment.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\OnlineBanking\Payin');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('50000')
->setCurrency('CNY')
->setCustomerEmail('travis@example.com')
->setBankCode('CITIC')
->setConsumerReference('Consumer Reference')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>online_banking</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>50000</amount>
<currency>CNY</currency>
<customer_email>travis@example.com</customer_email>
<bank_code>CITIC</bank_code>
<consumer_reference>Consumer Reference</consumer_reference>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: online_banking |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
bank_code | required | bank code | Must contain Bank code |
document_id | required* | string(255) | Document ID value. |
payment_type | required* | string | The payment type describes the type of online banking used to process the transaction. Must contain one of the allowed Payment types, but they may vary based on the specific setup. If omitted, transaction will be processed with online_banking payment_type if online_banking is a supported payment type. Otherwise, the transaction will be processed with the first available supported payment type. |
virtual_payment_address | required* | string | Virtual Payment Address (VPA) of the customer, format: someone@bank |
consumer_reference | required* | string | Consumer reference identifier of the customer. |
user_category | required* | string | User category. If missing, 'default' will be used. |
auth_code | required* | string | 6-digit code used to authenticate the consumer within BLIK. It is required only for that bank. |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported currencies
Currency name | Currency code |
---|---|
Australian Dollar | AUD |
China yen | CNY |
Chilean Peso | CLP |
Colombian Peso | COP |
Indian rupee | INR |
Indonesian rupiah | IDR |
Malaysian ringgit | MYR |
New Zealand dollar | NZD |
Paraguayan Guarani | PYG |
Philippine peso | PHP |
Polish zloty | PLN |
Singapore dollar | SGD |
Thai baht | THB |
Uruguayan Peso | UYU |
Vietnamese dong | VND |
Mexican Peso | MXN |
Payment Types
Payment Type Name | Payment Type Code |
---|---|
Online banking | online_banking |
Quick payment | quick_payment |
Qr payment | qr_payment |
Netbanking | netbanking |
Alipay QR | alipay_qr |
Bancomer | bancomer |
Scotiabank | scotiabank |
SPEI | spei |
Bank Codes
For AUD currency:
Bank Name | Bank Code |
---|---|
PayID | PID |
For BRL currency:
Bank Name | Bank Code |
---|---|
Caixa | CA |
For CAD currency:
Bank Name | Bank Code |
---|---|
Interac Combined Pay-in | CPI |
For CHF currency:
Bank Name | Bank Code |
---|---|
Post Finance | PF |
For CLP currency:
Bank Name | Bank Code |
---|---|
Servipag | SP |
For CNY currency
Bank Name | Bank Code |
---|---|
Agricultural Bank of China | ABC |
Bank of Beijing | BOB |
Bank of China | BOC |
Bank of Communications | BOCO |
China Construction Bank | CCB |
Bank for economic construction | CCD |
China Everbright Bank | CEB |
Industrial Bank | CIB |
China Merchants Bank | CMB |
China Minsheng Bank | CMBC |
China Citic Bank | CITIC |
Industrial and Commercial Bank of China | ICBC |
China Guangfa Bank | GDB |
Huaxia Bank | HXB |
Pingan Bank | PINGANBANK |
China Postal Savings Bank | PSBC |
China Union Pay | QUICKPAY |
Shanghai Bank | SHB |
Shengzhen Ping An Bank | SPABANK |
Shanghai Pudong Development Bank | SPDB |
Yinlian Bank | YLB |
For EUR currency:
Bank Name | Bank Code |
---|---|
Post Finance | PF |
Bancontact | BCT |
TrueLayer | TRL |
For GBP currency:
Bank Name | Bank Code |
---|---|
TrueLayer | TRL |
For IDR currency:
Bank Name | Bank Code |
---|---|
Bank Central Asia | DK_BCA_IB |
Bank Rakyat Indonesia | DK_BRI_IB |
CIMB Clicks Indonesia | DK_CIMBCLICKS_IB |
Danamon Bank | DK_DANAMON_IB |
Permata Bank | DK_PERMATANET_IB |
For INR currency:
Bank Name | Bank Code |
---|---|
Aditya Birla Idea Payments Bank | ABPB |
Airtel Payments Bank | AIRP |
Allahabad Bank | ALLA |
Andhra Bank | ANDB |
Bank of Baroda - Retail Banking | BARB_R |
Bank of Bahrein and Kuwait | BBKM |
Dena Bank | BKDN |
Bank of India | BKID |
Central Bank of India | CBIN |
City Union Bank | CIUB |
Canara Bank | CNRB |
Corporation Bank | CORP |
Cosmos Co-operative Bank | COSB |
Catholic Syrian Bank | CSBK |
Development Bank of Singapore | DBSS |
DCB Bank | DCBL |
Deutsche Bank | DEUT |
Dhanlaxmi Bank | DLXB |
Equitas Small Finance Bank | ESFB |
Federal Bank | FDRL |
HDFC Bank | HDFC |
IDBI | IBKL |
ICICI Bank | ICIC |
IDFC FIRST Bank | IDFB |
Indian Bank | IDIB |
Indusind Bank | INDB |
Indian Overseas Bank | IOBA |
Jammu and Kashmir Bank | JAKA |
Janata Sahakari Bank (Pune) | JSBP |
Karnataka Bank | KARB |
Kotak Mahindra Bank | KKBK |
Karur Vysya Bank | KVBL |
Lakshmi Vilas Bank - Corporate Banking | LAVB_C |
Lakshmi Vilas Bank - Retail Banking | LAVB_R |
Bank of Maharashtra | MAHB |
NKGSB Co-operative Bank | NKGS |
Oriental Bank of Commerce | ORBC |
Punjab & Maharashtra Co-operative Bank | PMCB |
Punjab & Sind Bank | PSIB |
Punjab National Bank - Retail Banking | PUNB_R |
RBL Bank | RATN |
State Bank of Bikaner and Jaipur | SBBJ |
State Bank of Hyderabad | SBHY |
State Bank of India | SBIN |
State Bank of Mysore | SBMY |
State Bank of Travancore | SBTR |
Standard Chartered Bank | SCBL |
South Indian Bank | SIBL |
Saraswat Co-operative Bank | SRCB |
State Bank of Patiala | STBP |
Shamrao Vithal Co-operative Bank | SVCB |
Syndicate Bank | SYNB |
Tamilnadu Mercantile Bank | TMBL |
Tamilnadu State Apex Co-operative Bank | TNSC |
Union Bank of India | UBIN |
UCO Bank | UCBA |
United Bank of India | UTBI |
Axis Bank | UTIB |
Vijaya Bank | VIJB |
Yes Bank | YESB |
For MXN currency:
Bank Name | Bank Code |
---|---|
Spei | SE |
Banorte | BQ |
For MYR currency:
Bank Name | Bank Code |
---|---|
Affin Bank | FPX_ABB |
Alliance Bank | FPX_ABMB |
Am Online | FPX_AMB |
Bank Islam | FPX_BIMB |
Bank Muamalat | FPX_BMMB |
Bank Rakyat | FPX_BKRM |
Bank Simpanan Nasional | FPX_BSN |
CIMB Clicks Bank | FPX_CIMBCLICKS |
HLB Connect | FPX_HLB |
Kuwait Finance House | FPX_KFH |
Maybank2u | FPX_MB2U |
OCBC Bank | FPX_OCBC |
PBeBank | FPX_PBB |
RHB Now | FPX_RHB |
Stand Chart Bank | FPX_SCB |
UOB Bank | FPX_UOB |
For NZD currency:
Bank Name | Bank Code |
---|---|
POLi | POLI |
For PEN currency:
Bank Name | Bank Code |
---|---|
BCP | BC |
Interbank | IB |
Pago Efectivo | EF |
BBVA | BP |
For PLN currency:
Bank Name | Bank Code |
---|---|
BLIK | BLК |
For PYG currency:
Bank Name | Bank Code |
---|---|
PagoExpress | PE |
For THB currency:
Bank Name | Bank Code |
---|---|
Bangkok Bank | BBL_IB_U |
Kasikornbank PAYPLUS | KBANK_PAYPLUS |
Bank of Ayudhya (Krungsri) | BAY_IB_U |
Krung Thai Bank | KTB_IB_U |
Siam Commercial Bank | SCB_IB_U |
For USD currency:
Bank Name | Bank Code |
---|---|
Santander | SN |
Itau | IT |
Bradesco | BR |
Banco do Brasil | BB |
Webpay | WP |
Bancomer | BN |
PSE | PS |
Banco de Occidente | BO |
For UYU currency:
Bank Name | Bank Code |
---|---|
Abitab | AI |
For PHP currency:
Bank Name | Bank Code |
---|---|
Dragonpay | DRAGONPAY |
For SGD currency:
Bank Name | Bank Code |
---|---|
DBS | ENETS-D_DBS |
UOB | ENETS-D_UOB |
OCBC | ENETS-D_OCBC |
SCB | ENETS-D_SCB |
For VND currency:
Bank Name | Bank Code |
---|---|
VTC-Pay VPBank | VTCP_VPBANK |
VTC-Pay ABBANK | VTCP_ABBANK |
VTC-Pay ACB | VTCP_ACB |
VTC-Pay Agribank | VTCP_AGRIBANK |
VTC-Pay BACABANK | VTCP_BACABANK |
VTC-Pay BIDV | VTCP_BIDV |
VTC-Pay BVB | VTCP_BVB |
VTC-Pay DongABank | VTCP_DONGABANK |
VTC-Pay Eximbank | VTCP_EXIMBANK |
VTC-Pay GPBank | VTCP_GPBANK |
VTC-Pay HDBank | VTCP_HDBANK |
VTC-Pay LienVietPostBank | VTCP_LVPB |
VTC-Pay MB | VTCP_MB |
VTC-Pay MaritimeBank | VTCP_MARITIMEBANK |
VTC-Pay NamABank | VTCP_NAMABANK |
VTC-Pay Navibank | VTCP_NAVIBANK |
VTC-Pay Oceanbank | VTCP_OCEANBANK |
VTC-Pay PGBank | VTCP_PGBANK |
VTC-Pay PHUONGDONG | VTCP_PHUONGDONG |
VTC-Pay SHB | VTCP_SHB |
VTC-Pay Sacombank | VTCP_SACOMBANK |
VTC-Pay SaigonBank | VTCP-SAIGONBANK |
VTC-Pay SeaABank | VTCP_SEAABANK |
VTC-Pay Techcombank | VTCP_TECHCOMBANK |
VTC-Pay TienPhong Bank | VTCP_TIENPHONGBANK |
VTC-Pay VIB | VTCP_VIB |
VTC-Pay VietABank | VTCP_VIETABANK |
VTC-Pay Vietcombank | VTCP_VIETCOMBANK |
VTC-Pay Vietinbank | VTCP_VIETINBANK |
Successful Response
stdClass Object
(
[transaction_type] => online_banking
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 50000
[currency] => CNY
[sent_to_acquirer] => true
[bank_code] => CITIC
[payment_type] => online_banking
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>online_banking</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>50000</amount>
<currency>CNY</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<bank_code>CITIC</bank_code>
<payment_type>online_banking</payment_type>
</payment_response>
Successful Response
stdClass Object
(
[transaction_type] => online_banking
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 50000
[currency] => MXN
[sent_to_acquirer] =>
[bank_code] => SE
[payment_type] =>
[account_details] => {"reference_number"=>"1000210", "account_number"=>"646180320000000006"}
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>online_banking</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>50000</amount>
<currency>MXN</currency>
<payment_response>sent_to_acquirer</payment_response>
<bank_code>SE</bank_code>
<payment_response>payment_type</payment_response>
<account_details>
<reference_number>1000210</reference_number>
<account_number>646180320000000006</account_number>
</account_details>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | The redirect url is to be included, but also depend on the bank code and might not be returned for SE bank code when it is processed through the provider for the direct integration. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
bank_code | bank code | The bank code used to process the transaction, see Bank codes. |
payment_type | string | The payment type describes the type of online banking used to process the transaction, see Payment types. |
account_details | ||
reference_number | string(7) | The reference number of the transaction to be used for the payment. |
account_number | string(18) | The account number that the payment is expected to be transferred/done to. |
Error Response
stdClass Object
(
[transaction_type] => online_banking
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[technical_message] => amount is missing
[message] => Please check input data for errors!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 50000
[currency] => CNY
[sent_to_acquirer] => true
[bank_code] => CITIC
[payment_type] => online_banking
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>online_banking</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<technical_message>amount is missing</technical_message>
<message>Please check input data for errors!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>50000</amount>
<currency>CNY</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<bank_code>CITIC</bank_code>
<payment_type>online_banking</payment_type>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
bank_code | bank code | The bank code used to process the transaction, see Bank codes. |
payment_type | string | The payment type describes the type of online banking used to process the transaction, see Payment types. |
P24
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Alternatives\P24');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
->setBankCode('')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.apm.P24Request;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
P24Request request = new P24Request();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
request.setBankCode("");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.p24(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "USD",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"bank_code": null,
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>p24</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<payment_transaction>bank_code</payment_transaction>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: p24 |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
bank_code | optional | integer | Must be one of the supported Bank codes |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Bank Codes
For EUR and PLN currencies:
Bank Name | Bank Code |
---|---|
BLIK - PSP | 154 |
EuroBank | 94 |
Przekaz tradycyjny | 178 |
Przekaz/Przelew tradycyjny | 1000 |
Płac ̨e z IKO | 135 |
Płac ̨e z Orange | 146 |
Raiffeisen Bank PBL | 102 |
U ̇zyj przedpłaty | 177 |
mBank-mTransfer | 25 |
Successful Response
stdClass Object
(
[transaction_type] => p24
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[p24]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:04Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "p24",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:04Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>p24</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => p24
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[p24]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:04Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "p24",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:04Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>p24</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
PayU
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\PayU');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('PLN')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Krakov')
->setBillingCountry('PL')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>payu</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>PLN</currency>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Krakov</city>
<country>PL</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: payu |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | optional | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required | string(255) | Customer first name |
last_name | required | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported currencies and countries:
Currency code | Country code |
---|---|
CZK | CZ |
PLN | PL |
Successful Response
stdClass Object
(
[transaction_type] => payu
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => PLN
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>payu</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>PLN</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => payu
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => PLN
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>payu</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>PLN</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
POLi
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Alternatives\Poli');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('AUD')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Sofia')
->setBillingCountry('AU')
->setBillingState('AC');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.apm.POLiRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
POLiRequest request = new POLiRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("AUD");
// Billing Address
request.setBillingFirstname("Barney");
request.setBillingLastname("Rubble");
request.setBillingPrimaryAddress("14, Nerazdelni str");
request.setBillingZipCode("1407");
request.setBillingCity("Sofia");
request.setBillingCountry("AU");
request.setBillingState("AC");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.poli(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "AUD",
"billing_address": {
"first_name": "Barney",
"last_name": "Rubble",
"address1": "14, Nerazdelni str",
"zip_code": "1407",
"city": "Sofia",
"country": "AU",
"state": "AC"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>poli</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>AUD</currency>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Sofia</city>
<country>AU</country>
<state>AC</state>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: poli |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported bank countries:
Country name | Country code |
---|---|
Australia | AU |
New Zealand | NZ |
Supported currencies:
Currency name | Currency code |
---|---|
Australian dollar | AUD |
New Zealand dollar | NZD |
Successful Response
stdClass Object
(
[transaction_type] => poli
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => AUD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[poli]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:04Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[AUD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "poli",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:04Z",
descriptor: "Descriptor one",
amount: "100",
currency: "AUD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>poli</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>AUD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => poli
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => AUD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[poli]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:04Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[AUD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "poli",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:04Z",
descriptor: "Descriptor one",
amount: "100",
currency: "AUD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>poli</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>AUD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
PSE (Pagos Seguros en Linea)
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Pse');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Bogota')
->setBillingCountry('CO')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>pse</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Bogota</city>
<country>CO</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: pse |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
CO |
Successful Response
stdClass Object
(
[transaction_type] => pse
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>pse</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => pse
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:04.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>pse</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Post Finance
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>post_finance</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>EUR</currency>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Graz</city>
<country>AT</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: post_finance |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported currencies and countries:
Currency code | Country code |
---|---|
EUR | CH |
CHF | CH |
Successful Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>post_finance</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<post_finance_transaction_id>438</post_finance_transaction_id>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
post_finance_transaction_id | string(255) | The Post Finance transaction ID |
Error Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<payment_response>transaction_type</payment_response>
<payment_response>status</payment_response>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<payment_response>code</payment_response>
<payment_response>message</payment_response>
<timestamp>2025-03-25T08:44:04Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<payment_response>sent_to_acquirer</payment_response>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
RapiPago
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Rapipago');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Buenos Aires')
->setBillingCountry('AR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>rapi_pago</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Buenos Aires</city>
<country>AR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: rapi_pago |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
AR |
Successful Response
stdClass Object
(
[transaction_type] => rapi_pago
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>rapi_pago</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => rapi_pago
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>rapi_pago</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
SafetyPay
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\SafetyPay');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setPaymentType('safetypay')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('')
->setNationalId('')
->setBirthDate('')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Tampico')
->setBillingCountry('MX')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>safetypay</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<payment_type>safetypay</payment_type>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>USD</currency>
<payment_transaction>consumer_reference</payment_transaction>
<payment_transaction>national_id</payment_transaction>
<payment_transaction>birth_date</payment_transaction>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Tampico</city>
<country>MX</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Alternatives\Ppro');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setPaymentType('safetypay')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('')
->setNationalId('')
->setBirthDate('')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Tampico')
->setBillingCountry('MX')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.apm.PProRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
PProRequest request = new PProRequest();
request.setTransactionId("119643250547501c79d8295");
request.setPaymentType("safetypay");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setConsumerReference("");
request.setNationalId("");
request.setBirthDate("");
request.setCustomerEmail("travis@example.com");
// Billing Address
request.setBillingFirstname("Barney");
request.setBillingLastname("Rubble");
request.setBillingPrimaryAddress("14, Nerazdelni str");
request.setBillingZipCode("1407");
request.setBillingCity("Tampico");
request.setBillingCountry("MX");
// Risk Params
request.setRiskUserId("123456");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.ppro(
{
"transaction_id": "119643250547501c79d8295",
"payment_type": "safetypay",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "USD",
"consumer_reference": null,
"national_id": null,
"birth_date": null,
"customer_email": "travis@example.com",
"billing_address": {
"first_name": "Barney",
"last_name": "Rubble",
"address1": "14, Nerazdelni str",
"zip_code": "1407",
"city": "Tampico",
"country": "MX"
},
"risk_params": {
"user_id": "123456"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>ppro</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<payment_type>safetypay</payment_type>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<payment_transaction>consumer_reference</payment_transaction>
<payment_transaction>national_id</payment_transaction>
<payment_transaction>birth_date</payment_transaction>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Tampico</city>
<country>MX</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | ppro or safetypay. Contact tech support at tech-support@emerchantpay.com for more details. |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
payment_type | required1 | safetypay | SafetyPay. Contact tech support for more details |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
1 - payment_type must be submitted only when the transaction type is set to ppro
Supported countries:
Country |
---|
AT |
BE |
BR |
CL |
CO |
DE |
EC |
ES |
MX |
NL |
PE |
PR |
Supported currencies:
Currency Code |
---|
EUR |
USD |
Successful Response
stdClass Object
(
[transaction_type] => safetypay
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>safetypay</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response
stdClass Object
(
[transaction_type] => ppro
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[ppro]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "ppro",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "USD",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ppro</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>ppro/safetypay</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Santander
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Santander');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rubble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Rio de Janeiro')
->setBillingCountry('BR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>santander</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rubble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Rio de Janeiro</city>
<country>BR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: santander |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | string(20) | Birth date of the customer |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
AR |
BR |
MX |
CL |
Successful Response
stdClass Object
(
[transaction_type] => santander
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>santander</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => santander
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>santander</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
SDD Init Recurring Sale
An SddInitRecurringSale transaction initializes a recurring payment and is equal to a normal SddSaleTransaction except that it can be referenced as ”initial” transaction in a SddRecurringSale transaction.
Note that if an SddInitRecurringSale is fully refunded, the recurring series is stopped and no more SddRecurringSales can be performed for that recurring series.
If an SddInitRecurringSale is partially refunded, the recurring series can continue with more SddRecurringSales.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Sdd\Recurring\InitRecurringSale');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnPendingUrl('http://www.example.com/pending')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('EUR')
->setIban('DE09100100101234567891')
->setBic('PBNKDEFFXXX')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingCountry('DE');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.sdd.SDDInitRecurringSaleRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
SDDInitRecurringSaleRequest request = new SDDInitRecurringSaleRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnPendingUrl(new URL("http://www.example.com/pending"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("EUR");
request.setIban("DE09100100101234567891");
request.setBic("PBNKDEFFXXX");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingCountry("DE");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sdd_init_recurring_sale(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"return_success_url": "http://www.example.com/success",
"return_pending_url": "http://www.example.com/pending",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "EUR",
"iban": "DE09100100101234567891",
"bic": "PBNKDEFFXXX",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"country": "DE"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sdd_init_recurring_sale</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>EUR</currency>
<iban>DE09100100101234567891</iban>
<bic>PBNKDEFFXXX</bic>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<country>DE</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sdd_init_recurring_sale |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required* | url | URL where customer is sent to after successful payment |
return_pending_url | required* | url | URL where customer is sent to when asynchronous payment is pending confirmation |
return_failure_url | required* | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
iban | required | string(34) | Customer’s IBAN number |
bic | optional | string(11) | SWIFT/BIC code of the customer’s bank |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required | string(255) | Customer first name |
last_name | required | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(140) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Supported countries:
Country Name | Country Code |
---|---|
Austria | AT |
Belgium | BE |
Cyprus | CY |
Estonia | EE |
Finland | FI |
France | FR |
Germany | DE |
Greece | GR |
Ireland | IE |
Italy | IT |
Latvia | LV |
Lithuania | LT |
Luxembourg | LU |
Malta | MT |
Monaco | MC |
Netherlands | NL |
Portugal | PT |
Slovakia | SK |
San Marino | SM |
Slovenia | SI |
Spain | ES |
Successful Response
stdClass Object
(
[transaction_type] => sdd_init_recurring_sale
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[sdd_init_recurring_sale]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "sdd_init_recurring_sale",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sdd_init_recurring_sale</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response
stdClass Object
(
[transaction_type] => sdd_init_recurring_sale
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Please check input data for errors!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[sdd_init_recurring_sale]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Please check input data for errors!]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "sdd_init_recurring_sale",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Please check input data for errors!",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sdd_init_recurring_sale</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Please check input data for errors!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
SDD Recurring Sale
A SddRecurringSale transaction is a ”repeated” transaction which follows and references a SddInitRecurringSale transaction.
The bank account data is omitted.
Note that SddRecurringSales can be partially or fully refunded if configuration allows it, and this will not stop the sdd recurring series.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Sdd\Recurring\RecurringSale');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('EUR')
->setReferenceId('2ee4287e67971380ef7f97d5743bb523');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.sdd.SDDRecurringSaleRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
SDDRecurringSaleRequest request = new SDDRecurringSaleRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("EUR");
request.setReferenceId("2ee4287e67971380ef7f97d5743bb523");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sdd_recurring_sale(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"amount": "100",
"currency": "EUR",
"reference_id": "2ee4287e67971380ef7f97d5743bb523"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sdd_recurring_sale</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>EUR</currency>
<reference_id>2ee4287e67971380ef7f97d5743bb523</reference_id>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sdd_recurring_sale |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
reference_id | required | string(32) | Unique id returned by corresponding transaction |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => sdd_recurring_sale
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[sdd_recurring_sale]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "sdd_recurring_sale",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sdd_recurring_sale</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => sdd_recurring_sale
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 320
[technical_message] => amount is missing!
[message] => Please check input data for errors!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
)
<payment_response content=[
<transaction_type content=[sdd_recurring_sale]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[320]>
<technical_message content=[amount is missing!]>
<message content=[Please check input data for errors!]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
]>
{
transaction_type: "sdd_recurring_sale",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "320",
technical_message: "amount is missing!",
message: "Please check input data for errors!",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sdd_recurring_sale</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>320</code>
<technical_message>amount is missing!</technical_message>
<message>Please check input data for errors!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
SDD Refund
SddRefunds allow to return already billed amounts to customers.
The amount can be fully refunded only, no partial refunds are allowed. Note that SDD refunds can only be done on former approved SDD transactions
Therefore, the reference_id for the corresponding transaction is mandatory.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Sdd\Refund');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setAmount('100')
->setCurrency('EUR')
->setReferenceId('2ee4287e67971380ef7f97d5743bb523');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.sdd.SDDRefundRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
SDDRefundRequest request = new SDDRefundRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setAmount(new BigDecimal(100));
request.setCurrency("EUR");
request.setReferenceId("2ee4287e67971380ef7f97d5743bb523");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sdd_refund(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"amount": "100",
"currency": "EUR",
"reference_id": "2ee4287e67971380ef7f97d5743bb523"
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sdd_refund</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<amount>100</amount>
<currency>EUR</currency>
<reference_id>2ee4287e67971380ef7f97d5743bb523</reference_id>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sdd_refund |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required | string(255) | Description of the transaction for later use. |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
reference_id | required | string(32) | Unique id returned by corresponding transaction |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => sdd_refund
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[sdd_refund]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "sdd_refund",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sdd_refund</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => sdd_refund
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 320
[technical_message] => amount is missing!
[message] => Please check input data for errors!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[sdd_refund]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[320]>
<technical_message content=[amount is missing!]>
<message content=[Please check input data for errors!]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "sdd_refund",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "320",
technical_message: "amount is missing!",
message: "Please check input data for errors!",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sdd_refund</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>320</code>
<technical_message>amount is missing!</technical_message>
<message>Please check input data for errors!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
SDD Sale
The status of Sepa Direct Debit transactions is not available right after a transaction is made. Merchants receive the status of SDD transaction at 8:30 am (CET), 10:30 am (CET), 3:30 pm (CET) and 7:30 pm (CET). The merchant should have enabled notifications
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Sdd\Sale');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnPendingUrl('http://www.example.com/pending')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('EUR')
->setIban('DE09100100101234567891')
->setBic('PBNKDEFFXXX')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingCountry('DE');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.sdd.SDDSaleRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
SDDSaleRequest request = new SDDSaleRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnPendingUrl(new URL("http://www.example.com/pending"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setAmount(new BigDecimal(100));
request.setCurrency("EUR");
request.setIban("DE09100100101234567891");
request.setBic("PBNKDEFFXXX");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingCountry("DE");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sdd_sale(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"return_success_url": "http://www.example.com/success",
"return_pending_url": "http://www.example.com/pending",
"return_failure_url": "http://www.example.com/failure",
"amount": "100",
"currency": "EUR",
"iban": "DE09100100101234567891",
"bic": "PBNKDEFFXXX",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"country": "DE"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sdd_sale</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>EUR</currency>
<iban>DE09100100101234567891</iban>
<bic>PBNKDEFFXXX</bic>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<country>DE</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sdd_sale |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required* | url | URL where customer is sent to after successful payment |
return_pending_url | required* | url | URL where customer is sent to when asynchronous payment is pending confirmation |
return_failure_url | required* | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
iban | required | string(34) | Customer’s IBAN number |
bic | optional | string(11) | SWIFT/BIC code of the customer’s bank |
company_name | optional | string(255) | Name of the company. |
mandate_reference | optional | string(255) | Reference which contains the SEPAExpress paper mandate. |
billing_address | required | See Required vs Optional API params for details | |
first_name | required | string(255) | Customer first name |
last_name | required | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(140) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
*Supported countries: *
The supported countries are the same as SDD Init Recurring Sale.
Successful Response
stdClass Object
(
[transaction_type] => sdd_sale
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[sdd_sale]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "sdd_sale",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sdd_sale</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response
stdClass Object
(
[transaction_type] => sdd_sale
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[message] => expiration_year is invalid
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[sdd_sale]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[340]>
<message content=[expiration_year is invalid]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "sdd_sale",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "340",
message: "expiration_year is invalid",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sdd_sale</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<message>expiration_year is invalid</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Sofort
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Alternatives\Sofort');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('EUR')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Berlin')
->setBillingCountry('DE');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.apm.SofortRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
SofortRequest request = new SofortRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setReturnPendingUrl(new URL("http://www.example.com/pending"));
request.setAmount(new BigDecimal(100));
request.setCurrency("EUR");
request.setCustomerEmail("travis@example.com");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Berlin");
request.setBillingCountry("DE");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sofort(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"return_pending_url": "http://www.example.com/pending",
"amount": "100",
"currency": "EUR",
"customer_email": "travis@example.com",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Berlin",
"country": "DE"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sofort</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>EUR</currency>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Berlin</city>
<country>DE</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sofort |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
notification_url | optional | url | URL at merchant where gateway sends outcome of transaction. |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
iban | optional | string(24) | International bank account number of the customer |
bic | optional | string(12) | Bank Identifier Code |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country name | Country code |
---|---|
Austria | AT |
Belgium | BE |
Germany | DE |
Italy | IT |
Netherlands | NL |
Poland | PL |
Spain | ES |
Switzerland | CH |
Successful Response
stdClass Object
(
[transaction_type] => sofort
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[sofort]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "sofort",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sofort</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => sofort
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[sofort]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "sofort",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sofort</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Trustly Sale
Trustly is an oBeP-style alternative payment method that allows you to pay directly with your ebank account.
After initiating a transaction, Trustly will redirect the consumer to Trustly bank page. There the consumer will have to select his/her bank and log in with the regular access codes, choose the account and complete payment.
Account_ID parameter will be returned to the merchant notification url. Account_ID identifies each user’s bank account once it is processed through Trustly system, it can be stored by the merchant and further used as a reference on the Bank-Pay-out call.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Alternatives\Trustly\Sale');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setPaymentType('')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnSuccessUrlTarget('self')
->setAmount('100')
->setCurrency('EUR')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Max')
->setBillingLastName('Mustermann')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Berlin')
->setBillingCountry('DE')
->setUserId('')
->setAccountId('');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.apm.TrustlySaleRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
public class GenesisExample {
public static void main() throws MalformedURLException {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
TrustlySaleRequest request = new TrustlySaleRequest();
request.setTransactionId("119643250547501c79d8295");
request.setPaymentType("");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setNotificationUrl(new URL("https://www.example.com/notification"));
request.setReturnSuccessUrl(new URL("http://www.example.com/success"));
request.setReturnFailureUrl(new URL("http://www.example.com/failure"));
request.setReturnSuccessUrlTarget("self");
request.setAmount(new BigDecimal(100));
request.setCurrency("EUR");
request.setCustomerEmail("travis@example.com");
// Billing Address
request.setBillingFirstname("Max");
request.setBillingLastname("Mustermann");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Berlin");
request.setBillingCountry("DE");
request.setUserId("");
request.setAccountId("");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.trustly_sale(
{
"transaction_id": "119643250547501c79d8295",
"payment_type": null,
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"notification_url": "https://www.example.com/notification",
"return_success_url": "http://www.example.com/success",
"return_failure_url": "http://www.example.com/failure",
"return_success_url_target": "self",
"amount": "100",
"currency": "EUR",
"customer_email": "travis@example.com",
"billing_address": {
"first_name": "Max",
"last_name": "Mustermann",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Berlin",
"country": "DE"
},
"business_attributes": {
"event_start_date": "26-04-2025",
"event_end_date": "05-05-2025",
"event_organizer_id": "20192375",
"event_id": "1912"
},
"user_id": null,
"account_id": null
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>trustly_sale</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<payment_transaction>payment_type</payment_transaction>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_success_url_target>self</return_success_url_target>
<amount>100</amount>
<currency>EUR</currency>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Max</first_name>
<last_name>Mustermann</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Berlin</city>
<country>DE</country>
</billing_address>
<business_attributes>
<event_start_date>26-04-2025</event_start_date>
<event_end_date>05-05-2025</event_end_date>
<event_organizer_id>20192375</event_organizer_id>
<event_id>1912</event_id>
</business_attributes>
<payment_transaction>user_id</payment_transaction>
<payment_transaction>account_id</payment_transaction>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: trustly_sale |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_success_url_target | optional | string(255) | URL target for successful payment in Trustly iFrame. Possible values: self, parent, top. |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
user_id | required* | string(255) | Unique user identifier defined by merchant in their own system. ID, username, hash or anything uniquely identifying the consumer requesting the deposit. Must be static per each consumer for any type of transaction where this consumer is involved (trustly_sale, bank pay_out, register_account, select account). |
birth_date | optional | dd-mm-yyyy | Date of birth of the beneficiary, or organisational number for the organisation. |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
business_attributes | required* | Check business attributes section. | |
event_start_date | required* | dd-mm-yyyy | The date when event starts in format dd-mm-yyyy |
event_end_date | required* | dd-mm-yyyy | The date when event ends in format dd-mm-yyyy |
event_organizer_id | required* | string | |
event_id | required* | string | |
date_of_order | required* | dd-mm-yyyy | The date when order was placed in format dd-mm-yyyy |
delivery_date | required* | dd-mm-yyyy | Date of the expected delivery in format dd-mm-yyyy |
name_of_the_supplier | required* | string | |
account_id | required | string(255) | Unique user Account identifier at Trustly system, which is used to process a Bank Pay-out call to the consumer, without reference to initial deposit transaction. You will receive this after Trustly_Sale and Select Account call on your notification URL. You will receive this as a response on Trustly Register Account option. |
required* = conditionally required
Supported countries:
Country name | Country code |
---|---|
Austria | AT |
Belgium | BE |
Czech Republic | CZ |
Denmark | DK |
Estonia | EE |
Finland | FI |
Germany | DE |
Latvia | LV |
Lithuania | LT |
Netherlands | NL |
Norway | NO |
Poland | PL |
Slovakia | SK |
Spain | ES |
Sweden | SE |
United Kingdom | GB |
Successful Response
stdClass Object
(
[transaction_type] => trustly_sale
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[trustly_sale]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "trustly_sale",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>trustly_sale</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => trustly_sale
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => EUR
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[trustly_sale]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[110]>
<message content=[Something went wrong, please contact support!]>
<timestamp content=[2025-03-25T08:44:05Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[EUR]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "trustly_sale",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "110",
message: "Something went wrong, please contact support!",
timestamp: "2025-03-25T08:44:05Z",
descriptor: "Descriptor one",
amount: "100",
currency: "EUR",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>trustly_sale</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
UPI
UPI (Unified Payment Interface) transaction is an alternative payment method which allows users to transfer money between bank accounts.
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>upi</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>50000</amount>
<currency>INR</currency>
<customer_email>travis@example.com</customer_email>
<virtual_payment_address>someone@bank</virtual_payment_address>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: upi |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
document_id | required* | string(255) | Document ID value. |
virtual_payment_address | required* | string(255) | Virtual Payment Address (VPA) of the customer, format: someone@bank |
user_category | required* | string | User category. If missing, 'default' will be used. |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported currencies
Currency name | Currency code |
---|---|
Indian rupee | INR |
Successful Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>upi</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>50000</amount>
<currency>INR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>upi</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<technical_message>amount is missing</technical_message>
<message>Please check input data for errors!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>50000</amount>
<currency>INR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Webpay
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Webpay');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('john_doe')
->setNationalId('8812128812')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Santiago')
->setBillingCountry('CL');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>webpay</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>john_doe</consumer_reference>
<national_id>8812128812</national_id>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Santiago</city>
<country>CL</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: webpay |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries
Country Name | Country code |
---|---|
Chile | CL |
Successful Response
stdClass Object
(
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Davivienda
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\Davivienda');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnPendingUrl('http://www.example.com/pending')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('barney@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Bogota')
->setBillingCountry('CO')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>davivienda</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>barney@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Bogota</city>
<country>CO</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: davivienda |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | optional | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
CO |
Successful Response
stdClass Object
(
[transaction_type] => davivienda
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>davivienda</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => davivienda
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:05.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>davivienda</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Cash Payments
Cash
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>cash</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>50000</amount>
<currency>MXN</currency>
<customer_email>travis@example.com</customer_email>
<payment_type>scotiabank</payment_type>
<document_id>8812128812</document_id>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Monterrey</city>
<country>MX</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: cash |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
payment_type | required | string | The payment type describes desired payment method. Must contain one of the allowed Payment types, but they may vary based on the specific setup. |
document_id | required | string(255) | Document ID value. |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported currencies
Currency name | Currency code |
---|---|
Mexican Peso | MXN |
Cash Payment Types
Payment Type Name | Payment Type Code |
---|---|
7 Eleven | seven_eleven |
Bancomer | bancomer |
Farmacias del Dr. Ahorro | pharmacies_del_dr_ahorro |
Farmacias Santa Maria | pharmacies_santa_maria |
OXXO | oxxo |
Scotiabank | scotiabank |
Successful Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>cash</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<transaction_id>119643250547501c79d8295</transaction_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:05Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>50000</amount>
<currency>MXN</currency>
<payment_type>scotiabank</payment_type>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
transaction_id | string(255) | Unique transaction id defined by merchant |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
redirect_url | url | The redirect URL to the provider page for payment finalization. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
payment_type | string | The payment type describes the method used to process cash transaction. See Payment types. |
Error Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>cash</transaction_type>
<status>error</status>
<mode>live</mode>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<transaction_id>119643250547501c79d8295</transaction_id>
<code>110</code>
<technical_message>amount is missing</technical_message>
<message>Please check input data for errors!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>50000</amount>
<currency>MXN</currency>
<payment_type>scotiabank</payment_type>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
transaction_id | string(255) | Unique transaction id defined by merchant |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
payment_type | string | The payment type describes the method used to process cash transaction. See Payment types. |
Baloto
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\CashPayments\Baloto');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rubble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Bogota')
->setBillingCountry('CO')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>baloto</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rubble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Bogota</city>
<country>CO</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: baloto |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | string(20) | Birth date of the customer |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
CO |
Successful Response
stdClass Object
(
[transaction_type] => baloto
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>baloto</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => baloto
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>baloto</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Banco de Occidente
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\CashPayments\BancoDeOccidente');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Bogota')
->setBillingCountry('CO')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>banco_de_occidente</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Bogota</city>
<country>CO</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: banco_de_occidente |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | string(20) | Birth date of the customer |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
CO |
Successful Response
stdClass Object
(
[transaction_type] => banco_de_occidente
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>banco_de_occidente</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => banco_de_occidente
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>banco_de_occidente</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Boleto
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\CashPayments\Boleto');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rubble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Rio de Janeiro')
->setBillingCountry('BR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>boleto</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rubble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Rio de Janeiro</city>
<country>BR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: boleto |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | string(20) | Birth date of the customer |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
BR |
Successful Response
stdClass Object
(
[transaction_type] => boleto
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
[barcode] => 03395929800000015009008773800000000000270101
[ticket_expiry_date] => 04052022
[digitable_line] => 03399008707380000000900004301016489750000019000
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>boleto</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<barcode>03395929800000015009008773800000000000270101</barcode>
<ticket_expiry_date>04052022</ticket_expiry_date>
<digitable_line>03399008707380000000900004301016489750000019000</digitable_line>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
barcode | string(44) | Barcode digit value acquired after transaction process |
ticket_expiry_date | string(8) | Transaction expiry date in format %d%m%Y |
digitable_line | string(47) | Digitable line value acquired after transaction process |
Error Response
stdClass Object
(
[transaction_type] => boleto
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>boleto</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Efecty
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\CashPayments\Efecty');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('barney@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Bogota')
->setBillingCountry('CO')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>efecty</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>barney@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Bogota</city>
<country>CO</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: efecty |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
CO |
Successful Response
stdClass Object
(
[transaction_type] => efecty
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>efecty</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => efecty
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>efecty</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
OXXO
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\CashPayments\Oxxo');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('barney@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Mexico City')
->setBillingCountry('MX')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>oxxo</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>barney@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Mexico City</city>
<country>MX</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: oxxo |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
MX |
Successful Response
stdClass Object
(
[transaction_type] => oxxo
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>oxxo</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => oxxo
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>oxxo</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Pago Facil
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\CashPayments\PagoFacil');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rumble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('barney@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Buenos Aires')
->setBillingCountry('AR')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>pago_facil</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rumble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>barney@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Buenos Aires</city>
<country>AR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: pago_facil |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
AR |
Successful Response
stdClass Object
(
[transaction_type] => pago_facil
[status] => pending_async
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>pago_facil</transaction_type>
<status>pending_async</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => pago_facil
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>pago_facil</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
PIX
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>pix</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_pending_url>http://www.example.com/pending</return_pending_url>
<amount>100</amount>
<currency>USD</currency>
<document_id>12345678909</document_id>
<birth_date>30-12-1992</birth_date>
<customer_email>travis@example.com</customer_email>
<beneficiary>
<name>ABC Corporation</name>
<document_id>12345678000190</document_id>
<pix_key>e89b1e34-18e0-40a7-9dd7-5a47d54a6b4f</pix_key>
</beneficiary>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Rio de Janeiro</city>
<country>BR</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: pix |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required* | url | URL where customer is sent to after successful payment |
return_failure_url | required* | url | URL where customer is sent to after unsuccessful payment |
return_pending_url | required* | url | URL where customer is sent to when asynchronous payment is pending confirmation |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
document_id | required | string(255) | Document ID of the consumer. See Document ID Parameter for more details. |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
mothers_name | optional | string(255) | Mother's name of the customer. Submitting this parameter can increase the acceptance ratio for the payment method. |
gender | optional | enum | 0 = Male, 1 = Female, 2 = Other. Submitting this parameter can increase the acceptance ratio for the payment method. |
marital_status | optional | enum | 0 = NotMarried, 1 = Married, 2 = Divorced, 3 = Separate, 4 = Widower, 5 = Single, 6 = Other. Submitting this parameter can increase the acceptance ratio for the payment method. |
sender_occupation | optional | string(255) | Occupation of the recepient. Submitting this parameter can increase the acceptance ratio for the payment method. |
nationality | optional | string(255) | Nationality of the payer. Submitting this parameter can increase the acceptance ratio for the payment method. |
country_of_origin | optional | string(255) | Country of origing of the payer. Two-letter iso codes. Submitting this parameter can increase the acceptance ratio for the payment method. |
birth_city | optional | string(255) | City of birth of the payer. Submitting this parameter can increase the acceptance ratio for the payment method. |
birth_state | optional | string(255) | Birth state of the payer. Submitting this parameter can increase the acceptance ratio for the payment method. |
company_type | optional | enum | 0 = SA, 1 = LTDA, 2 = MEI, 3 = ME, 4 = EIRELI, 5 = Condominium, 6 = Closed SA, 7 = Simple EIRELI, 8 = Outros. Applicable for B2B payments only. Submitting this parameter can increase the acceptance ratio for the payment method. |
company_activity | optional | string(255) | Type of company activity. Applicable for B2B payments only. Submitting this parameter can increase the acceptance ratio for the payment method. |
birth_date | optional | string(10) | Birth date of the consumer |
incorporation_date | optional | dd-mm-yyyy | Applicable for B2B payments only. Submitting this parameter can increase the acceptance ratio for the payment method. |
beneficiary | optional | The beneficiary parameters. Can only be submitted in special cases. Please contact Tech Support for more details. | |
name | optional | string(255) | The name of the beneficiary, either a Natural Person or Legal Person. |
document_id | optional | string(14) | The Document ID of the beneficiary, such as CPF or CNPJ for Brazilian entities. |
pix_key | optional | string(36) | The PIX key associated with the beneficiary. |
billing_address | required | See Required vs Optional API params for details | |
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
BR |
Successful Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>pix</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
<emv_string>00020101021226870014br.gov.bcb.pix2565pix-h.santander.com.br/qr/v2/573119fe-8811-4612-9233-7252abc22ef45204000053039865802BR5925EMERCHANTPAY DO BRAZIL...6009SAO PAULO62070503***6304e675</emv_string>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
transaction_id | string(255) | Unique transaction id defined by merchant |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
emv_string | string(255) | A string representation of the QR code. |
Error Response
This request is not implemented yet
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>pix</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Redpagos
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\CashPayments\Redpagos');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('100')
->setCurrency('USD')
->setConsumerReference('barney_rubble')
->setNationalId('8812128812')
->setBirthDate('30-12-1992')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Barney')
->setBillingLastName('Rubble')
->setBillingAddress1('14, Nerazdelni str')
->setBillingZipCode('1407')
->setBillingCity('Montevideo')
->setBillingCountry('UY')
// Risk Params
->setRiskUserId('123456');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>redpagos</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>100</amount>
<currency>USD</currency>
<consumer_reference>barney_rubble</consumer_reference>
<national_id>8812128812</national_id>
<birth_date>30-12-1992</birth_date>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Barney</first_name>
<last_name>Rubble</last_name>
<address1>14, Nerazdelni str</address1>
<zip_code>1407</zip_code>
<city>Montevideo</city>
<country>UY</country>
</billing_address>
<risk_params>
<user_id>123456</user_id>
</risk_params>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: redpagos |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
consumer_reference | required | string(20) | Consumer reference is a unique consumer identifier |
national_id | required | string(20) | National ID of the consumer. See Document ID Parameter for more details. |
birth_date | optional | string(20) | Birth date of the customer |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Supported countries:
Country |
---|
UY |
Successful Response
stdClass Object
(
[transaction_type] => redpagos
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>redpagos</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => redpagos
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>redpagos</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Gift Cards
Intersolve
Intersolve transactions are made using gift card provided by Intersolve
Using an intersolve transaction, the amount is immediately billed to the customer’s gift card.
It can be reversed via a void transaction. Intersolve gift cards also support payout.
Use intersolve transactions if you are using gift cards provided by Intersolve.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\GiftCards\Intersolve');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardNumber('7000001163991388834')
->setCvv('944062')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.giftcards.IntersolveRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
IntersolveRequest request = new IntersolveRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardNumber("7000001163991388834");
request.setCvv("944062");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>intersolve</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_number>7000001163991388834</card_number>
<cvv>944062</cvv>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: intersolve |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
card_number | required | string(19..21) | Gift card number |
cvv | required* | 5 to 8 digits | Verification code of the gift card, requirement is based on terminal configuration |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted. Cannot be set together with remember_card |
remember_card | optional | "true" | See Tokenize. Tokenizes cardholder parameters. Cannot be set together with token |
consumer_id | optional | string(10) | See Consumers and Tokenization. Combine with remember_card to tokenize or with token to use token |
billing_address | required* | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => intersolve
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[consumer_id] => 123456
[token] => ee946db8-d7db-4bb7-b608-b65b153e127d
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[intersolve]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<consumer_id content=[123456]>
<token content=[ee946db8-d7db-4bb7-b608-b65b153e127d]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:06Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>intersolve</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<consumer_id>123456</consumer_id>
<token>ee946db8-d7db-4bb7-b608-b65b153e127d</token>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
consumer_id | string(10) | Consumer unique reference. See Consumers |
token | string(36) | Plain-text token value. See Tokenization |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response
stdClass Object
(
[transaction_type] => intersolve
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[technical_message] => Transaction_id is invalid!
[message] => Transaction_id is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[intersolve]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[340]>
<technical_message content=[Transaction_id is invalid!]>
<message content=[Transaction_id is invalid!]>
<timestamp content=[2025-03-25T08:44:06Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>intersolve</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<technical_message>Transaction_id is invalid!</technical_message>
<message>Transaction_id is invalid!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Fashioncheque
Fashioncheque transactions are made using gift card provided by Fashioncheque
Using a fashioncheque transaction, the amount is immediately billed to the customer’s gift card.
It can be reversed via a void transaction on the same day of the transaction. They can also be refunded.
Use fashioncheque transactions, if you are using gift cards provided by Fashioncheque.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\GiftCards\Fashioncheque');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardNumber('6046425117120757123')
->setCvv('121839')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.giftcards.FashionchequeRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
FashionchequeRequest request = new FashionchequeRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardNumber("6046425117120757123");
request.setCvv("121839");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>fashioncheque</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_number>6046425117120757123</card_number>
<cvv>121839</cvv>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: fashioncheque |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Only USD and EUR |
card_number | required | string(19..21) | Gift card number |
cvv | required* | 5 to 8 digits | Verification code of the gift card, requirement is based on terminal configuration |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted |
billing_address | required* | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => fashioncheque
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[fashioncheque]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:06Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>fashioncheque</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response
stdClass Object
(
[transaction_type] => fashioncheque
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[technical_message] => Transaction_id is invalid!
[message] => Transaction_id is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[fashioncheque]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[340]>
<technical_message content=[Transaction_id is invalid!]>
<message content=[Transaction_id is invalid!]>
<timestamp content=[2025-03-25T08:44:06Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>fashioncheque</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<technical_message>Transaction_id is invalid!</technical_message>
<message>Transaction_id is invalid!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
TCS
The container store transactions are made using gift cards provided by TCS.
The amount from a Container Store Transactions is immediately billed to the customer’s gift card.
It can be reversed via a void transaction.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\GiftCards\Tcs');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('100')
->setCurrency('USD')
->setCardNumber('6046425117120757123')
->setCvv('121839')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.giftcards.TCSRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
TCSRequest request = new TCSRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(100));
request.setCurrency("USD");
request.setCardNumber("6046425117120757123");
request.setCvv("121839");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>container_store</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>100</amount>
<currency>USD</currency>
<card_number>6046425117120757123</card_number>
<cvv>121839</cvv>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: container_store |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Only USD and EUR |
card_number | required | string(19..21) | Gift card number |
cvv | required* | 5 to 8 digits | Verification code of the gift card, requirement is based on terminal configuration |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted |
billing_address | required* | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => container_store
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[container_store]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:06Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[true]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>container_store</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response
stdClass Object
(
[transaction_type] => container_store
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[technical_message] => Transaction_id is invalid!
[message] => Transaction_id is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 100
[currency] => USD
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[container_store]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[340]>
<technical_message content=[Transaction_id is invalid!]>
<message content=[Transaction_id is invalid!]>
<timestamp content=[2025-03-25T08:44:06Z]>
<descriptor content=[Descriptor one]>
<amount content=[100]>
<currency content=[USD]>
<sent_to_acquirer content=[false]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>container_store</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<technical_message>Transaction_id is invalid!</technical_message>
<message>Transaction_id is invalid!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>100</amount>
<currency>USD</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Split Payments
Split payments are performed on gift card transaction types when there isn’t enough balance in the gift card. In order to use split payments you need to enable them on terminal. For more information please contact tech support.
Split payments follow this workflow:
- Split payment can be initiated only on gift card transaction.
- You can have maximum three payment series including the initial transaction.
- If the gift card does not have enough balance to perform the transaction, the whole available balance is taken from the gift card and new split payment is initiated.
- You can continue the split payment with another gift card
- You can finish the split payment with either gift card or credit card by submitting the ’unique id’ of the initial transaction as ’reference id’ in the request.
- Any failure during split payment causes rollback of all split payment series transactions.
Example for initial split payment transaction:
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\GiftCards\Fashioncheque');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('5000')
->setCurrency('EUR')
->setCardNumber('6046425117120757123')
->setCvv('121839')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.giftcards.FashionchequeRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
FashionchequeRequest request = new FashionchequeRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setAmount(new BigDecimal(5000));
request.setCurrency("EUR");
request.setCardNumber("6046425117120757123");
request.setCvv("121839");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>fashioncheque</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>5000</amount>
<currency>EUR</currency>
<card_number>6046425117120757123</card_number>
<cvv>121839</cvv>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: fashioncheque |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Only USD and EUR |
card_number | required | string(19..21) | Gift card number |
cvv | required* | 5 to 8 digits | Verification code of the gift card, requirement is based on terminal configuration |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted |
billing_address | required* | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => fashioncheque
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 406bc1b340472db4dbbba4b749850234
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:06.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 2000
[currency] => EUR
[split_payment] => initiated
[leftover_amount] => 3000
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[fashioncheque]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[406bc1b340472db4dbbba4b749850234]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:06Z]>
<descriptor content=[Descriptor one]>
<amount content=[2000]>
<currency content=[EUR]>
<split_payment content=[initiated]>
<leftover_amount content=[3000]>
<sent_to_acquirer content=[true]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>fashioncheque</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>406bc1b340472db4dbbba4b749850234</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:06Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>2000</amount>
<currency>EUR</currency>
<split_payment>initiated</split_payment>
<leftover_amount>3000</leftover_amount>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
split_payment | string | Split payment status for this transaction. Should be ’initiated’. |
leftover_amount | integer | Leftover amount of transaction in minor currency unit, see Currency Handling for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response
stdClass Object
(
[transaction_type] => fashioncheque
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[technical_message] => Transaction_id is invalid!
[message] => Transaction_id is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 5000
[currency] => EUR
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[fashioncheque]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[340]>
<technical_message content=[Transaction_id is invalid!]>
<message content=[Transaction_id is invalid!]>
<timestamp content=[2025-03-25T08:44:07Z]>
<descriptor content=[Descriptor one]>
<amount content=[5000]>
<currency content=[EUR]>
<sent_to_acquirer content=[false]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>fashioncheque</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<technical_message>Transaction_id is invalid!</technical_message>
<message>Transaction_id is invalid!</message>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>5000</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Example for continued split payment transaction:
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\GiftCards\Intersolve');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReferenceId('406bc1b340472db4dbbba4b749850234')
->setAmount('3000')
->setCurrency('EUR')
->setCardNumber('7000001163991388834')
->setCvv('944062')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.giftcards.IntersolveRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
IntersolveRequest request = new IntersolveRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReferenceId("406bc1b340472db4dbbba4b749850234");
request.setAmount(new BigDecimal(3000));
request.setCurrency("EUR");
request.setCardNumber("7000001163991388834");
request.setCvv("944062");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>intersolve</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<reference_id>406bc1b340472db4dbbba4b749850234</reference_id>
<amount>3000</amount>
<currency>EUR</currency>
<card_number>7000001163991388834</card_number>
<cvv>944062</cvv>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: intersolve |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
reference_id | required | string(32) | The ’unique id’ of the initial split payment transaction. |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
card_number | required | string(19..21) | Gift card number |
cvv | required* | 5 to 8 digits | Verification code of the gift card, requirement is based on terminal configuration |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted |
billing_address | required* | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => intersolve
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 2500
[currency] => EUR
[split_payment] => continued
[leftover_amount] => 500
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[intersolve]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:07Z]>
<descriptor content=[Descriptor one]>
<amount content=[2500]>
<currency content=[EUR]>
<split_payment content=[continued]>
<leftover_amount content=[500]>
<sent_to_acquirer content=[true]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>intersolve</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>2500</amount>
<currency>EUR</currency>
<split_payment>continued</split_payment>
<leftover_amount>500</leftover_amount>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
split_payment | string | Split payment status for this transaction. Should be ’continued’. |
leftover_amount | integer | Leftover amount of transaction in minor currency unit, see Currency Handling for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response
stdClass Object
(
[transaction_type] => intersolve
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[technical_message] => Transaction_id is invalid!
[message] => Transaction_id is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 3000
[currency] => EUR
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[intersolve]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[340]>
<technical_message content=[Transaction_id is invalid!]>
<message content=[Transaction_id is invalid!]>
<timestamp content=[2025-03-25T08:44:07Z]>
<descriptor content=[Descriptor one]>
<amount content=[3000]>
<currency content=[EUR]>
<sent_to_acquirer content=[false]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>intersolve</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<technical_message>Transaction_id is invalid!</technical_message>
<message>Transaction_id is invalid!</message>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>3000</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Example for finalized split payment transaction:
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\GiftCards\Intersolve');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReferenceId('406bc1b340472db4dbbba4b749850234')
->setAmount('500')
->setCurrency('EUR')
->setCardNumber('7000001163991388834')
->setCvv('944062')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.giftcards.IntersolveRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
IntersolveRequest request = new IntersolveRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReferenceId("406bc1b340472db4dbbba4b749850234");
request.setAmount(new BigDecimal(500));
request.setCurrency("EUR");
request.setCardNumber("7000001163991388834");
request.setCvv("944062");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>intersolve</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<reference_id>406bc1b340472db4dbbba4b749850234</reference_id>
<amount>500</amount>
<currency>EUR</currency>
<card_number>7000001163991388834</card_number>
<cvv>944062</cvv>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: intersolve |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | required* | string(255) | Description of the transaction for later use. |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
reference_id | required | string(32) | The ’unique id’ of the initial split payment transaction. |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
card_number | required | string(19..21) | Gift card number |
cvv | required* | 5 to 8 digits | Verification code of the gift card, requirement is based on terminal configuration |
token | optional | string(36) | See Tokenization for more details. If present, the cardholder parameters can be omitted |
billing_address | required* | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => intersolve
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 500
[currency] => EUR
[split_payment] => finalized
[leftover_amount] => 0
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[intersolve]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:07Z]>
<descriptor content=[Descriptor one]>
<amount content=[500]>
<currency content=[EUR]>
<split_payment content=[finalized]>
<leftover_amount content=[0]>
<sent_to_acquirer content=[true]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>intersolve</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>500</amount>
<currency>EUR</currency>
<split_payment>finalized</split_payment>
<leftover_amount>0</leftover_amount>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
split_payment | string | Split payment status for this transaction. Should be ’finalized’. |
leftover_amount | integer | Leftover amount of transaction in minor currency unit, see Currency Handling for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response
stdClass Object
(
[transaction_type] => intersolve
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[technical_message] => Transaction_id is invalid!
[message] => Transaction_id is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 500
[currency] => EUR
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[intersolve]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[340]>
<technical_message content=[Transaction_id is invalid!]>
<message content=[Transaction_id is invalid!]>
<timestamp content=[2025-03-25T08:44:07Z]>
<descriptor content=[Descriptor one]>
<amount content=[500]>
<currency content=[EUR]>
<sent_to_acquirer content=[false]>
]>
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>intersolve</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<technical_message>Transaction_id is invalid!</technical_message>
<message>Transaction_id is invalid!</message>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>500</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Example for finalized Sale split payment transaction:
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Cards\Sale');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReferenceId('406bc1b340472db4dbbba4b749850234')
->setAmount('500')
->setCurrency('EUR')
->setCardHolder('Travis Pastrana')
->setCardNumber('4200000000000000')
->setExpirationMonth('12')
->setExpirationYear('2026')
->setCvv('834')
->setCustomerEmail('travis@example.com')
->setCustomerPhone('+1987987987987')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Los Angeles')
->setBillingNeighborhood('Hollywood')
->setBillingState('CA')
->setBillingCountry('US');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
import com.emerchantpay.gateway.GenesisClient;
import com.emerchantpay.gateway.api.TransactionResult;
import com.emerchantpay.gateway.api.constants.Endpoints;
import com.emerchantpay.gateway.api.constants.Environments;
import com.emerchantpay.gateway.api.requests.financial.card.SaleRequest;
import com.emerchantpay.gateway.model.Transaction;
import com.emerchantpay.gateway.util.Configuration;
import com.emerchantpay.gateway.util.Country;
import com.emerchantpay.gateway.util.Currency;
import java.math.BigDecimal;
public class GenesisExample {
public static void main() {
// Create configuration
Configuration configuration = new Configuration(Environments.STAGING, Endpoints.EMERCHANTPAY);
configuration.setUsername("SET_YOUR_USERNAME");
configuration.setPassword("SET_YOUR_PASSWORD");
configuration.setToken("SET_YOUR_TOKEN");
SaleRequest request = new SaleRequest();
request.setTransactionId("119643250547501c79d8295");
request.setUsage("40208 concert tickets");
request.setRemoteIp("245.253.2.12");
request.setReferenceId("406bc1b340472db4dbbba4b749850234");
request.setAmount(new BigDecimal(500));
request.setCurrency("EUR");
request.setCardHolder("Travis Pastrana");
request.setCardNumber("4200000000000000");
request.setExpirationMonth("12");
request.setExpirationYear("2026");
request.setCvv("834");
request.setCustomerEmail("travis@example.com");
request.setCustomerPhone("+1987987987987");
// Billing Address
request.setBillingFirstname("Travis");
request.setBillingLastname("Pastrana");
request.setBillingPrimaryAddress("Muster Str. 12");
request.setBillingZipCode("10178");
request.setBillingCity("Los Angeles");
request.setBillingNeighborhood("Hollywood");
request.setBillingState("CA");
request.setBillingCountry("US");
GenesisClient client = new GenesisClient(configuration, request);
client.execute();
// Parse Payment result
System.out.println(client.getResponse());
}
}
var genesis = require('genesis.js/lib/genesis.js');
var transaction = new genesis.transaction();
var failure = function(reason) {
return console.log(reason);
};
var success = function(data) {
return console.log(data);
};
transaction.sale(
{
"transaction_id": "119643250547501c79d8295",
"usage": "40208 concert tickets",
"remote_ip": "245.253.2.12",
"reference_id": "406bc1b340472db4dbbba4b749850234",
"amount": "500",
"currency": "EUR",
"card_holder": "Travis Pastrana",
"card_number": "4200000000000000",
"expiration_month": "12",
"expiration_year": 2026,
"cvv": "834",
"customer_email": "travis@example.com",
"customer_phone": "+1987987987987",
"billing_address": {
"first_name": "Travis",
"last_name": "Pastrana",
"address1": "Muster Str. 12",
"zip_code": "10178",
"city": "Los Angeles",
"neighborhood": "Hollywood",
"state": "CA",
"country": "US"
}
}
).send()
.then(success)
.catch(failure);
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>sale</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<reference_id>406bc1b340472db4dbbba4b749850234</reference_id>
<amount>500</amount>
<currency>EUR</currency>
<card_holder>Travis Pastrana</card_holder>
<card_number>4200000000000000</card_number>
<expiration_month>12</expiration_month>
<expiration_year>2026</expiration_year>
<cvv>834</cvv>
<customer_email>travis@example.com</customer_email>
<customer_phone>+1987987987987</customer_phone>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Los Angeles</city>
<neighborhood>Hollywood</neighborhood>
<state>CA</state>
<country>US</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sale |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
gaming | optional | "true" | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995. Contact tech-support@emerchantpay.com for more details |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
reference_id | required* | string(32) | The ’unique id’ of the initial split payment transaction |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
card_holder | required | string(255) | Full name of customer as printed on credit card (first name and last name at least) |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required* | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
birth_date | required* | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => sale
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[avs_response_code] => 5I
[avs_response_text] => Response provided by issuer processor; Address information not verified
[cvv_result_code] => M
[authorization_code] => 345678
[response_code] => 00
[technical_message] => Transaction successful!
[message] => Transaction successful!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 500
[currency] => EUR
[split_payment] => finalized
[leftover_amount] => 0
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[sale]>
<status content=[approved]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<avs_response_code content=[5I]>
<avs_response_text content=[Response provided by issuer processor; Address information not verified]>
<cvv_result_code content=[M]>
<authorization_code content=[345678]>
<response_code content=[00]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<timestamp content=[2025-03-25T08:44:07Z]>
<descriptor content=[Descriptor one]>
<amount content=[500]>
<currency content=[EUR]>
<split_payment content=[finalized]>
<leftover_amount content=[0]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "sale",
status: "approved",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
avs_response_code: "5I",
avs_response_text: "Response provided by issuer processor; Address information not verified",
cvv_result_code: "M",
authorization_code: "345678",
response_code: "00",
technical_message: "Transaction successful!",
message: "Transaction successful!",
timestamp: "2025-03-25T08:44:07Z",
descriptor: "Descriptor one",
amount: "500",
currency: "EUR",
split_payment: "finalized",
leftover_amount: "0",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<avs_response_code>5I</avs_response_code>
<avs_response_text>Response provided by issuer processor; Address information not verified</avs_response_text>
<cvv_result_code>M</cvv_result_code>
<authorization_code>345678</authorization_code>
<response_code>00</response_code>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>500</amount>
<currency>EUR</currency>
<split_payment>finalized</split_payment>
<leftover_amount>0</leftover_amount>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
cvv_result_code | string(1) | Card Verification Value response code. Optional, returned only if acquirer supports it |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
split_payment | string | Split payment status for this transaction. Should be ’finalized’. |
leftover_amount | integer | Leftover amount of transaction in minor currency unit, see Currency Handling for details |
sent_to_acquirer | string(255) | "true" or "false" |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response
stdClass Object
(
[response_code] => 57
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[technical_message] => billing_address[zip_code] is invalid!
[message] => billing_address[zip_code] is invalid!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 500
[currency] => EUR
[sent_to_acquirer] => false
)
<payment_response content=[
<response_code content=[57]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<code content=[340]>
<technical_message content=[billing_address[zip_code] is invalid!]>
<message content=[billing_address[zip_code] is invalid!]>
<timestamp content=[2025-03-25T08:44:07Z]>
<descriptor content=[Descriptor one]>
<amount content=[500]>
<currency content=[EUR]>
<sent_to_acquirer content=[false]>
]>
{
response_code: "57",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
code: "340",
technical_message: "billing_address[zip_code] is invalid!",
message: "billing_address[zip_code] is invalid!",
timestamp: "2025-03-25T08:44:07Z",
descriptor: "Descriptor one",
amount: "500",
currency: "EUR",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<response_code>57</response_code>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<technical_message>billing_address[zip_code] is invalid!</technical_message>
<message>billing_address[zip_code] is invalid!</message>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>500</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Example for finalized Sale 3D split payment transaction:
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: sale3d |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
gaming | optional | "true" | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995. Contact tech-support@emerchantpay.com for more details |
moto | optional | "true" | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech-support@emerchantpay.com for more details |
remote_ip | required* | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
reference_id | required | string(32) | The ’unique id’ of the initial split payment transaction |
notification_url | required1 | url | URL at merchant where gateway sends outcome of transaction. |
return_success_url | required1 | url | URL where customer is sent to after successful payment |
return_failure_url | required1 | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
card_holder | required | string(255) | Full name of customer as printed on credit card (first name and last name at least) |
card_number | required | 13 to 16 digits | Complete cc number of customer |
cvv | required | 3 to 4 digits | cvv of cc, requirement is based on terminal configuration |
expiration_month | required | MM | Expiration month as printed on credit card |
expiration_year | required | YYYY | Expiration year as printed on credit card |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required* | string(32) | Must contain valid phone number of customer |
birth_date | required* | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required* | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
neighborhood | optional | string(255) | Neighborhood |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
mpi_params | required2 | ||
cavv | required3 | string(255) | Verification Id of the authentication. Please note this can be the CAVV for Visa Card or UCAF to identify MasterCard. |
eci | required3 | string(255) | See Electronic Commerce Indicator as returned from the MPI for details |
dynamic_descriptor_params | optional | ||
merchant_name | optional | string(25) | Allows to dynamically override the charge descriptor |
merchant_city | optional | string(13) | Allows to dynamically override the merchant phone number |
sub_merchant_id | optional | string(15) | Allows to dynamically override the sub-merchant ID. |
merchant_country | optional | string(3) | Allows to dynamically override the merchant country. |
merchant_state | optional | string(3) | Allows to dynamically override the merchant subdivision code. |
merchant_zip_code | optional | string(10) | Allows to dynamically override the merchant zip/postal code. Required for VISA OCT transactions with Australian and Canadian card bins. |
merchant_address | optional | string(48) | Allows to dynamically override the merchant address. |
merchant_url | optional | string(60) | Allows to dynamically override the merchant URL |
merchant_phone | optional | string(16) | Allows to dynamically override the merchant phone number. |
merchant_service_city | optional | string(13) | Allows to dynamically override the merchant service city. |
merchant_service_country | optional | string(3) | Allows to dynamically override the merchant service country. |
merchant_service_state | optional | string(3) | Allows to dynamically override the merchant service subdivision code. |
merchant_service_zip_code | optional | string(10) | Allows to dynamically override the merchant service zip/postal code. |
merchant_service_phone | optional | string(16) | Allows to dynamically override the merchant service phone number. |
merchant_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant geographic coordinates. |
merchant_service_geo_coordinates | optional | string(20) | Allows to dynamically override the merchant service geographic coordinates. |
required* = conditionally required
1 - required if mpi_params is not present, the transaction will be handled asynchronously. Not required if configured on Terminal or Merchant level. Contact [tech-support@#{email_domain_name}](mailto:tech-support@#{email_domain_name}) for more details.
2 - required if transaction should be handled synchronous.
3 - eci is always required if mpi_params is present. cavv is not required for the 3D attempted only workflow, but it is strongly recommended in a combination with the Directory Server ID in order to be in the scope of the 3DSv2 authentication protocol.
Successful Asynchronous Response
stdClass Object
(
[transaction_type] => sale3d
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 500
[currency] => EUR
[split_payment] => finalized
[leftover_amount] => 0
[sent_to_acquirer] => true
)
<payment_response content=[
<transaction_type content=[sale3d]>
<status content=[pending_async]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<technical_message content=[Transaction successful!]>
<message content=[Transaction successful!]>
<redirect_url content=[https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61]>
<timestamp content=[2025-03-25T08:44:07Z]>
<descriptor content=[Descriptor one]>
<amount content=[500]>
<currency content=[EUR]>
<split_payment content=[finalized]>
<leftover_amount content=[0]>
<sent_to_acquirer content=[true]>
]>
{
transaction_type: "sale3d",
status: "pending_async",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
technical_message: "Transaction successful!",
message: "Transaction successful!",
redirect_url: "https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61",
timestamp: "2025-03-25T08:44:07Z",
descriptor: "Descriptor one",
amount: "500",
currency: "EUR",
split_payment: "finalized",
leftover_amount: "0",
sent_to_acquirer: "true",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale3d</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>500</amount>
<currency>EUR</currency>
<split_payment>finalized</split_payment>
<leftover_amount>0</leftover_amount>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
avs_response_code | string(255) | Generated by the card network on trying to match the billing address when performing the address verification. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
avs_response_text | string(255) | Gives the human response text for the AVS response code above. Optional, returned if config is enabled and acquirer supports it. Check AVS Status Codes for details. |
cvv_result_code | string(1) | Card Verification Value response code. Optional, returned only if acquirer supports it |
authorization_code | string(6) | Generated by the card network when an authorisation has occurred, used to identify that auth. Consists of 6 alphanumeric chars |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
partial_approval | string(4) | Optional, set to ’true’ if partial approval happened. Partially approved amount is then in the amount field. Check Partial Approvals for details |
split_payment | string | Split payment status for this transaction. Should be ’finalized’. |
leftover_amount | integer | Leftover amount of transaction in minor currency unit, see Currency Handling for details |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Error Response
stdClass Object
(
[transaction_type] => sale3d
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[response_code] => 57
[code] => 340
[technical_message] => expiration_year is invalid
[message] => expiration_year is invalid
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 500
[currency] => EUR
[sent_to_acquirer] => false
)
<payment_response content=[
<transaction_type content=[sale3d]>
<status content=[error]>
<mode content=[live]>
<transaction_id content=[119643250547501c79d8295]>
<unique_id content=[44177a21403427eb96664a6d7e5d5d48]>
<response_code content=[57]>
<code content=[340]>
<technical_message content=[expiration_year is invalid]>
<message content=[expiration_year is invalid]>
<timestamp content=[2025-03-25T08:44:07Z]>
<descriptor content=[Descriptor one]>
<amount content=[500]>
<currency content=[EUR]>
<sent_to_acquirer content=[false]>
]>
{
transaction_type: "sale3d",
status: "error",
mode: "live",
transaction_id: "119643250547501c79d8295",
unique_id: "44177a21403427eb96664a6d7e5d5d48",
response_code: "57",
code: "340",
technical_message: "expiration_year is invalid",
message: "expiration_year is invalid",
timestamp: "2025-03-25T08:44:07Z",
descriptor: "Descriptor one",
amount: "500",
currency: "EUR",
sent_to_acquirer: "false",
}
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>sale3d</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<response_code>57</response_code>
<code>340</code>
<technical_message>expiration_year is invalid</technical_message>
<message>expiration_year is invalid</message>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>500</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
gaming | 'true' | Signifies whether a gaming transaction is performed. Gaming transactions usually use MCC 7995, contact tech support for more details. |
moto | 'true' | Signifies whether a MOTO (mail order telephone order) transaction is performed. Contact tech support for more details. |
response_code | string(2) | Defines the result of a transaction with the acquirer, the status of a message or some action taken or required. Contact tech-support@emerchantpay.com for more details. |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
dynamic_descriptor_params | section | Optional, returned only if dynamic desc params are submitted on the API. Note here that the formatted dyn desc params are returned - as they would be submitted to the schemes for settlement. |
Voiding of split payments:
- Voiding of any transaction in unfinished split payment (while still pending async) will cause rollback of all other transactions in split payment series. The current transaction will appear as voided while the other transaction will become declined.
- Voiding any transaction after the split payment has been completed will cause voiding only of the single transaction. In order to revert such split payment you need to manually void all transactions in it.
- The above points are valid also for refunding the transactions if the gift card gateway supports refund.
Split Payment Timeouts:
- All unfinished split payments will be automatically timed out after a period of time and all transactions in them will be rollbacked.
- If the split payment is finished with async 3D credit card transaction the split payment will be timed out according to the mpi timeout of the final transaction.
Invoice Payment Methods
Alternative payments refer to payment methods that are used as an alternative to credit card payments.
Each alternative payment method has its own unique application, settlement process and currency support.
Invoice
With Invoice transactions, you can confirm that an order is successful.
After settling the transaction (e.g. shipping the goods), you should use invoice capture transaction type to capture the amount.
Invoice transaction will automatically be cancelled after a certain time frame, most likely two weeks.
For a typical e-commerce application it is recommended to authorize the amount on incoming orders and capture it when shipping the goods.
If you choose not to serve the customer, consider to void the invoice to cancel the initial transaction.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Alternatives\Invoice\Authorize');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setPaymentType('klarna')
->setPaymentMethodCategory('pay_over_time')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setReturnCancelUrl('http://www.example.com/cancel')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setAmount('60')
->setCurrency('EUR')
->setCustomerPhone('1987987987987')
->setCustomerEmail('travis@example.com')
->setCustomerGender('male')
->setCustomerBirthdate('1990-03-20')
->setCustomerReferenceNumber('123')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Berlin')
->setBillingNeighborhood('Lichtenberg')
->setBillingState('Berlin')
->setBillingCountry('DE')
// Shipping Address
->setShippingFirstName('Travis')
->setShippingLastName('Pastrana')
->setShippingAddress1('Muster Str. 12')
->setShippingZipCode('10178')
->setShippingCity('Berlin')
->setShippingNeighborhood('Lichtenberg')
->setShippingState('Berlin')
->setShippingCountry('DE');
// Transaction Items
$items = new \Genesis\API\Request\Financial\Alternatives\Transaction\Items('EUR');
$item = new \Genesis\API\Request\Financial\Alternatives\Transaction\Item();
$item
->setItemType('physical')
->setReference('19-402-USA')
->setName('BatteryPowerPack')
->setQuantity('1')
->setUnitPrice('60')
->setTaxRate('0')
->setTotalAmount('60')
->setTotalDiscountAmount('0')
->setTotalTaxAmount('0')
->setImageUrl('https://example.com/image_url')
->setProductUrl('https://example.com/product_url')
->setQuantityUnit('pcs')
->addMerchantMarketplaceSellerInfo('Electronic gadgets')
$items->addItem($item);
$request->setItems($items);
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>invoice</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<payment_type>klarna</payment_type>
<payment_method_category>pay_over_time</payment_method_category>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<return_cancel_url>http://www.example.com/cancel</return_cancel_url>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<amount>60</amount>
<currency>EUR</currency>
<customer_phone>1987987987987</customer_phone>
<customer_email>travis@example.com</customer_email>
<customer_gender>male</customer_gender>
<customer_birthdate>1990-03-20</customer_birthdate>
<customer_reference_number>123</customer_reference_number>
<order_tax_amount>0</order_tax_amount>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Berlin</city>
<neighborhood>Lichtenberg</neighborhood>
<state>Berlin</state>
<country>DE</country>
</billing_address>
<shipping_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Berlin</city>
<neighborhood>Lichtenberg</neighborhood>
<state>Berlin</state>
<country>DE</country>
</shipping_address>
<items>
<item>
<item_type>physical</item_type>
<reference>19-402-USA</reference>
<name>BatteryPowerPack</name>
<quantity>1</quantity>
<unit_price>60</unit_price>
<tax_rate>0</tax_rate>
<total_amount>60</total_amount>
<total_discount_amount>0</total_discount_amount>
<total_tax_amount>0</total_tax_amount>
<image_url>https://example.com/image_url</image_url>
<product_url>https://example.com/product_url</product_url>
<quantity_unit>pcs</quantity_unit>
<merchant_data>
<marketplace_seller_info>Electronic gadgets</marketplace_seller_info>
</merchant_data>
</item>
</items>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: invoice |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
payment_type | required | string | Payment provider type: klarna / secure_invoice |
payment_method_category | required | string(255) | Payment method category: either pay_over_time or pay_later |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
billing_address | required | See Required vs Optional API params for details | |
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | required* | string(255) | Customer first name |
last_name | required* | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required* | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
customer_gender | optional | Customer gender | |
customer_birthdate | required* | yyyy-mm-dd | Customer date of birth, required for Secure Invoice |
customer_reference_number | required* | string(255) | Customer reference number, required for Secure Invoice |
order_tax_amount | required | Non-negative, minor units. The total tax amount of the order | |
items | required | List with items | |
item_type | required | string(255) | Order line type. Possible values: Supported item types |
quantity | required | integer | Non-negative. The item quantity |
unit_price | required | integer | Minor units. Includes tax, excludes discount(max value: 100000000) |
total_amount | required | integer | Includes tax and discount. Must match (quantity unit price) - total discount amount divided by quantity (max value: 100000000) |
reference | optional | string(255) | Article number, SKU or similar |
name | optional | string(255) | Descriptive item name |
tax_rate | optional | integer | Non-negative. In percent, two implicit decimals. I.e 2500 = 25.00 percent |
total_discount_amount | optional | integer | Non-negative minor units. Includes tax |
total_tax_amount | optional | integer | Must be within 1 of total amount - total_amount * 10000 / (10000 + tax rate). Negative when type is discount |
image_url | optional | url | URL to an image that can be later embedded in communications between Klarna and the customer. (max 1024 characters) |
product_url | optional | url | URL to an image that can be later embedded in communications between Klarna and the customer. (max 1024 characters) |
quantity_unit | optional | string(8) | Unit used to describe the quantity, e.g. kg, pcs... If defined has to be 1-8 characters |
product_identifiers | optional | List with product identifiers | |
brand | optional | string(255) | The product's brand name as generally recognized by consumers. If no brand is available for a product, do not supply any value |
category_path | optional | string(255) | The product's category path as used in the merchant's webshop. Include the full and most detailed category and separate the segments with ' > ' |
global_trade_item_number | optional | string(255) | The product's Global Trade Item Number (GTIN). Common types of GTIN are EAN, ISBN or UPC. Exclude dashes and spaces, where possible |
manufacturer_part_number | optional | string(255) | The product's Manufacturer Part Number (MPN), which - together with the brand - uniquely identifies a product. Only submit MPNs assigned by a manufacturer and use the most specific MPN possible |
merchant_data | optional | List with merchant data | |
marketplace_seller_info | optional | string(255) | Information for merchant marketplace |
required* = conditionally required
Supported countries:
Country | Country code |
---|---|
Austria | AT |
Denmark | DK |
Finland | FI |
Germany | DE |
Netherlands | NL |
Norway | NO |
Sweden | SE |
Supported item types:
Item Types |
---|
physical |
discount |
shipping fee |
sales tax |
digital |
gift card |
store credit |
surcharge |
Successful Response
stdClass Object
(
[transaction_type] => invoice
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 60
[currency] => EUR
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>invoice</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>60</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => invoice
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 60
[currency] => EUR
[sent_to_acquirer] => false
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>invoice</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>60</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
sent_to_acquirer | string(255) | "true" or "false" |
Invoice Capture
Invoice capture settles a Invoice transaction.
Do this when you are shipping goods, for example. A Invoice capture can only be used after a Invoice on the same transaction.
Therefore, the reference_id
of the Invoice transaction is mandatory.
Transaction workflow:
- The merchant sends invoice transaction to the gateway.
- The gateway replies to it. One of returned values is the unique id of the transaction.
- The merchant sends invoice capture transaction. Its reference id is unique id of invoice response.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Alternatives\Invoice\Capture');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setPaymentType('klarna')
->setIban('DE09100100101234567891')
->setAccountHolder('Ivan Ivanov')
->setBankTransferRemittanceSlip('123123123')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReferenceId('43672')
->setAmount('60')
->setCurrency('EUR');
// Transaction Items
$items = new \Genesis\API\Request\Financial\Alternatives\Transaction\Items('EUR');
$item = new \Genesis\API\Request\Financial\Alternatives\Transaction\Item();
$item
->setItemType('physical')
->setReference('19-402-USA')
->setName('BatteryPowerPack')
->setQuantity('1')
->setUnitPrice('60')
->setTaxRate('0')
->setTotalAmount('60')
->setTotalDiscountAmount('0')
->setTotalTaxAmount('0')
->setImageUrl('https://example.com/image_url')
->setProductUrl('https://example.com/product_url')
->setQuantityUnit('pcs')
->addMerchantMarketplaceSellerInfo('Electronic gadgets')
$items->addItem($item);
$request->setItems($items);
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>invoice_capture</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<payment_type>klarna</payment_type>
<iban>DE09100100101234567891</iban>
<account_holder>Ivan Ivanov</account_holder>
<bank_transfer_remittance_slip>123123123</bank_transfer_remittance_slip>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<reference_id>43672</reference_id>
<amount>60</amount>
<currency>EUR</currency>
<items>
<item>
<item_type>physical</item_type>
<reference>19-402-USA</reference>
<name>BatteryPowerPack</name>
<quantity>1</quantity>
<unit_price>60</unit_price>
<tax_rate>0</tax_rate>
<total_amount>60</total_amount>
<total_discount_amount>0</total_discount_amount>
<total_tax_amount>0</total_tax_amount>
<image_url>https://example.com/image_url</image_url>
<product_url>https://example.com/product_url</product_url>
<quantity_unit>pcs</quantity_unit>
<merchant_data>
<marketplace_seller_info>Electronic gadgets</marketplace_seller_info>
</merchant_data>
</item>
</items>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: invoice_capture |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
payment_type | required | string | Payment provider type: klarna / secure_invoice |
account_holder | required* | string(255) | Account Holder, required for Secure Invoice in case of Direct Debit payment (payment_method_category: pay_over_time) |
iban | required* | string(255) | IBAN, required for Secure Invoice in case of Direct Debit payment (payment_method_category: pay_over_time) |
bank_transfer_remittance_slip | required* | string(255) | Bank Transfer Remittance Slip, required for Secure Invoice. Less then 16 symbols. |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
reference_id | required | string(32) | Unique id returned by corresponding transaction |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
items | required | List with items | |
item_type | required | string(255) | Order line type. Possible values: Supported item types |
quantity | required | integer | Non-negative. The item quantity |
unit_price | required | integer | Minor units. Includes tax, excludes discount(max value: 100000000) |
total_amount | required | integer | Includes tax and discount. Must match (quantity unit price) - total discount amount divided by quantity (max value: 100000000) |
reference | optional | string(255) | Article number, SKU or similar |
name | optional | string(255) | Descriptive item name |
tax_rate | optional | integer | Non-negative. In percent, two implicit decimals. I.e 2500 = 25.00 percent |
total_discount_amount | optional | integer | Non-negative minor units. Includes tax |
total_tax_amount | optional | integer | Must be within 1 of total amount - total_amount * 10000 / (10000 + tax rate). Negative when type is discount |
image_url | optional | url | URL to an image that can be later embedded in communications between Klarna and the customer. (max 1024 characters) |
product_url | optional | url | URL to an image that can be later embedded in communications between Klarna and the customer. (max 1024 characters) |
quantity_unit | optional | string(8) | Unit used to describe the quantity, e.g. kg, pcs... If defined has to be 1-8 characters |
product_identifiers | optional | List with product identifiers | |
brand | optional | string(255) | The product's brand name as generally recognized by consumers. If no brand is available for a product, do not supply any value |
category_path | optional | string(255) | The product's category path as used in the merchant's webshop. Include the full and most detailed category and separate the segments with ' > ' |
global_trade_item_number | optional | string(255) | The product's Global Trade Item Number (GTIN). Common types of GTIN are EAN, ISBN or UPC. Exclude dashes and spaces, where possible |
manufacturer_part_number | optional | string(255) | The product's Manufacturer Part Number (MPN), which - together with the brand - uniquely identifies a product. Only submit MPNs assigned by a manufacturer and use the most specific MPN possible |
merchant_data | optional | List with merchant data | |
marketplace_seller_info | optional | string(255) | Information for merchant marketplace |
required* = conditionally required
Supported countries:
Country | Country code |
---|---|
Austria | AT |
Denmark | DK |
Finland | FI |
Germany | DE |
Netherlands | NL |
Norway | NO |
Sweden | SE |
Supported item types:
Item Types |
---|
physical |
discount |
shipping_fee |
sales_tax |
digital |
gift_card |
store_credit |
surcharge |
Successful Response
stdClass Object
(
[transaction_type] => invoice_capture
[status] => pending_async
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 60
[currency] => EUR
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>invoice_capture</transaction_type>
<status>pending_async</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>60</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => invoice_capture
[status] => error
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 340
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 60
[currency] => EUR
[sent_to_acquirer] => false
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>invoice_capture</transaction_type>
<status>error</status>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>340</code>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>60</amount>
<currency>EUR</currency>
<sent_to_acquirer>false</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
sent_to_acquirer | string(255) | "true" or "false" |
Crypto
Alternative payment methods supporting digital cryptocurrencies.
BitPay Sale
BitPay is a cryptocurrency payments provider supporting blockchain payments with Bitcoin (BTC) and BitcoinCash (BCH).
BitPay Sale is an asynchronous transaction type.
When this payment method is selected at checkout, the customer will be redirected to the BitPay system window including all the data for the payment: Bitcoin/BitcoinCash account, amount to be paid in cryptocurrency and the Fiat equivalent.
If the customer possesses a BitPay wallet or another BitPay compatible crypto wallet, the payment can be done from that window with one click, otherwise a QR CODE containing all the payment data can be scanned and used in any crypto wallet.
Then the customer has 15 minutes to fulfill the generated invoice.
If that timeframe is not met, the invoice will expire and the Merchant will be notified.
If the invoice is fulfilled in the timeframe, it needs to obtain 6 blockchain confirmations (1 hour) before it’s safe for the payment to be considered as completed.
At that point, the Merchant will be notified for the approved payment.
After the 6th confirmation, when the transaction is completed, the Merchant can process a refund if it’s needed.
Supported countries
Country name | Country code |
---|---|
Afghanistan | AF |
Aland Islands | AX |
Albania | AL |
American Samoa | AS |
Andorra | AD |
Angola | AO |
Anguilla | AI |
Antarctica | AQ |
Antigua and Barbuda | AG |
Argentina | AR |
Armenia | AM |
Aruba | AW |
Australia | AU |
Austria | AT |
Azerbaijan | AZ |
Bahamas | BS |
Bahrain | BH |
Barbados | BB |
Belarus | BY |
Belgium | BE |
Belize | BZ |
Benin | BJ |
Bermuda | BM |
Bhutan | BT |
Bonaire, Sint Eustatius and Saba | BQ |
Bosnia and Herzegovina | BA |
Botswana | BW |
Bouvet Island | BV |
Brazil | BR |
British Indian Ocean Territory | IO |
Brunei Darussalam | BN |
Bulgaria | BG |
Burkina Faso | BF |
Burundi | BI |
Cameroon | CM |
Canada | CA |
Cape Verde | CV |
Cayman Islands | KY |
Central African Republic | CF |
Chad | TD |
Chile | CL |
China | CN |
Christmas Island | CX |
Cocos (Keeling) Islands | CC |
Colombia | CO |
Comoros | KM |
Congo | CG |
Congo, the Democratic Republic of the | CD |
Cook Islands | CK |
Costa Rica | CR |
Cote D'Ivoire | CI |
Croatia | HR |
Cuba | CU |
Curacao | CW |
Cyprus | CY |
Czech Republic | CZ |
Denmark | DK |
Djibouti | DJ |
Dominica | DM |
Dominican Republic | DO |
El Salvador | SV |
Equatorial Guinea | GQ |
Eritrea | ER |
Estonia | EE |
Ethiopia | ET |
Falkland Islands (Malvinas) | FK |
Faroe Islands | FO |
Fiji | FJ |
Finland | FI |
France | FR |
French Guiana | GF |
French Polynesia | PF |
French Southern Territories | TF |
Gabon | GA |
Gambia | GM |
Georgia | GE |
Germany | DE |
Ghana | GH |
Gibraltar | GI |
Greece | GR |
Greenland | GL |
Grenada | GD |
Guadeloupe | GP |
Guam | GU |
Guatemala | GT |
Guernsey | GG |
Guinea | GN |
Guinea-Bissau | GW |
Guyana | GY |
Haiti | HT |
Heard Island and McDonald Islands | HM |
Holy See (Vatican City State) | VA |
Honduras | HN |
Hong Kong | HK |
Hungary | HU |
Iceland | IS |
India | IN |
Iran, Islamic Republic of | IR |
Ireland | IE |
Isle of Man | IM |
Israel | IL |
Italy | IT |
Jamaica | JM |
Japan | JP |
Jersey | JE |
Jordan | JO |
Kazakhstan | KZ |
Kenya | KE |
Kiribati | KI |
Korea, Democratic People's Republic of | KP |
Korea, Republic of | KR |
Kosovo, Republic of | XK |
Kuwait | KW |
Lao People's Democratic Republic | LA |
Latvia | LV |
Lebanon | LB |
Lesotho | LS |
Liberia | LR |
Libyan Arab Jamahiriya | LY |
Liechtenstein | LI |
Lithuania | LT |
Luxembourg | LU |
Macao | MO |
Madagascar | MG |
Malawi | MW |
Malaysia | MY |
Maldives | MV |
Mali | ML |
Malta | MT |
Marshall Islands | MH |
Martinique | MQ |
Mauritania | MR |
Mauritius | MU |
Mayotte | YT |
Mexico | MX |
Micronesia, Federated States of | FM |
Moldova, Republic of | MD |
Monaco | MC |
Mongolia | MN |
Montenegro | ME |
Montserrat | MS |
Mozambique | MZ |
Myanmar | MM |
Namibia | NA |
Nauru | NR |
Netherlands | NL |
Netherlands Antilles | AN |
New Caledonia | NC |
New Zealand | NZ |
Nicaragua | NI |
Niger | NE |
Nigeria | NG |
Niue | NU |
Norfolk Island | NF |
Northern Mariana Islands | MP |
Norway | NO |
Oman | OM |
Palau | PW |
Panama | PA |
Papua New Guinea | PG |
Paraguay | PY |
Peru | PE |
Philippines | PH |
Pitcairn | PN |
Poland | PL |
Portugal | PT |
Puerto Rico | PR |
Qatar | QA |
Reunion | RE |
Romania | RO |
Russian Federation | RU |
Rwanda | RW |
Saint Barthélemy | BL |
Saint Helena | SH |
Saint Kitts and Nevis | KN |
Saint Lucia | LC |
Saint Martin French Part | MF |
Saint Pierre and Miquelon | PM |
Saint Vincent and the Grenadines | VC |
Samoa | WS |
San Marino | SM |
Sao Tome and Principe | ST |
Saudi Arabia | SA |
Senegal | SN |
Serbia | RS |
Seychelles | SC |
Sierra Leone | SL |
Singapore | SG |
Sint Maarten (Dutch part) | SX |
Slovakia | SK |
Slovenia | SI |
Solomon Islands | SB |
Somalia | SO |
South Africa | ZA |
South Georgia and the South Sandwich Islands | GS |
South Sudan | SS |
Spain | ES |
Sri Lanka | LK |
Sudan | SD |
Suriname | SR |
Svalbard and Jan Mayen | SJ |
Swaziland | SZ |
Sweden | SE |
Switzerland | CH |
Syrian Arab Republic | SY |
Taiwan, Province of China | TW |
Tajikistan | TJ |
Tanzania, United Republic of | TZ |
Thailand | TH |
Timor-Leste | TL |
Togo | TG |
Tokelau | TK |
Tonga | TO |
Trinidad and Tobago | TT |
Tunisia | TN |
Turkmenistan | TM |
Turks and Caicos Islands | TC |
Tuvalu | TV |
Uganda | UG |
Ukraine | UA |
United Arab Emirates | AE |
United Kingdom | GB |
United States | US |
United States Minor Outlying Islands | UM |
Uruguay | UY |
Uzbekistan | UZ |
Vanuatu | VU |
Venezuela, Bolivarian Republic of | VE |
Virgin Islands, British | VG |
Virgin Islands, U.S. | VI |
Wallis and Futuna | WF |
Western Sahara | EH |
Yemen | YE |
Zambia | ZM |
Zimbabwe | ZW |
Supported currencies
Currency name | Currency code |
---|---|
Afghan Afghani | AFN |
Albanian Lek | ALL |
Angolan Kwanza | AOA |
Argentine Peso | ARS |
Armenian Dram | AMD |
Aruban Florin | AWG |
Australian Dollar | AUD |
Azerbaijani Manat | AZN |
Bahamian Dollar | BSD |
Bahraini Dinar | BHD |
Barbadian Dollar | BBD |
Belarusian Ruble | BYN |
Belize Dollar | BZD |
Bermudan Dollar | BMD |
Bhutanese Ngultrum | BTN |
Bosnia-Herzegovina Convertible Mark | BAM |
Botswanan Pula | BWP |
Brazilian Real | BRL |
British Pound Sterling | GBP |
Brunei Dollar | BND |
Bulgarian Lev | BGN |
Burundian Franc | BIF |
CFA Franc BCEAO | XOF |
CFA Franc BEAC | XAF |
CFP Franc | XPF |
Canadian Dollar | CAD |
Cape Verdean Escudo | CVE |
Cayman Islands Dollar | KYD |
Chilean Peso | CLP |
Chinese Yuan | CNY |
Colombian Peso | COP |
Comorian Franc | KMF |
Congolese Franc | CDF |
Costa Rican Colón | CRC |
Croatian Kuna | HRK |
Cuba Pesos | CUP |
Czech Republic Koruna | CZK |
Danish Krone | DKK |
Djiboutian Franc | DJF |
Dominican Peso | DOP |
East Caribbean Dollar | XCD |
Eritrean Nakfa | ERN |
Ethiopian Birr | ETB |
Falkland Islands Pound | FKP |
Fijian Dollar | FJD |
Gambian Dalasi | GMD |
Georgian Lari | GEL |
Ghanaian Cedi | GHS |
Gibraltar Pound | GIP |
Guatemalan Quetzal | GTQ |
Guinean Franc | GNF |
Guyanaese Dollar | GYD |
Haitian Gourde | HTG |
Honduran Lempira | HNL |
Hong Kong Dollar | HKD |
Hungarian Forint | HUF |
Icelandic Króna | ISK |
Indian Rupee | INR |
Iran, Rials | IRR |
Israeli New Sheqel | ILS |
Jamaican Dollar | JMD |
Japanese Yen | JPY |
Jordanian Dinar | JOD |
Kazakhstani Tenge | KZT |
Kenyan Shilling | KES |
Korea (North), Won | KPW |
Kuwaiti Dinar | KWD |
Laotian Kip | LAK |
Lebanese Pound | LBP |
Lesotho Loti | LSL |
Liberian Dollar | LRD |
Libyan Dinar | LYD |
Macanese Pataca | MOP |
Malagasy Ariary | MGA |
Malawian Kwacha | MWK |
Malaysian Ringgit | MYR |
Maldivian Rufiyaa | MVR |
Mauritanian Ouguiya | MRU |
Mauritian Rupee | MUR |
Mexican Peso | MXN |
Moldovan Leu | MDL |
Mongolian Tugrik | MNT |
Mozambican Metical | MZN |
Myanma Kyat | MMK |
Namibian Dollar | NAD |
Netherlands Antillean Guilder | ANG |
New Taiwan Dollar | TWD |
New Zealand Dollar | NZD |
Nicaraguan Córdoba | NIO |
Nigerian Naira | NGN |
Norwegian Krone | NOK |
Omani Rial | OMR |
Panamanian Balboa | PAB |
Papua New Guinean Kina | PGK |
Paraguayan Guarani | PYG |
Peruvian Nuevo Sol | PEN |
Philippine Peso | PHP |
Polish Zloty | PLN |
Qatari Rial | QAR |
Romanian Leu | RON |
Russian Ruble | RUB |
Rwandan Franc | RWF |
Saint Helena Pound | SHP |
Salvadoran Colón | SVC |
Samoan Tala | WST |
Saudi Riyal | SAR |
Serbian Dinar | RSD |
Seychellois Rupee | SCR |
Sierra Leonean Leone | SLL |
Singapore Dollar | SGD |
Solomon Islands Dollar | SBD |
Somali Shilling | SOS |
South African Rand | ZAR |
South Korean Won | KRW |
South Sudanese Pound | SSP |
Sri Lankan Rupee | LKR |
Sudan, Pounds | SDG |
Surinamese Dollar | SRD |
Swazi Lilangeni | SZL |
Swedish Krona | SEK |
Swiss Franc | CHF |
Syria Pounds | SYP |
São Tomé and Príncipe Dobra | STN |
Tajikistani Somoni | TJS |
Tanzanian Shilling | TZS |
Thai Baht | THB |
Tongan Paʻanga | TOP |
Trinidad and Tobago Dollar | TTD |
Tunisian Dinar | TND |
Turkmenistani Manat | TMT |
Ugandan Shilling | UGX |
Ukraine, Hryvnia | UAH |
United Arab Emirates Dirham | AED |
Uruguayan Peso | UYU |
Uzbekistan Som | UZS |
Vanuatu Vatu | VUV |
Yemeni Rial | YER |
Zambian Kwach | ZMW |
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\Crypto\BitPay\Sale');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setReturnUrl('https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f')
->setAmount('3000')
->setCurrency('EUR')
->setCustomerEmail('travis@example.com')
// Billing Address
->setBillingFirstName('Travis')
->setBillingLastName('Pastrana')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('Berlin')
->setBillingCountry('DE');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>bitpay_sale</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<return_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/a55ab44d242f</return_url>
<amount>3000</amount>
<currency>EUR</currency>
<customer_email>travis@example.com</customer_email>
<billing_address>
<first_name>Travis</first_name>
<last_name>Pastrana</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>Berlin</city>
<country>DE</country>
</billing_address>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: bitpay_sale |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | optional | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
return_url | required | url | URL where consumer is sent to after payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
customer_email | required | e-mail address | Must contain valid e-mail of customer |
billing_address | required* | See Required vs Optional API params for details | |
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
shipping_address | optional | ||
first_name | optional | string(255) | Customer first name |
last_name | optional | string(255) | Customer last name |
address1 | optional | string(255) | Primary address |
address2 | optional | string(255) | Secondary address |
zip_code | optional | string | ZIP code |
city | optional | string(255) | City |
state | optional | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | optional | string(2) | Country code in ISO 3166 |
required* = conditionally required
Successful Response
stdClass Object
(
[transaction_type] => bitpay_sale
[status] => approved
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[technical_message] => Transaction successful!
[message] => Transaction successful!
[redirect_url] => https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 3000
[currency] => EUR
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>bitpay_sale</transaction_type>
<status>approved</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<technical_message>Transaction successful!</technical_message>
<message>Transaction successful!</message>
<redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/649e1ff35c61</redirect_url>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>3000</amount>
<currency>EUR</currency>
</payment_response>
Successful Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
redirect_url | url | URL where user has to be redirected to complete payment process. It is available for asynchronous mode |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Error Response
stdClass Object
(
[transaction_type] => bitpay_sale
[status] => error
[mode] => live
[transaction_id] => 119643250547501c79d8295
[unique_id] => 44177a21403427eb96664a6d7e5d5d48
[code] => 110
[technical_message] => Something went wrong, please contact support!
[message] => Something went wrong, please contact support!
[timestamp] => DateTime Object
(
[date] => 2025-03-25 08:44:07.000000
[timezone_type] => 2
[timezone] => Z
)
[descriptor] => Descriptor one
[amount] => 3000
[currency] => EUR
[sent_to_acquirer] => true
)
This request is not implemented yet
This request is not implemented yet
Response
<?xml version="1.0" encoding="UTF-8"?>
<payment_response>
<transaction_type>bitpay_sale</transaction_type>
<status>error</status>
<mode>live</mode>
<transaction_id>119643250547501c79d8295</transaction_id>
<unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
<code>110</code>
<technical_message>Something went wrong, please contact support!</technical_message>
<message>Something went wrong, please contact support!</message>
<timestamp>2025-03-25T08:44:07Z</timestamp>
<descriptor>Descriptor one</descriptor>
<amount>3000</amount>
<currency>EUR</currency>
<sent_to_acquirer>true</sent_to_acquirer>
</payment_response>
Error Response Parameters
Parameter | Type | Description |
---|---|---|
transaction_type | string(255) | The transaction type |
status | string(255) | Status of the transaction, see states |
transaction_id | string(255) | Unique transaction id defined by merchant |
unique_id | string(32) | Unique id defined by gate (must later be used if capturing, voiding or refunding a transaction) |
code | integer | Error code according to Error code table |
technical_message | string(255) | Technical error message (for internal use only, not to be displayed to users). |
message | string(255) | Human readable error message which can be displayed to users. |
mode | string(4) | Mode of the transaction’s terminal, can be test or live |
timestamp | string(255) | Time when the transaction was processed in ISO 8601 Combined date and time e.g. 2007-08- 30T17:46:11Z |
descriptor | string(255) | Static descriptor MID info as configured on the gateway |
amount | integer | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | string(255) | Currency code in ISO 4217 |
sent_to_acquirer | string(255) | "true" or "false" |
Payouts
Bank Pay-out
Bank Pay-out option allows merchants to transfer funds directly to their consumers' bank account.
To process a bank pay-out via Trustly system, you need to have your customer’s unique Account_ID. It is returned to your notification url during initial Trustly sale transaction. Alternatively, you may generate new customer’s Account_ID via one the following steps: Trustly-register-account or Trustly-select-account
Once you’ve got your consumer’s Account_ID, you may proceed to the Bank-Pay-out call.
<?php
// Load the pre-configured ini file...
\Genesis\Config::loadSettings('/path/to/config.ini');
try {
$genesis = new Genesis('Financial\OnlineBankingPayments\OnlineBanking\Payout');
$request = $genesis->request();
$request
->setTransactionId('119643250547501c79d8295')
->setUsage('40208 concert tickets')
->setRemoteIp('245.253.2.12')
->setNotificationUrl('https://www.example.com/notification')
->setReturnSuccessUrl('http://www.example.com/success')
->setReturnFailureUrl('http://www.example.com/failure')
->setAmount('50000')
->setCurrency('INR')
->setCustomerPhone('+1987987987987')
->setCustomerEmail('travis@example.com')
->setBankName('Netbanking')
->setBankCode('321')
->setBankBranch('HDFC0000001')
->setBankAccountNumber('1234123412341234')
->setBankAccountName('Anurak Nghuen')
->setIdCardNumber('123789456')
->setBankAccountType('C')
->setBankAccountVerificationDigit('1')
->setDocumentType('PASS')
->setDocumentId('')
->setPaymentType('bank_to_bank')
->setPayer('{"document_id"=>"12345678000190", "bank_code"=>"100", "bank_account_number"=>"1234545", "bank_branch"=>"0010", "bank_account_verification_digit"=>"5", "bank_phone_number"=>"01234567891"}')
// Billing Address
->setBillingFirstName('Anurak')
->setBillingLastName('Nghuen')
->setBillingAddress1('Muster Str. 12')
->setBillingZipCode('10178')
->setBillingCity('New Delhi')
->setBillingState('New Delhi')
->setBillingCountry('IN')
->setCompanyType('EIRELI')
->setCompanyActivity('Mining')
->setIncorporationDate('2020-03-02')
->setMothersName('Maria')
->setPixKey('78690450041');
$genesis->execute();
$response = $genesis->response()->getResponseObject();
} catch (\Genesis\Exceptions\InvalidArgument $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\ErrorParameter $e) {
$response = $e->getMessage();
} catch (\Genesis\Exceptions\Exception $e) {
$response = $e->getMessage();
}
This request is not implemented yet
This request is not implemented yet
Request
curl https://username:b37f1c97f59b8e7bb3b7e276034c6ede12d55ff8@staging.gate.emerchantpay.net/process/TERMINAL-TOKEN \
-X POST \
-H "Content-Type: text/xml" \
-d '
<?xml version="1.0" encoding="UTF-8"?>
<payment_transaction>
<transaction_type>bank_payout</transaction_type>
<transaction_id>119643250547501c79d8295</transaction_id>
<usage>40208 concert tickets</usage>
<remote_ip>245.253.2.12</remote_ip>
<notification_url>https://www.example.com/notification</notification_url>
<return_success_url>http://www.example.com/success</return_success_url>
<return_failure_url>http://www.example.com/failure</return_failure_url>
<amount>50000</amount>
<currency>INR</currency>
<customer_phone>+1987987987987</customer_phone>
<customer_email>travis@example.com</customer_email>
<bank_name>Netbanking</bank_name>
<bank_code>321</bank_code>
<bank_branch>HDFC0000001</bank_branch>
<bank_account_number>1234123412341234</bank_account_number>
<bank_account_name>Anurak Nghuen</bank_account_name>
<id_card_number>123789456</id_card_number>
<bank_account_type>C</bank_account_type>
<bank_account_verification_digit>1</bank_account_verification_digit>
<document_type>PASS</document_type>
<payment_transaction>document_id</payment_transaction>
<payment_type>bank_to_bank</payment_type>
<payer>
<document_id>12345678000190</document_id>
<bank_code>100</bank_code>
<bank_account_number>1234545</bank_account_number>
<bank_branch>0010</bank_branch>
<bank_account_verification_digit>5</bank_account_verification_digit>
<bank_phone_number>01234567891</bank_phone_number>
</payer>
<billing_address>
<first_name>Anurak</first_name>
<last_name>Nghuen</last_name>
<address1>Muster Str. 12</address1>
<zip_code>10178</zip_code>
<city>New Delhi</city>
<state>New Delhi</state>
<country>IN</country>
</billing_address>
<company_type>EIRELI</company_type>
<company_activity>Mining</company_activity>
<incorporation_date>2020-03-02</incorporation_date>
<mothers_name>Maria</mothers_name>
<pix_key>78690450041</pix_key>
</payment_transaction>'
Request Parameters
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type | required | string(255) | The transaction type: bank_payout |
transaction_id | required | string(255) | Unique transaction id defined by merchant |
usage | optional | string(255) | Description of the transaction for later use. |
remote_ip | required | IPv4 or IPv6 address | IPv4 or IPv6 address of customer |
notification_url | required | url | URL at merchant where gateway sends outcome of transaction. |
return_success_url | required | url | URL where customer is sent to after successful payment |
return_failure_url | required | url | URL where customer is sent to after unsuccessful payment |
amount | required | integer > 0 | Amount of transaction in minor currency unit, see Currency and Amount Handling for details |
currency | required | string(3) | Currency code in ISO 4217 |
bank_name | optional | bank name | Name of the bank. If specified, it must be one of the supported Bank Names |
bank_code | required | bank code | The bank code used to process the transaction. Must be one of the supported Bank codes. |
customer_email | required* | e-mail address | Must contain valid e-mail of customer |
customer_phone | required1 | string(32) | Must contain valid phone number of customer |
bank_branch | required* | bank branch | Name of the Bank branch. |
bank_account_name | required* | string(255) | Bank account name is required, for CNY currency and should be in Simplified Chinese. For other currency, must be in English Language. |
bank_account_number | required* | bank account number | Bank account number of the customer. |
bank_province | required* | bank province | Name of the province that the bank is located. |
id_card_number | required* | id card number | ID card number. See Document ID Parameter for more details. |
bank_account_type | required* | string(1) | The type of account. C: for Checking accounts S: for Savings accounts M: for Maestra accounts(Only Peru) P: for Payment accounts |
bank_account_verification_digit | required* | string(1) | Single - digit verification code assigned by the external provider, used to validate the bank account. |
document_type | required* | string(10) | ID card/document type |
document_id | required* | string(255) | Document ID value. |
account_id | required* | string(255) | Unique account identifier in Trustly's system. You will receive this after Select Account call and after Trustly Sale on the notification URL. |
user_id | required* | string(255) | Unique user identifier defined by merchant in their own system. ID, username, hash or anything uniquely identifying the consumer requesting the deposit. Must be static per each consumer for any type of transaction where this consumer is involved (trustly_sale, bank pay_out, register_account, select account). |
birth_date | required* | dd-mm-yyyy | Required for Visa only when MCC is a Financial Services one (e.g. MCC 6012) |
payment_type | required* | string(12) | Bank payout subtype. Available values: bank_to_bank, pix, bsb, pay_id, bank_to_bank_b2b, pix_b2b, clabe, cellphone. |
company_type | required* | string(255) | Company type of the customer. For Legal Person. |
company_activity | required* | string(255) | Company activity of the customer. For Legal Person. |
incorporation_date | required* | yyyy-mm-dd | The incoroporation date of the customer. For Legal Person. |
mothers_name | required* | string(255) | Mother's name of the customer. |
pix_key | required* | string(255) | PIX key of the customer. |
payer | optional | The payer details. This field is required only in special cases. Please contact Tech Support for more information. | |
document_id | required* | string(16) | Payer document ID. CPF (for individuals) or CNPJ (for legal entities) in Brazil. |
bank_code | required* | string(12) | The bank code used to process the transaction. Must be one of the supported Bank codes. |
bank_account_number | required* | string(33) | The payer's bank account number. |
bank_branch | required* | string(11) | The name of the bank branch where the account is held. |
bank_account_verification_digit | required* | string(1) | Single - digit verification code assigned by the external provider, used to validate the bank account. |
bank_phone_number | required* | string(11) | The payer's bank contact phone number. |
billing_address | required | See Required vs Optional API params for details | |
first_name | required | string(255) | Customer first name |
last_name | required | string(255) | Customer last name |
address1 | required* | string(255) | Primary address |
address2 | required* | string(255) | Secondary address |
zip_code | required* | string | ZIP code |
city | required* | string(255) | City |
neighborhood | required* | string(255) | Neighborhood |
state | required | string(2) | State code in ISO 3166-2, required for USA and Canada |
country | required | string(2) | Country code in ISO 3166 |
required* = conditionally required
1 - Only for Brazilian transactions allowed characters are as follows:
- 12345678901: Exactly 11 digits.
- +1234567890123: An optional plus sign followed by exactly 13 digits.
Supported currencies
Currency name | Currency code |
---|---|
Argentine peso | ARS |
Brazilian real | BRL |
Chilean peso | CLP |
China yen | CNY |
Colombian peso | COP |
Indonesian rupiah | IDR |
Indian rupee | INR |
Malaysian ringgit | MYR |
Mexican peso | MXN |
Peruvian sol | PEN |
Thai baht | THB |
Uruguayan peso | UYU |
Bank Names
For CAD currency:
Bank Name |
---|
Interac e-Transfer Outbound Pay-out |
eCashout Pay-out |
For CNY currency:
Bank Name |
---|
中国银行 |
中国交通银行 |
中信银行 |
上海浦发银行 |
中国农业银行 |
中国渤海银行 |
上海银行 |
中国工商银行 |
东亚银行 |
上海农商银行 |
中国建设银行 |
中国兴业银行 |
平安银行 |
广发银行 |
北京农商银行 |
宁波银行 |
光大银行 |
北京银行 |
大连银行 |
尧都农商银行 |
徽商银行 |
华夏银行 |
南京银行 |
广州银行 |
浙商银行 |
招商银行 |
民生银行 |
汉口银行 |
晋商银行 |
杭州银行 |
深圳发展银行 |
江苏银行 |
成都银行 |
珠海农商银行 |
顺德农村商业银行 |
中国邮政银行 |
银联通道 |
For MYR currency:
Bank Name |
---|
423 |
CIMB Clicks Bank |
Hong Leong Bank |
May Bank |
Public Bank |
RHB Bank |
For THB currency:
Bank Name |
---|
Bangkok Bank |
Kasikorn Bank |
Krungsri (Bank of Ayudhya Public Company Limited) |
Krung Thai Bank |
Siam Commercial Bank |
UOBT |
For IDR currency:
Bank Name |
---|
Bank Central Asia |
Bank Rakyat Indonesia |
Bank Negara Indonesia |
BTN Bank |
CIMB Clicks Indonesia |
Danamon Bank |
Mandiri Bank |
Permata Bank |
For INR currency:
Bank Name |
---|
ABHYUDAYA COOP BANK |
THE ROYAL BANK OF SCOTLAND |
ABU DHABI COMMERCIAL BANK |
THE AKOLA DISTRICT CENTRAL COOPERATIVE BANK |
AIRTEL PAYMENTS BANK LIMITED |
AKOLA JANATA COMMERCIAL COOPERATIVE BANK |
ALLAHABAD BANK |
THE AHMEDABAD MERC COOP BANK |
ANDHRA BANK |
AUSTRALIA & NEW ZEALAND BANK |
THE ANDHRA PRADESH STATE COOP BANK |
ANDHRA PRAGATI GRAMEEN BANK |
THE A.P. MAHESH CO-OP URBAN BANK |
APNA SAHAKARI BANK LTD |
ALMORA URBAN CO-OPERATIVE BANK LTD. |
BASSEIN CATHOLIC CO-OP BANK |
BANK OF BARODA |
BARCLAYS BANK |
BANK OF BAHREIN & KUWAIT |
THE BHARAT COOPERATIVE BANK |
BANK OF CEYLON |
BANDHAN BANK LIMITED |
DENA BANK |
BANK OF INDIA |
BHARATIYA MAHILA BANK LIMITED |
B N PARIBAS BANK |
BANK OF AMERICA |
BANK OF TOKYO-MITSUBISHI |
CENTRAL BANK OF INDIA |
CITIZEN CREDIT COOP BANK |
JP MORGAN CHASE BANK |
CITI BANK |
CITY UNION BANK |
CAPITAL LOCAL AREA BANK LTD. |
CANARA BANK |
CORPORATION BANK |
THE COSMOS CO-OP. BANK |
CREDIT SUISSE AG? |
CREDIT AGRICOLE CORP N INVSMNT BK |
CHHATRAPATI RAJARSHISHAHU COOP BANK |
CATHOLIC SYRIAN BANK |
COMMONWEALTH BK OF AUSTRALIA |
CHINATRUST COMMERCIAL BANK |
DEVELOPMENT BANK OF SINGAPORE |
DEVELOPMENT CREDIT BANK |
DEOGIRI NAGARI SAHAKARI BANK LTD. AURANGABAD |
DEUTSCHE BANK |
DICGC |
THE DELHI STATE COOPERATIVE BANK LIMITED |
DHANALAXMI BANK |
DOMBIVLI NAGARI SAHAKARI BANK LTD |
DOHA BANK QSC |
EXPORT IMPORT BANK OF INDIA |
EQUITAS SMALL FINANCE BANK LIMITED |
THE FEDERAL BANK |
FIRSTRAND BANK |
THE GREATER BOMBAY CO-OP. BANK LTD |
THE GADCHIROLI DISTRICT CENTRAL COOPERATIVE BANK LIMITED |
GURGAON GRAMIN BANK LTD. |
THE GUJARAT STATE CO-OPERATIVE BANK |
THE HASTI COOP BANK LTD |
HDFC BANK LTD. |
HIMACHAL PRADESH STATE COOPERATIVE BANK LTD |
HONG KONG & SHANGHAI BANK |
Woori |
PT BANK MAYBANK INDONESIA TBK |
IDBI BANK |
INDUSTRIAL BANK OF KOREA |
INDUSTRIAL AND COMMERCIAL BANK OF CHINA LIMITED |
ICICI BANK LTD. |
IDFC BANK LIMITED |
INDIAN BANK |
IDUKKI DISTRICT CO OPERATIVE BANK LTD |
INDUS-IND BANK |
INDIAN OVERSEAS BANK |
THE JAMMU & KASHMIR BANK |
JANSEVA SHAHKARI BANK LTD. PUNE |
JANASEVA SAHAKARI BANK BORIVLI LIMITED |
JALGAON JANATA SAHAKARI |
THE JALGAON PEOPELS COOPERATIVE BANK LIMITED |
JANKALYAN SHAKARI BANK |
JANATA SAHAKARI BANK LTD (PUNE) |
THE KANGRA CENTRAL COOPERATIVE BANK |
KALLAPPANNA AWADE ICH JANATA S |
THE KANGRA COOPERATIVE BANK LTD |
KARNATAKA BANK |
KAPOLE BANK |
THE KALUPUR COMM COOP BANK |
THE KALYAN JANATA SAHAKARI BANK |
KOTAK MAHINDRA BANK |
KERALA GRAMIN BANK |
THE KURMANCHAL NAGAR SAHAKARI BANK LIMITED |
THE KARNATAKA STATE COOP APEX BANK |
KEB Hana Bank |
THE KARAD URBAN COOP BANK LTD |
KARUR VYSYA BANK |
KARNATAKA GRAMIN VIKAS BANK |
THE LAKSHMI VILAS BANK |
BANK OF MAHARASHTRA |
Maharashtra Gramin Bank |
MAHANAGAR COOP BANK |
MUMBAI DISTRICT CENTRAL CO-OP BANK |
MIZUHO CORPORATE BANK LTD |
Maharashtra State Cooperative Bank |
MASHREQ BANK |
THE MEHSANA URBAN COOPERATIVE BANK |
THE MUNICIPAL CO OPERATIVE BANK LTD |
NATIONAL AUSTRALIA BANK LIMITED |
NATIONAL BANK OF ABU DHABI PJSC |
NAGPUR NAGRIK (NNSB LTD*) |
NEW INDIA CO-OPERATIVE BANK |
NKGSB BANK |
THE NASIK MERCHANTS CO-OP BANK LTD. |
NORTH MALBAR GRAMIN BANK |
NUTAN NAGARIK SAHAKARI BANK |
THE BANK OF NOVA SCOTIA |
THE NAINITAL BANK LTD |
NAGAR URBAN CO OPERATIVE BANK |
OMAN INTERNATIONAL BANK |
ORIENTAL BANK OF COMMERCE |
PARSIK JANATA SAHAKARI BANK |
PRAGATHI KRISHNA GRAMIN BANK |
PUNJAB AND MAHARASHTRA CO-OP BANK |
PRIME CO OPERATIVE BANK LTD |
PRATHAMA BANK |
PUNJAB AND SIND BANK |
THE PANDHARPUR URBAN CO OP. BANK LTD. PANDHARPUR |
PUNJAB NATIONAL BANK |
RABOBANK INTERNATIONAL (CCRB) |
THE RATNAKAR BANK |
RESERVE BANK OF INDIA |
RAJKOT NAGARIK SAHAKARI BANK LTD |
RAJGURUNAGAR SAHAKARI BANK LIMITED |
THE RAJASTHAN STATE CO-OP BANK |
SBERBANK |
SAHEBRAO DESHMUKH COOPERATIVE BANK LIMITED |
STATE BANK OF BIKANER AND JAIPUR |
STATE BANK OF HYDERABAD |
STATE BANK OF INDIA |
STATE BANK OF MYSORE |
SAMARTH SAHAKARI BANK LTD |
STATE BANK OF TRAVANCORE |
STANDARD CHARTERED BANK |
THE SURAT DISTRICT CO-OP BAN |
SHINHAN BANK |
SHIKSHAK SAHAKARI BANK LIMITED |
SOUTH INDIAN BANK |
SOLAPUR JANATA SAHAKARI BANK LIMITED |
SUMITOMO MITSUI BANKING CORPORATION |
SHIVALIK MERCANTILE CO OPERATIVE BANK LTD |
SOCIETE GENERALE |
THE SURAT PEOPLE?S CO-OP BANK |
THE SARASWAT CO-OPERATIVE BANK |
STATE BANK OF PATIALA |
STATE BANK OF MAURITIUS |
SURAT NATIONAL COOPERATIVE BANK LIMITED |
THE SUTEX COOPERATIVE BANK |
THE SEVA VIKAS COOPERATIVE BANK LIMITED |
THE SHAMRAO VITHAL COOP BANK |
SYNDICATE BANK |
THANE BHARAT SAHAKARI BANK LTD |
THE THANE DISTRICT CENTRAL COOPERATIVE BANK LIMITED |
TUMKUR GRAIN MERCHANTS CO-OP BANK |
THE THANE JANATA SAHAKARI BANK |
TAMILNADU MERC. BANK |
THE TAMILDADU STATE APEX COOP BANK |
UNION BANK OF INDIA |
UBS AG |
UCO BANK |
UNITED OVERSEAS BANK LIMITED |
UNITED BANK OF INDIA |
AXIS BANK |
THE VARACHHA CO-OP. BANK LTD. |
VIJAYA BANK |
THE VISHWESHWAR SAHAKARI BANK LTD |
VASAI VIKAS SAHAKARI BANK |
ING VYSYA BANK |
THE WEST BENGAL STATE CO-OP BANK |
WESTPAC BANKING CORPORATION |
YES BANK |
THE ZOROASTRIAN COOPERATIVE BANK LIMITED |
ZILA SAHAKRI BANK LIMITED GHAZIABAD |
Paytm Payments Bank Ltd. |
For ARS currency:
Bank Name |
---|
CVU Account |
Banco de Galicia Y Buenos Aires |
Banco de La Nacion Argentina |
Banco de La Provincia de Buenos Aires |
Industrial and Commercial Bank of China (ICBC) Argentina |
BBVA |
Banco de La Provincia de Cordoba |
Banco Supervielle S.A. |
Banco de La Ciudad de Buenos Aires |
Banco Patagonia Sudameris |
Banco Hipotecario |
Banco de San Juan |
Banco Municipal de Rosario |
Banco Santander |
Banco Del Chubut |
Banco de Santa Cruz |
Banco de La Pampa Sociedad de Economia M |
Banco de Corrientes |
Banco Provincia Del Neuquen |
Brubank S.A.U. |
Banco B. I. Creditanstalt |
HSBC Bank Argentina |
J P Morgan Chase Bank Sucursal Buenos Aires |
Banco Credicoop Coop. L |
Banco de Valores |
Banco Roela |
Banco Mariva |
Banco Itau |
Bank Of America, National Associa |
Bnp Paribas |
Banco Provincia de Tierra Del Fuego |
Banco de La Republica Oriental Del Uruguay |
Banco Saenz |
Banco Meridian |
Banco Macro |
Banco Comafi |
Banco de Inversion Y Comercio Exterior |
Banco Piano |
Banco Julio |
Nuevo Banco de La Rioja |
Banco Del Sol |
Nuevo Banco Del Chaco |
BANCO VOII S.A. |
Banco de Formosa |
Banco CMF |
Banco de Santiago Del Estero |
Nuevo Banco Industrial de Azul |
Deutsche Bank |
Nuevo Banco de Santa Fe |
Banco Cetelem Argentina |
Banco de Servicios Financieros |
Banco Cofidis |
Banco Bradesco Argentina |
Banco de Servicios Y Transacciones |
RCI Banque Argentina |
Bacs Banco de Credito Y Securitizacion |
Banco Mas Ventas |
Wilobank S.A. |
Nuevo Banco de Entre Rios |
Banco Columbia |
Banco Bica S.A. |
Banco Coinag S.A. |
Banco de Comercio S.A. |
Banco Sucredito Regional S.A.U. |
Banco Dino S.A. |
Bank of Chine Limited Sucursal Buenos Aires |
For BRL currency
Bank Code | Bank Name |
---|---|
001 | BANCO DO BRASIL S.A. |
003 | BANCO DA AMAZONIA S.A. |
004 | BANCO DO NORDESTE DO BRASIL S.A. |
007 | BANCO NACIONAL DE DESENVOLVIMENTO ECONOMICO E SOCIAL |
010 | CREDICOAMO CREDITO RURAL COOPERATIVA |
011 | CREDIT SUISSE HEDGING-GRIFFO CORRETORA DE VALORES S.A |
012 | BANCO INBURSA S.A. |
014 | STATE STREET BRASIL S.A. - BANCO COMERCIAL |
015 | UBS BRASIL CORRETORA DE CÂMBIO, TÍTULOS E VALORES MOBILIÁRIOS S.A. |
016 | COOPERATIVA DE CRÉDITO MÚTUO DOS DESPACHANTES DE TRÂNSITO DE SANTA CATARINA E RI |
017 | BNY MELLON BANCO S.A. |
018 | BANCO TRICURY S.A. |
021 | BANESTES S.A. BANCO DO ESTADO DO ESPIRITO SANTO |
024 | BANCO BANDEPE S.A. |
025 | BANCO ALFA S.A. |
029 | BANCO ITAÚ CONSIGNADO S.A. |
033 | BANCO SANTANDER (BRASIL) S.A. |
036 | BANCO BRADESCO BBI S.A. |
037 | BANCO DO ESTADO DO PARÁ S.A. |
040 | BANCO CARGILL S.A. |
041 | BANCO DO ESTADO DO RIO GRANDE DO SUL S.A. |
047 | BANCO DO ESTADO DE SERGIPE S.A. |
060 | CONFIDENCE CORRETORA DE CÂMBIO S.A. |
062 | HIPERCARD BANCO MÚLTIPLO S.A. |
063 | BANCO BRADESCARD S.A. |
064 | GOLDMAN SACHS DO BRASIL BANCO MULTIPLO S.A. |
065 | BANCO ANDBANK (BRASIL) S.A. |
066 | BANCO MORGAN STANLEY S.A. |
069 | BANCO CREFISA S.A. |
070 | BRB - BANCO DE BRASILIA S.A. |
074 | BANCO J. SAFRA S.A. |
075 | BANCO ABN AMRO S.A. |
076 | BANCO KDB DO BRASIL S.A. |
077 | BANCO INTER S.A. |
078 | HAITONG BANCO DE INVESTIMENTO DO BRASIL S.A. |
079 | PICPAY BANK - BANCO MÚLTIPLO S.A |
080 | B&T CORRETORA DE CAMBIO LTDA. |
081 | BANCOSEGURO S.A. |
082 | BANCO TOPÁZIO S.A. |
083 | BANCO DA CHINA BRASIL S.A. |
084 | UNIPRIME DO BRASIL - COOPERATIVA DE CRÉDITO |
085 | COOPERATIVA CENTRAL DE CRÉDITO - AILOS |
088 | BANCO RANDON S.A. |
089 | CREDISAN COOPERATIVA DE CRÉDITO |
093 | PÓLOCRED SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR E À EMPRESA DE PEQUENO PORT |
094 | BANCO FINAXIS S.A. |
095 | TRAVELEX BANCO DE CÂMBIO S.A. |
096 | BANCO B3 S.A. |
097 | CREDISIS - CENTRAL DE COOPERATIVAS DE CRÉDITO LTDA. |
098 | CREDIALIANÇA COOPERATIVA DE CRÉDITO RURAL |
099 | UNIPRIME CENTRAL NACIONAL - CENTRAL NACIONAL DE COOPERATIVA DE CREDITO |
100 | PLANNER CORRETORA DE VALORES S.A. |
101 | RENASCENCA DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA |
102 | XP INVESTIMENTOS CORRETORA DE CÂMBIO,TÍTULOS E VALORES MOBILIÁRIOS S/A |
104 | CAIXA ECONOMICA FEDERAL |
105 | LECCA CRÉDITO, FINANCIAMENTO E INVESTIMENTO S/A |
107 | BANCO BOCOM BBM S.A. |
111 | OLIVEIRA TRUST DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIARIOS S.A. |
113 | NEON CORRETORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A. |
114 | CENTRAL COOPERATIVA DE CRÉDITO NO ESTADO DO ESPÍRITO SANTO - CECOOP |
117 | ADVANCED CORRETORA DE CÂMBIO LTDA |
119 | BANCO WESTERN UNION DO BRASIL S.A. |
120 | BANCO RODOBENS S.A. |
121 | BANCO AGIBANK S.A. |
122 | BANCO BRADESCO BERJ S.A. |
124 | BANCO WOORI BANK DO BRASIL S.A. |
125 | BANCO GENIAL S.A. |
126 | BR PARTNERS BANCO DE INVESTIMENTO S.A. |
127 | CODEPE CORRETORA DE VALORES E CÂMBIO S.A. |
128 | MS BANK S.A. BANCO DE CÂMBIO |
129 | UBS BRASIL BANCO DE INVESTIMENTO S.A. |
130 | CARUANA S.A. - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO |
131 | TULLETT PREBON BRASIL CORRETORA DE VALORES E CÂMBIO LTDA |
132 | ICBC DO BRASIL BANCO MÚLTIPLO S.A. |
133 | CONFEDERAÇÃO NACIONAL DAS COOPERATIVAS CENTRAIS DE CRÉDITO E ECONOMIA FAMILIAR E |
134 | BGC LIQUIDEZ DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA |
136 | CONFEDERAÇÃO NACIONAL DAS COOPERATIVAS CENTRAIS UNICRED LTDA. - UNICRED DO BRASI |
138 | GET MONEY CORRETORA DE CÂMBIO S.A. |
139 | INTESA SANPAOLO BRASIL S.A. - BANCO MÚLTIPLO |
140 | NU INVEST CORRETORA DE VALORES S.A. |
142 | BROKER BRASIL CORRETORA DE CÂMBIO LTDA. |
143 | TREVISO CORRETORA DE CÂMBIO S.A. |
144 | BEXS BANCO DE CÂMBIO S/A |
145 | LEVYCAM - CORRETORA DE CAMBIO E VALORES LTDA. |
146 | GUITTA CORRETORA DE CAMBIO LTDA. |
149 | FACTA FINANCEIRA S.A. - CRÉDITO FINANCIAMENTO E INVESTIMENTO |
157 | ICAP DO BRASIL CORRETORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA. |
159 | CASA DO CRÉDITO S.A. SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR |
163 | COMMERZBANK BRASIL S.A. - BANCO MÚLTIPLO |
173 | BRL TRUST DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A. |
174 | PEFISA S.A. - CRÉDITO, FINANCIAMENTO E INVESTIMENTO |
177 | GUIDE INVESTIMENTOS S.A. CORRETORA DE VALORES |
180 | CM CAPITAL MARKETS CORRETORA DE CÂMBIO, TÍTULOS E VALORES MOBILIÁRIOS LTDA |
183 | SOCRED S.A. - SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR E À EMPRESA DE PEQUENO P |
184 | BANCO ITAÚ BBA S.A. |
188 | ATIVA INVESTIMENTOS S.A. CORRETORA DE TÍTULOS, CÂMBIO E VALORES |
189 | HS FINANCEIRA S/A CREDITO, FINANCIAMENTO E INVESTIMENTOS |
190 | SERVICOOP - COOPERATIVA DE CRÉDITO DOS SERVIDORES PÚBLICOS ESTADUAIS E MUNICIPAI |
191 | NOVA FUTURA CORRETORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA. |
194 | PARMETAL DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA |
195 | VALOR SOCIEDADE DE CRÉDITO DIRETO S.A. |
196 | FAIR CORRETORA DE CAMBIO S.A. |
197 | STONE INSTITUIÇÃO DE PAGAMENTO S.A. |
208 | BANCO BTG PACTUAL S.A. |
212 | BANCO ORIGINAL S.A. |
213 | BANCO ARBI S.A. |
217 | BANCO JOHN DEERE S.A. |
218 | BANCO BS2 S.A. |
222 | BANCO CRÉDIT AGRICOLE BRASIL S.A. |
224 | BANCO FIBRA S.A. |
233 | BANCO CIFRA S.A. |
237 | BANCO BRADESCO S.A. |
241 | BANCO CLASSICO S.A. |
243 | BANCO MASTER S/A |
246 | BANCO ABC BRASIL S.A. |
249 | BANCO INVESTCRED UNIBANCO S.A. |
250 | BCV - BANCO DE CRÉDITO E VAREJO S.A. |
253 | BEXS CORRETORA DE CÂMBIO S/A |
254 | PARANÁ BANCO S.A. |
259 | MONEYCORP BANCO DE CÂMBIO S.A. |
260 | NU PAGAMENTOS S.A. - INSTITUIÇÃO DE PAGAMENTO |
265 | BANCO FATOR S.A. |
266 | BANCO CEDULA S.A. |
268 | BARI COMPANHIA HIPOTECÁRIA |
269 | BANCO HSBC S.A. |
270 | SAGITUR CORRETORA DE CÂMBIO S.A. |
271 | IB CORRETORA DE CÂMBIO, TÍTULOS E VALORES MOBILIÁRIOS S.A. |
272 | AGK CORRETORA DE CAMBIO S.A. |
273 | COOPERATIVA DE CRÉDITO RURAL DE SÃO MIGUEL DO OESTE - SULCREDI/SÃO MIGUEL |
274 | BMP SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR E A EMPRESA DE PEQUENO PORTE LTDA. |
276 | BANCO SENFF S.A. |
278 | GENIAL INVESTIMENTOS CORRETORA DE VALORES MOBILIÁRIOS S.A. |
279 | PRIMACREDI COOPERATIVA DE CRÉDITO DE PRIMAVERA DO LESTE |
280 | WILL FINANCEIRA S.A. CRÉDITO, FINANCIAMENTO E INVESTIMENTO |
281 | COOPERATIVA DE CRÉDITO RURAL COOPAVEL |
283 | RB INVESTIMENTOS DISTRIBUIDORA DE TITULOS E VALORES MOBILIARIOS LIMITADA |
285 | FRENTE CORRETORA DE CÂMBIO LTDA. |
286 | UNIPRIME OURO - COOPERATIVA DE CRÉDITO DE OURO |
288 | CAROL DISTRIBUIDORA DE TITULOS E VALORES MOBILIARIOS LTDA. |
289 | EFX CORRETORA DE CÂMBIO LTDA. |
290 | PAGSEGURO INTERNET INSTITUIÇÃO DE PAGAMENTO S.A. |
292 | BS2 DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A. |
293 | LASTRO RDV DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA. |
296 | OZ CORRETORA DE CÂMBIO S.A. |
298 | VIP'S CORRETORA DE CÂMBIO LTDA. |
299 | BANCO AFINZ S.A. - BANCO MÚLTIPLO |
300 | BANCO DE LA NACION ARGENTINA |
301 | DOCK INSTITUIÇÃO DE PAGAMENTO S.A. |
306 | PORTOPAR DISTRIBUIDORA DE TITULOS E VALORES MOBILIARIOS LTDA. |
307 | TERRA INVESTIMENTOS DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA. |
309 | CAMBIONET |