Authorize.net

   This PSP integration is currently in pilot. If you would like to participate, please contact FinDock Support.

FinDock integrates with Authorize.net, an global provider of payment services and subsidiary of Visa.

Multi-merchantMulti-currency
Payment MethodOne-timeRecurringRefunds
ACH Direct Debit
Card

Prerequisites

  • FinDock is installed and configured.
  • Working connections to ProcessingHub and WebHub.

Prepare Authorize.net merchant account

To integrate FinDock with an Authorize.net merchant account, you'll need API credentials and a webhook endpoint for notifications. Here we go through the configuration steps in the Authorize.net developer portal where you can create a sandbox account for testing.

To create API credentials:

  1. Log in to your Authorize.net account.
  2. Click the Account tab and under the Security Settings section, click API Credentials & Keys.
  3. Copy your API Login ID and save it in a temporary location. This ID is needed in the FinDock extension settings.MOTO target setting
  4. Under create New Key(s), select New Transaction Key and click Submit.
  5. Follow the submission instructions and then copy the key to a temporary location for the FinDock extension settings.
  6. Under create New Key(s), select New Signature Key and click Submit. This is needed for webhook notifications.
  7. Follow the submission instructions to complete the creation process.

After the FinDock configuration, you'll need to go back to the Authorize.net portal to complete the integration, so you can leave it open in a separate browser tab or window.

Install and activate Authorize.net extension

Follow the standard procedure for installing and activating the Authorize.net for FinDock payment extension.

Check and assign the required permissions. If you are using custom permission set groups, ensure the package-specific permission sets are assigned.

Activate payment method and add account for Authorize.net

To integrate with Authorize.net, you need to add a merchant account in FinDock that defines named credentials and other details related to your customer account with Authorize.net. Details may vary depending on whether you are configuring a test or production setup.

To add a merchant account for Authorize.net:

  1. Launch the FinDock app and go to the FinDock Setup tab.
  2. Go to Payment Processors & Methods.
  3. On the Installed tab, click the Authorize.net processor entry.
  4. On the Accounts tab, click Add account and fill in the settings as described below.
  5. If not done already, on the Payment Methods, click the toggle next to the payment methods you want to activate and use.

Authorize.net target settings

  • Merchant Account Name (Target): This is the value that you see in Target picklists. The name does not need to match the name of your account in the Authorize.net portal, however, make sure it easily distinguishable from other accounts in the org. If you use multiple currencies, we recommend including the currency identifier in the name.
  • Test Account: If you are configuring a test integration, mark this checkbox. The If checked the test endpoint will be used.
  • Default Account: Toggle this setting on if you want this account to be used for new Authorize.net payments that do not include a specific target in the payment intent.
  • Log Requests: Toggle this setting on if you want to capture all API requests between FinDock and Authorize.net. The requests are stored in Log object records.
  • Notification URL: This is the webhook URL used by Authorize.net to notify FinDock of payment events. Copy-paste the URL generated by FinDock into the Webhooks configuration of your Authorize.net portal under Notification Settings > Webhooks.
  • Currency: Select the currency used by your Authorize.net account. Each merchant account at Authorize.net supports a single currency. If you use multiple currencies, you need separate merchant accounts at Authorize.net (and in FinDock) for each currency.
  • API Login ID: Copy-paste the unique API Login ID associated with the account you are integrating with FinDock. If you do not have the original email from Authorize.net with this information, you can find the ID in your account portal under General Security Settings > API Credentials & Keys.
  • Transaction Key: Copy-paste the unique Transaction Key for the API Login ID you entered above. If you don't have the original email, you can generate a key under General Security Settings > API Credentials & Keys.

Add webhook endpoint to Authorize.net

The Notification URL from your target setup above needs to be added to your Authorize.net account so FinDock can receive webhook events from Authorize.net.

To add the Notification URL to Authorize.net:

  1. Log in to your Authorize.net account.
  2. Click the Account tab and under the Business Settings section, click Webhooks.
  3. Click Add Endpoint.MOTO target setting
  4. Configure the FinDock endpoint:
    • Enter a name for the endpoint.
    • Copy-paste the Notification URL from FinDick into the Endpoint URL field.
    • Set status to Active.
    • Select All events for the endpoint.
  5. Click Save when you are done.

Using Authorize.net

For both credit card and ACH payments, FinDock relies on the Transaction Id from Authorize.net to manage the installments. In the case of recurring ACH payments, FinDock also creates a mandate to capture the payer authorization for future installments of recurring payment.

You can set up and accept one-time and recurring payments through any of the following channels:

  • Giving Pages: accept payments through Givings Pages configured to use Authorize.net for card payments
  • PayLinks: create and share PayLinks for one-time or recurring payments
  • Payment API: custom front-end integration to the Payment API to accept new payments and update existing commitments
  • Virtual Terminal - MOTO: FinDock component for agents to setup payments with the payer present

   To validate a payer's account for a card, Authorize.net validates the payer's account for the card before setting up the payment. This can be a zero-dollar authentication step or a 1-cent transaction. The validation only applies to production environments and depends on the payer's card type and processor.

New one-time payments are automatically processed, collected and reconciled like normal online payments.

When a new recurring payment is set up, you use payment schedules to collect future installments.

The FinDock integration with Authorize.net also supports both full and partial refunds. You can issue a refund with the Authorize.net Quick Refund feature. The refund process sends notifications to FinDock for updating the impacted installments and creating negative Payment records. In the case of full refunds, the installment status is changed to Refunded. If the refund is a partial refund, the installment status is updated to Partially paid.

Payment API examples

The following are example payment intent messages for one-time and recurring card payments set up via the Payment API (with FinDock as source).

   If you are passing several parameters in a payment intent, the redirect URL may get very long. The Description in particular, can be long (max. 255 characters). A very long URL can break the payment flow with Authorize.net, leading to a "page isn't working" redirect error.

One-time card payment

{
    "SuccessURL": "https://www.example.com/success",
    "FailureURL": "https://www.example.com/error",
    "Payer": {
        "Contact": {
            "SalesforceFields": {
                "FirstName": "Test",
                "LastName": "Payment",
                "Email": "testpayment@findock.com"
            }
        }
    },
    "OneTime": {
        "Amount": "100"
    },
    "PaymentMethod": {
        "Name": "Creditcard",
        "Processor": "AuthorizeNet-for-FinDock"
    },
    "Settings": {
        "SourceConnector": "PaymentHub"
    }
}

Recurring card payment

{
    "SuccessURL": "https://www.example.com/success",
    "FailureURL": "https://www.example.com/error",
    "Payer": {
        "Contact": {
            "SalesforceFields": {
                "FirstName": "Test",
                "LastName": "Payment",
                "Email": "testpayment@findock.com"

            }
        }
    },
    "OneTime": {
        "Amount": "25",
    },
    "Recurring": {
        "Amount": "25",
        "Frequency": "Monthly",
        "StartDate": "2025-04-01"
    },
    "PaymentMethod": {
        "Name": "CreditCard",
        "Processor": "AuthorizeNet-for-FinDock"
    },
    "Settings": {
        "SourceConnector": "PaymentHub"
    }
}

Was this page helpful?