eCommerce, POS, and mobile

Gravity’s latest payment processing solutions are built to be fast, scalable, and easy to integrate.

Emergepay is the cloud-based multi-interface integration that’s simple, fast, and works with any OS or platform—which makes it capable of being run on almost anything that can access the internet.

  • 24/7 user support
  • Full-service integration
  • Dedicated relationship manager

Integrate directly with cloud-based devices

Clover Flex | Clover Mini | Castle MP200 | Vega 3000 | Vega 3000 Mobile

Enjoy all of these features out of the box…

Accept credit cards

Accept debit cards with PIN

ACH payments

Save card support

Recurring billing from saved card token

PCI compliance and data security

Apple Pay and Google Pay

Signature capture

If a cloud platform is not right for you… Our Windows based desktop solution, EI Server, is a battle-tested strong arm for developers big & small and supports a versatile selection of payment devices.

Why choose Gravity as your strategic development partner?

Because we’re a privately held company, our focus is always going to be on creating long-term relationships—not on squeezing our partners in order to maximize our quarterly earnings.

Developer making software integrations

We're on your side

  • Expert 24/7 human support. No robots
  • Devoted industry consultants who solve your clients’ unique challenges
  • Ongoing business-education opportunities

Know what you're paying for

  • Total visibility into payments
  • Never any hidden fees or nasty surprises
  • Non-commissioned sales reps

Designed for independent businesses

  • Services to grow businesses
  • State-of-the-art processing technology
  • Price parity on processing and POS integrations

Secure and simple—emergepay API

Our developers are constantly looking for–and creating–great API solutions.

The cloud-based emergepay API is simple to use and available in common languages like JavaScript, TypeScript, PHP, and C#. emergepay makes it simple to add a payment modal, payment window, or a set of fields embedded into your application or site.

//transactionType: "CreditSale"
//install the npm modules: 'npm install express cors emergepay-sdk'
var express = require("express");
var cors = require("cors");
var sdk = require("emergepay-sdk");

//Your private and secure creditials
var oid = "your_oid"; //Organization ID
var authToken = "your_authToken"; //Secretly generated specific to you org
var environmentUrl = "environment_url"; //Sandbox or Production environment
var emergepay = new sdk.emergepaySdk({ oid: oid, authToken: authToken, environmentUrl: environmentUrl });

var app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());

app.post("/start-transaction", function (req, res) {
    var amount = "0.01";
    var config = {
        transactionType: sdk.TransactionType.CreditSale,
        method: "modal",
        fields: [
            {
                id: "base_amount",
                value: amount
            },
            {
                id: "external_tran_id",
                value: emergepay.getExternalTransactionId()
            }
        ]
    };
  
    emergepay.startTransaction(config)
    .then(function (transactionToken) {
        res.send({
            transactionToken: transactionToken
        });
    })
    .catch(function (err) {
        res.send(err.message);
    });
});

console.log("listening on port 5555");
app.listen(5555);
//transactionType: "CreditSale"
//install the npm modules: 'npm install express cors emergepay-sdk
import * as express from "express";
import * as cors from "cors";
import {emergepaySdk, TransactionType} from "emergepay-sdk";

//Your private and secure creditials
const oid: string = "your_oid";
const authToken: string = "your_authToken";
const environmentUrl: string = "environment_url";
const emergepay: emergepaySdk = new emergepaySdk({oid, authToken, environmentUrl});

const app: any = express();

app.use(express.json());
app.use(express.urlencoded({extended:true}));
app.use(cors());

//The client side can hit this endpoint by issuing a POST request to
//localhost:5555/start-transaction
//base_amount and external_tran_id are required in the fields array.
app.post("/start-transaction", (req, res) => {
    const amount = "0.01";
    const config: any = {
        transactionType: TransactionType.CreditSale,
        method: "hostedFields",
        fields: [
            {
                id : "base_amount",
                value : amount
            },
            {
                id : "external_tran_id",
                value : emergepay.getExternalTransactionId()
            }
        ]
    };

    emergepay.startTransaction(config)
        .then(transactionToken => {
            res.send({
                transactionToken: transactionToken
            });
        })
        .catch(err => {
            res.send(err.message);
        });
});

console.log("listening on port 5555");
app.listen(5555);
//transactionType: "CreditSale"
 array(
    'transactionType' => 'CreditSale',
    'method' => 'hostedFields',
    'fields' => array(
      array('id' => 'base_amount', 'value' => '0.01'),
      array('id' => 'external_tran_id', 'value' => GUID())
    )
  )
);

//Configure the request
$request = curl_init($url);
curl_setopt($request, CURLOPT_HEADER, false);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Bearer ' . $authToken));
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, json_encode($body));

//Issue the request and get the response
$response = curl_exec($request);
curl_close($request);

echo $response;

function GUID()
{
    if (function_exists('com_create_guid') === true)
    {
        return trim(com_create_guid(), '{}');
    }

    return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}
?>
//transactionType: "CreditSale"
public async Task<object> StartTransactionAsync(StartTransactionModel config)
{
  var response = new object();

//Use your private and secure creditials
  const string OID = "your_oid";
  const string AUTH_TOKEN = "your_authToken";
  const string ENDPOINT_URL = "environment_url";

  string url = $"{ENDPOINT_URL}/orgs/{OID}/transactions/start";

  var contents = new
  {
    transactionData = new
    {
      transactionType = "CreditSale",
      method = "hostedFields",
      fields = new[]
      {
        new { id = "base_amount",           value = config.Amount },
        new { id = "external_tran_id",      value = Guid.NewGuid().ToString() },
        new { id = "billing_name",          value = config.BillingName },
        new { id = "billing_address",       value = config.BillingAddress },
        new { id = "billing_postal_code",   value = config.BillingPostalCode },
        new { id = "transaction_reference", value = config.TransactionReference },
        new { id = "cashier_id",            value = config.CashierId }
      }
    }
  };

  try
  {
    using (var client = new HttpClient())
    {
      var transactionJson = JsonConvert.SerializeObject(contents);

      HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
      request.Headers.Add("Authorization", $"Bearer {AUTH_TOKEN}");
      request.Content = new StringContent(transactionJson, Encoding.UTF8, "application/json");

      var httpResponse = await client.SendAsync(request);
      var data = await httpResponse.Content.ReadAsStringAsync();
      response = JsonConvert.DeserializeObject(data);
    }
  }
  catch (Exception exc)
  {
    throw exc;
  }

  return response;
}

Get started now

Complete the form below...

  • This field is for validation purposes and should be left unchanged.

...or schedule a call.

Call us now at 866-701-4700 x467. Or schedule a time for one of our consultants call you.

Schedule it now