Pages

Sunday, March 15, 2026

Designing Salesforce Payment Workflows with QuickBooks and Stripe (Part: 2)

Guess blog by: Antonina Kharchenko


Introduction: Operating Salesforce Payment Workflows in Real-World Integrations


In the first part of this guide, we explored how to design Salesforce payment workflows when integrating with systems such as Stripe and QuickBooks. We discussed how to structure Salesforce objects, define workflow triggers, model integration fields, and automate billing‑related processes so that customer records, subscriptions, and invoices remain aligned across platforms. If you haven’t read it yet, you can start with our previous article.

While designing workflows is essential, running payment integrations in production introduces a different set of challenges. Once Salesforce begins exchanging data with external financial systems, teams must manage synchronization timing, API limits, record matching logic, and security considerations.

These challenges are not unique to payment systems, they reflect broader trends in enterprise technology. According to Salesforce and MuleSoft’s Connectivity Benchmark Report, organizations today use over 1,000 applications on average, yet less than 30 % of these applications are integrated, leaving vast portions of business data siloed and disconnected.

Average Apps per Organization vs. Integrated Apps, image from Salesforce.

This article focuses on the most common challenges teams encounter when running Salesforce payment workflows in real environments. Understanding these challenges helps teams anticipate problems early and build integrations that remain stable as systems and data volumes grow.

Common Challenges in Salesforce Payment Workflows

Different challenges can come up depending on how you integrate Salesforce with external systems. Most issues happen with custom-built integrations, while some can also appear when using middleware or prebuilt apps. The challenges in this section give you a clear idea of what to watch out for.

Issue #1. Record Matching and Duplicate Accounts

What happens:
QuickBooks and Stripe both maintain their own unique customer IDs and account structures. When Salesforce attempts to sync a client record, the integration must match the Salesforce record to an existing external record.

Typical failure modes:
  • The external system creates a new customer instead of matching an existing one.
  • Duplicates are introduced because the matching criteria differ (email vs. name vs. ID).
What to check:
  • How the integration matches records by default (email, external ID, custom logic).
  • Whether custom matching rules can be configured.
Why it matters: Duplicate clients lead to mismatched financial records and require manual cleanup. A Salesforce study found that the average customer’s contact database is composed of 90% incomplete contacts, with 20% of records being useless due to several factors, such as 74% of the records needing updates and more than 25% of those being duplicates.


Issue #2. Field Mapping Discrepancies Between Systems

What happens:
Salesforce objects do not map one‑to‑one with external system objects. QuickBooks Online uses nested address structures (e.g., BillAddr, ShipAddr) and requires a CustomerRef when creating invoices. When updating records, SyncToken must be provided to prevent conflicts. Stripe also has its own object schema with required fields for customers and subscriptions. 

Typical failure modes:
  • Missing required fields cause API errors.
  • Updates fail if required attributes like SyncToken are not supplied.

What to check:
  • Confirm mandatory fields in QuickBooks or Stripe before creating or updating records.
  • Verify that Salesforce fields are mapped to the correct external attributes.


Issue #3. Timestamp and Data Staleness

What happens:
Different systems update data at different times and may use independent clocks or refresh intervals. Salesforce may receive external data with a delay or with timestamps that do not exactly match internal expectations.

Typical failure modes:
  • A subscription change in Stripe is reflected in Salesforce much later.
  • QuickBooks invoice states update with a delay and appears outdated.

What to check:
  • Sync frequency (near‑real‑time vs. scheduled batch).
  • Whether the integration supports event‑driven updates or only polling.
For example, with Breadwinner, you can configure the sync schedule to control how often updates are pulled into Salesforce.


Issue #4. API Limits and Large Data Loads

What happens:
Stripe and QuickBooks APIs impose rate limits. When initial data loads are large (many customers, invoices, payments), or when webhook traffic spikes, calls can fail or get throttled.

Typical failure modes:
  • Integration stops due to rate limit rejections.
  • Partial imports without clear error diagnostics.
