Skip to main content

Configuring FinDock MOTO

info

FinDock MOTO is a paid add-on feature. Please contact us to get started.

With FinDock MOTO, you can accept credit card payments directly from within Salesforce. The FinDock Payment component for MOTO (Mail Order / Telephone Order) payments can be used with the following Payment Service Provider (PSP) options:

Worldpay PILOT

Although the FinDock Payment component is generally available, the Worldpay Corporate Gateway support is in pilot, so normal pilot limitations apply.

Pre-requisites

  • The payment extension for a supported PSP is configured and the credit card payment method is activated.
  • MOTO is enabled for your PSP merchant account. This may require some actions in your PSP dashboard or portal, as well as directly contacting your PSP to request enabling MOTO.

How the FinDock Payment component works

The FinDock Payment component is dynamic based on the payment context - one-time or recurring. It can be used on FinDock objects Installment and Recurring Payment, as well as equivalent NPSP and Fundraising objects.

For one-time payments, the component completes authorization and then charges the payment amount to the credit card. For recurring payments, the component authorizes the credit card but does not initiate a charge. The first payment and future payments are collected through payment schedules.

Depending on the component settings, the following records are created and linked to the record where the component was used:

  • A Payment Profile record with the last 4 digits of the credit card number and the expiration date of the card.
  • A Mandate record with the customer Id and payment method Id from the PSP and the related target (merchant account). This record is used to collect future payments of recurring charges.

If the component is used on an existing record that already has a linked payment profile and mandate, these are unlinked and replaced by a new payment profile and mandate for the credit card MOTO payment. The payment method and processor are also updated.

Arrange PCI compliance

For information about how FinDock supports your PCI compliance, please visit our PCI compliance article.

tip

Becoming PCI compliant and proving you are compliant could involve significant work. We strongly recommend you start this process as early as possible to avoid delays in your project.

To be able to work with credit cards, a PSP may require your organization to be PCI compliant. This is the case with Stripe, for example. The process to be approved for MOTO differs from one processor to the next. So, even if you are PCI compliant with another PSP, you need to go through the process with the PSP who will process your MOTO payments. This typically has two phases:

  1. Prove your PCI compliance (e.g. by providing your Attestation of Compliance or Self-Assessment Questionnaire)
  2. Once approved, your PSP enables MOTO for your account

Please contact your PSP for details on how to get MOTO enabled for your account.

Make the component available to Salesforce users

The FinDock Payment component can be exposed to users in two ways:

  • By adding it directly to the record layout for any of the following objects:
    • FinDock Installment
    • FinDock Recurring Payment
    • NPSP Opportunity
    • NPSP Recurring Donation
    • Fundraising Gift Transaction
    • Fundraising Gift Commitment
    • Fundraising Gift Commitment Schedule
  • By adding it to a custom workflow built with tooling such as:
    • Salesforce Screen Flows
    • Salesforce Lightning Web Components (LWC)

Adding the Payments Component to a record layout

info

At this time, MOTO payments can only be collected on Contact. If Person Accounts are enabled in the org, the component also works on Person Account, but not Business Account.

To add the Payments Component directly to a record layout:

  1. Go to the Lightning App Builder of the record.
  2. In the Components tab on the left hand side, find “FinDock Payment” in the Custom - Managed section.
  3. Drag the FinDock Payment component onto the layout.
  4. Click the component in the App Builder preview to configure the components settings.
  5. Click Save.

FinDock Payment component on a record layout

Adding to custom workflow

The MOTO component can be added to a custom workflow for Salesforce users to make all the desired actions easy to complete. For instance, the flow could include creating a Contact record first, automatically followed by an Installment/Opportunity record where the component is ready to go.

There are two ways to use the Payment component in a custom workflow:

  • using Salesforce Flow
  • using Salesforce LWC

To use the Payment component in a Salesforce Screen Flow:

  1. Open your Screen Flow (required because user input is needed).
  2. Add a Screen component.
  3. In the Components tab on the left-hand side, find “FinDock Payment” in the Custom section.
  4. Drag the FinDock Payment Component onto the layout.
  5. Click the component in the App Builder preview, scroll down and configure the components settings.
  6. Click Save.

FinDock Payment component in a Flow

To use the Payment component in a Salesforce LWC component:

  1. Create a LWC component
  2. Embed the FinDock Payment component in your components .html file. The component requires a Salesforce record id of a supported object to work. See above for supported objects.
<template>
<cpm-findock-payment record-id={my-record-id}></cpm-findock-payment>
<template>
  1. Depending on your requirements, set the settings of the component. See Component settings below for available settings. For example, you force the component to save the card for one-time payments by setting save_card_one_time="true" as follows:
<template>
<cpm-findock-payment
save_card_one_time="true"
record-id={my-record-id}></cpm-findock-payment>
<template>
  1. In your components .js controller, pass the record id (and other variables) to your component variable by - for example - creating a tracked variable.
@track my-record-id

Component settings

