Vantiv Express (formerly Element) gateway guide

Quick Start

New to integrating Vantiv Express with Spreedly? Here's your setup guide:

  1. Retrieve your Vantiv Express credentials
    1. Contact the Vantiv Express support team to obtain API credentials
  2. Get familiar with the Spreedly API
    1. Review Spreedly API basics
    2. Understand the core concepts: Gateways, Payment Methods, and Transactions
  3. Add Vantiv Express gateway to Spreedly in sandbox mode

📘

Review this documentation to understand more about how to test transactions.

Adding a Vantiv Express gateway

Required Credentials

account_id: Your Vantiv Express account identifier

account_token: Your Vantiv Express account token used for authentication

application_id: Your Vantiv Express application identifier

acceptor_id: Your Vantiv Express acceptor identifier

application_name: The name of your integrating application

application_version: The version of your integrating application

Request

curl https://core.spreedly.com/v1/gateways.xml \
  -u 'C7cRfNJGODKh4Iu5Ox3PToKjniY:4UIuWybmdythfNGPqAqyQnYha6s451ri0fYAo4p3drZUi7q2Jf4b7HKg8etDtoKJ' \
  -H 'Content-Type: application/xml' \
  -d '<gateway>
        <gateway_type>element</gateway_type>
        <account_id>Your account id</account_id>
        <account_token>Your account token</account_token>
        <application_id>Your application id</application_id>
        <acceptor_id>Your acceptor_id</acceptor_id>
        <application_name>Your application name</application_name>
        <application_version>Your application version</application_version>
      </gateway>'

Response

