NAV
shell php java javascript
  • Version
  • Introduction
  • Audience
  • Authentication
  • Environments
  • URLs
  • Transactions
  • Reconcile
  • Payment Authorizations
  • Processed Transactions
  • Chargebacks
  • Rapid Dispute Resolution
  • Retrieval Requests
  • Fraud reports
  • Blacklists
  • Asynchronous Transactions and Notifications
  • WPF
  • 3DSecure
  • Authentication Services
  • Genesis KYC Services
  • Genesis Fx Services
  • Consumers
  • Managed Recurring
  • Tokenization
  • Transaction API
  • APM Services
  • Errors
  • Client Integrations
  • Client-side encryption
  • Shopping Carts
  • Testing
  • Status Page
  • Infrastructure and Uptime
  • Penetration Testing Warning
  • AVS Status Codes
  • CVV Result Codes
  • Level 3 Travel Data
  • Genesis SCA Services
  • Funding Transactions
  • Account Name Inquiry
  • Smart Routing
  • Installments
  • Billing Transactions API
  • 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:

    <dependency> <groupId>com.emerchantpay.gateway</groupId> <artifactId>genesis-java</artifactId> <version>1.16.4</version> </dependency>

    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:

    1. The merchant sends authorize transaction to the gateway.
    2. The gateway replies to it. One of returned values is the unique id of the transaction.
    3. 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:

    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"

    Wechat

    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"

    Available issuers and their associated BIC

    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:

    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:

    Split Payment Timeouts:

    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:

    1. The merchant sends invoice transaction to the gateway.
    2. The gateway replies to it. One of returned values is the unique id of the transaction.
    3. 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:

    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