SettingDescriptionValuesDefaultAPI name
Record IdWhen used in a Flow, the component asks for the Id of the record for the payment, e.g. an Installment record Id.Unique Salesforce record IdN/AN/A
CVC is requiredSets the CVC input field as required on the component. Entering a CVC decreases the chances of the payment being rejected.True / FalseTruecvc_required
Disable re-use of stored cardsIf a payer has stored credit cards available in the org, these are automatically shown in a picklist on the component. Enable this setting to exclude cards entered through the component.True / FalseFalsedisable_re_use
Save card with one-time paymentsIf checked, FinDock also stores a mandate when one-time payments are performed. This mandate can be reused for other one-time and recurring payments. For recurring payments FinDock always stores a mandate to collect payments against in the future.True / FalseFalsesave_card_one_time
ProcessorPicklist of available PSPs for processing MOTO payments. The picklist show PSPs that support tokenized credit cards.Valid value from picklistN/Aprocessor
TargetThe target (merchant account) used to authorize and collect MOTO payments. If no target is set on the given record, the component uses this setting.Valid value from picklistN/Atarget

Targets and the Payment component

caution

If you have multiple merchant accounts / targets, please take this into account when performing MOTO payments on Installments created through other channels. For instance, make sure to update the Target if the Installment was set up through an online flow and you use a different Target for MOTO payments.

FinDock chooses a target (merchant account) to authorize the card against based on the following logic:

  1. If a target is defined on the one-time or recurring record that is passed to the component or the component is placed on, that target is used.
  2. If no target is set on the record, the Default Target in the component setting or which is passed to the component as a variable is used.
  3. If no target is set on the record or on the component, the default target for the PSP (set in the payment extension configuration) is used.
note

No credit card payments may be accepted directly from cardholders through the FinDock Payment component because the component circumvents (by necessity) the required 3DS checks. This is only allowed when the cardholder is not the entity entering the card details.

Reusing credit cards thru the Payment component

If a contact has stored credit cards available in your Salesforce environment, these are automatically shown in a picklist on the component. A credit card from the list can be used, or a new card can be added.

FinDock Payment component with credit card re-use option

The criteria for whether or not a card (a Payment Profile record) is shown in the picklist are:

  • Related Mandate must be active with status Success
  • Target on related Mandate must match target that will be used by component
  • Payment profile must be active
  • Contact on Payment Profile must match contact on record where the Payment Component is open
  • Expiry Month and Year on payment profile must not be empty and must be in the future.

Additional Payment Profile fields for migrations

Because of the visualization of card options that can be chosen for re-use, we strongly recommend ensuring the following card-related data is migrated to FinDock. This helps service agents select the correct card for re-use.

In addition to the general migration recommendation for Payment Profile data, the following fields should be populated.

FieldNameValue
Card brandcpm__Brand__cMust use exact values for the given PSP. See below for details.
Card numbercpm__Credit_Card_Number__cFull length with last 4 digits e.g. XXXX-XXXX-XXXX-4242
Card expirationcpm__Expiration_Date__c and cpm__Expiration_Year__cCredit card expiry month and year

To show the card brand icon in the MOTO component for ease of selection when re-using stored cards, use the following values in the brand field:

  • Amex = amex
  • CB = cb
  • Dankort = dankort
  • Diners = diners_club
  • Discover = discover
  • ECMC = mastercard
  • JCB = jcb
  • Maestro = maestro
  • Mastercard = mastercard
  • Universal Air Travel Plan = uatp
  • Visa = visa

FAQs

Can I create the record for Recurring Payment / Recurring Donation or Installment / Opportunity from the component? Can I add a campaign or other data to these records through the component?

Yes, but not through to the component itself. You can create a custom workflow through Flow or LWC where these records are created and include the Payments Component to execute the credit card payment collection steps.

How does the FinDock Payment component work with 3DS?

Since it is not the payer (credit card owner) who enters the card details, 3DS is explicitly disabled for MOTO payments. These are so-called “cardholder not present” transactions. This also means that it is explicitly prohibited to have cardholders enter details themselves by exposing the component outside of your private Salesforce environment.

Can I reuse a credit card after it has been authorized through the component?

Yes, a linked payment profile and mandate are stored in Salesforce automatically for recurring payments set up through MOTO. You can reuse those authorization details if you so wish. However, you must ensure through your own processes that the payer has explicitly agreed to further use of those payment details. If you wish to also store a mandate when performing one-time payments through MOTO, please set the Save card with one-time payments setting on your component to True. For more information, see Component settings.

How can I distinguish between MOTO and non-MOTO payments?

There are several ways to distinguish between MOTO and non-MOTO payments, including but not limited to:

  • Setting a value in a custom field when embedding the component in a Flow or LWC component
  • Setting up and using a specific target (merchant account) for MOTO payments.

Can I use this component in Salesforce Experience Cloud?

As long as the person entering the card details is an agent of your organization and not the cardholder, Experience Cloud is behind a login, and your Experience Cloud is covered by your PCI compliance, then yes. To prevent compliance issues, Guest Users are in any case not able to use the component.

Can I just send the credit card details as parameters to the Payments Component in my Flow or LWC?

No, this would violate the scope of our PCI compliance and is therefore prohibited in our implementation.

Can I set the CVC and Cardholder Name to be required for Phone and optional for Mail payments?

Yes, if you use a Screen Flow, you can pass different settings based on a flow decision.

Why do I get Error From Stripe: Sending credit card numbers directly to the Stripe API is generally unsafe. [...]?

To be able to process MOTO payments through Stripe, your account needs allow you to directly handle credit card information. This error indicats your merchant account is not yet fully configured to take MOTO payments. Please contact your Stripe representative and tell them you need to "handle card information directly." They can guide you through the necessary configuration steps.