ProFac is our cutting-edge payment facilitation product tailored specifically for developers. It offers a robust set of APIs and developer-friendly documentation that makes it fast and easy to enable secure, seamless payment processing for your users.
Leveraging our advanced payment infrastructure lets developers focus on their core application logic.
With Profac payment facilitation, you can simplify the complexities of payment integration, enhance user experiences, and unlock new revenue streams with one a single, developer-centric solution.
All card-not-present transactions must include cardholder’s street address, ZIP code, and CVV to pass certification. These values assist our Disputes Team in case of a chargeback and help protect against fraud.
Existing customers: Get your sandbox and production credentials for Heartland/Portico integration.
Learn how to create a new account to become a ProFac partner. When you create an account, an account number and temporary password will be returned.
Our SDKs support using tokens in place of card data, if that's an option for you. You can also pass raw card data to us using manual entry. The code samples below will provide what you need for either option.
The credit sale transaction authorizes a sale purchased with a credit card. The authorization is placed in the current open batch (should auto-close for e-commerce transactions). If a batch is not open, this transaction will create an open batch.
A credit account verify transaction is used to verify that the account is in good standing with the issuer. This is a zero dollar transaction with no associated authorization. Since VISA and other issuers have started assessing penalties for one dollar authorizations when verifying credit cards, this provides a way for merchants to accomplish the same task while avoiding these penalties.
A credit authorization transaction authorizes a credit card transaction. The authorization is not placed in the batch. The credit authorization transaction can be added to a batch by using the capture method.
Our Online Payment Surcharge Program helps businesses offset online credit card processing costs and stay compliant with state, federal and card brand guidelines. By charging customers a percentage fee for processing credit card purchases online, the program helps businesses keep their prices and payment options competitive — and preserve all the ways customers want to pay.
Surcharging is legal in all but six states (CO, CT, KS, MA, ME, OK), allowing businesses to recoup their processing costs. Our Online Payment Surcharge Program is a turnkey solution that helps business owners collect surcharges and be 100 percent confident that they meet all requirements.
Online payments integrations can determine surcharge eligibility by including a BIN check during single-use tokenization. This will expose a boolean on the single-use tokenization response (result.details.canSurcharge) which will alert your integration if the current card can be surcharged.
<?php
$amount = 10;
$surcharge = $amount * .035;
$response = $card->authorize($amount + $surcharge)
->withCurrency("USD")
->withAddress($address)
->withSurchargeAmount($surcharge)
->execute();Multi-use tokenization allows a secure and PCI friendly way to store credit card information within your system. A multi-use token can be generated as part of any of our initial gateway calls: charge, verify, or authorize.
Multi-Use tokens are not enabled by default. You must contact your Heartland Representative to request this functionality on your account.
<?php
$response = $card->charge(10)
->withCurrency("USD")
->withAddress($address)
->execute();<?php
$response = $card->authorize(10)
->withCurrency("USD")
->withAddress($address)
->execute();ProFac partners can load an account with funds from their on-file direct deposit account (DDA). This transaction type is only available for US Merchants. If an account’s DDA has not been validated, this method will not work, and the API will return a 67 response code. This code can also indicate that the account is not permitted to add funds via an API request.
The amount added must be greater than or equal to $1.00 USD, and funds take 1-5 business days to become available based on the account settings.
This request type requires an x509 certificate as additional authentication.
This allows a ProFac partner to initiate a transfer of funds from the ProPay account available balance to its on file direct deposit bank account. This method should be used if regularly-scheduled system sweeps do not meet business needs or greater control over the amount or timing of sweeps is desired.
This transaction type is only available for US Merchants. The account must have a balance greater or equal to $1.00 USD.
This allows a ProFac partner to add a debit card as a destination for Flash Funds. It can also be used to change the card already attached to an account.
Visa and Mastercard debit cards are the only cards that are supported. Funds transfer to a credit card takes as long as standard ACH out.
This request type requires the use of x509 certificate as additional authentication.
This allows a ProFac partner to push money from an account out to the on-file payment instrument set up for Flash Funds.
This allows a ProFac partner to immediately disburse funds from a specifically designated source account into another. The minimum amount is $1.00 USD.
Rather than using the normal affiliate certStr, this method uses a certStr directly tied to the source account for funds disbursement.
ProFac partners can immediately transfer available funds from a source account to a specified receiving account. This is useful for entities that wish to enable their distributors to pay for products. The buyer and seller must both have an account tied to the same ProFac partner. The minimum transfer amount is $1.00 USD.
An affiliation can be configured to allow an enhanced form of SpendBack which allows the use of an account’s pending balance. These transactions initially are in a pending state until the related credit card charge has settled. At the same time, the sender’s available balance may become negative. Multiple times per day, the ProFac system attempts to complete enhanced SpendBack transactions. Settlement becomes possible when the available balance in the sender’s account becomes sufficient to cover the transaction.
Every enhanced Spendback transaction is given a time to live (TTL). If the TTL expires before funds become available, the process is reversed. The pending transaction will disappear from the receiver’s account and the funds are credited back to the sender’s account. Whenever a TTL expires, Heartland will send a message indicating that such has occurred via the Affiliate Notification System.
This allows a ProFac partner to split a portion of funds from a transaction on a source account and put them into a designated account. It can perform a SplitPay transaction either on underlying Credit Card transaction or ACH transaction:
To ensure a transaction is in the correct state to be split, ProFac partners should utilize the TransactionCaptured webhook via the Affiliate Notification System and only submit the SplitPay request after this webhook has been successfully received.
This allows a ProFac partner to send an image file and is specifically designed to support the documents used to dispute a credit card chargeback. This version of document upload also associates the document to a specific transaction that has received a chargeback.
This allows a ProFac partner to send an image file. Our Risk team may request that a Partner perform this action to underwrite an account that was denied via automated boarding, to increase the processing limit on accounts, or to provide data when a processing hold has been placed on an account.
This allows a ProFac partner to embed specific pages, hosted in Heartland’s environment, into the Partner’s interfaces. Each hosted page will present a dead-end to the account holder. No navigation menu is displayed, so the Partner can build their own navigation based on what makes sense for their own interface.
The ProFac partner should obtain a separate working key for each page as they are single-use. Once you’ve obtained the working key, you can navigate to a specific page with the key included in the web address, as with the following examples:
| Page | Description |
|---|---|
| Account/AddUpdateCheckingAccount | Update deposit bank account |
| Account/SendValidationDeposits | Send Micro deposits for bank validation |
| Account/ConfirmValidationDeposits | Validate micro deposits of bank account info |
| ManageFunds/TransferFundsToBankAccount | Deposit balance to a bank account |
| ManageFunds/TransferFundsToAnotherProPayAccount | Push balance to another account in the same affiliation |
| ManageFunds/AddFundsToPropayAccount | Pull funds from a checking account to an account |
| ManageFunds/ScheduledTransfers | Schedule a deposit for funds to get pulled from the account and pushed to the bank account |
| Profile/EditBusinessInfo | Update business info tied to the account |
| Profile/UpdateAddressAndPhone | Update address and phone number on the account |
| Profile/UpdateEmail | Update email address tied to the account |
| Document/UploadDocument | Upload documents for credit risk (chargebacks, limit increase, holds, KYC) |
| Risk/ListChargeBacks | List of all chargebacks on the account |
| Report/TransactionReport | Report to show transactions from within a certain time frame (see note below) |
| Report/AdvancedTransactionSearch | Search for a certain transaction |
| Report/TransactionDetails | Show the live cycle of an individual transaction |
| Report/ConsolidatedFees | Show line items fees not on a transaction |
| Report/LimitsRatesAndFees | Show process limits and rates |
| Report/SweepReport | Report to show deposits |
| Device/OrderAdditionalDevices | Order virtual or physical devices on an existing account |
The Report/TransactionDetails page presents the user with information specific to a single transaction. It is necessary, as a result, to pass an additional parameter (the transNum) into the redirect URL. Simply pass this number as an additional parameter into the URL before continuing with the rest of the name-value pairs. In addition, you can add reportid=1& to add a button that will redirect to the full transaction report.
This allows a ProFac partner to get details on an account. Accounts must belong to the partner in order to be retrieved. The request returns a status 23 (invalid accountType) if an account is not found and returns status 74 (trans or account error) if multiple parameters are submitted.
This allows a ProFac partner to retrieve the account’s current available and pending balances. It also returns a number of data points about the use of available funds as a transfer out of the account.
This allows a ProFac partner to add new beneficial owner information when the original account boarding call included OwnerCount but did not include all owner data.
To change existing owner data, please contact your Heartland Relationship Manager.
This allows a ProFac partner to update the information associated with an account by updating specific information.
All error types inherit from ApiException. The table below shows the error types our SDK handles.
| Error Type | Meaning |
|---|---|
| BuilderException | Handle builder validation issues |
| ConfigurationException | Handle cases when the service or gateway is configured incorrectly. |
| GatewayException | Handle gateway-related exceptions: invalid cc number, gateway-timeout, etc. |
| UnsupportedTransactionException | Handle cases when the configured transaction isn’t supported by the gateway, payment method, etc. |
| 23 Invalid Account Type | Returned during Get Account Information. This is returned if an account is not found. |
| 74 Invalid Account Type | Returned during Get Account Information. This is returned if multiple parameters are submitted. |
Get documentation and code examples for building other popular features into your application
Explore the other languages you can build with using our SDKs
Learn how our SDKs handle common errors
We’re here to help. Contact us if you have any questions or need assistance