Skip to main content

3rd Party Apps for the 2checkout Platform

How do I build apps for the 2checkout platform?

  1. Sign-up for a 2Checkout account
  2. Contact 2Checkout with your app proposal. 
  3. 2Checkout reviews your application plan enables 3rd party apps for your account and creates a placeholder for your app. 
  4. 2Checkout supplies you with authentication credentials. 
  5. Build your application, integrate and test it with your account. 
  6. Submit your final application for review. 
  7. 2Checkout evaluates your application. Following the review process, 2Checkout can offer your app to all customers. 

Payments for mobile apps (such as applications hosted in Google Play Store ) are not currently supported.  However, our platform supports in-app integration using the 2Checkout API (you can integrate our shopping cart in your own application).

Installation

Add the following lines of code at the end of the <body> tag.


<script type="text/javascript" src="https://secure.2checkout.com/cpanel/js/third-party-apps/avangate.js"></script>
    <div id="avangate-hero" class="hide"></div>

Authentication

Contact 2Checkout directly to start building applications on top of the 2Checkout platform. 2Checkout supplies you with the public and private authentication keys for your application. 

Access requirements

Application authentication tokens work in tandem with user sessions for 2Checkout accounts. Users need to log into their account for 3rd party applications to have access to their data. Once account users log out, the application token expires and access is removed. By default, authentication tokens expire after one (1) hour.

Permanent authentication token

Contact 2Checkout to enable this functionality for your application. Once enabled, to make the auth token permanent use the 'permanentToken' parameter. This cases token expiration to grow to one (1) year.

Client side

 

1. Include the script from the Installation section in your JavaScript file you to access a global object called avangateCPanel that you can use for all the methods available in the client-side interface.

2. Next, set the PUBLIC_APP_ID and check that the scripts load in your JavaScript file.

 


var app = {
        cPanel  : false,
        appID   : 'PUBLIC_APP_ID',

        init : function()
        {
            this.cPanel = avangateCPanel;
            if (this.cPanel.init(this.appID)) {
                console.log('everything is ready to be used');
            }
        }
    };
    app.init();

3. Check 2Checkout account login by requesting the auth token via JavaScript.


    var app = {
        cPanel  : false,
        appID   : 'PUBLIC_APP_ID',

        init : function()
        {
            this.cPanel = avangateCPanel;
            if (this.cPanel.init(this.appID)) {
                console.log('everything is ready to be used');
                this.checkLogin();
            }
        },
        checkLogin : function()
        {
            this.cPanel.authentify({
                success: function(response) {
                    var authToken = response.value.authToken;
                },
                error: function(response) {
                    console.log(response.message); // something went wrong
                }
            });
        }
    };
    app.init();
 
4. Send the authToken to your server for validation.
 

var app = {
        cPanel  : false,
        appID   : 'PUBLIC_APP_ID',

        init : function()
        {
            this.cPanel = avangateCPanel;
            if (this.cPanel.init(this.appID)) {
                console.log('everything is ready to be used');
                this.checkLogin();
            }
        },
        checkLogin : function()
        {
            this.cPanel.authentify({
                success: function(response) {
                    var authToken = response.value.authToken; // object {authToken: 'the auth token string', expirationDate: 'the expiration date of the token'}
                    $.when(
                        $http('/validateToken').post(authToken)
                    ).then(
                        function() { //success
                            //user is logged
                        },
                        function() { //fail
                            // check what went wrong in the ajax call
                        }
                    );
                },
                error: function(response) {
                    console.log(response.message); // something went wrong
                }
            });
        }
    };
    app.init();
 

Server side

This example uses Laravel framework and Guzzle Http library


namespace App\Http\Controllers;

use Request;
use GuzzleHttp\Client as httpClient;
use App\Http\Controllers\Controller;

class MainController extends Controller {
    protected $authInfo   = false;
    protected $apiBaseUrl = 'https://apps.api.avangate.com/';

    // verifies and validates the auth token received via javascript
    public function validateToken()
    {
        $this->authInfo = [
            'authToken'         => Request::input('authToken'),
            'expirationDate'    => Request::input('expirationDate'),
        ];

        try {
            $httpClient = $this->getHttpClient();
            $response   = $httpClient->put('verify/');
            // to make the auth token permanent just apply the 'permanentToken' param (token expires in 1 year)
            // contact Avangate to enable this functionality for your app
            //$response = $httpClient->put('verify/', ['body' => ['permanentToken' => 1]]);
        } catch (\Exception $e) {
            $response = $e->getResponse();
        }

        return ($response->json() == true);
    }