What to check:
  • API usage quotas for the external system.
  • Support for throttling and back‑off logic.


Issue #5. Integration Security and Least Privilege

What happens:
Integration connections need the right permissions to create, update, or delete records in Salesforce, Stripe, or QuickBooks. If an integration user has too many privileges, it increases security and compliance risk; if it has too few, API calls will fail. Storing credentials insecurely (like hard‑coding in config or metadata) also poses a risk.

Typical failure modes:
  • API calls fail due to insufficient permissions.
  • Credentials embedded in code or configuration create audit and security issues.
  • Over‑privileged integration accounts expand the risk if credentials are compromised.

What to check:
  • Use dedicated integration users with narrowly scoped permissions that match only what the integration needs.
  • Configure authentication using OAuth 2.0 or Named Credentials to prevent hard‑coding secrets.
  • Rotate tokens and credentials regularly and avoid storing secrets in custom fields or hard‑coded Apex.


Issue #6. Webhook Reliability (Stripe)

What happens:
Stripe uses webhooks to deliver asynchronous payment and subscription events (e.g., payment success, subscription updates) to connected systems. Webhooks are best‑effort notifications and may not always arrive reliably or in order.

Typical failure modes:
  • Webhook deliveries fail or time out, so the connected system never receives critical events.
  • Events may be delivered more than once or out of order, requiring handling logic that accounts for duplicates and variability in delivery sequences.

What to check:
  • Verify the webhook endpoint configuration in Stripe (correct endpoint URL, HTTPS, and event types).
  • Ensure your integration processes events idempotently so that repeated deliveries do not produce inconsistent records.
  • Confirm that webhook retries are being logged and monitored, and address connectivity or handler errors that prevent successful responses.

Best Practices for Reliable Salesforce Payment Integrations

Designing Salesforce payment processing with QuickBooks or Stripe Salesforce integration requires a careful, methodical approach. Integrations are not just about moving data; they ensure client records, subscriptions, and invoices remain accurate and consistent across systems.

Define the source of truth: Decide which system owns each type of data. Salesforce for client details, Stripe for subscription history, QuickBooks for invoices. This prevents conflicts and accidental overwrites.

Validate and map fields: Make sure all required fields in external systems have corresponding Salesforce fields. Map products, pricing, and plans correctly to avoid errors during record creation.

Monitor sync processes: Use logs, alerts, and reports to catch failures early. Partial syncs or missed updates can be costly if left unchecked.

Handle updates carefully: Changes to client data should flow in a controlled, predictable way. Implement error handling and plan for retries on failed API calls.

Secure the integration: Use secure authentication, tokenized payment data, and least-privilege integration accounts. Ensure compliance with PCI, GDPR, and other relevant standards.

Prebuilt AppExchange apps such as Breadwinner can connect QuickBooks Salesforce or Stripe with minimal setup. For organizations with specific business rules or complex requirements, custom API solutions provide additional flexibility.

Following these practices supports automating Salesforce workflows that reduce manual effort, prevent errors, and keep Salesforce and the connected financial system aligned, giving teams confidence in the accuracy of client and payment data.

Conclusion: Reliable and Scalable Salesforce Payment Workflows

Designing Salesforce payment processing with QuickBooks or Stripe Salesforce integration requires a careful, methodical approach. Integrations are not just about moving data; they ensure client records, subscriptions, and invoices remain accurate and consistent across systems.

Payment workflows work best when they are thoughtfully structured, monitored, and maintained. From planning triggers and mapping fields to handling updates and addressing real-world challenges, a clear and consistent approach keeps data aligned and processes predictable. When workflows are designed and managed properly, organizations can reduce manual effort, prevent errors, and maintain confidence in their customer and payment data.

By addressing common challenges and following proven recommendations, organizations can automate billing processes confidently, reduce manual effort, and maintain accurate customer and payment data across Salesforce, Stripe, and QuickBooks. This approach ensures that payment workflows are not only functional but also scalable and resilient as business needs grow.



