PayFabric for Sage Intacct

PayFabric for Sage Intacct connects Sage Intacct with the payment processing services of PayFabric. This document covers how to configure and utilize the functionality available with the PayFabric for Sage Intacct Application.

Table of Contents

Introduction

Introduction to PayFabric Sage Intacct

Prerequisites

Support

PayFabric Setup

Create a PayFabric Account

Create a Device

Setup a Gateway Account Profile

PayFabric for Sage Intacct Setup

PayFabric Gateway Account Profile Setup

PayFabric Wallet

PayFabric Transaction List

Processing a Transaction

PayFabric Transaction Screen

Transaction Types

Email Receipts

Amount Pane

Supported Sage Screens

Order Entry Sales Order

Order Entry Sales Invoice

Accounts Receivable Invoice

Accounts Receivable Receive Payments

PayFabric Permissions

Prevent users from accessing certain PayFabric Sage Forms

Copyright Information

 

Introduction to PayFabric:

PayFabric is a cloud-based payment acceptance platform and storage hub that can be integrated with any application, platform, and back office environment with ease and simplicity.

PayFabric offers real-time transaction processing for both credit card and ACH transactions while meeting the highest standards of security. PayFabric helps merchants reduce the scope of their PCI compliance by helping to remove credit card access from applications. By connecting to PayFabric, 3rd party applications are relieved of any access to sensitive credit card numbers. PayFabric can easily be integrated with applications to allow for shared management of customer’s credit card and ACH data.

 

Introduction to PayFabric Sage Intacct

PayFabric for Sage Intacct is an add-on service to Sage Intacct that provides businesses the tools to process payments for Sales Order, Sales Invoice and Accounts Receivable Invoice.

By leveraging the payment processing power of PayFabric, this offers real time payment processing for both credit card and ACH transactions while ensuring the highest standards of security are addressed. This document will cover how to configure and utilize PayFabric for Sage Intacct features and functionality.

 

Prerequisites

The following items should be obtained before starting with PayFabric for Sage Intacct.

PayFabric Organization Account
To use PayFabric for Sage Intacct, the organization must first be setup in PayFabric.

To set up an account for testing, go to https://sandbox.payfabric.com/Portal/Account/Register.

To set up a production account, contact the PayFabric partner or Sales@PayFabric.com.


To use PayFabric for Sage Intacct, it is assumed that the PayFabric account is setup for the organization and has an existing Payment Gateway Account Profile configured.
For more information on the setup and usage of PayFabric, refer to the PayFabric Portal Guide.

https://www.nodus.com/documentation/PayFabric-User-Guide.pdf 

 

Preconditions to Install PayFabric for Sage Intacct:

  • Ability to use Platform Services
  • User must be a user with system administrator permissions
  • Ability to install from XML (user must be a user with system administrator permissions.)

 

Support 

For support related inquiries or for questions not found within this document, contact PayFabric Support for further assistance. 

Contact Method Address/Numbers
Email support@PayFabric.com
Website https://www.payfabric.com/us/support.html
Telephone (909) 482-4701

 

PayFabric Setup

 

Create a PayFabric Account
The organization must first be setup in PayFabric. If a new account is needed, go to one of the
following pages to setup an account:

Live Production Account: Contact Sales@PayFabric.com
Testing Sandbox Account: https://sandbox.payfabric.com/Portal/Account/Register

Create a Device
The following steps can be used to create a Device in PayFabric to authenticate the connection
between PayFabric and Sage Intacct.


1. Log into the desired PayFabric account
2. From the left menu, navigate to Settings > Dev Central
3. On the ‘DEV Central’ page, select the Themes tab
4. Click the ‘Create New +’ button and enter a name for the theme as ‘SageIntacct’.
5. The below is the CSS code for the SageIntacct Theme

body {
background-color: white;
        font-family: 'HelveticaNeueW01-65Medi','Arial','Helvetica','Ariel','sans-serif'
}
 
input,
div {
box-sizing: border-box;
}
 
.Wallet {
width: 100%;
display: inline-block;
}
 
.Wallet #payment {
width: 50%;
padding: 20px;
clear: none;
float: left;
}
 
@media screen and (max-width: 768px) {
.Wallet #payment {
width: 100%;
padding-bottom: 0px;
}
}
 
.Wallet #payment input {
color: #515151 !important;
border-top: 0px !important;
border-left: 0px !important;
border-right: 0px !important;
}
 
.Wallet #payment .CardContainer {
width: 100%;
background: white;
padding: 0px;
}
 
.Wallet #payment .CardContainer .AccountType {
width: 100%;
display: inline-block;
}
 
.Wallet #payment .CardContainer .AccountNumber {
width: 50%;
display: inline-block;
padding-right: 10px;
}
 
@media screen and (max-width: 400px) {
.Wallet #payment .CardContainer .AccountNumber {
width: 100%;
padding-right: 0px;
}
}
 
.Wallet #payment .CardContainer .ABANumber {
width: 50%;
display: inline-block;
margin-left: 0px;
padding-left: 10px;
}
 
@media screen and (max-width: 400px) {
.Wallet #payment .CardContainer .ABANumber {
width: 100%;
padding-left: 0px;
}
}
 
.Wallet #payment .CardContainer .CardNumber {
width: 75%;
clear: both;
float: left;
}
 
.Wallet #payment .CardContainer .CardNumber input {
border-bottom: 1px solid #d6d6d6;
font-size: 20px !important;
font-weight: 700 !important;
}
 
.Wallet #payment .CardContainer .CardDate {
width: 100%;
clear: both;
float: left;
}
 
.Wallet #payment .CardContainer .CardDate input {
width: 45px !important;
height: 40px !important;
font-size: 16px !important;
font-weight: 700 !important;
}
 
.Wallet #payment .CardContainer .CardDate #exptime1 {
margin-right: 10px;
}
 