    // http client configuration
    private function getHttpClient()
    {
        return new httpClient([
            'base_url'  => $this->apiBaseUrl,
            'timeout'  => 2.0,
            'defaults' => [
                'proxy'     => '',
                'verify'    => false,
                'headers'   => [
                    'authToken' => $this->authInfo['authToken'],
                    'secretID'  => env('APP_SECRET'), // your app secret id
                    'Accept'    => 'application/json'
                ]
            ]
        ]);
    }
}

Get logged user info

This example uses Laravel framework and Guzzle Http library

 


namespace App\Http\Controllers;

use Request;
use GuzzleHttp\Client as httpClient;
use App\Http\Controllers\Controller;

class MainController extends Controller {
    protected $authInfo   = false;
    protected $apiBaseUrl = 'https://apps.api.avangate.com/';

    // verifies and validates the auth token received via javascript
    public function validateToken()
    {
        $this->authInfo = [
            'authToken'         => Request::input('authToken'),
            'expirationDate'    => Request::input('expirationDate'),
        ];

        try {
            $httpClient = $this->getHttpClient();
            $response   = $httpClient->put('verify/');
        } catch (\Exception $e) {
            $response = $e->getResponse();
        }

        if ($response->json() == true) {
            $this->getAuthUserInfo();
        }
    }

    /*
        retrieves the logged user info
        return an array with following structure

        [
            'Email'         => (string),
            'FirstName'     => (string),
            'LastName'      => (string),
            'VendorInfo'    => [
                'ClientCode'        => (string),
                'CompanyName'       => (string),
                'CommercialName'    => (string),
                'Homepage'          => (string)
            ]
        ];
    */
    private function getAuthUserInfo()
    {
        try {
            $httpClient = $this->getHttpClient();
            $response   = $httpClient->get('user_info/');
        } catch (\Exception $e) {
            $response = $e->getResponse();
        }

        return $response->json();
    }

    // http client configuration
    private function getHttpClient()
    {
        return new httpClient([
            'base_url'  => $this->apiBaseUrl,
            'timeout'  => 2.0,
            'defaults' => [
                'proxy'     => '',
                'verify'    => false,
                'headers'   => [
                    'authToken' => $this->authInfo['authToken'],
                    'secretID'  => env('APP_SECRET'), // your app secret id
                    'Accept'    => 'application/json'
                ]
            ]
        ]);
    }
}

Get API data

The API documentation can be found here.

This example uses Laravel framework and Guzzle Http library. From the API we will use the retrieve subscriptions method. 


namespace App\Http\Controllers;

use Request;
use GuzzleHttp\Client as httpClient;
use App\Http\Controllers\Controller;

class MainController extends Controller {
    protected $authInfo   = false;
    protected $apiBaseUrl = 'https://apps.api.avangate.com/';

    // verifies and validates the auth token received via javascript
    public function validateToken()
    {
        $this->authInfo = [
            'authToken'         => Request::input('authToken'),
            'expirationDate'    => Request::input('expirationDate'),
        ];

        try {
            $httpClient = $this->getHttpClient();
            $response   = $httpClient->put('verify/');
        } catch (\Exception $e) {
            $response = $e->getResponse();
        }

        if ($response->json() == true) {
            $this->getSubscriptions();
        }
    }

    private function getSubscriptions()
    {
        try {
            $httpClient = $this->getHttpClient();
            $response   = $httpClient->get('subscriptions/');
        } catch (\Exception $e) {
            $response = $e->getResponse();
        }

        return $response->json();
    }

    // http client configuration
    private function getHttpClient()
    {
        return new httpClient([
            'base_url'  => $this->apiBaseUrl,
            'timeout'  => 2.0,
            'defaults' => [
                'proxy'     => '',
                'verify'    => false,
                'headers'   => [
                    'authToken' => $this->authInfo['authToken'],
                    'secretID'  => env('APP_SECRET'), // your app secret id
                    'Accept'    => 'application/json'
                ]
            ]
        ]);
    }
}

Get ISE data

The ISE (Instant Search Order Export) documentation can be found here.

This example uses Laravel framework and Guzzle Http library


namespace App;

use GuzzleHttp\Client as httpClient;
use Illuminate\Support\Facades\Session;