Friday, March 6, 2026

Designing Salesforce Payment Workflows with QuickBooks and Stripe (Part: 1)

Guess blog by: Antonina Kharchenko

Introduction: Understanding Salesforce Payment Workflows


Managing client records and financial data across Salesforce and external systems is complex. Client data exists in Salesforce, but to create subscriptions, invoices, or records in Stripe or QuickBooks, teams often rely on spreadsheets, CSV exports, or emails. When a client updates an address, email, or billing detail, these changes must be manually reflected in Stripe or QuickBooks, increasing the chance of errors and delays.

Most business applications remain isolated: only about 29% of systems are integrated, and 95% of IT leaders report challenges with data integration. These disconnected systems force teams to rely on manual data transfers like spreadsheets and emails when synchronizing client records between Salesforce, payment providers, and accounting platforms.

This article focuses on how to design reliable payment workflows in Salesforce when integrating with systems like Stripe or QuickBooks. We’ll explore how to structure objects, define workflow triggers, model integration fields, and automate billing-related processes so that customer records, subscriptions, and invoices stay aligned across systems. These design principles help reduce manual work, improve data consistency, and support scalable billing workflows directly from Salesforce.


Designing Salesforce Payment Workflows


Payment Process, image from Breadwinner

A payment workflow in Salesforce is more than building Stripe or QuickBooks to Salesforce integration. It’s about structuring objects, fields, and automation so that client data, subscriptions, and invoices are created and updated reliably. Proper workflow design reduces manual work, ensures data consistency, and makes integration predictable.

1. Define the Workflow Triggers
  • Choose the initiating events: Typically, a workflow begins with a Salesforce object changing state. For example:
    • A new Account or Contact is created → trigger client provisioning in Stripe or QuickBooks.
    • An Opportunity ready for billing → trigger subscription creation or invoice generation.
  • Determine conditional logic: Decide when the workflow should execute, such as only for specific Opportunity types, regions, or billing plans. This avoids unnecessary API calls.

2. Model Integration Fields in Salesforce
  • External system IDs: Store QuickBooks or Stripe customer IDs on the Salesforce Account or Contact object. This allows reliable mapping for updates.
  • Payment and subscription status: Include fields such as Subscription Status, Invoice Status, Last Payment Date, or Last Sync Timestamp. These fields make it possible to monitor workflow execution and detect failures.
  • Custom fields for required external data: Map required fields from QuickBooks or Stripe that Salesforce does not track natively (e.g., tax codes, billing cycles, Stripe plan IDs).

3. Decide on Automation Tools
  • Flow vs Apex:
    • Flow is suitable for standard automation, like creating a subscription after an Opportunity closes, or updating a QuickBooks record when an Account changes.
    • Apex may be needed for complex logic, bulk updates, or handling retries for failed API calls.
  • Process orchestration: Combine Flows with scheduled or triggered updates for tasks such as:
    • Periodic reconciliation of invoices.
    • Updating subscription status daily from Stripe.
    • Keeping Salesforce recurring payment records aligned with external payment and accounting systems

4. Map Data Flow Direction
  • Single source of truth: Define which system owns each piece of data. For example, Salesforce may own client contact info, while Stripe owns subscription history.
  • One-way vs two-way sync: Determine if updates flow only from Salesforce → external system, or if external changes also flow back. One-way sync is simpler and reduces conflicts, two-way sync adds visibility but requires careful conflict resolution.

5. Sequence and Error Handling
  • Workflow sequence example:
    • Opportunity meets billing criteria.
    • Validate client data in Salesforce.
    • Push the customer record to Stripe or QuickBooks.
    • Create a subscription or invoice in an external system.
    • Record external ID and status back in Salesforce.
    • Log errors or retries if any step fails.
  • Monitoring and alerts: Include fields or reports to track failed updates, partial syncs, or API errors. Set up notifications for admins so issues can be resolved quickly.

