PCI requirements discourage the use of production credit cards within a test environment. Please use this test EMV test card set found here https://shop.b2ps.com/collections/card-set/products/uat-usa-emv-test-card-set-21-cards and order 21 test card sets https://b2ps.com/fileadmin/images/Focus_Card_Sets/UAT-USA_Set2111.WebReady.jpg. If the price is prohibitive you can also order individual cards but that would require submitting a request via their contact form https://b2ps.com/contact-us/.
Development time for the integration process is dependent on variety of factors such as current development priorities, QA process, and areas in the product that take payments. The integration typically takes between three - six weeks depending on the feature set selected.
With full access to the integrated product and no recommendations are made, the review and documentation process takes approximately three to five business days.
You are assigned a dedicated technical resource who works with you to scope, troubleshoot and provide sample code to ease the burden of the payment integration. The subsequent documentation allows for an intimate understanding of the relationship and your client's needs.
The certification process is a validation of your integration to ensure you have a well rounded product.
The Access to the product helps enable the completion of full review and documentation process, without requiring your schedule to be filled with the one-on-one support of the Integrations Specialist.
The signature is returned in Base64 encoding and PNG file format.
The transaction result message will include all necessary information for you to display the response in your system. The following fields are acceptable to display in your message to the user:
  • Result Code or Error Code
  • Result Text or Result Message
It is recommended you do not map any result or error codes to custom messages, as these codes may change over time.
The integration supports tokenization of the credit card through the Sale and the Save commands. It is not necessary to process a transaction to tokenize a card.
Yes! The hosted payment page allows for full customization of the look and feel through inline CSS. You can customize the form to meet your websites style and embed in an iframe.
If the terminal has been newly provisioned it may have not synced with all services. A background process is scheduled to run every 10 minutes to ensure this syncing takes place. If after 10 minutes you still receive this error message, verify the api_id and api_token are correct; these can be found in Control Center. If problems persist, please reach out to ConnectPlatformManagement@bofa.com.
Healthcare Omni Channel Gateway uses the following to security encrypt all communication.
  • Protocol: TLS 1.2
  • Encryption: RSA 2056 bit
  • Algorithm: SHA2
The Settings API allows for paginated fetching of the Sources and Terminals lists. This will include all mappings of the terminals to sources (merchant accounts) you will need to process.
The following transaction types are supported:
  • Check Sale
  • Check Void
  • Check Credit (Refund)
Check Sale is an ACH sale transaction, the equivalent to a credit card Sale. Used to debit funds from an account holder.
Check Credit is an ACH credit (refund) transaction, the equivalent to a credit card Return transaction. Used to return funds to an account holder.
The hosted payment form is used for acceptance of sensitive data from the card holder. The direct to Healthcare Omni Channel Gateway integration allows for Void and Refund of Sale transactions with the use of a Reference Number through the Healthcare Omni-Channel Gateway API.
No, the save command type allows for tokenization without card processing.
Yes, the voiding of a pre-authorization once it is determined it will not be captured is recommended. Leaving a pre-authorization open past the recommended amount of time may result in assessment of misuse of authorization fee by the card issuer.
Tips can be accepted in the Healthcare Omni Channel Gateway integration in a few ways.
Method 1: (Recommended)
Set the tip_method to typed on Create transaction. The terminal prompts for tip before processing the transaction.

Method 2:
Set the tip_method to written on Create transaction. The tip is written on the receipt. A subsequent Adjustment transaction with the new_amount and new_tip.

Method 3:
Set the tip_amount on Create transaction. The tip and the amount will be combined for the total amount processed.
The Terminal Text request field allows for text to be displayed on the terminal screen during the transaction. Most commonly used to display the name of the Patient or Customer, or a unique identifier of the transaction to reduce confusion when the terminal is shared between multiple workstations.
You can find the list of Healthcare Omni Channel gateway trigger amounts for credit cards here: Trigger Amounts PDF
The following transaction status results may be returned by the API:
in progress: The transaction is still in progress on the terminal.
approval: The transaction was approved.
declined: The transaction declined, verify reason in the Error field.
error: The transaction errored, verify reason in the Error field.
internal error: The transaction has been identified as not valid.
canceled: The transaction was canceled via the API cancel request or on the terminal.
timeout: The transaction exceeded the timeout period allotted.

If the confirm_amount flag is set the above list is expanded to include:
awaiting_amount: The transaction is still in progress on the terminal and is awaiting the partner to provide the amount.
awaiting_confirmation: The transaction is still in progress on the terminal and is awaiting the cardholder to confirm the amount is accurate.
A cURL request can be used for requests to the Healthcare Omni Channel API.


curl --location --request POST https://tb-sandbox.paymentfusion.com/transactions --header 'Accept: application/vnd.paymentfusion.v3.0.0+json' --header 'Content-Type: application/x-www-form-urlencoded' --header 'Authorization: Basic {Authorization Token}' --data-urlencode 'merchant_id={Assigned Merchant ID}' --data-urlencode 'amount=150.48' --data-urlencode 'serial_number={Terminal Serial Number}'