class Order
{
    private function generateQuery($data = [])
    {
        $authInfo       = Session::get('authInfo');
        $queryParams    = [
            //required
            'APP_CREDENTIALS_TOKEN'     => $authInfo['authToken'],
            'APP_CREDENTIALS_SECRET_ID' => env('APP_SECRET'),

            'STARTDATE'                 => '2015-01-21 00:00:00',
            'ENDDATE'                   => '2015-01-21 00:00:00',
            'ORDERSTATUS'               => 'ALL',
            'REQ_DATE'                  => date('YmdHis'),
            'PRODUCT_ID'                => '',
            'COUNTRY_CODE'              => '',
            'FILTER_STRING'             => '',
            'FILTER_FIELD'              => '',
            'HASH'                      => '',

            //optional
            'INCLUDE_DELIVERED_CODES'   => '',
            'INCLUDE_FINANCIAL_DETAILS' => '',
            'INCLUDE_EXCHANGE_RATES'    => '',
            'INCLUDE_PRICING_OPTIONS'   => '',
            'EXPORT_FORMAT'             => 'XML',
        ];

        $queryParams = array_merge($queryParams, $data);

        return $queryParams;
    }

    public function getOrders($searchParams = [])
    {
        if (!is_array($searchParams)) {
            $searchParams = [];
        }

        $queryParams = $this->generateQuery($searchParams);
        try {
            $httpClient = $this->getHttpClient();
            $response   = $httpClient->post('ise/', [
                'body' => $queryParams
            ]);
        } catch (\Exception $e) {
            $response = $e->getResponse();
        }

        if ($response->getBody()->getContents() != '') {
            $response = $response->xml();
            if (isset($response->RESPONSE_MSG)) {
                return ['success' => false, 'message' => (string)$response->RESPONSE_MSG];
            } else {
                return ['success' => true, 'value' => $response->Orders];
            }
        } else {
            return ['success' => false, 'message' => ''];
        }
    }

    private function getHttpClient()
    {
        return new httpClient([
            'base_url'  => 'https://secure.avangate.com/action/',
            'timeout'  => 2.0,
            'defaults' => [
                'proxy'     => '',
                'verify'    => false,
            ]
        ]);
    }
}

Download mock application

This example uses Laravel framework and Guzzle Http library

You can download the app from here.

The app uses an SQLite database for the information and it displays a list of items only if is a valid authentication session in the 2checkout Control Panel.

Download documentation and mock application 

Click here to download the full documentation, including the mock application, as an archive that you can unpack and run locally.

Accounting activity

Overview

The Accounting menu provides an easy way of keeping tabs on your 2Checkout account's financial activity.

Availability

All 2Checkout accounts. 

Metrics

The Account status section gives you an overview of the following metrics:

  • Net sales = due payments that 2Checkout will pay you after all the taxes, fees and commissions are deducted. Net Profit = Quantity * (Unit Price - Unit Discount - Affiliate Commission) - Processing Fee - Total VAT + (DIS Profit - DIS Cost)
  • Service invoices = unpaid charges you incurred for services such as marketing services, chargeback fees.
  • Disputed orders balance = amounts 2Checkout retained for all open chargebacks at the end of the reporting period.
  • Chargeback funds = the chargeback fund is retained by 2Checkout as soon as you sign the contract. 2Checkout uses this fund to settle chargebacks and refunds opened as late as six months after the termination of your 2Checkout contract. Six months after your 2Checkout contract ends, you receive the remaining chargeback fund back into your account.
  • Minimum transfer limits = the minimum payout amount that you must reach before 2Checkout pays you.

View your accounting summary

To get an overview of your payments, go to the Payments sectionThe accounting summary page aggregates financial details about your account. You can see details about the last payment received from 2Checkout and generate reports based on your account's financial activity.

Last payments

The Last payments area shows you the most recent 10 payments that you have received from 2Checkout.

More info

If you want to see detailed information about what the total amount includes, click the More info button at the right side of the table row. Once you expand the row, you can see what the total amount includes.

Export

You can also export detailed transfers lists by clicking the corresponding link.

Run financial activity reports

  1. Use the Filter transactions section to choose the type of transactions to be included in the report. You can select the transaction status, the invoice date, when it was paid and the transaction type.
  2. Once you have finished configuring your filters, click Search. The report is displayed below and it contains 10 results/page. You can extend the displayed results number to 20 results/page.
  3. Click the More info button to see more information about a specific transaction.
  4. You can also download the transaction's invoice in either HTML or XML format, by selecting the desired format from the Actions column.

Payments history

  1. Use the Transfers history tab to run reports on all the payments that you received from 2Checkout. Configure the filters in the Transfer history searchsection and click Search when you're ready to generate the report. The reports include the payment type, date and the amount.
  2. Click the More info button to see more information about a specific payment, such as the payments that are included in it.
  3. Export the report in CSV format by clicking the Export detailed transfers link.

Network cross-sell commissions

  1. The Accounting -> Payments section also provides you information related to the commissions that you have earned from network cross-selling campaigns.
  2. Go to the Network cross-sell commissions tab and use the Payment date and Payment currency filters to generate reports.
  3. Once you have finished configuring your filters, click Search. The report is displayed below and it contains 10 results/page. You can extend the displayed results number to 200 results/page.
  4. Click the More info button to see more information about a specific payment.
  5. Download the full report that includes all payments in CSV format by clicking Export as CSV. Alternately, you can download reports for each payment by clicking the Export detailed transfers link.

