Payment Facilitator

A Payment Facilitator (PAYFac) serves as a specialized payment service provider that collaborates closely with an acquiring bank. Its primary role involves constructing robust systems for handling payment transactions, facilitating the onboarding of sub-merchants, and managing risk factors. Once the PAYFac has established systems and processes, which adhere to the guidelines set forth by card networks and align with the acquiring bank’s agreement, it can seamlessly offer comprehensive payment processing solutions to merchants. These merchants, commonly referred to as “sub-merchants,” benefit from the streamlined services provided by the PAYFac model. Notably, in this model, sub-merchants are relieved of the direct interaction with an acquiring bank, simplifying their payment processing experience.

PAYFac


Some of the high-level responsibilities of a PAYFac are below:

Management and Oversight of All Merchants: 

The PAYFac is tasked with supervising and ensuring the smooth functioning of all merchants within its network.

Tracking and Monitoring of Sub-Merchant Activity: 

Vigilantly observing the activities of sub-merchants falls squarely within the PAYFac’s purview.

Auditing of Merchant Activity: 

The PAYFac assumes the critical responsibility of auditing merchant transactions and operations.

AML and KYC Compliance: 

Complying with Anti-Money Laundering (AML) and Know Your Customer (KYC) regulations is paramount. The PAYFac vets’ sub-merchants to maintain regulatory adherence.

Maintaining PCI Compliance Standards: 

Upholding Payment Card Industry (PCI) compliance standards ensures secure and reliable payment processing.

Payment Processing for Sub-Merchants: 

The PAYFac efficiently handles payment processing on behalf of sub-merchants.

Settlement of Funds to Sub-Merchant Accounts:

 acilitating timely fund settlements to sub-merchant accounts is a crucial aspect of the PAYFac’s role.


Configuration Requirements for PAYFac

  • PAYFac must be configured on the iVeri Gateway
  • PAYFac must have an Enterprise Application iD for processing of payments to the iVeri Gateway
  • Allowances of the sub-merchant data must be made on the PAYFac Enterprise Application ID

Sub-Merchant Data Parameters


When PAYFac's process payments to the iVeri Gateway, the following sub merchant parameters are expected along with the standard payment instruction parameters

  • If the sub merchant data is omitted in the payment instruction, the iVeri Gateway will not block the transaction
  • The sub-merchant data must be included on all transaction types supported by the PAYFac


Parameter

Description

Merchant City

City in which the merchant is based

MerchantName

The merchant name

MerchantRegion

The merchant state/region/province

MerchantPostalCode

The merchant postal code

MercahntSubID

Unique identify for the merchant allocated by the PFAC

MerchantAddress

The merchant address

MerchantCategoryCode

The merchant business type

Sample: Payment with Sub-merchant data


The following shows a payment instruction with the inclusion of the sub-merchant data


REST 

Request 
{
    "Version": "2.0",
    "CertificateID": "{4c96973f-71dd-4044-802d-6e234effe8f2}",
    "ProductType": "Enterprise",
    "ProductVersion": "WebAPI",
    "Direction": "Request",
    "Transaction": {
        "ApplicationID": "{66bc5003-88dd-4cd5-9b27-2b5cdb7a8b73}",
        "Command": "Debit",
        "Mode": "Test",
        "Amount": "300",
        "ExpiryDate": "1023",
        "MerchantReference": "Sti20240621_1003",
        "MerchantTrace":"20240516_1003",
        "Currency":"ZAR",
        "PAN": "4242424242424242 ",
        "SecurityServiceCode":"385",
        "MerchantCategoryCode": "5311",
        "MerchantCity": "Durban",
        "MerchantRegion": "KZN",
        "MerchantPostalCode": "4001",
        "MerchantSubID": "160019",
        "MerchantName": "Busi",
        "MerchantAddress": "3rd Street"
       
    }
}


Response 
{
    "Version": "2.0",
    "Direction": "Response",
    "Transaction": {
        "MerchantTrace": "20240516_1003",
        "Amount": "300",
        "AuthorisationCode": "391064",
        "CCNumber": "4242........4242",
        "Currency": "ZAR",
        "ExpiryDate": "102023",
        "MerchantReference": "Sti20240621_1003",
        "Terminal": "Default",
        "TransactionIndex": "{F044088B-BFE0-46BD-BDE7-F807E1047E63}",
        "MerchantName": "Busi",
        "MerchantUSN": "7771777",
        "Acquirer": "NBPostilionNBSouthAfrica",
        "AcquirerReference": "82657:09154225",
        "AcquirerDate": "20240604",
        "AcquirerTime": "123744",
        "DisplayAmount": "R 3.00",
        "BIN": "424242",
        "Association": "VISA",
        "CardType": "Unknown Card Type",
        "Issuer": "Unknown Issuer",
        "Jurisdiction": "International",
        "PAN": "4242........4242",
        "PANMode": "Keyed",
        "ReconReference": "09154225",
        "CardHolderPresence": "CardNotPresent",
        "MerchantAddress": "3rd Street",
        "MerchantCity": "Durban",
        "MerchantCountryCode": "ZA",
        "MerchantCountry": "South Africa",
        "DistributorName": "Nedbank",
        "ApplicationID": "{66BC5003-88DD-4CD5-9B27-2B5CDB7A8B73}",
        "Command": "Debit",
        "Mode": "Test",
        "RequestID": "{A12ADE48-B345-490F-B9DB-FA03801C1EC6}",
        "Result": {
            "Status": "0",
            "Code": "0",
            "Description": "",
            "AppServer": "QA2019GWAPP01",
            "DBServer": "QA2019GWDB02",
            "Gateway": "QA",
            "AcquirerCode": "00",
            "AcquirerDescription": ""
        }
    }
}