Existing Solutions to Solve the Problem in Salesforce


There are several approaches to integrating Salesforce with financial systems to manage client data, subscriptions, and Stripe payments Salesforce. Each approach comes with trade-offs in terms of effort, reliability, and maintainability.


Summary: Each integration of Salesforce payment solutions has strengths and limitations. Organizations should weigh ease of setup, level of automation, and long-term maintainability when selecting a solution, for example to integrate QuickBooks with Salesforce.


Step-by-Step: Managing Salesforce Payment Workflows


To demonstrate how Salesforce payment workflows can be implemented, we reviewed available solutions on the AppExchange. Building a custom integration or using middleware would require more development time and maintenance. Prebuilt solutions provide a quicker way to get started while still illustrating the core workflow concepts. 

Salesforce Stripe integrations on AppExchange

After evaluating options, we selected Breadwinner, which can connect Salesforce with QuickBooks or Stripe. For this guide, we’ll use the Salesforce Payments Stripe app as an example.

Payments Integration on AppExchange

The focus of this guide is on synchronizing client records, creating subscriptions, and handling updates reliably, ensuring Salesforce remains aligned with the external system.


Step 1: Install the App

Install the Breadwinner Payments Integration from AppExchange into your Salesforce org. Assign the required permissions to integration users and admins as per the app’s setup guide.

Get the app


Step 2: Connect the Stripe

Use the app’s authentication flow to link a Stripe account. This establishes a secure connection so Salesforce can push and receive data.

Connect with a Payment Processor


Step 3: Configure Object Mappings

Map Salesforce objects (Accounts, Contacts, Opportunities, or custom objects) to Stripe customers and subscriptions. Identify which fields from Salesforce will populate the corresponding Stripe fields, such as email, billing address, and subscription plan.

Example of Associated Salesforce Account


Step 4: Test Synchronization

Test the workflow with a small set of records. Verify that client records, subscriptions, and related data are created correctly in Stripe and that updates in Salesforce are reflected as expected.

Create an Invoice or Subscription from Salesforce


Step 5: Monitor and Refine

Use app-provided logs and Salesforce reports to monitor workflow execution. Check for errors, partial syncs, or missing data, and adjust field mappings, triggers, or validation rules as needed.

Key Takeaway: Using a prebuilt AppExchange app allows you to connect Salesforce to an external system, synchronize client records, and automate subscription or invoice creation, keeping both systems aligned without complex coding.

Agentforce and Payment Integrations

Payment integrations can also support automation through Agentforce. When billing and payment data from Stripe or QuickBooks is synchronized with Salesforce, Agentforce can use this data to trigger workflows, update account status, or initiate follow-up actions based on payment activity.

Breadwinner provides integration apps listed on AgentExchange, the marketplace for Agentforce extensions within Salesforce. These apps allow synchronized financial data to be used reliably in Agentforce workflows and automation.

Breadwinner on AgentExchange

In practice, this type of setup allows teams to manage billing workflows directly from Salesforce, while payment processing and financial records remain managed in external systems such as Stripe or QuickBooks.


Closing Thoughts: Building Reliable Salesforce Payment Workflows


Payment integrations are not only about connecting systems, they are about designing workflows that keep customer, subscription, and financial data consistent across platforms.

When Salesforce is used as the operational hub for sales and customer management, integrations with platforms like Stripe and QuickBooks make it possible to automate billing processes while maintaining a clear and reliable source of truth for different types of data.

The key principles discussed in this article help reduce manual work and improve data reliability across systems. Whether organizations choose prebuilt AppExchange applications, middleware platforms, or custom integrations, the most successful implementations start with well-designed workflows inside Salesforce.

In the next article, we’ll explore the operational side of Salesforce payment workflows in more detail, including common integration challenges, typical failure scenarios, and practical recommendations for building stable and secure payment integrations.


Monday, February 9, 2026