Remove sources

Overview

Use the deletePromotionSources method to define new sources for an existing promotion.

Parameters

Parameter Type/Description

sessionID

Required (string)

 

Output of the Login method.

promotionCode

Required (string)

 

The code corresponding to the promotion that you want to remove sources from.

promotionSources

Required (string array)

 

Array of strings defining the promotion sources to be removed.

Response

Parameter Type/Description

Status

Boolean

 

True or false

Request

<?php

require ('PATH_TO_AUTH');

// Promotion code corresponding to the promotion you want to remove sources from
$promotionCode = '';

// Sources array with the source values 
$sources = ['source1', 'source2'];

try {
    $updatedPromotion = $client->deletePromotionSources($promotionCode,$sources);
}

catch (SoapFault $e) {
    echo "UpdatedPromotion: " . $e->getMessage();
    exit;
}

var_dump("UpdatedPromotion", $updatedPromotion);

Refunds processing time frames

Overview

Refunds' processing time frames depend on the payment method used by the shopper.

If the refund request is granted by 2Checkout/Merchant, payments are refunded to shoppers as follows:

  1. Credit/Debit Cards payments will be refunded within one (1) business day;
  2. Wire Transfer and check payments will be refunded within seven (7) business days and the cost of the transfer will be borne by the end user;
  3. PayPal payments will be refunded within one (1) business day;
  4. Other payment methods will be refunded between five (5) to seven (7) days.
  5. In cases of Direct Debit, the refund request can be processed only after 6 weeks from the payment date, the period needed for your bank to process the settlement. 2Checkout will only review and respond to your refund request after the 6-week period ends.
   Once a refund is processed, the funds will be visible in the shopper’s account within 3-5 business days, depending on their bank processing time. PayPal refunds will be visible in the shopper’s account on the same day.

Refunds' processing time frames for online payment methods

Payment method Type Refund processing time
Visa credit/debit card within one (1) business days
Visa Electron debit card within one (1) business days
MasterCard credit/debit card within one (1) business days
Maestro credit/debit card within one (1) business days
Eurocard (Mastercard) credit/debit card within one (1) business days
American Express credit card within one (1) business days
Discover/Novus credit card within one (1) business days
Dankort /VISA debit card within one (1) business days
Bancontact credit/debit card within one (1) business days
Postepay (Visa) credit/debit card within one (1) business days
JCB (Japan Credit Bureau) credit card within one (1) business days
Carte Bancaire local debit card within one (1) business days
PayPal digital wallet within one (1) business days
PayPal Express digital wallet within one (1) business days
Direct Debit SEPA* direct debit within six (6) weeks from the payment date
Direct Debit UK* direct debit within six (6) weeks from the payment date
Alipay digital wallet within one (1) business days
Apple Pay digital wallet within one (1) business days
iDEAL online banking within seven (7) business days after receiving the banking details from the end-user (the cost of transfer will be borne by the end-user)
eCheck/ACH* direct debit within six (6) weeks from the payment date
UnionPay credit/debit card within one (1) business days
Elo Card credit card with installments within one (1) business days
Hipercard credit card with installments within one (1) business days
Local Cards Turkey with installments (Bonus, World, CardFinans, BankAsya, Paraf, Maximum, Axess) credit card with installments within one (1) business days
Nordea online banking within three (3) to five (5) days
Danske online banking within three (3) to five (5) days
Trustly online banking within three (3) to five (5) days
WeChat Pay digital wallet within three (3) to five (5) days
Skrill Wallet digital wallet within three (3) to five (5) days
Neteller digital wallet within three (3) to five (5) days
Qiwi wallet digital wallet within one (1) business days
Note: In cases of Direct Debit, the refund request can be processed only after a 6 weeks period from the payment date, the period needed for your bank to process the settlement. 2Checkout will only review and respond to your refund request after the 6-week period ends.

Refunds' processing time frames for offline payment methods

Payment method Type Refund processing time
PayNearMe cash/online

 

 

 

 

within seven (7) business days after receiving the banking details from the end-user (the cost of transfer will be borne by the end-user)

Wire/Bank transfer - SEPA countries** bank transfer
Wire/Bank Transfer - non-SEPA countries** bank transfer
Purchase Order purchase order
Boleto/Pix** Cash/online
Cash at 7-Eleven, Family Dollar & ACE Cash/online

 

Retrieve available countries

Overview

Use the getAvailableCountries method to get the list of available countries for the current merchant. If the language parameter is provided, all the returned countries will be translated into that language.