.Wallet #payment .CardContainer .NameOnCard {
width: 100%;
clear: both;
float: left;
}
 
.Wallet #payment .CardContainer .NameOnCard input {
border-bottom: 1px solid #d6d6d6;
font-size: 20px !important;
font-weight: 700 !important;
}
 
.Wallet #payment .CardContainer .NameOnCard .FirstName {
padding-right: 5px;
width: 50%;
}
 
@media screen and (max-width: 400px) {
.Wallet #payment .CardContainer .NameOnCard .FirstName {
width: 100%;
padding-right: 0px;
}
}
 
.Wallet #payment .CardContainer .NameOnCard .MiddleInitial,
.Wallet #payment .CardContainer .NameOnCard #WalletCreditCard_CardHolderMiddleName {
display: none;
}
 
.Wallet #payment .CardContainer .NameOnCard .LastName {
margin-left: 0;
padding-left: 5px;
width: 50%;
}
 
@media screen and (max-width: 400px) {
.Wallet #payment .CardContainer .NameOnCard .LastName {
width: 100%;
padding-left: 0px;
}
}
 
.Wallet #payment .CardContainer .Driverlic,
.Wallet #payment .CardContainer .SSN {
display: none;
}
 
.Wallet #payment .CardContainer .RContainer {
left: auto;
right: 0px;
display: block;
}
 
@media screen and (max-width: 400px) {
.Wallet #payment .CardContainer .RContainer {
display: none;
}
}
 
.Wallet #payment .CardContainer .checkbox {
width: 100%;
}
 
.Wallet #payment .CardContainer .checkbox input {
height: 13px;
width: 13px !important;
}
 
.Wallet #payment .CardContainer .CustomerCSS-wallet_Echeck {
width: 100%;
}
 
.Wallet #payment .CardContainer .CustomerCSS-wallet_Echeck input {
height: 13px;
width: 13px !important;
}
 
.Wallet #billaddress {
width: 50%;
padding: 20px;
clear: none;
float: left;
}
 
@media screen and (max-width: 768px) {
.Wallet #billaddress {
width: 100%;
padding-top: 0px;
}
}
 
.Wallet #billaddress .Country {
width: 100%;
display: inline-block;
}
 
.Wallet #billaddress .Street {
width: 100%;
display: inline-block;
}
 
.Wallet #billaddress .Street #Billto_AddressLine1 {
margin-bottom: 5px;
}
 
.Wallet #billaddress .City {
padding-right: 2px !important;
width: 32%;
}
 
.Wallet #billaddress .State {
padding-right: 2px !important;
width: 32%;
}
 
.Wallet #billaddress .Zip {
width: 36%;
}
 
@media screen and (max-width: 400px) {
.Wallet #billaddress .City,
.Wallet #billaddress .State,
.Wallet #billaddress .Zip {
padding-right: 0px !important;
width: 100%;
}
}
 
.Wallet #billaddress #Billto_AddressLine3,
.Wallet #billaddress .walletBilltoPhone,
.Wallet #billaddress #Billto_Phone1,
.Wallet #billaddress .Email_CreateWallet,
.Wallet #billaddress #Billto_Email {
display: none;
}
 
.Wallet #paybutton {
display: flex;
justify-content: center;
width: 100%;
flex-direction: row-reverse;
height: 50px;
}
 
.Wallet #paybutton input {
width: 18% !important;
border-radius: 5px !important;
}
 
.Wallet #paybutton .n-button-cancel {
color: #30a6e9;
background: white;
}
 
.Wallet label {
color: #999999;
width: 100%;
}
 
.Wallet input,
.Wallet select {
border-radius: 0px !important;
height: 40px;
margin-bottom: 15px;
width: 100% !important;
}
 
.Wallet .NewWalletCard {
display: none;
}
 
#paymentForm .walletListDiv {
display: none;
}
 
#paymentForm #payButton {
background-color: #1d8ddb;
border: none;
}
 
#paymentForm #BillCountryCode[is-valid=true] {
border: 1px solid #28a745;
}
 
#paymentForm #BillStateCode[is-valid=true] {
border: 1px solid #28a745;
}

 

6. Copy all the text from the note above
7. Browse back to the PayFabric page and paste the copied text into the ‘Custom.css’ field
8. The below is the JS code for the SageIntacct Theme

// JavaScript source code
var countries;
var usStates;
var caProvinces;
var auTerritories;

$(document).ready(function () {
    populateVariables();
    initDropdowns();
    initPlaceHolder();
    removeHtmlElementStyle();
    customDisplayAdjustment();

    if (tryGetURLParameter("readonly") == "true") {
        adjustForReadonly();
    }
});

function adjustForReadonly() {
    $("#exptime1").attr("disabled", "disabled");
    $("#exptime2").attr("disabled", "disabled");
    $("#WalletCreditCard_CardHolderFirstName").attr("disabled", "disabled");
    $("#WalletCreditCard_CardHolderLastName").attr("disabled", "disabled");
    $("#Billto_CountryCode").attr("disabled", "disabled");
    $("#Billto_AddressLine1").attr("disabled", "disabled");
    $("#Billto_AddressLine2").attr("disabled", "disabled");
    $("#Billto_CityCode").attr("disabled", "disabled");
    $("#Billto_StateCode").attr("disabled", "disabled");
    $("#Billto_ZipCode").attr("disabled", "disabled");
    $("#WalletCreditCard_IsDefaultCard").attr("disabled", "disabled");
    $("#WalletECheck_AccountType").attr("disabled", "disabled");
    $("#WalletECheck_CardHolderFirstName").attr("disabled", "disabled");
    $("#WalletECheck_CardHolderLastName").attr("disabled", "disabled");
    $("#WalletECheck_IsDefaultCard").attr("disabled", "disabled");
    $("#btn_Save").hide();
    $("#btn_Close").hide();
    $("#c_btn_Close").hide();
}