Excel: Copy Formula

One of the most powerful features of Excel is the formula and the ability to copy the formula easily across rows. But in a scenario where rows are filtered in other columns, the shortcut will not work -- this applies to both Excel desktop and Excel online

Rows filter >> double click bottom left of formula cell

  • will copy the value to all the rows below if all rows below are blank
  • will stop copying when it reaches a row (filtered or unfiltered) that is not blank


Rows filter >> manual copy and paste the formula

  • works, the filtered rows will be ignored, and the value will not be overwritten from the paste


Salesforce: ListEmail

In addition to the B2B Marketing Analytics - Account Engagement Emails and Account Engagement Email Templates Datasets discussed here. We can also retrieve email statistics sent from MCAE/Pardot using SOQL into the ListEmail object in Salesforce. 

The ListEmail object represents a list email sent from Salesforce or from Account Engagement, and the email sent result is synced to Salesforce. When the list email is sent, recipients are generated by combining the recipients from ListEmailIndividualRecipients and ListEmailRecipientSource. Duplicate and other invalid recipients are removed. The result is recipient sent any given list email. ListEmail has a one-to-many relationship with ListEmailRecipientSource and ListEmailIndividualRecipient. This object is available in API version 41.0 and later.

To differentiate emails sent from Salesforce or Pardot, check the SentVia field. 

SELECT SentVia, count(Id) FROM ListEmail WHERE CreatedDate = this_year GROUP BY SentVia

Each row represents an email sent; no recipients are on this object because the email can be sent to many people. Check ListEmailIndividualRecipient for email recipients, which is a child of ListEmail.


Reference:

Wednesday, December 3, 2025

Salesforce: Campaign Member Deletion

Contact or Lead Deletion

When a Contact or Lead used in a Campaign Member is deleted, all Campaign Members for that lead or contact will also be deleted.

Undeleting the Contact or Lead from the Recycle Bin will restore all Campaign Members for the Contact or Lead, including the Status. However, the Last Modified Date and By of the Campaign Member record will be updated with the timestamp of when the Contact or Lead is undeleted, along with the name of the user who performed the undeletion. The Campaign Member ID will be restored to the original Campaign Member ID. 


Campaign Deletion

When a Campaign is deleted, all Campaign Members associated with that Campaign will also be deleted.

Undeleting the Contact from the Recycle Bin will restore all Campaign Members for the Campaign, including the Status. However, the Last Modified Date and By of the Campaign Member record will be updated with the timestamp of when the Campaign is undeleted, along with the name of the user who performed the undeletion. The Campaign Member ID will be restored to the original Campaign Member ID. 


CampaignMember Deletion

When a Campaign Member record is deleted, it is not sent to the Recycle Bin, so it cannot be restored. Vote for this idea.


Bonus: In the CampaignMember object, there are LeadId, ContactId, and LeadOrContactId fields. For a Lead in Campaign Member, when the Lead converted to a Contact:

  • The LeadOrContactId will be updated from LeadId to ContactId
  • The LeadId will not be changed
  • The ContactId will be populated with the Contact ID


Monday, December 1, 2025

Excel: Count of Duplicate

We have recently encountered duplicate data entries being created in Salesforce by automation, resulting in multiple entries with the same lookup value. 

A spreadsheet is still one of the most widely use tools shared among business users. In this blog, I'll have 2 scenarios:

1. Mark how many duplicate roles based on a key field.

I know this can be achieved easily with a pivot table, but it would be great to see the number in the table itself.

sample: Excel formula for row 2, and the unique key is in column E

=COUNTIF(E:E,E2)


2. Mark rows to be kept and to be deleted

From the duplicate row, we need to keep 1 row and delete the rest.

Excel formula for row 2 =IF(COUNTIF($E$2:E2,E2)=1, "Keep", "Delete")

Excel formula for row 3 =IF(COUNTIF($E$2:E3,E3)=1, "Keep", "Delete")



Page-level ad