Stripe

FinDock integrates with Stripe, a well-known international Payment Service Provider (PSP).

Please note that your contractual limitations with Stripe apply. If your contract doesn’t include a certain payment method, the FinDock extension cannot use that method either.

Multi-merchantMulti-currency
Payment MethodOne-timeRecurringRefunds
Card
Bacs Direct Debit
SEPA Direct Debit
iDEAL
Apple Pay
Google Pay
Bancontact
ACH Direct Debit
BLIK
Przelewy24

Prerequisites

  • FinDock is installed and configured.
  • WebHub is connected.

   The FinDock integration supports pre-filling the Stripe Checkout hosted payment page. This requires precise Salesforce deduplication rules. Deduplicating a contact just based on name, for example, can lead to incorrect pre-filling which may raise concerns with payers. Also note that pre-filing the email address can only be done when the standard Email field on Contact or PersonEmail on Person Account is passed to the Payment API or used with Giving Pages.

Install the Stripe extension

Follow the standard procedure for installing payment processors to add the Stripe payment extension and activate payment methods.

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

Configure the Stripe extension

After the Stripe payment extension is activated in FinDock, you need to link it to your Stripe account.

To connect FinDock to a Stripe account:

  1. Launch the FinDock app and click the FinDock Setup tab.
  2. Go to Payment Processors & Methods.
  3. Under Installed Processors, click the Stripe processor entry.
  4. Click Add account and enter an name for the Stripe account (distinguishable from other targets).
  5. Adjust the toggles as needed.
    • Test Account: enable if you are setting up a test configuration.
    • Default Account: enable if this account should be used as the default account for Stripe payments.
    • ACH Instant Verification Only if you collect ACH (USA) Direct Debits with Stripe, you can enable this when you only want to allow payers to verify their bank account by logging in to their bank, not by entering the bank details and receiving & verifying micro-deposits. More information on bank account validation for ACH can be found here
  6. Click Connect with Stripe. You are redirected to the Stripe Connect login page
  7. Select your Stripe account for this integration and enter your credentials. Do not use the skip this form option!
  8. Wait to be redirected back to FinDock and click Save.

If you add more accounts, use the default toggle to define which account should be used in calls the Payment API that don't specify an account (target).

To disconnect a Stripe account, simply go to the account settings and click Disconnect Stripe.

   Only one 3rd party platform can be connected to a Stripe account at a time. If you want to connect multiple orgs, please refer to this Stripe guidance.

   If you migrating your Stripe integration from FinDock Payment API v1 to v2, or otherwise had an existing Stripe integration with FinDock, you need to manually delete the webhooks used with FinDock in your Stripe account.

Paying with Apple Pay and Google Pay

Stripe enables payments with an Apple Pay or Google Pay digital wallet. No extra configuration is required to enable this for FinDock.

To use Apple Pay and Google Pay:

  1. Create an installment with payment method CreditCard and payment processor PaymentHub-Stripe.
  2. Redirect the user to the Stripe (CreditCard) checkout payment page on their Android or Apple device (or in their Chrome browser logged in with their Google Account).
    • If the installment was created through the FinDock API, please use the RedirectURL provided in the response.
    • If the user has a digital wallet installed, Stripe automatically recognizes the wallet and shows an Apple Pay or Google Pay button.
      Stripe Apple Pay
  3. When the payer clicks the button:
    • If data like billing address and email address missing: prompted to add these from this screen:
      Stripe Apple Pay prompt for info
    • Prompted to pay with Passcode
      Stripe Apple Pay prompt for passcode
  4. The payer is redirected to:
    • SuccessURL if the payment is successful
    • FailureULR if the payment was cancelled or unsuccessful

FinDock updates the original installment with the status of the payment and stores a payment linked to the installment with a payment profile containing the wallet details from Stripe. Since both debit and credit cards can be used with wallets, the type of card is stored in the ‘Funding Type’ field.

Recurring Google Pay payments

If a recurring payment is set up with Google Pay, you collect future installments using payment schedules. Installments are automatically included in payment schedules with PaymentHub-Stripe as the payment processor and CreditCard as the payment method.

Payment collection follows the normal process with updates to installments coming automatically through regular notifications from Stripe.

Setting up direct debits

You can use Stripe to create and collect direct debit payments use Stripe's bank debit payment flows.

A new direct debit payment through Stripe can only be created online. That is, you need to use the FinDock Payment API, either through a custom front end, Giving Pages or PayLinks.

