Skill Tracer
Skills › Knowledge Work Plugins › month-end-prep › paypal-settlements.md

paypal-settlements.md

110 lines · small-business/skills/month-end-prep/reference/paypal-settlements.md at 2574e29

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Payment Processor Settlements Reference
2

Payment Processor Settlements Reference

Raw lines 1 to 2
3## Contents
4
5- [PayPal](#paypal)
6- [Square](#square)
7- [Stripe](#stripe)
8- [Reconciliation logic (all processors)](#reconciliation-logic-all-processors)
9
10---

Contents

  • PayPal
  • Square
  • Stripe
  • Reconciliation logic (all processors)

Raw lines 3 to 11
12## PayPal
14### Settlement report structure
16The PayPal connector returns a **Transaction History** or **Settlement** report.
17Key fields:
19| Field | Notes |
20|---|---|
21| `transaction_info.transaction_id` | PayPal transaction ID |
22| `transaction_info.transaction_initiation_date` | When the transaction occurred |
23| `transaction_info.transaction_amount.value` | Gross amount (positive = money in) |
24| `transaction_info.fee_amount.value` | PayPal fee (negative) |
25| `transaction_info.transaction_status` | Use only `S` (Success) and `P` (Pending) |
26| `payer_info.email_address` | Customer email — useful for matching |
28**Deposit date vs. transaction date:** PayPal batches payouts. A sale on April 28
29may not deposit until May 2. Match by **deposit date** when reconciling against QB
30bank entries, not transaction date.
32**Refunds:** Appear as negative amounts with `transaction_type` = `T1107` or
33`T1114`. They should offset the original sale — don't flag a refund as a
34discrepancy against the QB register unless there's no corresponding QB credit.
36**Holds:** Transactions in status `F` (Funds on Hold) have not been deposited yet.
37Note them separately — they'll appear in next month's settlement.
39---

Settlement report structure

The PayPal connector returns a Transaction History or Settlement report. Key fields:

FieldNotes
transaction_info.transaction_idPayPal transaction ID
transaction_info.transaction_initiation_dateWhen the transaction occurred
transaction_info.transaction_amount.valueGross amount (positive = money in)
transaction_info.fee_amount.valuePayPal fee (negative)
transaction_info.transaction_statusUse only S (Success) and P (Pending)
payer_info.email_addressCustomer email — useful for matching

Deposit date vs. transaction date: PayPal batches payouts. A sale on April 28 may not deposit until May 2. Match by deposit date when reconciling against QB bank entries, not transaction date.

Refunds: Appear as negative amounts with transaction_type = T1107 or T1114. They should offset the original sale — don't flag a refund as a discrepancy against the QB register unless there's no corresponding QB credit.

Holds: Transactions in status F (Funds on Hold) have not been deposited yet. Note them separately — they'll appear in next month's settlement.


Raw lines 14 to 40
41## Square
43### Settlement report structure
45Square calls these **Payouts**. Each payout covers 1–2 business days of sales.
47Key fields from the Square Payouts API:
49| Field | Notes |
50|---|---|
51| `id` | Payout ID |
52| `arrived_at` | Date the funds landed in the bank account |
53| `amount_money.amount` | Net payout in cents (already minus Square fees) |
54| `status` | Use only `PAID` status for reconciliation |
56**Fees:** Square deducts fees before the payout — so `amount_money.amount` is net.
57When matching against QB, compare to the net bank deposit, not the gross sale total.
59**Same-day payouts:** If the user has Square Instant Transfer, funds may arrive on
60the transaction date. The default is next business day.
62---

Settlement report structure

Square calls these Payouts. Each payout covers 1–2 business days of sales.

Key fields from the Square Payouts API:

FieldNotes
idPayout ID
arrived_atDate the funds landed in the bank account
amount_money.amountNet payout in cents (already minus Square fees)
statusUse only PAID status for reconciliation

Fees: Square deducts fees before the payout — so amount_money.amount is net. When matching against QB, compare to the net bank deposit, not the gross sale total.

Same-day payouts: If the user has Square Instant Transfer, funds may arrive on the transaction date. The default is next business day.


Raw lines 43 to 63
64## Stripe
66### Settlement report structure
68Stripe calls these **Payouts**. The Stripe connector returns payout objects plus
69the balance transactions within each payout.
71Key fields:
73| Field | Notes |
74|---|---|
75| `id` | Payout ID |
76| `arrival_date` | Unix timestamp of bank arrival date |
77| `amount` | Net payout in cents (fees already deducted) |
78| `status` | Use only `paid` for reconciliation |
80**Stripe fees:** Like Square, fees are deducted before payout. Compare net amounts.
82**Stripe Connect / platform accounts:** If the user runs a platform on Stripe
83Connect, individual transfer payouts may look unusual. Ask the user to confirm
84their Stripe account type if payout patterns don't match expectations.
86---

Settlement report structure

Stripe calls these Payouts. The Stripe connector returns payout objects plus the balance transactions within each payout.

Key fields:

FieldNotes
idPayout ID
arrival_dateUnix timestamp of bank arrival date
amountNet payout in cents (fees already deducted)
statusUse only paid for reconciliation

Stripe fees: Like Square, fees are deducted before payout. Compare net amounts.

Stripe Connect / platform accounts: If the user runs a platform on Stripe Connect, individual transfer payouts may look unusual. Ask the user to confirm their Stripe account type if payout patterns don't match expectations.


Raw lines 66 to 87
Involves a person Ask the user :83
88## Reconciliation logic (all processors)
90Use this logic to match processor deposits against QuickBooks bank deposits:
92```
93for each processor deposit in target month:
94 find QB deposit where:
95 abs(QB.amount - processor.net_amount) < USD 0.50
96 AND abs(QB.date - processor.arrival_date) <= 2 days
98 if match found:
99 mark as RECONCILED
100 elif abs(QB.amount - processor.net_amount) < USD 0.50 (date mismatch only):
101 flag as DATE_MISMATCH (usually a timing difference — low priority)
102 elif processor deposit not matched at all:
103 flag as MISSING_IN_QB
104 elif QB deposit not matched to any processor record:
105 flag as UNMATCHED_DEPOSIT (may be ACH, check, or other income)
106```
108**Multi-processor businesses:** Run this logic independently per processor, then
109aggregate flags. A QB deposit that doesn't match PayPal may legitimately be a
110Square payout — don't flag it until you've checked all connected processors.

Reconciliation logic (all processors)

Use this logic to match processor deposits against QuickBooks bank deposits:

for each processor deposit in target month:
    find QB deposit where:
        abs(QB.amount - processor.net_amount) < USD 0.50
        AND abs(QB.date - processor.arrival_date) <= 2 days

    if match found:
        mark as RECONCILED
    elif abs(QB.amount - processor.net_amount) < USD 0.50 (date mismatch only):
        flag as DATE_MISMATCH (usually a timing difference — low priority)
    elif processor deposit not matched at all:
        flag as MISSING_IN_QB
    elif QB deposit not matched to any processor record:
        flag as UNMATCHED_DEPOSIT (may be ACH, check, or other income)

Multi-processor businesses: Run this logic independently per processor, then aggregate flags. A QB deposit that doesn't match PayPal may legitimately be a Square payout — don't flag it until you've checked all connected processors.

Raw lines 88 to 110