Configuring FinDock MOTO
FinDock MOTO is a paid add-on feature. Please contact us to get started.
With FinDock MOTO, you can accept credit card payments in a virtual terminal 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:
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.
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:
- Prove your PCI compliance (e.g. by providing your Attestation of Compliance or Self-Assessment Questionnaire)
- 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
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:
- Go to the Lightning App Builder of the record.
- In the Components tab on the left hand side, find “FinDock Payment” in the Custom - Managed section.
- Drag the FinDock Payment component onto the layout.
- Click the component in the App Builder preview to configure the components settings.
- Click Save.
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:
- Open your Screen Flow (required because user input is needed).
- Add a Screen component.
- In the Components tab on the left-hand side, find “FinDock Payment” in the Custom section.
- Drag the FinDock Payment Component onto the layout.
- Click the component in the App Builder preview, scroll down and configure the components settings.
- Click Save.
To use the Payment component in a Salesforce LWC component:
- Create a LWC component
- 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>
- 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>
- 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
Setting | Description | Values | Default | API name |
---|---|---|---|---|
Record Id | When 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 Id | N/A | N/A |
CVC is required | Sets the CVC input field as required on the component. Entering a CVC decreases the chances of the payment being rejected. | True / False | True | cvc_required |
Disable re-use of stored cards | If 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 / False | False | disable_re_use |
Save card with one-time payments | If 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 / False | False | save_card_one_time |
Processor | Picklist of available PSPs for processing MOTO payments. The picklist show PSPs that support tokenized credit cards. | Valid value from picklist | N/A | processor |
Target | The 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 picklist | N/A | target |
Targets and the Payment component
The FinDock Payment component needs a target to authorize the payer's card and collect the MOTO payment. When the component is used directly without customization, the Default Target in the component settings is used to collect the MOTO payment. This target can, however, be modified as a variable passed to the component in a custom workflow.
If you have multiple targets (merchant accounts), please take this into account collecting MOTO payments for installments created through other channels. Make sure the target used by the component is appropriate for collecting the installment. You may want to change the target through a variable in a custom workflow or use different component instances (with different default targets) to handle multi-merchant cases.
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 cards thru the Payment component
If a payer has stored cards available in your Salesforce environment, these are automatically shown in a picklist on the component. A card from the list can be used, or a new card can be added.
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 is 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.
- For Worldpay only: related mandates have targets that share the same Account Group Name
Additional Payment Profile fields for migrations
Because of the visualization of card options that can be chosen for re-use, such as showing the correct card brand icon, 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.
Field | Name | Value |
---|---|---|
Card brand | cpm__Brand__c | Must use exact values for the given PSP. See below for details. |
Card number | cpm__Credit_Card_Number__c | Full length with last 4 digits e.g. XXXX-XXXX-XXXX-4242 |
Card expiration | cpm__Expiration_Date__c and cpm__Expiration_Year__c | Credit 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 indicates 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.