function customDisplayAdjustment() {
    $(".ExpDate").text("Expiration Date");
    $(".AccountNumber label").text("Account Number");
    $(".ABANumber label").text("Routing Number");
    $(".CustomerCSS-wallet_Echeck span").text("Default eCheck Account");

    $("#payment .CardContainer .CardDate .ExpDate").text("Expiration Date");
    $("#payment .CardContainer .AccountNumber label").text("Account Number");
    $("#payment .CardContainer .ABANumber label").text("Routing Number");
    $("#payment .CardContainer h6.CustomerCSS-wallet_Echeck span").text("Default eCheck Account");
    $("#btn_Close").val("Cancel");

    var cardnumber = $("#payment .CardContainer .ccinput-cardnumber");
    if (cardnumber.length > 0) {
        cardnumber.val(cardnumber.val().replace(/X+/g, "· · · · "));
    }

    var accountnumber = $("#payment .CardContainer .ccinput-accountnumber");
    if (accountnumber.length > 0) {
        accountnumber.val(accountnumber.val().replace(/X+/g, "· · · · "));
    }

    var abanumber = $("#payment .CardContainer .ccinput-abanumber");
    if (abanumber.length > 0) {
        abanumber.val(abanumber.val().replace(/X+/g, "· · · · "));
    }

    if ($("#paymentForm").length > 0) {
        $(".expirationMonthDiv").prepend("Expiration Date");
        $(".ExpirationYearDiv").prepend(" ");
        $(".CVV2Div").prepend("CVC");
        $(".billCityCodeDiv").prepend("City");
        $(".billStateCodeDiv").prepend("State/Province");
        $(".billZipCodeDiv").prepend("Zip/Postal Code");
        // Since the Card Info input is not in a form-row as other inputs, prepending to the parent will workaround the line break issue
        $(".creditcardBasicInfo").prepend("Card Number");
        $(".cardHolderNameDiv").prepend("Name");

        $("input").attr("placeholder", "");
        $(".expirationMonth").attr("placeholder", "MM");
        $(".expirationYear").attr("placeholder", "YY");

        $("#paymentForm #BillCountryCode").change(function (e) {
            var val = $(e.currentTarget).val();
            if (val == null || val === "") {
                $("#BillCountryCode").attr("is-valid", false);
            } else {
                $("#BillCountryCode").attr("is-valid", true);
            }
        });

        $("#paymentForm #BillStateCode").change(function (e) {
            var val = $(e.currentTarget).val();
            if (val == null || val === "") {
                $("#BillStateCode").attr("is-valid", false);
            } else {
                $("#BillStateCode").attr("is-valid", true);
            }
        });
    }
}

function tryGetURLParameter(name) {
    name = "&" + name + "=";
    var nameCount = name.length;
    var startIndex = window.location.href.indexOf(name);

    if (startIndex == -1) {
        name = "?" + name + "=";
        startIndex = window.location.href.indexOf(name);
        if (startIndex == -1) {
            return "";
        }
    }

    startIndex = startIndex + nameCount;

    var endIndex = window.location.href.indexOf("&", startIndex);
    if (endIndex == -1) {
        endIndex = window.location.href.length;
    }
    return window.location.href.substring(startIndex, endIndex);
}

function getCountryCodeInput() {
    var countryInput = $("#Billto_CountryCode");
    if (countryInput.length == 0) {
        countryInput = $("#NewBillAddresses_CountryCode");
    }
    return countryInput;
}

function getStateInput() {
    var stateInput = $("#Billto_StateCode");
    if (stateInput.length == 0) {
        stateInput = $("#NewBillAddresses_StateCode");
    }
    return stateInput;
}