<gateway>
    <token>33RYJ8PZP39RSBRGJ9621D6xyz</token>
    <gateway_type>element</gateway_type>
    <name>Vantiv Express (formerly Element)</name>
    <description nil="true"/>
    <merchant_profile_key nil="true"/>
    <sub_merchant_key nil="true"/>
    <account_id>1246640</account_id>
    <application_id>16923</application_id>
    <acceptor_id>364803500</acceptor_id>
    <application_name>Spreedly</application_name>
    <application_version>1</application_version>
    <characteristics>
        <supports_purchase type="boolean">true</supports_purchase>
        <supports_authorize type="boolean">true</supports_authorize>
        <supports_capture type="boolean">true</supports_capture>
        <supports_partial_capture type="boolean">true</supports_partial_capture>
        <supports_credit type="boolean">true</supports_credit>
        <supports_partial_credit type="boolean">true</supports_partial_credit>
        <supports_general_credit type="boolean">true</supports_general_credit>
        <supports_void type="boolean">true</supports_void>
        <supports_adjust type="boolean">false</supports_adjust>
        <supports_verify type="boolean">true</supports_verify>
        <supports_reference_purchase type="boolean">false</supports_reference_purchase>
        <supports_purchase_via_preauthorization type="boolean">false</supports_purchase_via_preauthorization>
        <supports_offsite_purchase type="boolean">false</supports_offsite_purchase>
        <supports_offsite_authorize type="boolean">false</supports_offsite_authorize>
        <supports_offsite_synchronous_purchase type="boolean">false</supports_offsite_synchronous_purchase>
        <supports_offsite_synchronous_authorize type="boolean">false</supports_offsite_synchronous_authorize>
        <supports_3dsecure_purchase type="boolean">false</supports_3dsecure_purchase>
        <supports_3dsecure_authorize type="boolean">false</supports_3dsecure_authorize>
        <supports_3dsecure_2_mpi_purchase type="boolean">false</supports_3dsecure_2_mpi_purchase>
        <supports_3dsecure_2_mpi_authorize type="boolean">false</supports_3dsecure_2_mpi_authorize>
        <supports_store type="boolean">true</supports_store>
        <supports_remove type="boolean">true</supports_remove>
        <supports_fraud_review type="boolean">false</supports_fraud_review>
        <supports_network_tokenization type="boolean">true</supports_network_tokenization>
        <supports_inquire_by_gateway_transaction_id type="boolean">false</supports_inquire_by_gateway_transaction_id>
        <supports_inquire_by_order_id type="boolean">false</supports_inquire_by_order_id>
        <supports_transaction_retry type="boolean">false</supports_transaction_retry>
        <supports_stored_stored_credentials type="boolean">false</supports_stored_stored_credentials>
        <supports_level_2_data type="boolean">true</supports_level_2_data>
        <supports_level_3_data type="boolean">true</supports_level_3_data>
        <supports_stored_credentials type="boolean">true</supports_stored_credentials>
    </characteristics>
    <credentials>
        <credential>
            <name>account_id</name>
            <value>12xxxxx</value>
        </credential>
        <credential>
            <name>application_id</name>
            <value>16xxx</value>
        </credential>
        <credential>
            <name>acceptor_id</name>
            <value>364xxxxx</value>
        </credential>
        <credential>
            <name>application_name</name>
            <value>Spreedly</value>
        </credential>
        <credential>
            <name>application_version</name>
            <value>1</value>
        </credential>
    </credentials>
    <gateway_settings>
  </gateway_settings>
    <gateway_specific_fields>
        <gateway_specific_field>card_present_code</gateway_specific_field>
        <gateway_specific_field>payment_type</gateway_specific_field>
        <gateway_specific_field>submission_type</gateway_specific_field>
        <gateway_specific_field>duplicate_check_disable_flag</gateway_specific_field>
        <gateway_specific_field>merchant_descriptor</gateway_specific_field>
        <gateway_specific_field>market_code</gateway_specific_field>
        <gateway_specific_field>ticket_number</gateway_specific_field>
        <gateway_specific_field>merchant_supplied_transaction_id</gateway_specific_field>
        <gateway_specific_field>duplicate_override_flag</gateway_specific_field>
        <gateway_specific_field>terminal_id</gateway_specific_field>
        <gateway_specific_field>terminal_type</gateway_specific_field>
        <gateway_specific_field>card_holder_present_code</gateway_specific_field>
        <gateway_specific_field>card_input_code</gateway_specific_field>
        <gateway_specific_field>cvv_presence_code</gateway_specific_field>
        <gateway_specific_field>terminal_capability_code</gateway_specific_field>
        <gateway_specific_field>terminal_environment_code</gateway_specific_field>
        <gateway_specific_field>partial_approved_flag</gateway_specific_field>
        <gateway_specific_field>lodging</gateway_specific_field>
        <gateway_specific_field>sales_tax_amount</gateway_specific_field>
        <gateway_specific_field>commercial_card_customer_code</gateway_specific_field>
        <gateway_specific_field>level_3_data</gateway_specific_field>
        <gateway_specific_field>idempotency_key</gateway_specific_field>
    </gateway_specific_fields>
    <payment_methods>
        <payment_method>credit_card</payment_method>
        <payment_method>bank_account</payment_method>
        <payment_method>third_party_token</payment_method>
        <payment_method>apple_pay</payment_method>
        <payment_method>google_pay</payment_method>
    </payment_methods>
    <state>retained</state>
    <redacted type="boolean">false</redacted>
    <sandbox type="boolean">true</sandbox>
    <mode>default</mode>
    <created_at type="dateTime">2026-06-12T09:51:03Z</created_at>
    <updated_at type="dateTime">2026-06-12T09:51:03Z</updated_at>
</gateway>

Purchase (Auth and Capture)

curl https://core.spreedly.com/v1/gateways/[gateway_token]/purchase.json \
-u 'EnvironmentKey:AccessSecret' \
-H "Content-Type: application/json" \
-d '{
  "transaction": {
    "payment_method_token": "payment_method_token",
    "amount": 1000,
    "currency_code": "USD",
    "email": "[email protected]",
    "billing_address": {
        "name": "Mit Donga",
        "address1": "some address1",
        "address": "some address2",
        "city": "NYC",
        "state": "CA",
        "zip": "32191",
        "country": "US"
    },
    "retain_on_success": true
  }
}'
📘

