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
  • Billing Transactions API
  • Version

    API version 46.3

    Documentation version 46.3

    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 Update date only format for Billing Transaction 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.

    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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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('2025')
            ->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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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("2025");
        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": 2025,
        "cvv": "834",
        "customer_email": "travis@example.com",
        "customer_phone": "+1987987987987",
        "business_attributes": {
          "event_start_date": "10-11-2024",
          "event_end_date": "19-11-2024",
          "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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>2025</expiration_year>
        <cvv>834</cvv>
        <customer_email>travis@example.com</customer_email>
        <customer_phone>+1987987987987</customer_phone>
        <business_attributes>
          <event_start_date>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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('2025')
            ->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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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("2025");
        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": 2025,
        "cvv": "834",
        "customer_email": "travis@example.com",
        "customer_phone": "+1987987987987",
        "business_attributes": {
          "event_start_date": "10-11-2024",
          "event_end_date": "19-11-2024",
          "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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>2025</expiration_year>
        <cvv>834</cvv>
        <customer_email>travis@example.com</customer_email>
        <customer_phone>+1987987987987</customer_phone>
        <business_attributes>
          <event_start_date>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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
    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.
    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] => 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] => 2024-10-09 15:49:11.000000
                [timezone_type] => 2
                [timezone] => Z
            )
        [descriptor] => Descriptor one
        [amount] => 100
        [currency] => USD
        [sent_to_acquirer] => true
        [scheme_transaction_identifier] => 019091214161031
        [scheme_settlement_date] => 1010
        [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=[2024-10-09T15:49:11Z]>
        <descriptor content=[Descriptor one]>
        <amount content=[100]>
        <currency content=[USD]>
        <sent_to_acquirer content=[true]>
        <scheme_transaction_identifier content=[019091214161031]>
        <scheme_settlement_date content=[1010]>
        <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: "2024-10-09T15:49:11Z",
        descriptor: "Descriptor one",
        amount: "100",
        currency: "USD",
        sent_to_acquirer: "true",
        scheme_transaction_identifier: "019091214161031",
        scheme_settlement_date: "1010",
        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>2024-10-09T15:49:11Z</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>1010</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. 1010). 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] => 2024-10-09 15:49:11.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=[2024-10-09T15:49:11Z]>
        <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: "2024-10-09T15:49:11Z",
        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>2024-10-09T15:49:11Z</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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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": "10-11-2024",
          "event_end_date": "19-11-2024",
          "event_organizer_id": "20192375",
          "event_id": "1912"
        }
      }
    ).send()
      .then(success)
      .catch(failure);
    

    Request

    curl https://username:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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": "10-11-2024",
          "event_end_date": "19-11-2024",
          "event_organizer_id": "20192375",
          "event_id": "1912"
        }
      }
    ).send()
      .then(success)
      .catch(failure);
    

    Request

    curl https://username:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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] => 2024-10-09 15:49:11.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=[2024-10-09T15:49:11Z]>
        <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: "2024-10-09T15:49:11Z",
        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>2024-10-09T15:49:11Z</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] => 2024-10-09 15:49:11.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=[2024-10-09T15:49:11Z]>
        <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: "2024-10-09T15:49:11Z",
        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>2024-10-09T15:49:11Z</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('2025')
            ->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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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("2025");
        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": 2025,
        "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": "10-11-2024",
          "event_end_date": "19-11-2024",
          "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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>2025</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>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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
    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.
    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] => 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] => 2024-10-09 15:49:12.000000
                [timezone_type] => 2
                [timezone] => Z
            )
        [descriptor] => Descriptor one
        [amount] => 100
        [currency] => USD
        [sent_to_acquirer] => true
        [scheme_transaction_identifier] => 019091214161031
        [scheme_settlement_date] => 1010
        [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=[2024-10-09T15:49:12Z]>
        <descriptor content=[Descriptor one]>
        <amount content=[100]>
        <currency content=[USD]>
        <sent_to_acquirer content=[true]>
        <scheme_transaction_identifier content=[019091214161031]>
        <scheme_settlement_date content=[1010]>
        <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: "2024-10-09T15:49:12Z",
        descriptor: "Descriptor one",
        amount: "100",
        currency: "USD",
        sent_to_acquirer: "true",
        scheme_transaction_identifier: "019091214161031",
        scheme_settlement_date: "1010",
        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>2024-10-09T15:49:12Z</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>1010</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. 1010). 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] => 2024-10-09 15:49:12.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=[2024-10-09T15:49:12Z]>
        <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: "2024-10-09T15:49:12Z",
        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>2024-10-09T15:49:12Z</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] => 2024-10-09 15:49:12.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=[2024-10-09T15:49:12Z]>
        <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: "2024-10-09T15:49:12Z",
        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>2024-10-09T15:49:12Z</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('2025')
            ->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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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("2025");
        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": 2025,
        "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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>2025</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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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('2025')
            ->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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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("2025");
        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": 2025,
        "cvv": "834",
        "customer_email": "travis@example.com",
        "customer_phone": "+1987987987987",
        "business_attributes": {
          "event_start_date": "10-11-2024",
          "event_end_date": "19-11-2024",
          "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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>2025</expiration_year>
        <cvv>834</cvv>
        <customer_email>travis@example.com</customer_email>
        <customer_phone>+1987987987987</customer_phone>
        <business_attributes>
          <event_start_date>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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
    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.
    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
          city 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

    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] => 2024-10-09 15:49:12.000000
                [timezone_type] => 2
                [timezone] => Z
            )
        [descriptor] => Descriptor one
        [amount] => 100
        [currency] => USD
        [sent_to_acquirer] => true
        [scheme_transaction_identifier] => 019091214161031
        [scheme_settlement_date] => 1010
        [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=[2024-10-09T15:49:12Z]>
        <descriptor content=[Descriptor one]>
        <amount content=[100]>
        <currency content=[USD]>
        <sent_to_acquirer content=[true]>
        <scheme_transaction_identifier content=[019091214161031]>
        <scheme_settlement_date content=[1010]>
        <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: "2024-10-09T15:49:12Z",
        descriptor: "Descriptor one",
        amount: "100",
        currency: "USD",
        sent_to_acquirer: "true",
        scheme_transaction_identifier: "019091214161031",
        scheme_settlement_date: "1010",
        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>2024-10-09T15:49:12Z</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>1010</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. 1010). 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] => 2024-10-09 15:49:12.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=[2024-10-09T15:49:12Z]>
        <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: "2024-10-09T15:49:12Z",
        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>2024-10-09T15:49:12Z</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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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": "10-11-2024",
          "event_end_date": "19-11-2024",
          "event_organizer_id": "20192375",
          "event_id": "1912"
        }
      }
    ).send()
      .then(success)
      .catch(failure);
    

    Request

    curl https://username:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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
          city 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] => 2024-10-09 15:49:12.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=[2024-10-09T15:49:12Z]>
        <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: "2024-10-09T15:49:12Z",
        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>2024-10-09T15:49:12Z</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] => 2024-10-09 15:49:12.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=[2024-10-09T15:49:12Z]>
        <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: "2024-10-09T15:49:12Z",
        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>2024-10-09T15:49:12Z</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('2025')
            ->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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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("2025");
        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": 2025,
        "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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>2025</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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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('2025')
            ->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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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("2025");
        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": 2025,
        "cvv": "834",
        "customer_email": "travis@example.com",
        "customer_phone": "+1987987987987",
        "business_attributes": {
          "event_start_date": "10-11-2024",
          "event_end_date": "19-11-2024",
          "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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>2025</expiration_year>
        <cvv>834</cvv>
        <customer_email>travis@example.com</customer_email>
        <customer_phone>+1987987987987</customer_phone>
        <business_attributes>
          <event_start_date>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>2025</expiration_year>
        <cvv>834</cvv>
        <customer_email>travis@example.com</customer_email>
        <customer_phone>+1987987987987</customer_phone>
        <business_attributes>
          <event_start_date>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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'.
    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
    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.
    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
          city 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

    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] => 2024-10-09 15:49:12.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_settlement_date] => 1010
        [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=[2024-10-09T15:49:12Z]>
        <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_settlement_date content=[1010]>
        <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: "2024-10-09T15:49:12Z",
        descriptor: "Descriptor one",
        amount: "100",
        currency: "USD",
        sent_to_acquirer: "true",
        scheme_transaction_identifier: "019091214161031",
        scheme_transaction_link_id: "TLINKIDENTIFIER4521412",
        scheme_settlement_date: "1010",
        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>2024-10-09T15:49:12Z</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_settlement_date>1010</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_settlement_date string(4) MasterCard settlement date in MMDD format (e.g. 1010). 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] => 2024-10-09 15:49:12.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=[2024-10-09T15:49:12Z]>
        <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: "2024-10-09T15:49:12Z",
        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>2024-10-09T15:49:12Z</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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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": "10-11-2024",
          "event_end_date": "19-11-2024",
          "event_organizer_id": "20192375",
          "event_id": "1912"
        }
      }
    ).send()
      .then(success)
      .catch(failure);
    

    Request

    curl https://username:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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] => 2024-10-09 15:49:12.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=[2024-10-09T15:49:12Z]>
        <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: "2024-10-09T15:49:12Z",
        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>2024-10-09T15:49:12Z</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] => 2024-10-09 15:49:12.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=[2024-10-09T15:49:12Z]>
        <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: "2024-10-09T15:49:12Z",
        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>2024-10-09T15:49:12Z</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('2025')
            ->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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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("2025");
        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": 2025,
        "cvv": "834",
        "customer_email": "travis@example.com",
        "customer_phone": "+1987987987987",
        "business_attributes": {
          "event_start_date": "10-11-2024",
          "event_end_date": "19-11-2024",
          "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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>2025</expiration_year>
        <cvv>834</cvv>
        <customer_email>travis@example.com</customer_email>
        <customer_phone>+1987987987987</customer_phone>
        <business_attributes>
          <event_start_date>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>2025</expiration_year>
        <cvv>834</cvv>
        <customer_email>travis@example.com</customer_email>
        <customer_phone>+1987987987987</customer_phone>
        <business_attributes>
          <event_start_date>10-11-2024</event_start_date>
          <event_end_date>19-11-2024</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
    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
    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.
    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
          city 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

    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] => 2024-10-09 15:49:13.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_settlement_date] => 1010
        [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=[2024-10-09T15:49:13Z]>
        <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_settlement_date content=[1010]>
        <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: "2024-10-09T15:49:13Z",
        descriptor: "Descriptor one",
        amount: "100",
        currency: "USD",
        sent_to_acquirer: "true",
        scheme_transaction_identifier: "019091214161031",
        scheme_transaction_link_id: "TLINKIDENTIFIER4521412",
        scheme_settlement_date: "1010",
        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>2024-10-09T15:49:13Z</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_settlement_date>1010</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_settlement_date string(4) MasterCard settlement date in MMDD format (e.g. 1010). 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] => 2024-10-09 15:49:13.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=[2024-10-09T15:49:13Z]>
        <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: "2024-10-09T15:49:13Z",
        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>2024-10-09T15:49:13Z</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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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] => 2024-10-09 15:49:13.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>2024-10-09T15:49:13Z</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] => 2024-10-09 15:49:13.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>2024-10-09T15:49:13Z</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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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] => 2024-10-09 15:49:13.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>2024-10-09T15:49:13Z</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] => 2024-10-09 15:49:13.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>2024-10-09T15:49:13Z</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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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>2024-10-09T15:49:13Z</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] => 2024-10-09 15:49:13.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=[2024-10-09T15:49:13Z]>
        <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: "2024-10-09T15:49:13Z",
        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>2024-10-09T15:49:13Z</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>2024-10-09T15:49:13Z</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] => 2024-10-09 15:49:13.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=[2024-10-09T15:49:13Z]>
        <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: "2024-10-09T15:49:13Z",
        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>2024-10-09T15:49:13Z</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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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] => 2024-10-09 15:49:13.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>2024-10-09T15:49:13Z</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] => 2024-10-09 15:49:13.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>2024-10-09T15:49:13Z</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\ErrorAPI $e) {
        $response = $e->getMessage();
    } 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:255fad5b2b59ddb1690156ccfdc59bf121350d42@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