function populateVariables() {
    countries = {
        US: "United States",
        AD: "Andorra",
        AE: "United Arab Emirates",
        AF: "Afghanistan",
        AG: "Antigua And Barbuda",
        AI: "Anguilla",
        AL: "Albania",
        AM: "Armenia",
        AN: "Netherlands Antilles",
        AO: "Angola",
        AQ: "Antarctica",
        AR: "Argentina",
        AS: "American Samoa",
        AT: "Austria",
        AU: "Australia",
        AW: "Aruba",
        AX: "Aland Islands",
        AZ: "Azerbaijan",
        BA: "Bosnia And Herzegovina",
        BB: "Barbados",
        BD: "Bangladesh",
        BE: "Belgium",
        BF: "Burkina Faso",
        BG: "Bulgaria",
        BH: "Bahrain",
        BI: "Burundi",
        BJ: "Benin",
        BL: "Saint Barthélemy",
        BM: "Bermuda",
        BN: "Brunei Darussalam",
        BO: "Bolivia",
        BR: "Brazil",
        BS: "Bahamas",
        BT: "Bhutan",
        BV: "Bouvet Island",
        BW: "Botswana",
        BY: "Belarus",
        BZ: "Belize",
        CA: "Canada",
        CC: "Cocos (Keeling) Islands",
        CD: "Congo, The Democratic Republic Of The",
        CF: "Central African Republic",
        CG: "Congo",
        CH: "Switzerland",
        CI: "Côte D'Ivoire",
        CK: "Cook Islands",
        CL: "Chile",
        CM: "Cameroon",
        CN: "China",
        CO: "Colombia",
        CR: "Costa Rica",
        CU: "Cuba",
        CV: "Cape Verde",
        CX: "Christmas Island",
        CY: "Cyprus",
        CZ: "Czech Republic",
        DE: "Germany",
        DJ: "Djibouti",
        DK: "Denmark",
        DM: "Dominica",
        DO: "Dominican Republic",
        DZ: "Algeria",
        EC: "Ecuador",
        EE: "Estonia",
        EG: "Egypt",
        EH: "Western Sahara",
        ER: "Eritrea",
        ES: "Spain",
        ET: "Ethiopia",
        FI: "Finland",
        FJ: "Fiji",
        FK: "Falkland Islands (Malvinas)",
        FM: "Micronesia, Federated States Of",
        FO: "Faroe Islands",
        FR: "France",
        GA: "Gabon",
        GB: "United Kingdom",
        GD: "Grenada",
        GE: "Georgia",
        GF: "French Guiana",
        GG: "Gurnsey",
        GH: "Ghana",
        GI: "Gibraltar",
        GL: "Greenland",
        GM: "Gambia",
        GN: "Guinea",
        GP: "Guadeloupe",
        GQ: "Equatorial Guinea",
        GR: "Greece",
        GS: "South Georgia And The South Sandwich Islands",
        GT: "Guatemala",
        GU: "Guam",
        GW: "Guinea-Bissau",
        GY: "Guyana",
        HK: "Hong Kong",
        HM: "Heard Island And Mcdonald Islands",
        HN: "Honduras",
        HR: "Croatia",
        HT: "Haiti",
        HU: "Hungary",
        ID: "Indonesia",
        IE: "Ireland",
        IL: "Israel",
        IM: "Isle Of Man",
        IN: "India",
        IO: "British Indian Ocean Territory",
        IQ: "Iraq",
        IR: "Iran, Islamic Republic Of",
        IS: "Iceland",
        IT: "Italy",
        JE: "Jersey",
        JM: "Jamaica",
        JO: "Jordan",
        JP: "Japan",
        KE: "Kenya",
        KG: "Kyrgyzstan",
        KH: "Cambodia",
        KI: "Kiribati",
        KM: "Comoros",
        KN: "Saint Kitts And Nevis",
        KP: "Korea, Democratic People'S Republic Of",
        KR: "Korea, Republic Of",
        KW: "Kuwait",
        KY: "Cayman Islands",
        KZ: "Kazakhstan",
        LA: "Lao People'S Democratic Republic",
        LB: "Lebanon",
        LC: "Saint Lucia",
        LI: "Liechtenstein",
        LK: "Sri Lanka",
        LR: "Liberia",
        LS: "Lesotho",
        LT: "Lithuania",
        LU: "Luxembourg",
        LV: "Latvia",
        LY: "Libyan Arab Jamahiriya",
        MA: "Morocco",
        MC: "Monaco",
        MD: "Moldova, Republic Of",
        ME: "Montenegro",
        MF: "Saint Martin",
        MG: "Madagascar",
        MH: "Marshall Islands",
        MK: "Macedonia, The Former Yugoslav Republic Of",
        ML: "Mali",
        MM: "Myanmar",
        MN: "Mongolia",
        MO: "Macao",
        MP: "Northern Mariana Islands",
        MQ: "Martinique",
        MR: "Mauritania",
        MS: "Montserrat",
        MT: "Malta",
        MU: "Mauritius",
        MV: "Maldives",
        MW: "Malawi",
        MX: "Mexico",
        MY: "Malaysia",
        MZ: "Mozambique",
        NA: "Namibia",
        NC: "New Caledonia",
        NE: "Niger",
        NF: "Norfolk Island",
        NG: "Nigeria",
        NI: "Nicaragua",
        NL: "Netherlands",
        NO: "Norway",
        NP: "Nepal",
        NR: "Nauru",
        NU: "Niue",
        NZ: "New Zealand",
        OM: "Oman",
        PA: "Panama",
        PE: "Peru",
        PF: "French Polynesia",
        PG: "Papua New Guinea",
        PH: "Philippines",
        PK: "Pakistan",
        PL: "Poland",
        PM: "Saint Pierre And Miquelon",
        PN: "Pitcairn",
        PR: "Puerto Rico",
        PS: "Palestinian Territory, Occupied",
        PT: "Portugal",
        PW: "Palau",
        PY: "Paraguay",
        QA: "Qatar",
        RE: "Réunion",
        RO: "Romania",
        RS: "Serbia",
        RU: "Russian Federation",
        RW: "Rwanda",
        SA: "Saudi Arabia",
        SB: "Solomon Islands",
        SC: "Seychelles",
        SD: "Sudan",
        SE: "Sweden",
        SG: "Singapore",
        SH: "Saint Helena",
        SI: "Slovenia",
        SJ: "Svalbard And Jan Mayen",
        SK: "Slovakia",
        SL: "Sierra Leone",
        SM: "San Marino",
        SN: "Senegal",
        ST: "Sao Tome And Principe",
        SV: "El Salvador",
        SY: "Syrian Arab Republic",
        SZ: "Swaziland",
        TC: "Turks And Caicos Islands",
        TD: "Chad",
        TF: "French Southern Territories",
        TG: "Togo",
        TH: "Thailand",
        TJ: "Tajikistan",
        TK: "Tokelau",
        TL: "Timor-Leste",
        TM: "Turkmenistan",
        TN: "Tunisia",
        TO: "Tonga",
        TR: "Turkey",
        TT: "Trinidad And Tobago",
        TV: "Tuvalu",
        TW: "Taiwan, Province Of China",
        TZ: "Tanzania, United Republic Of",
        UA: "Ukraine",
        UG: "Uganda",
        UM: "United States Minor Outlying Islands",
        UY: "Uruguay",
        UZ: "Uzbekistan",
        VA: "Holy See (Vatican City State)",
        VC: "Saint Vincent And The Grenadines",
        VE: "Venezuela",
        VG: "Virgin Islands, British",
        VI: "Virgin Islands, U.S.",
        VN: "Viet Nam",
        WF: "Wallis And Futuna",
        WS: "Samoa",
        YE: "Yemen",
        YT: "Mayotte",
        ZA: "South Africa",
        ZM: "Zambia",
        ZW: "Zimbabwe",
    };

    usStates = {
        "": "",
        AL: "Alabama",
        AK: "Alaska",
        AZ: "Arizona",
        AR: "Arkansas",
        CA: "California",
        CO: "Colorado",
        CT: "Connecticut",
        DE: "Delaware",
        FL: "Florida",
        GA: "Georgia",
        HI: "Hawaii",
        ID: "Idaho",
        IL: "Illinois",
        IN: "Indiana",
        IA: "Iowa",
        KS: "Kansas",
        KY: "Kentucky",
        LA: "Louisiana",
        ME: "Maine",
        MA: "Massachusetts",
        MD: "Maryland",
        MI: "Michigan",
        MN: "Minnesota",
        MS: "Mississippi",
        MO: "Missouri",
        MT: "Montana",
        NE: "Nebraska",
        NV: "Nevada",
        NH: "New Hampshire",
        NJ: "New Jersey",
        NM: "New Mexico",
        NY: "New York",
        NC: "North Carolina",
        ND: "North Dakota",
        OH: "Ohio",
        OK: "Oklahoma",
        OR: "Oregon",
        PA: "Pennsylvania",
        RI: "Rhode Island",
        SC: "South Carolina",
        SD: "South Dakota",
        TN: "Tennessee",
        TX: "Texas",
        UT: "Utah",
        VT: "Vermont",
        VA: "Virginia",
        WA: "Washington",
        DC: "Washington, D.C.",
        WV: "West Virginia",
        WI: "Wisconsin",
        WY: "Wyoming",
    };

    caProvinces = {
        AB: "Alberta",
        BC: "British Columbia",
        MB: "Manitoba",
        NB: "New Brunswick",
        NL: "Newfoundland and Labrador",
        NT: "Northwest Territories",
        NS: "Nova Scotia",
        NU: "Nunavut",
        ON: "Ontario",
        PE: "Prince Edward Island",
        QC: "Québec",
        SK: "Saskatchewan",
        YT: "Yukon",
    };

    auTerritories = {
        ACT: "Australian Capital Territory",
        NSW: "New South Wales",
        NT: "Northern Territory",
        QLD: "Queensland",
        SA: "South Australia",
        TAS: "Tasmania",
        VIC: "Victoria",
        WA: "Western Australia",
    };
}