Additional Notes

  1. The ticket_number field is required when performing a general_credit transaction.
  2. The lodging field accepts an object which is required when performing hotel/lodging transactions. If you wish to initiate a hotel/lodging transaction, the market_code field will need to indicate the correct transaction type. For more information, please refer to the Express documentation.

Advanced features

Idempotent Requests

Spreedly supports idempotency for Vantiv Express (formerly Element) to prevent duplicate transactions in the event of network timeouts or accidental retries. When an idempotency_key is included in a request, the Spreedly platform maps this value to the IdempotencyKey field within the Vantiv Express XML Transaction Class.

📘

Notes

  1. The gateway strictly mandates that the idempotency_key be formatted as a UUID (Universally Unique Identifier). The use of a non-UUID compliant string results in a validation error at the gateway level.
  2. The idempotency feature is not available for Store and Unstore APIs.

Network Tokenization

Spreedly supports Network Tokenization for Vantiv Express (formerly Element). Transactions can be processed using network-issued tokens from Visa and Mastercard across CreditCardSale, CreditCardAuthorization, and CreditCardCredit methods. This update includes support for high-security cryptograms (TAVV/UCAF) to secure lower interchange rates and automatically tracks unique cards using the Payment Account Reference (PAR).

Stored Credentials

For Vantiv Express, sending stored credential fields is supported through Spreedly's first-class stored-credential API. For any Authorize or Purchase request, include the fields below. They tell Spreedly more about the nature of the transaction so that the correct PaymentType, SubmissionType and NetworkTransactionID elements are sent inside the <Transaction> block of the Element Express XML payload.

📘

Learn more about how Spreedly enables use of stored credentials by reviewing our Stored Credentials guide

First / credential-on-file setup (CIT and MIT initial)

Send stored_credential_initial_transaction: true. Spreedly will set <SubmissionType>1</SubmissionType>(Initial). Do not send stored_credential_network_transaction_id — there isn't one yet; the network returns it on the response of this transaction.

reason_typeinitiatorPaymentType (mapped)SubmissionType
installmentcardholderInstallment (2)Initial (1)
installmentmerchantInstallment (2)Initial (1)
recurringcardholderRecurring (1)Initial (1)
recurringmerchantRecurring (1)Initial (1)
unscheduledcardholderCardHolderInitiated (3)Initial (1)
unscheduledmerchantCredentialOnFile (4)Initial (1)

Subsequent use

Send stored_credential_initial_transaction: false together with the stored_credential_network_transaction_id returned by Vantiv on the initial transaction. Spreedly will set <SubmissionType>2</SubmissionType> (Subsequent) and pass the NTID through to the network.

reason_typeinitiatorPaymentType (mapped)SubmissionType
installmentcardholderInstallment (2)Subsequent (2)
installmentmerchantInstallment (2)Subsequent (2)
recurringcardholderRecurring (1)Subsequent (2)
recurringmerchantRecurring (1)Subsequent (2)
unscheduledcardholderCardHolderInitiated (3)Subsequent (2)
unscheduledmerchantCredentialOnFile (4)Subsequent (2)
📘

Note

The initiator field is only consulted for reason_type: unscheduled. For recurring and installment, Vantiv Express does not differentiate by initiator, so the <PaymentType> mapping is the same for both cardholder and merchant.

When stored-credential fields are supplied, the payment_type and submission_type gateway-specific fields (which override <PaymentType> / <SubmissionType> directly) are ignored to avoid duplicate elements inside the <Transaction> block.

L2/L3 Fields

This gateway supports Level 2 and Level 3 transaction processing.

Please refer to the documentation on Level 2 and Level 3 data.