Request Parameters

Parameter Name Type Required/Optional Description
sessionId String Required Session identifier, the output of the Login method. Include sessionId into all your requests. 2Checkout throws an exception if the values are incorrect. The sessionId expires in 10 minutes.
language String Optional The ISO language code (two-letter code). If the language parameter is empty, the default language will be English.

Request Example

class Configuration
{
    public const MERCHANT_CODE = '';
    public const MERCHANT_KEY = '';
    public const URL = 'http://api.2checkout.com/soap/6.0';
    public const ACTION = 'getAvailableCountries';
    public const ADDITIONAL_OPTIONS = null;
    public const PAYLOAD = "nl";
}

class Client
{
    public function call(
        string $url = Configuration::URL,
        $payload = Configuration::PAYLOAD,
        string $action = Configuration::ACTION
    ) {
        if (is_array($payload)) {
            $payload = json_encode($payload);
        }
        
        $soapClient = $this->getClient($url);
        $sessionId = $this->getSession($soapClient);
        $args = array_filter([$sessionId, $payload]);

        return $soapClient->$action(...$args);
    }

    public function getClient(string $url): SoapClient
    {
        return new SoapClient(
            $url.'?wsdl',
            [
                'location' => $url,
                'cache_wsdl' => WSDL_CACHE_NONE,
            ]
        );
    }

    public function getSession(SoapClient $client)
    {
        $date = gmdate('Y-m-d H:i:s');
        $merchantCode = Configuration::MERCHANT_CODE;
        $key = Configuration::MERCHANT_KEY;
        $string = strlen($merchantCode).$merchantCode.strlen($date).$date;
        $hash = hash_hmac('md5', $string, $key);
        $client->__setCookie('XDEBUG_SESSION', 'PHPSTORM');

        return $client->login($merchantCode, $date, $hash);
    }
}

try {
    $client = new Client();
    var_dump($client->call());
} catch (Exception $ex) {
    var_dump($ex);
}

Response

Parameter Name Type Description
countries Array An array of country objects, mode of country code, and translated country name.

Response Example

[
    {
    “Code”: “AE”,
    “Label”: “Verenigde Arabische Emiraten”
},
{
    “Code”: “AF”,
    “Label”: “Afghanistan”
}
]

API Requests

Overview

Perform easy account management via API Requests. The 2Checkout API portfolio contains extended capabilities that can help you automate processes as: creating products or promotions, placing orders (both with catalog and dynamic product information), issuing refunds, retrieving the shipping price for an order, handling subscriptions and many others.

 

Search customers

Overview

Use the searchCustomers method via SOAP API 6.0 to be able to identify customers by applying a set of filters.

Request parameters

Parameter name Type Required/Optional Description
Email String Optional Strict match of the email address. It should be case insensitive.
Phone String Optional Strict match of the phone number.
CountryCode String Optional Strict match of the customer's country code.
Language String Optional Strict match of the customer's language.
Trial Boolean Optional  
Status Enum Optional Can be active, inactive.
Pagination Object Optional  

Limit

Int Optional  

Page

Int Optional  

Request example

<?php

declare(strict_types=1);

class Configuration
{
    public const MERCHANT_CODE = '';
    public const MERCHANT_KEY = '';
    public const URL = 'http://api.2checkout.com/soap/6.0';
    public const ACTION = 'searchCustomers';
    public const ADDITIONAL_OPTIONS = null;
    //array or JSON
    public const PAYLOAD = <<<JSON
{
  "Email": "test@email.com",
  "Language": "en",
  "CountryCode": "us",
  "Trial": true,
  "Status": "ACTIVE",
  "Phone": "403324433234",
  "Pagination": {
    "Limit": 1,
    "Page": 1
  }
}
JSON;
}

class Client
{
    public function call(
        string $url = Configuration::URL,
        $payload = Configuration::PAYLOAD,
        string $action = Configuration::ACTION
    ): ?object
    {
        if (is_array($payload)) {
            $payload = json_encode($payload);
        }
        if (!empty($payload)) {
            // SoapClient works with objects(StdClass)
            $payload = json_decode($payload);
        }

        $soapClient = $this->getClient($url);
        $sessionId = $this->getSession($soapClient);
        $args = array_filter([$sessionId, $payload]);
        return $soapClient->$action(...$args);
    }

    public function getClient(string $url): SoapClient
    {
        return new SoapClient(
            $url . '?wsdl',
            [
                'location' => $url,
                'cache_wsdl' => WSDL_CACHE_NONE,
            ]
        );
    }