function initDropdowns() {
    $(".Country").insertBefore($(".Street"));
    $(".Trx_BillCountry").insertBefore($(".Trx_BillAddress"));
    $("#NewBillAddresses_CountryCode").insertBefore($(".Trx_BillAddress"));

    $(".Country_CreateWallet").insertBefore($(".Street_CreateWallet"));
    $(".Wallet #billaddress>#Billto_CountryCode").insertBefore($(".Street_CreateWallet"));

    var country = $(getCountryCodeInput()).val();
    country = checkCountry(country);

    $(getCountryCodeInput()).replaceWith(
        $("<select />", {
            id: getCountryCodeInput().attr("id"),
            name: getCountryCodeInput().attr("name"),
        })
    );

    if (country == "") {
        var option = $("<option></option>").attr("value", "").text(" - select a country - ");
        $(option).prop("selected", true);

        $(getCountryCodeInput()).append(option);
    }

    $.each(countries, function (key, value) {
        var option = $("<option></option>").attr("value", key).text(value);
        if (key == country) {
            $(option).prop("selected", true);
        }
        $(getCountryCodeInput()).append(option);
    });

    $(getCountryCodeInput()).change(function () {
        var country = $(this).val();
        switchStateControl(country);
    });

    switchStateControl(country);
}

function switchStateControl(country) {
    var state = $(getStateInput()).val();

    if (country == "US") {
        $(getStateInput()).replaceWith(
            $("<select />", {
                id: getStateInput().attr("id"),
                name: getStateInput().attr("name"),
            })
                .css("width", "inherit")
                .val(state)
        );
        $.each(usStates, function (key, value) {
            var option = $("<option></option>").attr("value", key).text(value);

            if (state == key) {
                $(option).prop("selected", true);
            }

            $(getStateInput()).append(option);
        });
    } else if (country == "CA") {
        $(getStateInput()).replaceWith(
            $("<select />", {
                id: getStateInput().attr("id"),
                name: getStateInput().attr("name"),
            })
                .css("width", "inherit")
                .val(state)
        );
        $.each(caProvinces, function (key, value) {
            var option = $("<option></option>").attr("value", key).text(value);

            if (state == key) {
                $(option).prop("selected", true);
            }

            $(getStateInput()).append(option);
        });
    } else if (country == "AU") {
        $(getStateInput()).replaceWith(
            $("<select />", {
                id: getStateInput().attr("id"),
                name: getStateInput().attr("name"),
            })
                .css("width", "inherit")
                .val(state)
        );
        $.each(auTerritories, function (key, value) {
            var option = $("<option></option>").attr("value", key).text(value);

            if (state == key) {
                $(option).prop("selected", true);
            }

            $(getStateInput()).append(option);
        });
    } else if (country == "") {
        $(getStateInput()).replaceWith(
            $("<select />", {
                id: getStateInput().attr("id"),
                name: getStateInput().attr("name"),
            })
                .css("width", "inherit")
                .val(state)
        );
    } else {
        $(getStateInput()).replaceWith(
            $("<input />", {
                type: "text",
                id: getStateInput().attr("id"),
                name: getStateInput().attr("name"),
            }).val(state)
        );
        $("#Billto_StateCode").attr("placeholder", "State");
    }
}

function checkCountry(country) {
    if (country == undefined || country == "") {
        country = "US";
    } else {
        var value = countries[country];
        if (!value) {
            // Check other potential variations of the US.
            // If required add other countries
            if (
                country.toLowerCase() == "usa" ||
                country.toLowerCase() == "u.s.a" ||
                country.toLowerCase() == "u.s" ||
                country.toLowerCase() == "united states" ||
                country.toLowerCase() == "united states of america" ||
                country.toLowerCase() == "u.s.a."
            ) {
                country = "US";
            } else {
                country = "";
            }
        }
    }
    return country;
}