{
    "transaction": {
        "gateway_specific_fields": {
            "element": {
                "level_3_data": {
                    "merchant_vat_registration_number": "60ac16",
                    "customer_vat_registration_number": "5a5a2e",
                    "summary_commodity_code": "345",
                    "discount_amount": "12",
                    "freight_amount": "500",
                    "duty_amount": "0",
                    "destination_postal_code": "121",
                    "ship_from_postal_code": "2876",
                    "destination_country_code": "US",
                    "unique_vat_invoice_reference_number": "1234",
                    "order_date": "20250910",
                    "vat_amount": "12",
                    "vat_rate": "",
                    "alternate_tax_amount": "234",
                    "national_tax_amount": "850",
                    "line_items": [
                        {
                            "commodity_code": "1234567890",
                            "product_code": "WIDGET001",
                            "description": "Widget A",
                            "quantity": "2",
                            "unit_price": "4000",
                            "unit_measure": "2",
                            "total_amount": "8000",
                            "tax_amount": "640",
                            "tax_rate": "2",
                            "discount_amount": "6",
                            "alternate_tax_id": "1123",
                            "vat_type": "1",
                            "discount_code": "NotSupported",
                            "net_gross_code": "ItemAmountIncludesTaxAmount",
                            "extended_item_amount": "8",
                            "debit_credit_code": "ExtendedItemAmountIsDebit",
                            "item_discount_rate": "1"
                        }
                    ]
                }
            }
        }
   }

Gateway Specific Fields

<gateway_specific_fields>
  <element>
    <gateway_specific_field>card_present_code</gateway_specific_field>
    <gateway_specific_field>payment_type</gateway_specific_field>
    <gateway_specific_field>submission_type</gateway_specific_field>
    <gateway_specific_field>duplicate_check_disable_flag</gateway_specific_field>
    <gateway_specific_field>duplicate_override_flag</gateway_specific_field>
    <gateway_specific_field>terminal_id</gateway_specific_field>
    <gateway_specific_field>market_code</gateway_specific_field>
    <gateway_specific_field>ticket_number</gateway_specific_field>
    <gateway_specific_field>merchant_supplied_transaction_id</gateway_specific_field>
    <gateway_specific_field>terminal_type</gateway_specific_field>
    <gateway_specific_field>card_holder_present_code</gateway_specific_field>
    <gateway_specific_field>card_input_code</gateway_specific_field>
    <gateway_specific_field>cvv_presence_code</gateway_specific_field>
    <gateway_specific_field>terminal_capability_code</gateway_specific_field>
    <gateway_specific_field>terminal_environment_code</gateway_specific_field>
    <gateway_specific_field>partial_approved_flag</gateway_specific_field>
    <gateway_specific_field>lodging</gateway_specific_field>
    <gateway_specific_field>sales_tax_amount</gateway_specific_field>
    <gateway_specific_field>commercial_card_customer_code</gateway_specific_field>
    <gateway_specific_field>level_3_data</gateway_specific_field>
    <gateway_specific_field>idempotency_key</gateway_specific_field>
  </element>
</gateway_specific_fields>
Field NameTypeRequiredUse Case (Description)Example Value
card_present_codeString / IntegerNoIndicates whether the card was physically present. Maps to Express values: Unknown (1), Present (2), NotPresent (3).NotPresent or 3
payment_typeString / IntegerNoSpecifies the payment type for the transaction. Maps to Express values: NotUsed (0), Recurring (1), Installment (2), CardHolderInitiated (3), CredentialOnFile (4). Ignored when stored-credential fields are supplied.CardHolderInitiated or 3
submission_typeString / IntegerNoIndicates whether the transaction is an initial or subsequent stored-credential use. Maps to Express values: NotUsed (0), Initial (1), Subsequent (2), Resubmission (3), ReAuthorization (4), DelayedCharges (5), NoShow (6). Ignored when stored-credential fields are supplied.Initial or 1
duplicate_check_disable_flagBooleanNoWhen true, disables duplicate-transaction checking at the gateway.true
duplicate_override_flagBooleanNoWhen true, overrides duplicate-transaction checking at the gateway (treated equivalently to duplicate_check_disable_flag).true
terminal_idStringNoIdentifies the terminal processing the transaction. Defaults to 01 if not provided.02
market_codeString / IntegerNoIndicates the market or industry segment for the transaction. Maps to Express values such as AutoRental (1), DirectMarketing (2), ECommerce (3), FoodRestaurant (4), HotelLodging (5), Petroleum (6), Retail (7), QSR (8), Grocery (9).ECommerce or 3
ticket_numberStringNoUser-defined ticket number. Numeric recommended. Required when performing a general_credit transaction.1
merchant_supplied_transaction_idStringNoMerchant-supplied identifier for tracking the transaction in your systems.your-transaction-id
terminal_typeString / IntegerNoType of terminal used for the transaction. Maps to Express values such as Unknown (0), PointOfSale (1), ECommerce (2), MOTO (3), FuelPump (4), ATM (5), Voice (6), Mobile (7), WebSiteGiftCard (8).ECommerce or 2
card_holder_present_codeString / IntegerNoIndicates whether the cardholder was present. Maps to Express values such as Default (0), Unknown (1), Present (2), NotPresent (3), MailOrder (4), PhoneOrder (5), StandingAuth (6), ECommerce (7).ECommerce or 7
card_input_codeString / IntegerNoDescribes how card data was captured. Maps to Express values such as ManualKeyed (4), MagstripeRead (2), ChipRead (6), and others.ManualKeyed or 4
cvv_presence_codeString / IntegerNoIndicates CVV presence status. Maps to Express values: UseDefault (0), NotProvided (1), Provided (2), Illegible (3), CustomerIllegible (4).NotProvided or 1
terminal_capability_codeString / IntegerNoDescribes terminal capabilities. Maps to Express values such as KeyEntered (5), MagstripeReader (3), ChipReader (6), and others.KeyEntered or 5
terminal_environment_codeString / IntegerNoDescribes the terminal environment. Maps to Express values such as ECommerce (6), LocalAttended (2), RemoteUnattended (5), and others.ECommerce or 6
partial_approved_flagBooleanNoSpecifies whether software supports partial approvalstrue
lodgingObjectNoExtended lodging data object required for hotel/lodging transactions. When used, market_code should indicate the appropriate lodging transaction type (for example, HotelLodging). Supports fields such as agreement_number, check_in_date, check_out_date, room_amount, room_tax, no_show_indicator, duration, customer_name, client_code, extra_charges_detail, extra_charges_amounts, prestigious_property_code, special_program_code, and charge_type.As shown below this table, for more information check Worldpay Express documentation
sales_tax_amountStringNoSales tax amount for the transaction, used for commercial and Level 2/3 processing."100"
commercial_card_customer_codeStringNoCustomer code sent with commercial card transactions.any value
level_3_dataObjectNoLevel 3 enhanced data object. Supported on Capture requests. Includes header fields and a line_items array.See L2/L3 Fields section
idempotency_keyString (UUID)NoUUID used to prevent duplicate transactions on retry. Not supported for Store or Unstore operations.550e8400-e29b-41d4-a716-446655440000

The lodging field can look like the structure below:

{
  "agreement_number": "12345",
  "check_in_date": "YYYYMMDD",
  "check_out_date": "YYYYMMDD",
  "room_amount": 1000,
  "room_tax": 0,
  "no_show_indicator": 0,
  "duration": 5,
  "customer_name": "First Last",
  "client_code": "Default",
  "extra_charges_detail": "01",
  "extra_charges_amounts": "Default",
  "prestigious_property_code": "DollarLimit500",
  "special_program_code": "Sale",
  "charge_type": "Restaurant"
}

Gateway Specific Response Fields

<gateway_specific_response_fields>
  <element>
    <host_response_code>000</host_response_code>
    <gateway_transaction_id>531976182</gateway_transaction_id>
    <commercial_card_response_code>B</commercial_card_response_code>
  </element>
</gateway_specific_response_fields>
Field NameTypeDescription
host_response_codestringHost response code returned by the Vantiv Express gateway indicating the result from the payment host.
gateway_transaction_idstringTransaction identifier
commercial_card_response_codestringCommercial card indicator (Vantiv, FDC, TSYS)

Additional resources

📘

If you need support with this gateway please contact Support at [email protected].

📘
EnvironmentTransaction URLServices URL (Store / Unstore)
Test (Sandbox)https://certtransaction.elementexpress.comhttps://certservices.elementexpress.com
Productionhttps://transaction.elementexpress.comhttps://services.elementexpress.com


Did this page help you?