The FinDock Core mandate service is not used to handle Stripe direct debit mandates. These mandates are fully managed by Stripe. The Mandate records in Salesforce only reflect the information FinDock receives through mandate.updated events from Stripe. Changes made directly to the records in Salesforce are not pushed to Stripe.

ACH Direct Debit bank account validation

For ACH Direct Debit Stripe offers two options to verify the bank details and ownership of the bank account:

  • Instant Verification: the payer logs into their bank account on Stripe's hosted payment page. This also means the payer doesn't have to manually enter their bank details.
  • Micro-deposits: the payer chooses "Enter bank details manually" on the Stripe hosted payment page and is sent two micro-deposits to their bank account by Stripe. Stripe sends the payer an email with instructions and a link to a Stripe page on which the customer can enter the micro deposit amounts or code from the bank statement. The payer has 10 days to perform this action, or the validation will expire. You can disable this option by enabling "ACH Instant Verification Only" in the Stripe settings in your FinDock setup.

To test verifying bank details with micro-deposits:

  1. Set up a new payment through your webform or FinDock Giving Pages.
  2. Go to the Inbound Reports tab in your Salesforce environment.
  3. Find the Inbound Report with Report Type = PaymentHub-Stripe and Report SubType = setup_intent.requires_action.
  4. In the Raw Message field, find the hosted_verification_url and click the link.
  5. Follow the instructions on the Stripe page. You can find test values in the Stripe documentation on ACH Direct Debit.

It is not possible to receive the actual email your customer will receive from Stripe in test environments.

Stripe refunds and installment status handling

You can refund payments processed through Stripe using the Stipe Dashboard. Refunds and other actions trigger vents which FinDock automatically processes.

Stripe eventInstallment statusPayment record
charge.capturedCollectedCreate payment
charge.failedFailedNo payment
charge.pendingPendingNo payment
charge.refundedRefundedCreate negative payment
charge.succeededCollectedCreate payment
charge.dispute.funds_reinstatedCollectedCreate payment
charge.dispute.funds_withdrawnRefundedCreate negative payment

Other Stripe events do not trigger changes to the installment status.

Payment API messages

The following are example messages for single and recurrent payments using the Payment API.

Dynamic parameters on checkout

The FinDock integration with Stripe supports Stripe-specific parameters for line item name (line_item.name) and description (line_item.description).

   Be careful using special characters, such as % $ #, in the description. Not all special characters are supported and may be rejected by Stripe.

The name default is “Donation” if no name value is passed. The description value is dynamic and mapped to bank statement description (cpm__bank_statement_description__c). For example, in the following checkout page screenshot:

  • PaymentMethod.Parameters.itemName = “Donation”
  • PaymentMethod.Parameters.description = “test 123 abc”
  • oneTime.Amount = “50.00”

Stripe checkout parameters example

To dynamically set these Stripe-specific values in the API call, you would use this sort of message:

 "PaymentMethod": {
        "Name": "Creditcard",
        "Processor": "PaymentHub-Stripe",
        "Parameters": {
            "itemName": "Donation"
            "description": "test 123 abc"
           }
    },

One-time payment with credit card

{
    "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": "36"
    },
    "PaymentMethod": {
        "Name": "Creditcard",
        "Processor": "PaymentHub-Stripe"
    },
    "Settings": {
        "SourceConnector": "PaymentHub"
    }
}

Recurring payment with credit card

The following message is for a recurring payment that does not require an initial payment.

   Custom Payment API front-end integrations, as well as Giving Pages and PayLinks, can define if the optional initial payment is used or not.

{
    "SuccessURL": "https://www.example.com/success",
    "FailureURL": "https://www.example.com/error",
    "Payer": {
        "Account": {
            "SalesforceFields": {
                "Name": "Test Payment account",
                "BillingStreet": "1234 Some Street",
                "BillingCity": "Some City"

            }
        }
    },
     "Recurring": {
          "Amount": "25",
          "Frequency": "Monthly",
          "StartDate": "2021-04-01"
     },
    "PaymentMethod": {
        "Name": "CreditCard",
        "Processor": "PaymentHub-Stripe"
    },
    "Settings": {
        "SourceConnector": "PaymentHub"
    }
}

Troubleshooting

Paying through FinDock Payment (MOTO)

Error From Stripe: Sending credit card numbers directly to the Stripe API is generally unsafe. [...]

This error appears if your Stripe merchant account is not fully configured to take MOTO payments. Please contact your Stripe representative and tell them you need to "Handle card information directly" for MOTO payments. You can also find this setting in your Stripe Dashboard. Stripe can guide you through everything that needs to be configured if you have further questions.

Was this page helpful?