--- title: "Payment Methods" slug: "payment-methods" updated: 2026-09-02T12:08:09Z published: 2026-09-02T12:08:09Z canonical: "docs.blackthorn.io/payment-methods" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.blackthorn.io/llms.txt > Use this file to discover all available pages before exploring further. # Payment Methods ## Introduction The purpose of the Payment Method object is to store the method by which you charge your customers. Payment Method types are segmented by and can be related to Accounts, Contacts, and/or other objects. Blackthorn Payments is built with PCI compliance in mind, we never store sensitive Payment Method details. Click [here](/v1/docs/pci-compliance) for information on PCI compliance. ## Obtain Payment Methods *To capture card or bank account information from a customer, there are multiple, PCI compliant, options using Blackthorn Payments.* ### Phone *If you are not recording your phone calls (if you are, this goes against the tenants of PCI compliance)...* - **Payment Method Object** Manually enter the Payment Method through the Card or ACH **Record Type**. A real-time API call sends the record to Stripe/Authorize.net to tokenize the Payment Method information. A card can be verified within seconds, where for Stripe ACH Payment Methods, it takes 4-5 days to be verified. - **Virtual Terminal** Manually enter the Payment Method through a popup, embedded Visualforce Page, or LWC component. The Virtual Terminal supports credit card, debit card, and ACH Payment Method types. ### Web - [PayLink](/v1/docs/introduction-1) feature. - Public web page as part of your website. - Salesforce Experience Cloud Within a Salesforce Experience Cloud, you can display the native objects to enter Payment Method information with the default user interface (UI), or you can create a custom Experience Cloud user interface. ### In-Person - Create your own custom page as part of a web app and access it via your mobile device. - Use the Virtual Terminal in Salesforce. ## Initial Setup ### Setup Wizard When you click **Grant Access** in the Payments Setup Wizard, a Payment Method with **Record Type** = "Card" is created. If you select "Yes" for ACH payments, a Payment Method with **Record Type** = "ACH" is also created. These record types live on the Payment Method object and relate to two different Payment Method page layouts and used to collect necessary card or bank account information. If you need to add ACH payments, navigate back to the Blackthorn | Payments Setup Wizard tab, click on the "Record Types" step, select "Yes" for ACH payments, then click **Make magic happen**. ### Card Payment Method ![H_01_09_Card Payment Method](https://cdn.document360.io/f977eec0-500f-40a3-b663-724a51f78075/Images/Documentation/H_01_09_Card%20Payment%20Method.png) --- [Embedded content](https://www.youtube.com/embed/tfWezb1bWpQ) 1. Navigate to the Payment Method object. ***Lightning:** Click on the App Launcher > Under "All Items" > Click on Payment Methods.* ***Classic:** Click on "All Tabs" ("+" icon in the top right) > Click on Payment Methods.* 1. Click **New**. 2. Select "Card" for the **Record Type**. 3. Required card details to enter - **Holder's Name** (required) - **Number** - **Expiration Month** (required) - **Expiration Year** (required) - **CVV** - **Postal Code** (required) - **Email** - While this is not a required field, we recommend you require it as we use email for Payment Gateway Customer matching logic in Salesforce. - *For example, if you already have an existing Stripe/Authorize.net Payment Gateway Customer in Salesforce with a Payment Method and a new Payment Method with the same email is added, it directly relates to the existing Payment Gateway Customer record.* - **Payment Gateway** - If a **Payment Gateway** is not selected, the default gateway will be used. - Related To Fields - If you add additional objects to the "Relationships" step in the Setup Wizard, meaning you want additional objects as the Transaction parent, those related objects will show up in this section as a "Lookup Field" along with the **Account** and **Contact** lookup fields. We recommend entering an **Account** and **Contact** for all Payment Method records. - **Street** - This field can be used for additional verification for the Payment Method. - The Payment Gateway Data section is data created for error logging and storing the tokenized card details on the Payment Method. - **Fingerprint** is not available with Authorize.net gateway. - When using External Accounts as part of Stripe Connect, the **Customer ID** will not be populated on the Payment Method. - When a Payment Method with **Payment Method Status** = "Valid" is created, the **Card ID**, **Customer ID**, and **Fingerprint** fields are populated. 1. Click **Save**. What happens after clicking Save? The card information is sent to Stripe/Authorize.net. The sensitive card information is removed from the Salesforce record and the gateway sends back a token for the Payment Method. This keeps us PCI compliant. No card information is ever saved in Salesforce. How do I change the Postal Code to not required? The default setting for the **Postal Code** field is required. If you need to change the default setting to not required, contact [Blackthorn Support](https://community.blackthorn.io/s/support), and they will change the setting. #### Card Status When saving the Payment Method record, the **Payment Method Status** will update to either "Valid" or "Invalid." As of Payments 6.69, a saved Payment Method is also promoted from "One-Time" to "Valid" when a payment succeeds and the method was set up for future use. This applies to a saved method of any type, not only Stripe Link. If you have reports, list views, or automation that treat "One-Time" as a permanent state, review them. - When **Payment Method Status** = "Valid", the record can be used to process immediate or scheduled Transactions. - When **Payment Method Status** = "Invalid", the record cannot be used. - When **Payment Method Status** = "One-Time", the record was captured for a single payment. A successful payment on a method set up for future use promotes it to "Valid." There are two error fields on the Payment Method record's page layout, **Error Message** and **Error Type**, that provide information on why the Payment Method's **Payment Method Status** is "Invalid". Blocking AMEX Transactions Need a way to block American Express Card charges? Read more [here](/v1/docs/payment-gateway). ### ACH Payment Method #### For Stripe ![H_01_09_ACH Payment Method Stripe](https://cdn.document360.io/f977eec0-500f-40a3-b663-724a51f78075/Images/Documentation/H_01_09_ACH%20Payment%20Method%20Stripe.png) **Micro-Deposit Verification** Before attempting to create an ACH Payment Method, it may be helpful to confirm that a Salesforce Contact record exists for the bank account holder. This will help ensure that Transaction data will be recorded for the intended person. Many organizations request a voided check to ensure the accuracy of the data to be entered. **Stripe Fingerprint** The [Fingerprint](https://stripe.com/docs/api/customer_bank_accounts/object#customer_bank_account_object-fingerprint) is automatically added to an ACH Payment Method once it has been saved and validated. This ID is used to uniquely identify bank accounts. Users can opt out of using the fingerprint matching logic by using one of our Custom Settings: 1. Navigate to Custom Settings in Setup. 2. Click **Blackthorn Pay - Trigger Settings**. 3. Click **Manage**. 4. Click **Edit**. 5. Find "Disable Fingerprint Matching (ACH)" and mark it as "TRUE". Following the above steps will bypass the Stripe fingerprint matching logic and defer to Blackthorn's legacy ACH matching logic which uses an ACH key and Customer ID. #### Add ACH Payment Methods with Non-USD Currencies To add ACH Payment Methods with non-USD **Currency ISO** values to Stripe accounts, you need to update the ACH **Record Type** on the Payment Method object. 1. Go to Setup. 2. Click the Object Manager tab. 3. Go to the Payment Method object. ![Update PM Currency_PM Object](https://cdn.document360.io/f977eec0-500f-40a3-b663-724a51f78075/Images/Documentation/Update%20PM%20Currency_PM%20Object.png) 4. Click the Record Types tab in the left navigation bar. ![Update PM Currency_Record Type](https://cdn.document360.io/f977eec0-500f-40a3-b663-724a51f78075/Images/Documentation/Update%20PM%20Currency_Record%20Type.png) 5. Click ACH. ![Update PM Currency_Click ACH](https://cdn.document360.io/f977eec0-500f-40a3-b663-724a51f78075/Images/Documentation/Update%20PM%20Currency_Click%20ACH.png) 6. Click **Edit** next to **Currency ISO**. ![Update PM Currency_Edit](https://cdn.document360.io/f977eec0-500f-40a3-b663-724a51f78075/Images/Documentation/Update%20PM%20Currency_Edit.png) 7. In the Picklist Values’ Available Values Column, select the currency ISO code you want to use. 8. Click **Add**. ![Update PM Currency_Add ACH](https://cdn.document360.io/f977eec0-500f-40a3-b663-724a51f78075/Images/Documentation/Update%20PM%20Currency_Add%20ACH.png) 9. Click **Save**. #### Create an ACH Payment Method [Embedded content](https://www.youtube.com/embed/qFRwuQIuCCo) 1. Navigate to the Payment Method object. ***Lightning:** Click on the App Launcher > Under "All Items" > Click on Payment Methods.* ***Classic:** Click on "All Tabs" ("+" icon in the top right) > Click on Payment Methods.* 1. Click **New**. 2. Set **Record Type**= "ACH". 3. Required ACH details to enter: - **Holder's Name** - **Account Number** - **Routing Number** - **Account Holder Type** *The fields on the right-hand side of the Payment Method detail section will be automatically populated from Stripe.* 4. Bank account verification fields: **Micro-Deposit One** and **Micro-Deposit Two** *Your customer will receive two verification amounts in their bank account. They will need to provide you with those two amounts to make their Payment Method "Verified". Only enter the amounts (such as 35 and 42, there is no need for 0.xx or a decimal).* - **Email** (Optional) The **Email** field is not a required field; however, we highly recommend requiring it as we use email for Payment Gateway Customer matching logic in Salesforce.*For example, if you already have an existing Payment Gateway Customer in Salesforce with a Payment Method and a new Payment Method with the same email is added, it directly relates to the existing Payment Gateway Customer record.* - **Related To Fields** If you add additional objects to the "Relationships" step in the Setup Wizard, meaning you want additional objects as the Transaction parent, those related objects would show up in this section as a "Lookup Field" along with the **Account** and **Contact** lookup fields.*We recommend entering a contact and/or account for all Payment Method records.* - **Optional Fields** - **Street** can be used for additional verification for the Payment Method and is only required if you enable it in your Stripe Dashboard. - The Payment Gateway Data section is data created by Stripe. When a "Valid" Payment Method is created the **Card ID**, **Customer ID**, and **Fingerprint** fields are populated.*When using External Accounts as part of Stripe Connect, **Customer ID** will not be populated on the Payment Method.* 5. Click **Save**. What happens when you click save? The bank information is sent to Stripe. The sensitive bank account information is removed from the Salesforce record and Stripe sends back a [token](https://stripe.com/docs/payments#collecting-payment-information) for the Payment Method. This keeps us PCI compliant. No bank account information is ever saved in Salesforce. **ACH Status** The **Payment Method Status** will update to "Pending" when the bank information has been entered and the record has been saved. If there is anything wrong with the **Account Number** or **Routing Number** you will receive an error message. When you enter the micro-deposit numbers (this may take a few days to capture) and save the record, the **Payment Method Status** updates to "Verified". At this point, you are able to capture Transactions. Keep in mind that Transactions generally take 4-5 days to show up as a "Pending" amount in your Stripe account or External Account if Stripe Connect is enabled. If the micro-deposit numbers are incorrect, the **Payment Method Status** will update to "Verification Failed". Once the correct micro-deposits are entered, the **Payment Method Status** will update to "Verified". If a Transfer sent to this bank account fails, the **Payment Method Status** updates to "Errored" and will not continue to send Transfers until the bank details are updated. There are two error fields on the Payment Method record's page layout, **Error Type** and **Error Message**, that provide information about why the Payment Method is "Invalid". #### For Authorize.net 1. Navigate to the Payment Method object. ***Lightning:** Click on the App Launcher > Under "All Items" > Click on Payment Methods.* ***Classic:** Click on "All Tabs" ("+" icon in the top right) > Click on Payment Methods.* 1. Click **New**. 2. Set **Record Type**= "ACH". 3. Required ACH details to enter: - **Holder's Name** - **Account Number** - **Routing Number** - **Account Holder Type** 4. Set the **ECheck Type** (CCD, PPD, WEB). [Visit Authorize.net](https://developer.authorize.net/api/reference/features/echeck.html#Understanding_eCheck_Types) to know the more about echecks. 5. Set the **Bank Account Type** (Optional). 6. Set the **Bank Name** (Optional). For ACH test Payment Methods, a valid [Routing Number](/v1/docs/test-data) is required. You can set the Customer Lookup field if you don't want to create a new customer. 1. Click **Save**. **What happens when you click save?** The bank information is sent to Authorize.net. The sensitive bank account information is removed from the Salesforce record and Authorize.net sends back a token for the Payment Method. This keeps us PCI compliant. No bank account information is ever saved in Salesforce. - **Email (Optional)** **Email** is not a required field, however, we highly recommend requiring it as we use email for Payment Gateway Customer matching logic in Salesforce. *For example, if you already have an existing Payment Gateway Customer in Salesforce with a Payment Method and a new Payment Method with the same email is added, it directly relates to the existing Payment Gateway Customer record.* - **Related To Fields** If you add additional objects to the "Relationships" step in the Setup Wizard, meaning you want additional objects as the Transaction parent, those related objects would show up in this section as a "Lookup Field" along with the **Account** and **Contact** lookup fields. *We recommend entering a **Account** and/or **Contact** for all Payment Method records.* - **Optional Fields** - **Street** can be used for additional verification for the Payment Method. - The Payment Gateway Data section is data created for error logging and storing the tokenized ID's in Salesforce. When a "Valid" Payment Method is created the **Card ID**, **Customer ID**. **ACH Status** The **Payment Method Status** will update to "Valid" when the bank information has been entered and the record has been saved. If there is anything wrong with the **Account Number** or **Routing Number** you will receive an error message. There are two error fields on the Payment Method record's page layout, **Error Type** and **Error Message**, that provide information about why the Payment Method is "Invalid". *Please note that ACH transactions with **ECheck Type** = "WEB" can't be refunded. You will see a validation error message if a WEB Transaction is attempted to Refund.* *Kindly [visit Authorize.net](https://developer.authorize.net/api/reference/features/echeck.html#eCheck_Type_Requirements) to know the more about eCheck Type Requirements* **Card and ACH notes** When entering the **CVV** and information in the billing fields, there is an [AVS](https://stripe.com/docs/disputes/prevention#avs-check) (address verification) check and the three fields: **CVV Check**, **Street Check**, and **Postal Code Check** will automatically update with an "Unavailable", "Pass" or "Fail" status. If you have more than one Payment Gateway set up, manually enter in the **Payment Gateway** lookup field to make your selection otherwise, if left "Blank", the [default](https://docs.blackthorn.io/docs/payment-gateway) Payment Gateway will be used. ### Non-Gateway Payment Methods You can create records which represent a Payment Method, but they are not actually sent to the Payment Gateway. This means that any Transaction linked to these records are symbolic, i.e. not sent to the gateway. In order to create a Non-Gateway Payment Method: 1. Create a new Payment Method record. 2. Uncheck the **Send to Gateway** checkbox. 3. Populate all the required fields. 4. Click **Save**. ## Remove the Payment Method Once a Payment Method record in Salesforce has synced to the Payment Gateway (Stripe/Authorize.net), you are unable to delete the record. If you need to remove the Payment Method for any reason, that can be done by clicking the **Remove From Gateway** button or checking the **Remove From Gateway** checkbox. This functionality was created so historical information can be kept while ceasing all ways to capture transactions. 1. Navigate to the Payment Method object. - Lightning: Click on the app launcher > Under "All Items" > Click on Payment Methods. - Classic: Click on "All Tabs" ("+" icon in the top right) > Click on Payment Methods. 2. Click on the record you want to remove from Stripe. 3. Click the **Remove From Gateway** button or check the **Remove From Gateway** checkbox. The **Payment Method Status** will update to "Deleted from Payment Gateway". ![H_01_09_Remove Payment Method](https://cdn.document360.io/f977eec0-500f-40a3-b663-724a51f78075/Images/Documentation/H_01_09_Remove%20Payment%20Method.png) ## Related Contact, Account, and Lead Logic 1. When defining the **Contact** and/or **Account** fields on a Payment Method for a new customer, the Payment Gateway Customer record will inherit the same Contact and Account as well. 2. If you set the **Contact** field on a Payment Method where the Contact is related to an Account, the Account will automatically be added to the Payment Method **Account** field. 3. When the **Contact**, **Account**, or **Lead** fields are set on the Payment Gateway Customer record, the newly created Payment Method will inherit the same Contact, Account, and Lead as well. ## Remove the Payment Method Parent Object 1. Navigate to Setup. 2. In the Quick Find, type in and search for "Custom Settings". 3. Click **Manage** next to Payment Method Parents. 4. Click **Delete** next to the object you want to remove. 5. Delete the lookup fields on both the Payment Method object and your object. ## Update an Existing Payment Method **Need to update an existing Payment Method?** Sometimes Payment Methods expire, but retain the same card details like card number. When this happens you can edit the expiration date. See instructions below: 1. Search for the existing Payment Method that requires the update. 2. Click **Edit**. 3. Type in the new 2 digit month value in the **Expiration Month** field. 4. Type in the new 4 digit year value in the **Expiration Year** field. 5. Click **Save**. The updated **Expiration Month** and **Expiration Year** fields will be sent to Stripe for the edited Payment Method. ## Troubleshooting If you have received an error with your Payment Method or have a question, please view our [Troubleshooting](https://docs.blackthorn.io/docs/payments-troubleshooting) or [FAQ](https://docs.blackthorn.io/docs/payments-faq) page. The user interface (UI) includes every element a user might interact with when using a Blackthorn app, such as objects, records, fields, the checkout experience, features and components, and the Mobile Check-in and Mobile Payments apps.