    public function getSession(SoapClient $client)
    {
        $date = gmdate('Y-m-d H:i:s');
        $merchantCode = Configuration::MERCHANT_CODE;
        $key = Configuration::MERCHANT_KEY;
        $string = strlen($merchantCode) . $merchantCode . strlen($date) . $date;
        $hash = hash_hmac('md5', $string, $key);
       // $client->__setCookie('XDEBUG_SESSION', 'PHPSTORM');
        return $client->login($merchantCode, $date, $hash);
    }
}

try {
    $client = new Client();
    var_dump($client->call());
} catch (Exception $ex) {
    var_dump($ex);
}

Response 

Payment receipt email variables

Overview

Payment receipt shopper emails can be customized according to your own business needs. You can do so by using the variables in the list below. Check the 'Mandatory' column to see the variables that are required in your customized version of the e-mail.

Variable name Description Test value Mandatory
ADDRESS1 The first section of the delivery address 123, Main Street No
ADDRESS1_D The first section of the delivery address 123, Main Street No
ADDRESS2 The second section of the delivery address 0 No
ADDRESS2_D The second section of the delivery address 0 No
ALLOW_MYACCOUNT_PROMO Include or exclude myAccount information in the email body 1 No
APPROVAL Issuer (bank) payment identifier. AU1234 No
AUTO_RENEWAL Indicates whether or not the shopper has enabled automatic renewal on the subscription 1 No
2CHECKOUT_COMPANY_NAME 2Checkout company name 2Checkout No
AVS_MATCH Gateway AVS Z No
2CHECKOUT_LOGO 2Checkout logo URL https://secure.2checkout.com/images/e...endor_logo.png Yes
2CHECKOUT_ON_BANK_STATEMENT_SPECIFIC This is mandatory content you need to keep in your emails, given 2Checkout acts as Reseller / Merchant of Record for online purchases on your website. The charge on your bank statement will appear as 2Checkout. Yes
BANK_STATEMENT Account statement descriptor 2checkout*Software Inc No
BANK_STATEMENT_DESCRIPTOR Account statement descriptor 2checkout*Software Inc No
BASE_URL Merchant's full host https://secure.2checkout.com No
BUSINESS_COMPANY 2Checkout company name 2Checkout No
BUSINESS_HOTLINE 2Checkout support phone 0 No
BUSINESS_HOTLINEUS 2Checkout US hotline number 0 No
BUSINESS_SUPEMAIL 2Checkout support email address support@2checkout.com No
BUSINESS_WEBSITE 2Checkout website http://www.2Checkout.com No
CARD_LAST_DIGITS Last 4 digits of the card used to perform the payment 1111 No
CBANKACCOUNT Shopper's bank account used on the billing information 0 No
CBANKNAME Shopper's bank name used on the billing information 0 No
CITY Shopper's city used on the billing information Anytown No
CITY_D Shopper's city used on the delivery information Anytown  
COMMERCIALNAME Merchant's commercial name Software Company Name No
COMPANY Shopper company name used on the delivery information. If no delivery information is available, no company name is displayed. Customer company No
COMPANY_D Shopper company name used on the delivery information. If no delivery information is available, no company name is displayed. Customer company No
COUNTRY Shopper's country used on the billing information France No
COUNTRY_D Shopper's country used on the delivery information U.S.A No
CURRENCY Order billing currency USD Yes
CURRENCY_ORIGINAL Original order currency (applicable to refunds) 0 No
CUSTOMEREMAIL Shopper's email address used on the billing information example@customer-email.com No
CVV2_MATCH Gateway CVV2 check response M No
DELIVERABILITY Order delivery status 0 No
DELIVRABILITY The delivery status of the loaded order 0 No
DISPLAY_MY_ACCOUNT_INFO Include or exclude myAccount information in the email body 1 No
ENCRYPTED_MERCHANT_CODE Encrypted merchant code 0 No
FIRSTNAME Shopper's first name used on the delivery information John No
FIRSTNAME_D Shopper's first name used on the delivery information John No
FIRST_NAME_BILLING Shopper's first name used on the billing information John Yes
FIRST_NAME_DELIVERY Shopper's first name used on the delivery information John No
FISCALCODE Shopper's fiscal code used on the billing information 0 No
FISCAL_CODE Shopper's fiscal code used on the billing information 0 No
GATEWAY_ERROR_CODE Gateway error code GW_PROCESSING_ERROR
See the full list of Possible Values
No
GATEWAY_ERROR_MESSAGE Reason why the transaction failed. (e.g. Invalid card, insufficient funds) Error processing the card transaction. The card account has not been debited. Card data is invalid or incomplete. No
GENERALTOTAL Total order price 79 No
GLOBALDISCOUNT Order total discount 3 No
HAS_RENEWAL_PRODUCTS Flag that indicates whether at least one product has renewal settings 0 No
HOTLINE_NUMBERS Array of attributes for 2Checkout hotline numbers 0 No
HOTLINE_NUMBERS.NG_PHONE[index1].HotlineName Countries where 2Checkout support information is available USA/Canada No
HOTLINE_NUMBERS.NG_PHONE[index1].HotlineValue 2Checkout phone number(s) for shopper support +1 (650) 963-5701 No
INT_REF Global Collect internal reference 123456789 No
IS_RENEWAL Flag that indicates whether at least one product has renewal settings 0 No
LANGUAGE Order language (abbreviated) selected by shopper 0 No
LASTNAME Shopper's last name used on the delivery information Doe No
LASTNAME_D Shopper's last name used on the delivery information Doe No
LAST_NAME_BILLING Shopper's last name used on the billing information Doe Yes
LAST_NAME_DELIVERY Shopper's last name used on the delivery information Doe No
MERCHANT_COMMERCIAL_NAME Merchant's commercial name Software Company Name No
MERCHANT_COMPANY Merchant's company name 0 No
MERCHANT_ID Seller ID 0 No
MERCHANT_SUPPORT_EMAIL Merchant support email address merchant@email.com No
MERCHANT_SUPPORT_PHONE Merchant support phone number 123 456 789 0 No
MY_ACCOUNT_LOGIN_EMAIL Email address used by shopper to login/signup to myAccount customer@email.com No
MY_ACCOUNT_LOGIN_TOKEN Token assigned to the shopper in order to access myAccount 0 No
MY_ACCOUNT_LOGIN_URL 2Checkout myAccount login/sign-up URL Signup / Login Yes
MY_ACCOUNT_URL URL for myAccount. To the BASE_URL we add /myaccount/ 0 No
NAMES_OF_PRODUCTS Names of all products in the order, comma separated 0 No
ORDERDATE Order placement date 41970.18889 No
ORDER_AMOUNT Total order price 79 Yes
ORDER_AMOUNT_ORIGINAL Original order value (applicable to refunds) 0 No
ORDER_DATE Order placement date 42563 Yes
ORDER_DATE_STANDARD_FORMAT Standard format used for the order placement date 0 No
ORDER_FLOW Purchase flow used to place the order 0 No
ORDER_REFERENCE_NUMBER Order reference number 9xxxxxx Yes
ORDER_STATUS Order status 0 No
ORDER_WEBSITE Website where the shopper placed the order http://www.software-company-website.com Yes
PAYMENT_METHOD English name for the payment method used Visa/MasterCard/Eurocard Yes
PAYMENT_TYPE_INFO English payment method name. Includes last four card digits (if applicable). 0 No
PAYTYPE Identification number for the payment method selected during ordering process 1 No
PAYTYPESTR English name for the payment method used Visa/MasterCard/Eurocard No
PAY_TYPE Identification number for the payment method selected during ordering process 1 No
PHONE Shopper's phone number used on the billing information 0 No
PHONE_D Shopper's phone number used on the delivery information 555-555-555 No
PRODUCT_ADDITIONAL_FIELDS_TEXT Additional field text set at product level. Additional text set on the product. No
PRODUCT_ADDITIONAL_FIELDS_VALUE Additional field value set at product level. Sample value No
PRODUCTS Products data. 0 No
PRODUCTS[index1].CODE Product code. P_CODE No
PRODUCTS[index1].DISCOUNT Product discount value per product line 2 No
PRODUCTS[index1].ID Product ID number 4572518 No
PRODUCTS[index1].INFO Additional product information defined by merchant when generating buy links Product info 1 No
PRODUCTS[index1].IS_TRIAL Indicates whether this is a trial product 1 No
PRODUCTS[index1].LICENSE_TYPE Type of purchased subscription RENEWAL No
PRODUCTS[index1].NAME Product name Installation Service No
PRODUCTS[index1].PCODE Product code. P_CODE_1 No
PRODUCTS[index1].PID Product ID number 4572518 No
PRODUCTS[index1].PNAME Product name Installation Service No
PRODUCTS[index1].PRICE Product unit price 20 No
PRODUCTS[index1].PRODUCT_OPTIONS Product pricing options configured in the 2Checkout Merchant Control Panel 0 No
PRODUCTS[index1].PRODUCT_OPTIONS[index2].OptionText Ignore internal var. 0 No
PRODUCTS[index1].PROMONAME Name of the promotion applied to the product Some promotion No
PRODUCTS[index1].QUANTITY Purchased product quantity 2 No
PRODUCTS[index1].SKU Product SKU SKU1234 No
PRODUCTS[index1].SHORT_DESCRIPTION Short product description 0 No
PRODUCTS[index1].TOTAL Total gross price per product line (before applying discounts) 40 No
PRODUCTS[index1].TOTAL_PRICE Total net price per product line (before applying discounts) 40 No
PRODUCTS[index1].TRIAL_PERIOD Product trial period. 7 No
PRODUCTS[index1].UNIT_PRICE Product unit price 20 No
PRODUCTS[index1].VAT VAT/Sales tax value per product line 3.8 No
PRODUCTS_DATA[index1].IdProduct Product ID number 0 No
PRODUCTS_DATA[index1].PRODUCT_SHORT_DESCRIPTION Short product description 0 No
PRODUCTS_NO Number of products in cart 0 No
REFERENCE_NUMBER_EXTERNAL External order reference (can be added by the merchant as buy link parameter) 0 No
REFNO Order reference number 9xxxxxx No
REFNOEXT External order reference (can be added by the merchant as buy link parameter) 0 No
REGISTRATIONNUMBER Shopper's registration number used on the billing information 0 No
REGISTRATION_NUMBER Shopper's registration number used on the billing information 0 No
RETRYLINK Payment retry link 0 No
RETRY_LINK Payment retry link 0 No
SELLERCOMPANY Merchant's company name 0 No
SELLERID Seller ID 0 No
SHIPPING Shipping fee amount 2 No
SHIPPING_FEE Shipping fee amount 2 No
SHOPPER_ADDRESS_1_BILLING First section of the billing address 123, Main Street No
SHOPPER_ADDRESS_1_DELIVERY First section of the delivery address 123, Main Street No
SHOPPER_ADDRESS_2_BILLING Second section of the billing address 0 No
SHOPPER_ADDRESS_2_DELIVERY Second section of the delivery address 0 No
SHOPPER_BANK_ACCOUNT Shopper's bank account used on the billing information 0 No
SHOPPER_BANK_NAME Shopper's bank name used on the billing information 0 No
SHOPPER_CITY_BILLING Shopper's city used on the billing information Anytown No
SHOPPER_CITY_DELIVERY Shopper's city used on the delivery information Anytown No
SHOPPER_COMPANY_BILLING Shopper's company name used on the billing information Customer company No
SHOPPER_COMPANY_DELIVERY Shopper company name used on the delivery information. If no delivery information is available. no company name is displayed. Customer company No
SHOPPER_COUNTRY_BILLING Shopper's country used on the billing information U.S.A No
SHOPPER_COUNTRY_DELIVERY Shopper's country used on the delivery information U.S.A No
SHOPPER_EMAIL_ADDRESS_BILLING Shopper's email address used on the billing information example@customer-email.com No
SHOPPER_PHONE_BILLING Shopper's phone number used on the billing information 0 No
SHOPPER_PHONE_DELIVERY Shopper's phone number used on the delivery information 555-555-555 No
SHOPPER_STATE_BILLING Shopper's state used on the billing information Anystate No
SHOPPER_STATE_DELIVERY Shopper's state used on the delivery information Anystate No
SHOPPER_ZIP_CODE_BILLING Shopper's ZIP code used on the billing information 12345 No
SHOPPER_ZIP_CODE_DELIVERY Shopper's ZIP code used on the delivery information 12345 No
STATE Shopper's state used on the billing information Anystate No
STATE_D Shopper's state used on the delivery information Anystate No
SUBTOTAL The order amount without vat and shipping 79 No
SUPPORTEMAIL Merchant support email address 0 No
SUPPORTPHONE Merchant support phone number 0 No
TECHEMAIL Merchant support email address 0 No
TECHPHONE Merchant support phone number 0 No
TOTALEQUIV Order amount converted in all vendor currencies 0 No
TOTAL_DISCOUNT Total order discount 3 No
TOTAL_VAT Total order VAT 0 No
UPLOADLINK File upload link 0 No
UPLOAD_LINK File upload link 0 No
USER_EMAIL Email address used by shopper to login/signup to myAccount example@customer-email.com No
USER_TOKEN Shopper token for 2Checkout myAccount access 0 No
VALIDATION_CODE Global Collect validation code VA0122 No
WEBSITE Website where the shopper placed the order http://www.software-company-website.com No
ZIPCODE Shopper's ZIP code used on the billing information 12345 No
ZIPCODE_D Shopper's ZIP code used on the delivery information 12345 No

Need help?

Do you have a question? If you didn’t find the answer you are looking for in our documentation, you can contact our Support teams for more information. If you have a technical issue or question, please contact us. We are happy to help.

Not yet a Verifone customer?

We’ll help you choose the right payment solution for your business, wherever you want to sell, in-person or online. Our team of experts will happily discuss your needs.

Verifone logo