function removeHtmlElementStyle() {
    $("#WalletCreditCard_CardNumber").attr("style", "");
    $("#WalletCreditCard_CardHolderFirstName").attr("style", "");
    $("#WalletCreditCard_CardHolderLastName").attr("style", "");
    $(".Checkoutpage #payment .CardContainer .ccinput-cardnumber").attr("style", "");
}
function initPlaceHolder() {
    $(".CardContainer .MiddleInitial").hide();
    $(".ccinput-issavecard").hide();
}

9. Copy all the text from the note above
10. Browse back to the PayFabric page and paste the copied text into the ‘Custom.js’ field
11. Click the Save button to save the changes to the theme
12. After the save is complete, select the Device Management tab
13. Click the Generate button to present the fields for creating a Device
14. Populate the Device Name field with the name SageIntacct
15. Populate the Password and the Confirm Password fields with a secure password. Please take note of this password as it will be used again shortly.
16. Click the Confirm button to generate the device
17. Take note of the Device ID as it will be used shortly.
18. In the Device List, click the Shirt icon in the Default Theme column for the newly created device
19. Select the Theme name for the Theme that was created in the previous steps
20. Click the Confirm button to save changes.

 

Setup a Gateway Account Profile


In order to process transactions, a Gateway Account Profile should be setup in the PayFabric
account. The page for setting up a Gateway Account Profile can be found in the menu under
Settings > Gateway Account Profiles.
For more information on setup of the Gateway Account Profile and using PayFabric in general,
please see the PayFabric Portal Guide. https://www.nodus.com/documentation/PayFabric-User-Guide.pdf 

 

PayFabric for Sage Intacct Setup

 

The following process will configure the connection to PayFabric within Sage Intacct.

1. Navigate to the PayFabric Setup Screen within the PayFabric Components.

2. Populate the fields based on the below table

 

Field Value
Account Type 

Account Type: Based on the PayFabric environment being used, set this value to Live or Sandbox.

Note: Other is used for bespoke URL's and this would be communicated by your PayFabric Partner if needed. 

PayFabric URL

PayFabric URL: This field will automatically be set after the account type is selected.

Note: Other is used for bespoke URL's and this would be communicated by your PayFabric Partner if needed. 

PayFabric Device ID  PayFabric Device ID: Set this value to the PayFabric Device ID created for Sage Intacct during the previous Create a Device section.
PayFabric Password PayFabric Password: Set this value to the password associated to the PayFabric Device ID for Sage Intacct.

 

 

3. After the settings have been configured, select the Test Connection option to verify if the information is configured correctly.

4. If the credentials are correct then a success message will be displayed at the top of the form. Otherwise, if a failure message is displayed, please re-verify your PayFabric device ID/Password. 

5. Save the Setup configuration.

 

PayFabric Gateway Account Profile Setup

 

The PayFabric Setup page displays the available PayFabric Gateway Account Profiles that are connected to electronic payment processing accounts inside Sage Intacct.

1. Navigate to the PayFabric Setup Screen within the PayFabric Components.