SOAP

Request 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
  <Execute xmlns="http://iveri.com/">
  <validateRequest>false</validateRequest>
  <protocol>V_XML</protocol>
  <protocolVersion>7.0</protocolVersion>
  <request>
    &lt;V_XML Version="2.0" CertificateID="8a80fe66-4032-4cd9-b9f6-763762417e46"
    ProductType="Enterprise" ProductVersion="iVeriWebService" Direction="Request"&gt;
    &lt;Transaction ApplicationID="66bc5003-88dd-4cd5-9b27-2b5cdb7a8b73" Command="Debit" Mode="Test"&gt;
    &lt;MerchantTrace&gt;2408568B67EE&lt;/MerchantTrace&gt;
    &lt;Amount&gt;2000&lt;/Amount&gt;
    &lt;Currency&gt;ZAR&lt;/Currency&gt;
    &lt;ExpiryDate&gt;042024&lt;/ExpiryDate&gt;
    &lt;MerchantReference&gt;20220104.1302&lt;/MerchantReference&gt;
    &lt;CardSecurityCode&gt;183&lt;/CardSecurityCode&gt;
    &lt;PAN&gt;4242424242424242&lt;/PAN&gt;
    &lt;MerchantName&gt;TestMerchant&lt;/MerchantName&gt;
    &lt;MerchantAddress&gt;3rd Street Maude&lt;/MerchantAddress&gt;
    &lt;MercahntSubID&gt;123BSDSF&lt;/MercahntSubID&gt;
    &lt;MerchantCategoryCode&gt;5311&lt;/MerchantCategoryCode&gt;
    &lt;MerchantRegion&gt;KZN&lt;/MerchantRegion&gt;
    &lt;MerchantPostalCode&gt;4003&lt;/MerchantPostalCode&gt;
    &lt;MerchantCity&gt;Durban&lt;/MerchantCity&gt;
    &lt;/Transaction&gt;&lt;/V_XML&gt;
</request>
  </Execute>
  </soap:Body>
  </soap:Envelope>



Response 

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <soap:Body>

        <ExecuteResponse xmlns="http://iveri.com/">

            <ExecuteResult>&lt;V_XML Version="2.0" Direction="Response"&gt;

  &lt;Transaction ApplicationID="{66BC5003-88DD-4CD5-9B27-2B5CDB7A8B73}" Command="Debit" Mode="Test" RequestID="{5E60F9EB-DC27-43F7-94BA-CE126363E631}"&gt;

    &lt;Result Status="0" Code="0" Description="" AppServer="QA2019GWAPP02" DBServer="qa2019gwdb02" Gateway="QA" AcquirerCode="00" AcquirerDescription="" /&gt;

    &lt;MerchantTrace&gt;2408568B67EE&lt;/MerchantTrace&gt;

    &lt;Amount&gt;2000&lt;/Amount&gt;

    &lt;AuthorisationCode&gt;390872&lt;/AuthorisationCode&gt;

    &lt;CCNumber&gt;4242........4242&lt;/CCNumber&gt;

    &lt;Currency&gt;ZAR&lt;/Currency&gt;

    &lt;ExpiryDate&gt;042024&lt;/ExpiryDate&gt;

    &lt;MerchantReference&gt;20220104.1302&lt;/MerchantReference&gt;

    &lt;Terminal&gt;Default&lt;/Terminal&gt;

    &lt;TransactionIndex&gt;{84E53AF4-464C-4A3E-8DED-960A4D84F40A}&lt;/TransactionIndex&gt;

    &lt;MerchantName&gt;TestMerchant&lt;/MerchantName&gt;

    &lt;MerchantUSN&gt;7771777&lt;/MerchantUSN&gt;

    &lt;Acquirer&gt;NBPostilionNBSouthAfrica&lt;/Acquirer&gt;

    &lt;AcquirerReference&gt;82657:09154224&lt;/AcquirerReference&gt;

    &lt;AcquirerDate&gt;20240604&lt;/AcquirerDate&gt;

    &lt;AcquirerTime&gt;123431&lt;/AcquirerTime&gt;

    &lt;DisplayAmount&gt;R 20.00&lt;/DisplayAmount&gt;

    &lt;BIN&gt;424242&lt;/BIN&gt;

    &lt;Association&gt;VISA&lt;/Association&gt;

    &lt;CardType&gt;Unknown Card Type&lt;/CardType&gt;

    &lt;Issuer&gt;Unknown Issuer&lt;/Issuer&gt;

    &lt;Jurisdiction&gt;International&lt;/Jurisdiction&gt;

    &lt;PAN&gt;4242........4242&lt;/PAN&gt;

    &lt;PANMode&gt;Keyed&lt;/PANMode&gt;

    &lt;ReconReference&gt;09154224&lt;/ReconReference&gt;

    &lt;CardHolderPresence&gt;CardNotPresent&lt;/CardHolderPresence&gt;

    &lt;MerchantAddress&gt;3rd Street Maude&lt;/MerchantAddress&gt;

    &lt;MerchantCity&gt;Durban&lt;/MerchantCity&gt;

    &lt;MerchantCountryCode&gt;ZA&lt;/MerchantCountryCode&gt;

    &lt;MerchantCountry&gt;South Africa&lt;/MerchantCountry&gt;

    &lt;DistributorName&gt;Nedbank&lt;/DistributorName&gt;

  &lt;/Transaction&gt;

&lt;/V_XML&gt;</ExecuteResult>

        </ExecuteResponse>

    </soap:Body>

</soap:Envelope>