Payment collection in SwiftChecklist is a first-class step in the onboarding checklist — not a side note or a separate invoice system. When clients move through the portal and reach the payment step, they can pay immediately without switching to a different tool or logging into another system.
This document covers how to configure payment fields, best practices for payment timing, connecting your Stripe account, and troubleshooting common payment issues.
Connecting Stripe
Before you can use payment fields, you need to connect a Stripe account.
If you have an existing Stripe account:
- Go to Settings → Payments → Connect Stripe
- Click Connect with Stripe — you will be redirected to Stripe's authorization flow
- Log in to your Stripe account and authorize the connection
- You are returned to SwiftChecklist with the connection confirmed
If you do not have a Stripe account:
- Go to Settings → Payments → Connect Stripe
- Click Create a Stripe account to start the Stripe registration from the authorization flow
- Stripe requires business verification information including your business name, EIN or tax ID, bank account for payouts, and identity verification for account owners
- Complete the Stripe setup and return to SwiftChecklist to confirm the connection
Stripe payouts are sent to your connected bank account on Stripe's standard payout schedule (usually two business days after payment for US accounts, with some variation by country).
Adding a payment field to a checklist
In the template or instance builder:
- Click Add field at the point in the checklist where you want the payment step to appear
- Select the Payment field type
- Fill in the required configuration:
Payment amount: Enter the exact amount in your currency. The amount should match what is stated in the engagement agreement. Do not leave this to the client to determine.
Payment description: A brief, client-readable explanation of what the payment covers. Examples:
- "Opening retainer — held in trust and applied against billed fees"
- "Project deposit — 50% of the total project fee of $8,000"
- "First month's bookkeeping fee — January 2026"
Field label: The step name as clients see it in their checklist. "Submit retainer payment" or "Pay your project deposit" are clear. "Payment" alone is too vague.
Field instructions: Additional context above the payment form. Use this to tell the client what the payment unlocks — "Once your deposit is received, we will finalize the kickoff date and send your calendar invite."
Positioning the payment step correctly
The payment step should appear after the engagement agreement is signed and before work begins. The standard sequence:
- Intake information
- Engagement agreement signature ← signature here
- Payment ← payment here
- Document uploads
If you place payment before signature, clients are paying before they have confirmed the scope. This increases disputes.
If you place payment after document uploads, you have introduced a multi-week delay between agreeing to the work and clearing the commercial step. For law firms particularly, do not collect documents before the retainer is in.
Setting the payment step as conditional
If the payment step should only appear after the signature field is completed:
- Open the payment field settings
- Under Display conditions, add a condition: "Show this field when [signature field name] is completed"
This prevents the client from seeing the payment form before they have signed. On the client's side, the payment step becomes visible and accessible immediately after they complete the signature.
What happens after payment
After a client completes the payment step:
- Stripe processes the payment in real time
- The client sees a confirmation message within the portal (customizable)
- The client receives a Stripe payment receipt by email
- Your firm receives a payment notification (configurable in Settings → Notifications)
- The checklist instance records the payment as complete
- If payment was the final required step, the instance moves to Submitted state
If you are using the payment step as a gating condition — no work begins until payment is confirmed — configure your notification routing so the right team member receives the payment confirmation immediately.
Handling partial payments and split billing
SwiftChecklist's payment field is designed for single-amount, single-payment collection. If your engagement model involves:
Split payments (e.g., 50% deposit, 50% on completion): Create two payment fields in separate checklist instances, or manage the second payment outside SwiftChecklist using your invoicing system.
Variable amounts (e.g., hourly billing where the total is not yet known): The payment field requires a fixed amount. For engagements where the onboarding fee is fixed but ongoing billing is variable, collect the fixed fee in SwiftChecklist and manage ongoing billing in your billing system.
Pro bono or zero-fee engagements: Leave the payment field out of the template for those engagement types, or create a separate template without a payment step.
Refunds
Refunds are processed through your Stripe dashboard, not through SwiftChecklist. To issue a refund:
- Log in to your Stripe account
- Go to Payments → [find the relevant payment]
- Click Refund
- Select full or partial refund and confirm
After the refund is processed, the payment step in SwiftChecklist will still show as Completed — it does not reflect refund status. Update the checklist instance notes to record the refund if needed for your internal records.
Payout timing and fees
Payments processed through SwiftChecklist are subject to Stripe's standard processing fees (typically 2.9% + $0.30 per successful card transaction for US accounts, with ACH at lower rates). Stripe deducts fees before the payout reaches your bank account.
Payout timing depends on your Stripe account settings and country. Standard US accounts have a 2-business-day payout delay. You can check and configure your payout schedule from your Stripe dashboard.
SwiftChecklist does not add a fee on top of Stripe's standard rates.
Troubleshooting
Stripe connection shows as disconnected Re-authorize the connection from Settings → Payments → Connect Stripe. Stripe connections can lapse if the account owner changes their password or if Stripe detects unusual activity on the connected account.
Client receives an error on the payment form The error message in the payment form comes from Stripe and describes the specific issue (card declined, invalid card number, insufficient funds). Ask the client to try a different card. If errors persist across multiple cards, confirm that your Stripe account is in Live mode and not Test mode.
Payment shows as complete in Stripe but not in SwiftChecklist This occasionally happens if the client's browser closes before the confirmation is returned from Stripe. Contact support with the instance ID and the Stripe payment intent ID (visible in your Stripe dashboard). Support can manually confirm the payment status.
Client was charged but the step is still showing as incomplete Same resolution as above — contact support with both IDs.
Continue with
- Send for signature — configure the signature step that precedes payment
- Review and handoff — what to do when a submission includes a confirmed payment
- Connect your stack — route payment confirmations to your accounting or billing system