2. On the bottom half of the screen, the PayFabric Gateway Profiles section will display. (Undernthe PayFabric Setup section.

3. Select the 'Import PayFabric Gateways' Button. This action will import all gateways created in PayFabric into Intacct.

4. After the Gateways are imported, click edit and populate the fields based on the below table.

Field Value
Name

Description for your PayFabric Gateway. Tip: use a descriptive name to easily understand what gateway you will be processing with.

Account Type 

Account Type: Ability to select either Bank or Undeposited Funds account to records payments against.

If Bank is selected, will have to next select the bank account (Per field below)

If Undeposited Funds account selected, will have to select the Gl account and Currency (Per Fields below)

Bank Account

Ability to select which Bank Account to tie to the Gateway

GL Account Ability to select which GL Account to tie to the Gateway
Currency If Undeposited funds account is selected, you will need to set the currency that this gateway will process in. 
Description Description of the gateway set up

5. Save changes.

 

PayFabric Wallet

The PayFabric Wallet page will allow users to securely view or add payment methods that are associated to an Intacct customer.

Navigate to the PayFabric Wallet screen through the PayFabric component.


Once on the PayFabric Wallet page, select a customer. This will load any existing payment methods belonging to the customer. 


The following actions can be done on the PayFabric Wallet page.

Add a new payment method

  1. Select a customer if not already selected
  2. Click 'Add Credit Card' or 'Add ACH'
  3. On our secure form, the user can input the credit card or ACH details
  4. Click Save

Set a default payment method

  1. Select a customer if not already selected
  2. In the wallet grid, look for the default column
  3. Click the toggle to set a payment method as the default

Note: Only a single Credit Card and ACH can be set as the default method

Edit an existing payment method

  1. Select a customer that has existing payment methods if not already selected
  2. In the wallet grid, click the Edit button under the Actions column
  3. On our secure form, the user can update any information pertaining to the selected payment method. Eg. updating the billing address or expiration date.
  4. Click Save

View an existing payment method

  1. Select a customer that has existing payment methods if not already selected
  2. In the wallet grid, click the View button under the Actions column
  3. On our secure form, the user can view information pertaining to the selected payment method.

Delete an existing payment method

  1. Select a customer that has existing payment methods if not already selected
  2. In the wallet grid, select one or multiple payment methods that require deletion
  3. Click the Delete button

 

PayFabric Transactions

 

The PayFabric Transactions page will allow users to view all PayFabric Transactions which have been processed within Intacct. To access this page, navigate to Transactions found under the PayFabric component.

When the page has loaded, the user will be able to view all transactions which have been processed within Intacct. This view will allow the user to see the details such as last 4 digits of the card, amount, and the gateway used to process.

View a Transaction

Clicking the view button on a row in the main transaction list will allow the user to view details for a specific transaction. These details include information regarding the transaction, the response, and the payment details. Additionally, this will allow the user to view which Intacct document is associated to the PayFabric Transaction.

Edit a Transaction

Clicking the edit button on a row in the main transaction list will allow the user to modify the relationship between an Intacct document and a PayFabric transaction. 

 

Processing Transactions

PayFabric Transaction Screen

The PayFabric transaction screen is where the merchant is able to process a transaction on the document that is selected. 

Sage Intacct screens that support PayFabric processing include, Order Entry, Sales invoice, AR Invoice and AR receive a payment (new).

The button will be available on supported screens in the top right as seen below;

The transaction types (Authorization, Capture, Sale) will be available depending on the document type that the merchant is trying to process against (more detailed explanations in PayFabric Transactions Types section below).

The following describes which fields need to be completed to process a transaction, in the PayFabric Transaction screen. 

 

Field Description
Transaction Amount

Amount: The amount to be authorized for the transaction. This will automatically pull form the Sage document outstanding amount for Order, Shipment and Invoice Entry. For AR Receive payment new it will pull in the amount specified in the amount received field. 

Gateway

This dropdown will be used to select a gateway that has been defined in PayFabric Gateway Setup. This could be either a Credit Card gateway or ACH gateway.

Tender Type Tender Type: The tender type that is associated to the Gateway as defined in the PayFabric Gateway Setup. This field is read-only.
Use New Credit card/ACH account Ability to use new Credit Card or ACH account, which will invoke the PayFabric hosted Payment Page when Process button is selected.
Credit Card/ACh account this drop down will display the list of saved Credit Cards or ACH account in the PayFabric wallet for the customer selected in the document
Email Receipt Email Receipt: The email to receive the email receipt for the transaction.
Additional Email  Additional emails that the email receipt can be sent to for the transaction. Multiple emails should be separated by a comma.

Note: The Authorization transaction type will only allow for credit card processing Gateways to be available. 

 

PayFabric Transaction Screen Buttons:

Process:

Once a transaction has the mandatory fields completed, the transaction can be processed. This button will initiate the call to PayFabric to process the transaction detailed. 

Close:

This button will close the PayFabric Transaction window without processing any payment. 

Note: Processing through a new payment method on any document type will not save the card to the wallet.

 

Transaction Types

Authorization 

An authorization will allow the user to place a temporary hold on the customer's funds. This will ensure that when it is time to capture, the funds are available. Typically, this transaction type would be used for shipping inventory. Note: This transaction type is only applicable to credit card transactions.

Capture 

A capture would be used in conjunction with an authorization. This will allow the user to capture the previous hold placed from the authorization.

Sale

A sale would be a direct capture of the customer funds. The funds will be taken from the customer at the time of processing. Note: This transaction type can be done with both credit card and ACH transactions.

 

Note: When an authorization has a capture against it, if this is either a partial capture or for the full amount of the authorization, the authorization will be closed. If more funds need to be captured a new authorization will need to be created or a Sale transaction completed. 

 

Email Receipts

When processing a transaction within Sage Intacct, users will have the ability to populate email addresses for an email receipt to be delivered. Note: This email receipt template must be enabled within the PayFabric portal to allow for sending. Please reference the PayFabric user guide for email template setup.

To properly send an email receipt within Intacct, ensure that the email fields are populated within the PayFabric Transaction Details window.


Note: The Email line will only accept 1 email address. If there are additional recipients, the Additional Email line can be populated with the recipients' emails which must be separated by a comma.

 

 

Amount Pane

On PayFabric supported screens when editing the document, there will be an amount pane at the bottom of the form which will display the respective authorized and captured amounts for the document.

Note: This amount pane will vary depending on if the user is viewing or editing the document. 

When viewing the document, the amount pane will display detailed information regarding the transaction. 

 

 

Supported Sage Screens

PayFabric will support the following Intacct screens in both new and edit document. The list of screens is as follows: O/E Sales Order, O/E Sales Invoice, and AR Invoice. Additionally, there is the option to support the Receive a Payments page if needed. On all forms, the following transaction types (Authorization, Capture, and Sale) will be available for PayFabric processing. If utilizing the Receive a Payments page, only the Sale option will be available.

Note: a payment document will automatically be created under these conditions:

  • The document type is a sales invoice or AR invoice and the transaction type is a sale or capture.
    • If the document is existing, the payment document will be created automatically.
    • If the document is new, the payment document will be created at the time of posting.

Order Entry Sales Order

To process PayFabric transactions on a new sales order:

  1. Create a new sales order
  2. Populate the customer 
  3. Add line item(s)
  4. Click the PayFabric button in the top right
  5. Select a transaction type
  6. On the PayFabric Transaction details pop up, verify the amount looks correct
  7. Select the proper gateway if utilizing multiple gateways
  8. Select the payment method if there are existing wallets respective to the gateway. Otherwise, new wallet will be defaulted.
  9. Click process. If an existing wallet was used, the transaction result will be displayed. Otherwise, the PayFabric hosted payment page will open if using a new wallet.
  10. After processing, post the sales order

To process PayFabric transactions on an existing sales order:

  1. Navigate to Order Entry > Sales Order
  2. Locate an order that has an open balance
  3. Click Edit
  4. Click the PayFabric button in the top right
  5. Select a transaction type
  6. On the PayFabric Transaction details pop up, verify the amount looks correct
  7. Select the proper gateway if utilizing multiple gateways
  8. Select the payment method if there are existing wallets respective to the gateway. Otherwise, new wallet will be defaulted.
  9. Click process. If an existing wallet was used, the transaction result will be displayed. Otherwise, the PayFabric hosted payment page will open if using a new wallet.
  10. After processing, the screen will return to the main sales order list.

Note: When processing payments on a sales order, the payment document will not be created at the time of processing. Once the sales order has been converted to a sales invoice, a payment document will be created at the time of conversion.

Order Entry Sales Invoice

To process PayFabric transactions on a new sales invoice:

  1. Create a new sales invoice
  2. Populate a customer
  3. Add line item(s)
  4. Click the PayFabric button in the top right
  5. Select a transaction type
  6. On the PayFabric Transaction details pop up, verify the amount looks correct
  7. Select the proper gateway if utilizing multiple gateways
  8. Select the payment method if there are existing wallets respective to the gateway. Otherwise, new wallet will be defaulted.
  9. Click process. If an existing wallet was used, the transaction result will be displayed. Otherwise, the PayFabric hosted payment page will open if using a new wallet.
  10. After processing, post the sales invoice.

To process PayFabric transactions on an existing sales invoice:

  1. Navigate to Order Entry > Sales Invoice
  2. Locate an invoice that has an open balance
  3. Click Edit
  4. Click the PayFabric button in the top right
  5. Select a transaction type
  6. On the PayFabric Transaction details pop up, verify the amount looks correct
  7. Select the proper gateway if utilizing multiple gateways
  8. Select the payment method if there are existing wallets respective to the gateway. Otherwise, new wallet will be defaulted.
  9. Click process. If an existing wallet was used, the transaction result will be displayed. Otherwise, the PayFabric hosted payment page will open if using a new wallet.
  10. After processing, the invoice document will be updated accordingly.

Accounts Receivable Invoice

To process PayFabric transactions on a new AR invoice:

  1. Create a new AR Invoice
  2. Populate the customer
  3. Add a valid GL Account in the entries section
  4. Click the PayFabric button in the top right
  5. Select a transaction type
  6. On the PayFabric Transaction details pop up, verify the amount looks correct
  7. Select the proper gateway if utilizing multiple gateways
  8. Select the payment method if there are existing wallets respective to the gateway. Otherwise, new wallet will be defaulted.
  9. Click process. If an existing wallet was used, the transaction result will be displayed. Otherwise, the PayFabric hosted payment page will open if using a new wallet.
  10. After processing, post the AR Invoice.

To process PayFabric transactions on an existing AR Invoice:

  1. Navigate to Accounts Receivable > Invoices
  2. Locate an invoice that has an open balance
  3. Click Edit
  4. Click the PayFabric button in the top right
  5. Select a transaction type
  6. On the PayFabric Transaction details pop up, verify the amount looks correct
  7. Select the proper gateway if utilizing multiple gateways
  8. Select the payment method if there are existing wallets respective to the gateway. Otherwise, new wallet will be defaulted.
  9. Click process. If an existing wallet was used, the transaction result will be displayed. Otherwise, the PayFabric hosted payment page will open if using a new wallet.
  10. After processing, the screen will return the main invoices list.

Accounts Receivable Receive Payments

Note: This feature must be manually added. This page will allow a user to process a sale and apply the payment to an invoice.

  1. Navigate to Accounts Receivable > Receive payments - New!
  2. Click the Add button
  3. Populate a customer
  4. Adjust the other fields(payment method, account, etc) as necessary 
  5. Populate an amount
  6. Click show invoices
  7. Select the invoices as needed
  8. Click the PayFabric button > Sale
  9. On the PayFabric Transaction details pop up, verify the amount is correct
  10. Select the gateway if using multiple gateways.
  11. Select the payment method if there are existing wallets respective to the gateway. Otherwise, new wallet will be defaulted.
  12. Click process. If an existing wallet was used, the transaction result will be displayed. Otherwise, the PayFabric hosted payment page will open if using a new wallet.
  13. After processing, post the payment.

 

PayFabric Permissions

 

PayFabric permissions can be set for each specific Intacct role on an as needed basis. The following image depicts the available permissions which can be configured.

For example, in a scenario where the user is mainly processing payments, they may not need access to the PayFabric Setup screen.

The following image depicts how the permissions could look for the user in this scenario.

Prevent users from processing on certain forms

As Sage Intacct allows users to process using PayFabric from various forms in new or edit mode. To prevent users from processing PayFabric transactions on these forms, the site administrator can remove the add/edit permission to these forms.

Example image showing how the user cannot process on AR Invoices because the Add/Edit permission has not been granted. Highlighted portions represent the missing actions.

 

Copyright Information

Copyright © 2024 North49 Business Solutions. All rights reserved. Your right to copy this documentation is limited by copyright law and the terms of the software license agreement. As the software licensee, you may make a reasonable number of copies or printouts for your own use. Making unauthorized copies, adaptations, compilations, or derivative works for commercial distribution is prohibited and constitutes a punishable violation of the law.


Trademarks: PayFabric ® for Sage Intacct, North49 are either registered, trademarks or trademarks of North49 Business Solutions in Canada. PayFabric ® is a registered trademarks of Nodus Technologies, Inc in the United States.

The names of actual companies and products mentioned herein may be trademarks or registered marks - in the United States and/or other countries - of their respective owners.

The names of companies, products, people, and/or data used in window illustrations and sample output are fictitious and are in no way intended to represent any real individual, company, product, or event, unless otherwise noted.

Warranty: Disclaimer North49 Business Solutions disclaim any warranty regarding the sample code contained in this documentation, including the warranties of merchantability and fitness for a particular purpose.

Limitation of Liability: The content of this manual is furnished for informational use only, is subject to change without notice, and should not be construed as a commitment by North49 Business Solutions. North49 Business Solutions assumes no responsibility or liability for any errors or inaccuracies that may appear in this manual. North49 Business Solutions nor anyone else who has been involved in the creation, production or delivery of this documentation shall be liable for any indirect, incidental, special, exemplary or consequential damages, including but not limited to any loss of anticipated profit or benefits, resulting from the use of this documentation or sample code.

License agreement Use of this product is covered by a license agreement provided with the software product. If you have any questions, please call North49 Business Solutions Support at 909-482-4701