NAV Navbar
  • Introduction
  • 613-540-6439
  • 727-942-3564
  • Order API
  • 9894629435
  • Reference Documentation
  • reordinate
  • Introduction

    Overview

    PSiGate specializes in the integration and deployment of e-commerce payment service solutions, enabling secure and automated authorization and fulfillment of debit (Interac Online) and credit card transactions. PSiGate communicates directly with major Canadian and US financial institutions, and supports businesses that wish to deploy an online storefront.

    Purpose

    This document provides merchants and their affiliates with the tools required to integrate the REST API with PSiGate to receive and process merchant transaction requests.

    Contact Support

    Phone: 1-877-374-9444

    Technical Support: support@psigate.com

    Merchant Services or Support: merchant.services@psigate.com

    Sales: sales@psigate.com

    Base URL

    PSiGate provides two distinct environments for API requests, staging for testing and production for live transactions.

    The environments are completely separate and share no information, including API credentials.

    Staging URL

    Process test transactions with the following URL:

    /apistaging.psigate.com/api/

    Production URL

    Process live transactions with the following URL:

    /api.psigate.com/api/

    Credit Card Test Numbers

    Visa Credit Card

    4111111111111111
    4012000033330026
    4111111111111112
    4012000033330036
    4005550000000019
    4387751111111111
    4387752222222227
    4005519255555555
    4116110000000018

    MasterCard 5-Series Card

    5454545454545454
    5424180279791732
    5191230005263745
    5442982222222220
    5405070000000011
    5529040000000015

    MasterCard 2-Series Card

    2221011111222226
    2221000000111111
    2720999999111113
    2222400041240011
    2223000048400011

    Discover Card (MasterCard)

    6011000991300009

    American Express Card

    371449635398431

    Account Manager API

    Authentication

    curl "/apistaging.psigate.com/api/oauth/token?username={{userId}}&password={{password}}&grant_type=password"
      -X POST 
      -H "Authorization: Basic {{base64}}"
      -H "Content-Type: application/json"
    

    An access token is required for all PSiGate Account Manager API requests.

    To generate an access token, send a POST request to the /oauth/token endpoint with the following Basic Authorization included in the header:

    Authorization: Basic {{base64}}

    Variable Description
    userId User ID
    password User password
    base64 BASE64 encoded string {{clientId}}:{{clientApiKey}}
    clientId Client ID
    clientApiKey Client API Key

    Create Account

    curl "/apistaging.psigate.com/api/secure/accounts"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "id": "Account-00", \ 
       "clientInfo": { \ 
         "name": "Dorothy Gale", \ 
         "company": "Emerald City", \ 
         "address": { \ 
           "address1": "3 Yellow Brick Road", \ 
           "address2": "Suite 02", \ 
           "city": "Topeka", \ 
           "province": "KS", \ 
           "postalCode": "66601", \ 
           "country": "US" \ 
         }, \ 
         "contactInfo": { \ 
           "email": "dorothy.gale@oz.zop", \ 
           "phone": "(555) 555 5555" \ 
           "fax": "(555) 555 5556", \ 
         } \ 
       }, \ 
       "cards": [ \ 
         { \ 
           "cardHolder": "Dorothy Gale", \ 
           "cardNumber": "4111111111111111", \ 
           "cardExpMonth": "05", \ 
           "cardExpYear": "23" \ 
         } \ 
       ], \ 
       "comments": "No comment.", \ 
     }"
    

    To create an account, send a POST request to the /secure/accounts endpoint with the access token included in the header.

    Create Account from Existing Order

    curl "/apistaging.psigate.com/api/secure/accounts?orderId={{orderId}}&storeId={{storeId}}&accountId="
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To create an account from an existing order, send a POST request to the /secure/accounts endpoint with the access token included in the header and the query parameters accountId, storeId, and orderId.

    Valid query parameter example:

    ?orderId=2018061121513709294&storeId=webinardemoCAD&accountId=

    Retrieve Account List

    curl "/apistaging.psigate.com/api/secure/accounts"
      -X GET
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To retrieve a list of accounts, send a GET request to the /secure/accounts endpoint with the access token included in the header.

    Optional Query Parameters

    accountId, name, company, address1, address2, city, province, postalCode, country, phone, fax, email, comments, active (with value true or false), dateFrom (with format yyyy.MM.dd), dateTo (with format yyyy.MM.dd), likeCountry, likeCountryCode, likeAccountId, likeName, likeEmail, likePhone, likeCompany, orderBy (with value accountId, active, enteredTime, name, or company), and orderType (with value asc or desc).

    Valid query parameter example:

    ?name=Savannah Bartucci

    Retrieve Account by accountId

    curl "/apistaging.psigate.com/api/secure/accounts/{{accountId}}"
      -X GET
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To retrieve an account, send a GET request to the /secure/accounts/{{accountId}} endpoint with the access token included in the header.

    Update Account

    curl "/apistaging.psigate.com/api/secure/accounts/{{accountId}}"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
         "id": "Account-00", \ 
         "clientInfo": { \ 
             "name": "Dorothy Gale", \ 
             "company": "Emerald City", \ 
             "address": { \ 
                 "address1": "3 Yellow Brick Road", \ 
                 "address2": "Suite 02", \ 
                 "city": "Topeka", \ 
                 "province": "KS", \ 
                 "postalCode": "66601", \ 
                 "country": "US" \ 
             }, \ 
             "contactInfo": { \ 
                 "phone": "555.555.5555", \ 
                 "fax": "555.555.5556", \ 
                 "email": "dorothy.gale@oz.zop" \ 
             } \ 
         }, \ 
         "comments": "No comment." \ 
     }"
    

    To update account details, send a PUT request to the /secure/accounts/{{accountId}} endpoint with the access token included in the header.

    Enable/Disable Account

    curl "/apistaging.psigate.com/api/secure/accounts/{{accountId}}/status"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "active": false \
     }"
    

    To enable or disable an account, send a PUT request to the /secure/accounts/{{accountId}}/status endpoint with the access token included in the header.

    Variable Description
    active Account activation status: true (activated), false (de-activated)

    Add Card to Account

    curl "/apistaging.psigate.com/api/secure/accounts/{{accountId}}/cards"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
         "cardHolder": "Dorothy Gale", \ 
         "cardNumber": "5454545454545454", \ 
         "cardExpMonth": "04", \ 
         "cardExpYear": "20" \ 
     }"
    

    To add a card to an account, send a POST request to the /secure/accounts/{{accountId}}/cards endpoint with the access token included in the header.

    Create Card from Existing Order

    curl "/apistaging.psigate.com/api/secure/accounts/{{accountId}}/cards?orderId={{orderId}}&storeId={{storeId}}"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To create an account from an existing order, send a POST request to the /secure/accounts/{{accountId}}/cards endpoint with the access token included in the header and the query parameters storeId, and orderId.

    Valid query parameter example:

    ?orderId=2018061121513709294&storeId=webinardemoCAD

    Remove Card from Account

    curl "/apistaging.psigate.com/api/secure/accounts/{{accountId}}/cards/{{cardId}}"
      -X DELETE
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To remove a card from an account, send a DELETE request to the /secure/accounts/{{accountId}}/cards/{{cardId}} endpoint with the access token included in the header.

    Update Card

    curl "/apistaging.psigate.com/api/secure/accounts/{{accountId}}/cards/{{cardId}}"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
         "cardExpMonth": "10", \ 
         "cardExpYear": "22" \ 
     }"
    

    To update card details, send a PUT request to the /secure/accounts/{{accountId}}/cards/{{cardId}} endpoint with the access token included in the header.

    Enable/Disable Card

    curl "/apistaging.psigate.com/api/secure/accounts/{{accountId}}/cards/{{cardId}}/status"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "active": false \
     }"
    

    To enable or disable a card, send a PUT request to the /secure/accounts/{{accountId}}/cards/{{cardId}}/status endpoint with the access token included in the header.

    Variable Description
    active Card activation status: true (activated), false (de-activated)

    Create Charge

    curl "/apistaging.psigate.com/api/secure/charges"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "id": "Charge-00", \
       "accountId": "Account-00", \
       "storeId": "Store-00", \ 
       "interval": "M", \ 
       "trigger": "15", \ 
       "processType": "P", \ 
       "cardId": "1", \ 
       "rbName": "Dog Treats", \ 
       "cardIdNumber": "555", \ 
       "installmentNo": 0, \ 
       "splitFunded": [ \ 
         { \ 
           "storeId": "Store-00", \ 
           "splitAmount": 10.00 \ 
         }, \ 
         { \ 
           "storeId": "Store-01", \ 
           "splitAmount": 10.00 \ 
         } \ 
       ], \ 
       "items": [ \ 
         { \
           "productId": "TT-00", \ 
           "description": "Toto Treats", \ 
           "quantity": 3, \ 
           "price": 5.00, \ 
           "tax1": 0.50, \ 
           "tax2": 0.50, \ 
           "shipping": 4.00 \ 
         } \ 
       ] \ 
     }"
    

    To create a charge, send a POST request to the /secure/charges endpoint with the access token included in the header.

    Create Immediate Charge

    curl "/apistaging.psigate.com/api/secure/charges"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "id": "Charge-00", \
       "accountId": "Account-00", \
       "storeId": "Store-00", \ 
       "rbName": "Immediate Charge", \ 
       "cardId": "1", \
       "cardIdNumber": "555", \ 
       "splitFunded": [ \ 
         { \ 
           "storeId": "Store-00", \ 
           "splitAmount": 10.00 \ 
         }, \ 
         { \ 
           "storeId": "Store-01", \ 
           "splitAmount": 10.00 \ 
         } \ 
       ], \ 
       "items": [ \ 
         { \
           "productId": "TT-00", \ 
           "description": "Toto Treats", \ 
           "quantity": 3, \ 
           "price": 5.00, \ 
           "tax1": 0.50, \ 
           "tax2": 0.50, \ 
           "shipping": 4.00 \ 
         } \ 
       ] \ 
     }"
    

    To create a charge, send a POST request to the /secure/charges endpoint with the access token included in the header.

    Retrieve Charge List

    curl "/apistaging.psigate.com/api/secure/charges"
      -X GET
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To retrieve a list of charges, send a GET request to the /secure/charges endpoint with the access token included in the header.

    Optional Query Parameters

    chargeId, accountId, templateId, rbName, interval (with value A, Q, X, S, W, D, M, or O), trigger, processType (with value A, P, I, or M), active (with value true or false), dateFrom (with format yyyy.MM.dd), dateTo (with format yyyy.MM.dd), orderBy (with value rbName, active, enteredTime, startDate, endDate, interval, or trigger), and orderType (with value asc or desc).

    Variable Description
    chargeId id value of the referenced Charge
    accountId id value of the referenced Account
    templateId id value of the referenced Charge Template
    rbName Charge description
    interval Charge interval
    trigger Date to process the charge
    processType Processing instructions for a charge: A (Auth & Capture), P (Authorize Only), I (Installment), M (Manual/Invoice but do not authorize)
    active Activation status of the Charge
    dateFrom First eligible date to process the Charge
    dateTo Last eligible date to process the Charge
    orderBy Variable used to Sort the Charge List by: rbName, active, enteredTime, startDate, endDate, interval, trigger
    orderType Sort Type: asc (Ascending) or desc (Descending)

    Valid query parameter example:

    `?chargeId=2016040514550665610

    Retrieve Charge by chargeId

    curl "/apistaging.psigate.com/api/secure/charges/{{chargeId}}"
      -X GET
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To retrieve a charge, send a GET request to the /secure/charges/{{chargeId}} endpoint with the access token included in the header.

    Delete Charge

    curl "/apistaging.psigate.com/api/secure/charges/{{chargeId}}"
      -X DELETE
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To remove a charge, send a DELETE request to the /secure/charges/{{chargeId}} endpoint with the access token included in the header.

    Update Charge

    curl "/apistaging.psigate.com/api/secure/charges/{{chargeId}}"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "id": "Charge-00", \ 
       "accountId": "Account-00", \ 
       "storeId": "Store-00", \ 
       "active": true, \ 
       "interval": "M", \ 
       "trigger": "15", \ 
       "cardId": "1", \ 
       "rbName": "Dog Treats" \ 
     }"
    

    To update charge details, send a PUT request to the /secure/charges/{{chargeId}} endpoint with the access token included in the header.

    Update Charges en masse by templateId

    curl "/apistaging.psigate.com/api/secure/charges/sync/{{chargeTemplateId}}"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To update charge details for all charges with the same templateId, send a PUT request to the /secure/charges/sync/{{chargeTemplateId}} endpoint with the access token included in the header.

    Enable/Disable Charge

    curl "//apistaging.psigate.com/api/secure/charges/{{chargeId}}/status"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "active": false \
     }"
    

    To enable or disable a charge, send a PUT request to the /secure/charges/{{chargeId}}/status endpoint with the access token included in the header.

    Add Charge Item

    curl "/apistaging.psigate.com/api/secure/charges/{{chargeId}}/items"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "productId": "TT-01", \ 
       "description": "Toto Treats Vegan", \ 
       "quantity": 2, \ 
       "price": 7.30, \ 
       "tax1": 0.70, \ 
       "tax2": 0.70, \ 
       "shipping": 4.00m \ 
     }"
    

    To add an item to a charge, send a POST request to the /secure/charges/{{chargeId}}/items endpoint with the access token included in the header.

    Remove Charge Item

    curl "/apistaging.psigate.com/api/secure/charges/{{chargeId}}/items/{{itemId}}"
      -X DELETE
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To remove an item from a charge, send a DELETE request to the /secure/charges/{{chargeId}}/items/{{itemId}} endpoint with the access token included in the header.

    Enable/Disable Charge Item

    curl "/apistaging.psigate.com/api/secure/charges/{{chargeId}}/items/{{itemId}}/status"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "active": false \
     }"
    

    To enable or disable a charge item, send a PUT request to the /secure/charges/{{chargeId}}/items/{{itemId}}/status endpoint with the access token included in the header.

    Retrieve Invoice List

    curl "/apistaging.psigate.com/api/secure/invoices"
      -X GET
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To retrieve a list of invoices, send a GET request to the /secure/invoices endpoint with the access token included in the header.

    Optional Query Parameters

    invoiceNo, likeInvoiceNo, payerName, likePayerName, subNo, storeId, status, accountId, likeAccountId, processType (with value A, P, I, or M), active (with value true or false), dateFrom (with format yyyy.MM.dd), dateTo (with format yyyy.MM.dd), orderBy (with value invoiceNo, payerName, invoiceTotal, accountId, or invoiceDate), or orderType (with value asc or desc).

    Variable Description
    invoiceNo id value of the referenced Invoice
    likeInvoiceNo LIKE search of the invoiceNo
    payerName Name of the cardholder
    likePayerName LIKE search of the payerName
    subNo id value of the referenced Installment
    storeId id value of the Store
    status Status of the Invoice
    accountId id value of the Account
    likeAccountId LIKE search of the accountId
    processType Processing instructions for a charge: A (Auth & Capture), P (Authorize Only), I (Installment), M (Manual/Invoice but do not authorize)
    active Activation status of the Charge
    dateFrom First eligible date to process the Charge
    dateTo Last eligible date to process the Charge
    orderBy Variable used to Sort the Charge List by: invoiceNo, payerName,
    orderType Sort Type: asc (Ascending) or desc (Descending)

    Valid query parameter example:

    `?invoiceNo=invoiceNo=000006

    Update Invoice Status to Paid/Outstanding

    curl "/apistaging.psigate.com/api/secure/invoices/{{invoiceNo}}/status"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "status": Paid \
     }"
    

    To enable or disable a card, send a PUT request to the /secure/invoices/invoiceNo/status endpoint with the access token included in the header.

    Variable Description
    status Invoice status: 'Paid', 'Outstanding' or 'Cancelled'

    Pre-Authorize Invoices

    curl "/apistaging.psigate.com/api/secure/invoices/preAuth"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       [ \
       { \
       "invoiceNo":"INVOICE-01" \
       }, \
       { \
       "invoiceNo":"INVOICE-02" \
       } \
       ] \
     }" \
    

    To pre-authorize an invoice, send a PUT request to the /secure/invoices/preAuth endpoint with the access token included in the header.

    Post-Authorize Invoices

    curl "/apistaging.psigate.com/api/secure/invoices/postAuth"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       [ \
       { \
       "invoiceNo":"INVOICE-01" \
       }, \
       { \
       "invoiceNo":"INVOICE-02" \
       } \
       ] \
     }" \
    

    To post-authorize an invoice, send a PUT request to the /secure/invoices/postAuth endpoint with the access token included in the header.

    Rebill Invoices

    curl "/apistaging.psigate.com/api/secure/invoices/rebill"
      -X PUT
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       [ \
       { \
       "invoiceNo":"INVOICE-01" \
       }, \
       { \
       "invoiceNo":"INVOICE-02" \
       } \
       ] \
     }" \
    

    To rebill an outstanding invoice, send a PUT request to the /secure/invoices/rebill endpoint with the access token included in the header.

    Order API

    Authentication

    curl "/apistaging.psigate.com/api/oauth/token?username={{storeId}}&password={{passphrase}}&grant_type=password"
      -X POST 
      -H "Authorization: Basic {{base64}}"
      -H "Content-Type: application/json"
    

    An access token is required for all PSiGate Order API requests.

    To generate an access token, send a POST request to the /oauth/token endpoint with the following Basic Authorization included in the header:

    Authorization: Basic {{base64}}

    Variable Description
    storeId Store ID
    passphrase Store passphrase
    base64 BASE64 encoded string {{clientId}}:{{clientApiKey}}
    clientId Client ID
    clientApiKey Client API Key

    Basic Order

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "storeId": "webinardemoCAD", \
       "paymentType":"CC", \ 
       "cardAction": "0", \ 
       "orderPaymentCardInfo": { \ 
         "cardNumber": "4111111111111111", \ 
         "cardExpMonth": "05", \ 
         "cardExpYear": "23", \ 
         "cardIdNumber": "555" \ 
       }, \ 
       "orderChargeInfo": { \ 
         "subTotal": 55.00 \ 
       } \ 
     }"
    

    To submit an order transaction, send a POST request to the /secure/orders endpoint with the access token included in the header.

    Variable Description
    storeId Store ID
    paymentType Payment method
    cardAction Transaction type: 0 (Sale), 1 (PreAuth), 2 (PostAuth), 3 (Credit), 4 (ForcedPostAuth), 6 (ForceAuth), 8 (PureCredit) and 9 (Void)
    cardNumber Credit card number
    cardExpMonth Credit card expiry date (month)
    cardExpYear Credit card expiry date (year)
    cardIdNumber Visa Card Verification Value 2 (CVV2), MasterCard Card Validation Code (CVC2), or Amex Card Identification (CID) number
    subTotal Required for all transactions except PostAuth (2) and Void (9)
    testResult Authorization results may be simulated: A (Approved), D (Declined), R (Random), F (Fraud)
    transactionRefNumber Required and used only by Void transactions.

    Add Order Detail

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "storeId": "webinardemoCAD", \ 
       "paymentType":"CC", \ 
       "cardAction": "0", \ 
       "orderPaymentCardInfo": { \ 
         "cardNumber": "4111111111111111", \ 
         "cardExpMonth": "05", \ 
         "cardExpYear": "23", \ 
         "cardIdNumber": "555" \ 
       }, \ 
       "orderClientInfo": { \ 
         "email": "doroty.gale@oz.zop", \ 
         "fax": "555.555.5556", \ 
         "phone": "555.555.5555", \ 
         "userId": "Account-00", \ 
         "requestIp": "192.168.0.1" \ 
       }, \ 
       "orderChargeInfo": { \ 
         "taxInfo": { \ 
           "tax1": 0.50, \ 
           "tax2": 0.05, \ 
         }, \ 
        "shippingTotal": 5.00, \ 
        "subTotal": 55.55 \ 
       }, \ 
       "additionalCardDetail": { \ 
         "cardAuthNumber": "", \  
         }, \ 
        "shippingTotal": 5.00, \ 
        "subTotal": 55.55 \ 
       }, \ 
       "comments": "No comment." \ 
     }"
    
    Variable Description
    email Client email address
    fax Client fax number
    phone Client phone number
    userId Client User ID
    requestIp Client IP address
    tax1 Component of taxTotal
    tax2 Component of taxTotal
    tax3 Component of taxTotal
    tax4 Component of taxTotal
    tax5 Component of taxTotal
    shippingTotal Total shipping value
    comments Comments regarding transaction
    cardAuthNumber Authorization Code required and used by only Forced Post Auth transactions

    Add Billing and Shipping Detail

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "storeId": "webinardemoCAD", \ 
       "paymentType":"CC", \ 
       "cardAction": "0", \ 
       "orderId": "", \
       "orderPaymentCardInfo": { \ 
         "cardNumber": "4111111111111111", \ 
         "cardExpMonth": "05", \ 
         "cardExpYear": "23", \ 
         "cardIdNumber": "555" \ 
       }, \ 
       "orderBillingInfo": { \ 
         "name": "Em Gale", \ 
         "company": "Silver Slippers", \ 
         "address": { \ 
           "address1": "40 Chicken Lane", \ 
           "address2": "Box M", \ 
           "city": "Topeka", \ 
           "province": "KS", \ 
           "postalCode": "66601", \ 
           "country": "US" \ 
         } \ 
       }, \ 
       "orderShippingInfo": { \ 
         "name": "Bill Hugson", \ 
         "company": "Hugson Ranch", \ 
         "address": { \ 
           "address1": "99 Red Street", \ 
           "address2": "Box B", \ 
           "city": "Topeka", \ 
           "province": "KS", \ 
           "postalCode": "66601", \ 
           "country": "CA" \ 
         } \
       }, \ 
       "orderClientInfo": { \ 
         "email": "dorothy.gale@oz.zop", \ 
         "fax": "555.555.5556", \ 
         "phone": "555.555.5555", \ 
         "userId": "Account-00", \ 
         "requestIp": "192.168.0.1" \ 
       }, \ 
       "orderChargeInfo": { \ 
         "subTotal": 55.00 \ 
       } \ 
     }"
    
    Variable Description
    orderId Merchant's Order ID, leave blank to have PSiGate generate the Order ID
    name Billing/shipping customer name
    company Billing/shipping company name
    address1 Billing/shipping address (line one)
    address2 Billing/shipping address (line two)
    city Billing/shipping address (city)
    province Billing/shipping address (province, state, or region)
    postalCode Billing/shipping address (postal or zip code)
    country Billing/shipping address (country)
    email Contact email address for the order
    fax Contact fax number for the order
    phone Contact phone number for the order

    Add Item Detail

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "storeId": "webinardemoCAD", \ 
       "paymentType":"CC", \ 
       "cardAction": "0", \ 
       "orderPaymentCardInfo": { \ 
         "cardNumber": "4111111111111111", \ 
         "cardExpMonth": "05", \ 
         "cardExpYear": "23", \ 
         "cardIdNumber": "555" \ 
       }, \ 
       "items": [ \ 
         { \ 
           "itemId": "PB-00", \ 
           "itemDescription": "Picnic Basket", \ 
           "itemQty": 1, \ 
           "itemPrice": 20.00, \ 
         } \ 
       ] \ 
     }" 
    

    Item details may be included with the transaction request, and displayed in the merchant online reports and email receipts.

    Variable Description
    itemId Merchant product, item, or service reference code
    itemDescription Description of the product, item, or service
    itemQty Quantity of the product or item purchased
    itemPrice Unit cost of the product or item

    Add Item Option Detail

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "storeId": "webinardemoCAD", \ 
       "paymentType":"CC", \ 
       "cardAction": "0", \ 
       "orderPaymentCardInfo": { \ 
         "cardNumber": "4111111111111111", \ 
         "cardExpMonth": "05", \ 
         "cardExpYear": "23", \ 
         "cardIdNumber": "555" \ 
       }, \ 
       "items": [ \ 
         { \ 
           "itemId": "PB-00", \ 
           "itemDescription": "Picnic Basket", \ 
           "itemQty": 1, \ 
           "itemPrice": 20.00, \ 
           "options": [ \ 
             { \ 
               "name": "Type", \ 
               "value": "Wicker" \ 
             } \ 
           ] \ 
         } \ 
       ] \ 
     }" 
    

    Additionally, merchants may require customized item descriptors. Merchants may add item options, such as colour, size, or weight to their item detail.

    Variable Description
    name Additional product, item, or service information
    value Additional product, item, or service information

    Add Coupon Detail

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "storeId": "webinardemoCAD", \ 
       "paymentType":"CC", \ 
       "cardAction": "0", \ 
       "orderPaymentCardInfo": { \ 
         "cardNumber": "4111111111111111", \ 
         "cardExpMonth": "05", \ 
         "cardExpYear": "23", \ 
         "cardIdNumber": "555" \ 
       }, \ 
       "items": [ \ 
         { \ 
           "itemId": "Coupon-00", \ 
           "itemDescription": "10% Discount", \ 
           "itemQty": 1, \ 
           "itemPrice": -2.00, \ 
         } \ 
       ] \ 
     }" 
    

    Coupons may be applied by including an additional item that has a negative item price dollar value. The coupon value is then subtracted from the total dollar value of all items prior to processing a card authorization.

    Add Fraud Checking Detail

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "storeId": "webinardemoCAD", \ 
       "paymentType":"CC", \ 
       "cardAction": "0", \ 
       "orderPaymentCardInfo": { \ 
         "cardNumber": "4111111111111111", \ 
         "cardExpMonth": "05", \ 
         "cardExpYear": "23", \ 
         "cardIdNumber": "555" \ 
       }, \ 
       "orderBillingInfo": { \ 
         "address": { \ 
           "address1": "3 Yellow Brick Road", \ 
           "address2": "Suite 02", \ 
           "city": "Topeka", \ 
           "province": "KS", \ 
           "postalCode": "66601", \ 
           "country": "CA" \ 
         }, \ 
       }, \ 
       "orderClientInfo": { \ 
         "requestIp": "192.168.0.1" \ 
       }, \ 
       "orderChargeInfo": { \ 
         "subTotal": 55.00 \ 
       } \ 
     }" 
    

    To fully utilize the payment engine fraud checking capabilities, include credit card verification data (CVV2, CVC2, and CID), address verification data, and the request IP address.

    Variable Description
    requestIp Customer's IP address

    Add Level 2 Credit Card Processing Detail

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "storeId": "webinardemoCAD", \ 
       "paymentType":"CC", \ 
       "cardAction": "0", \ 
       "orderPaymentCardInfo": { \ 
         "cardNumber": "4111111111111111", \ 
         "cardExpMonth": "05", \ 
         "cardExpYear": "23", \ 
         "cardIdNumber": "555" \ 
       }, \ 
       "purchaseLevel2Info": { \ 
         "cardLevel2ComCardType": "B", \ 
         "cardLevel2Po": "", \ 
         "cardLevel2ShipToZip": "", \ 
         "cardLevel2Tax": "0.05", \ 
         "cardLevel2TaxExempt": "" \ 
       }, \ 
       "orderChargeInfo": { \ 
         "subTotal": 55.00 \ 
       } \ 
     }" 
    

    Visa and Mastercard created a specialized type of credit card used primarily by government agencies and businesses. Businesses that accept these cards enable their government or corporate clients to include special purchase information (Level 2 card data) that will help the government agency or corporation reconcile the transaction. In exchange for enabling Level 2 Card data acceptance, merchants receive their funds quicker, pay lower fees, and have a greater chance of winning government contracts where purchasing cards are the required form of payment.

    Variable Description
    cardLevel2ComCardType Commercial card type: unknown (leave blank), business (B), corporate (C), and purchasing (P)
    cardLevel2Po Information displayed on the credit card statement
    cardLevel2ShipToZip Postal or zip code of the shipping address displayed on the credit card statement
    cardLevel2Tax Tax amount displayed on the credit card statement
    cardLevel2TaxExempt Tax exemption status displayed on the credit card statement

    Add Track 2 Detail

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "storeId": "webinardemoCAD", \ 
       "paymentType":"CC", \ 
       "cardAction": "0", \ 
       "additionalCardDetails": { \ 
         "trackII": ";4005550000000019=99011200XXXX00000000?*" \ 
       }, \ 
       "orderChargeInfo": { \ 
         "subTotal": 55.00 \ 
       } \ 
     }" 
    

    There are up to three tracks on magnetic cards known as Tracks 1, 2, and 3. Track 3 is virtually unused by the major worldwide networks, and often isn't even physically present on the card by virtue of a narrower magnetic stripe. Point-of-sale card readers almost always read Track 1, or Track 2, and sometimes both, in case one track is unreadable. The minimum cardholder account information needed to complete a transaction is present on both tracks. The Track 2 format was developed by the banking industry (ABA) and was written with a 5-bit scheme (4 data bits + 1 parity), which allows for sixteen possible characters, which are the numbers 0-9, plus the six characters : ; < = > ? .

    This request uses the Track2 data retrieved from swiping a customer’s credit card through a point-of-sale reader to get an authorization for the customer’s purchase.

    Variable Description
    trackII Credit card magnetic stripe Track 2 information

    Add Split Funding

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "storeId": "webinardemoCAD", \ 
       "paymentType":"CC", \ 
       "cardAction": "0", \ 
       "orderPaymentCardInfo": { \ 
         "cardNumber": "4111111111111111", \ 
         "cardExpMonth": "05", \ 
         "cardExpYear": "23", \ 
         "cardIdNumber": "555" \ 
       }, \ 
       "orderChargeInfo": { \ 
         "subTotal": 55.00 \ 
       }, \ 
       "splitFunded": [ \ 
         { \ 
           "storeId": "webinardemoCAD", \ 
           "splitAmount": 44.00   \ 
         }, \ 
         { \ 
           "storeId": "webinardemoTest", \ 
           "splitAmount": 11.00 \ 
         } \ 
       ], \ 
     }" 
    

    Split Funding allows merchants to distribute transaction funds across multiple stores without the cardholder receiving multiple billing line items.

    Variable Description
    splitAmount Component of the split funding total value

    Add Stored Credential instructions

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
       "storeId": "webinardemoCAD", \ 
       "paymentType":"CC", \
       "recurring": "Y", \
       "iteration": 1, \ 
       "cardAction": "0", \ 
       "orderPaymentCardInfo": { \ 
         "cardNumber": "4111111111111111", \ 
         "cardExpMonth": "05", \ 
         "cardExpYear": "23", \ 
         "cardIdNumber": "555" \ 
       }, \ 
       "orderChargeInfo": { \ 
         "subTotal": 30.00 \ 
       }, \ 
     }" 
    

    Visa and Mastercard's framework for merchant or cardholder-initiated transactions that include stored credentials. The framework defines the rules and requirements for initial storage and subsequent use of payment credentials. Merchants are required to establish a consent agreement with the cardholder prior to storing credentials for future use. Stored credentials are defined as information that is stored by a merchant, a merchant’s agent, a Payment Facilitator or a Staged Digital Wallet Operator to process future purchases for a cardholder. In addition to disclosing to cardholders how their credentials will be used, obtaining cardholder’s consent to store their credentials, and notifying cardholders when any changes are made to the terms of use, merchants are required to inform issuers when payment credentials are stored on file, the type of agreement the merchant has with the cardholder and whether the transaction was an initial purchase or subsequent purchase.

    Variable Description
    recurring Indicate the stored credential agreement that exists with the cardholder: Y (Recurring), I (Installment), C (Cardholder-initiated)
    iteration Indicate usage history of the stored credentials: 1 (initial), 2 (subsequent)

    Basic Forced PostAuth

    curl "/apistaging.psigate.com/api/secure/orders"
      -X POST
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
      -d "{ \
      "paymentType":"CC", \
      "cardAction": 4, \
      "orderPaymentCardInfo":{ \
        "cardNumber":"{{cardNumber}}", \
        "cardExpMonth":"{{expMonth}}", \
        "cardExpYear":"{{expYear}}", \
        "cardType":"MC", \
        "cardIdNumber":"{{cardID}}" \
      }, \
      "orderChargeInfo":{ \
        "subTotal":30.00 \
      }, \
      "additionalCardDetails":{ \
        "cardAuthNumber": 123456 \
      } \
    }" \
    

    To enable the processing of forced post-authorization requests, you must request permission by sending an email to merchant.services@psigate.com. To submit an order transaction, send a POST request to the /secure/orders endpoint with the access token included in the header.

    Variable Description
    cardAuthNumber Authorization code returned by the card issuer after a successful pre-authorization

    Retrieve Order List

    curl "/apistaging.psigate.com/api/secure/orders"
      -X GET
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To retrieve a list of orders, send a GET request to the /secure/orders endpoint with valid search parameters and the access token included in the header.

    search Parameter

    All search parameter fields and values are case sensitive.

    Valid search parameter fields:

    userId, processedTime, fullTotal, status, bName, sName, requestIp, paymentType, cardNumber, and cardType

    Valid search parameter operators:

    , field separator (comma)
    > greater than and equal to
    < less than and equal to
    = equal to
    ! like
    : between (colon) used with -
    - separates range values (dash) used with :

    Valid search parameter example:

    ?search=processedTime:2025/01/01-2025/12/31,userId=Account-00,status=CAPTURED

    Retrieve Order by orderId

    curl "/apistaging.psigate.com/api/secure/orders/{{orderId}}"
      -X GET
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To retrieve an order, send a GET request to the /secure/orders/{{orderId}} endpoint with the access token included in the header.

    Retrieve Transaction List

    curl "/apistaging.psigate.com/api/secure/transactions"
      -X GET
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To retrieve a list of transactions, send a GET request to the /secure/transactions endpoint with valid search parameters and the access token included in the header.

    search Parameter

    All search parameter fields and values are case sensitive.

    Valid search parameter fields:

    userId, processedTime, fullTotal, status, approved, transactionType, requestIp, cardNumber, and cardType

    Valid search parameter operators:

    , field separator (comma)
    > greater than and equal to
    < less than and equal to
    = equal to
    ! like
    : between (colon) used with -
    - separates range values (dash) used with :

    Valid search parameter example:

    ?search=processedTime:2025/01/01-2025/12/31,userId=Account-00,status=CAPTURED

    Funding API

    Retrieve Funding Slips List

    curl "/apistaging.psigate.com/api/secure/funding/slips"
      -X GET
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To retrieve a list of funding slips, send a GET request to the /secure/funding/slips endpoint with valid search parameters and the access token included in the header.

    search Parameter

    All search parameter fields and values are case sensitive.

    Valid search parameter fields:

    period, slipId

    Valid search parameter operators:

    , field separator (comma)
    > greater than and equal to
    < less than and equal to
    = equal to
    ! like
    : between (colon) used with -
    - separates range values (dash) used with :

    Valid search parameter example:

    `?search=period:2015/01/01-2018/07/30/2018

    Retrieve Funding Slip Lines List

    curl "/apistaging.psigate.com/api/secure/funding/sliplines"
      -X GET
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To retrieve a list of funding slip lines, send a GET request to the /secure/funding/sliplines endpoint with valid search parameters and the access token included in the header.

    search Parameter

    All search parameter fields and values are case sensitive.

    Valid search parameter fields:

    period, slipId

    Valid search parameter operators:

    , field separator (comma)
    > greater than and equal to
    < less than and equal to
    = equal to
    ! like
    : between (colon) used with -
    - separates range values (dash) used with :

    Valid search parameter example:

    `?search=period=2015/01/02

    Retrieve Funding Transaction Detail

    curl "/apistaging.psigate.com/api/secure/funding/transdetails"
      -X GET
      -H "Authorization: Bearer {{accessToken}}"
      -H "Content-Type: application/json"
    

    To retrieve a list of transaction details belonging to a funding line, send a GET request to the /secure/funding/transdetails endpoint with valid search parameters and the access token included in the header.

    search Parameter

    All search parameter fields and values are case sensitive.

    Valid search parameter fields:

    settlementDate, slipId, tranDate, paymentType, feeSlipId

    Valid search parameter operators:

    , field separator (comma)
    > greater than and equal to
    < less than and equal to
    = equal to
    ! like
    : between (colon) used with -
    - separates range values (dash) used with :

    Valid search parameter example:

    `?search=settlementDate=2015/01/02

    Reference Documentation

    For more reference documentation and testing, (504) 520-1229.

    Errors

    The PSiGate REST API may return the following error codes:

    Error Code Meaning
    400 Bad Request
    401 Unauthorized
    403 Forbidden
    404 Not Found
    405 Method Not Allowed
    406 Not Acceptable
    422 Unprocessable Entity
    429 Too Many Requests
    500 Internal Server Error
    503 Service Unavailable