Stripe ↔ Priority ERP
Every Stripe payment matched to its Priority invoice. Every payout explained.
Stripe collects the money; Priority holds the invoices and the books. In between, finance downloads payouts, matches charges to invoices and works out the fees — because a Stripe payout is a batched deposit, net of fees, not one payment per invoice. PartnerMCP matches each successful Stripe payment to its open Priority invoice, records the receipt, and reconciles every payout through Stripe’s balance transactions, so the bank deposit, the fees and the invoices agree.
You
“Automatically match Stripe payments to Priority ERP invoices and synchronize payment status.”
PartnerMCP· I will:
- Receive Stripe events at a signed endpoint — payment_
intent. succeeded, invoice. paid, charge. refunded, charge.dispute.created and payout. paid — verifying Stripe-Signature and de-duplicating on the event ID. - Identify the Priority invoice for each payment: the final invoice number in its metadata, where your checkout or Stripe invoice carries it — otherwise the Priority customer linked to the Stripe Customer plus the open amount.
- Record a receipt in Priority against that invoice for the amount received, in the payment’s currency, with the Stripe charge ID as the confirmation number — and note the receipt number on the payment in Stripe.
- Never guess: a payment without a clear invoice, a partial payment or an overpayment goes to a review queue with the candidates PartnerMCP found.
- For each payout, list its balance transactions — gross, fee, net — and record the deposit and Stripe’s fees in Priority on the accounts finance chooses.
- Carry refunds and disputes across: a refund becomes a reversing receipt under your rules, and a dispute flags the invoice and the customer for finance.
- If you also send Stripe invoices, mark them paid out of band when Priority records a payment made another way — so nobody is chased twice.
- Send an idempotency key with every Stripe write and stay within both systems’ API limits.
- Payment succeeded — Stripe: Trigger · webhooks
- Invoice match — PartnerMCP: Invoice ⇄ AINVOICES
- Amounts & fees — PartnerMCP: currency · fees · partials
- Post receipt — Priority ERP: TINVOICES
- Close invoice — Priority ERP: AINVOICES
- Reconcile payouts — PartnerMCP: payouts · fees · refunds
- Exceptions — PartnerMCP: unmatched → review queue
- Mark reconciled — Stripe: PaymentIntent
What syncs, and which way.
Every record that moves between Stripe and Priority: what starts it, and what it produces on the other side.
Stripe to Priority ERP:
PaymentIntent / Invoice → Priority receipt- When
- payment_
intent. succeeded or invoice. paid - Result
- Receipt recorded against the open AINVOICES invoice, with the Stripe charge ID as its confirmation number and the receipt number noted back on the payment.
Stripe to Priority ERP:
Payout → Priority deposit- When
- payout.
paid, then the payout’s balance transactions - Result
- One deposit per payout with Stripe’s fees itemized, ready for bank reconciliation.
Stripe to Priority ERP:
Refund → reversing receipt- When
- charge.
refunded or refund. created - Result
- A receipt with a negative amount, or Priority’s Cancel Document action through the Web SDK, by your rules.
Stripe to Priority ERP:
Dispute → finance review- When
- charge.dispute.created
- Result
- Invoice and customer flagged for finance; nothing is reversed automatically.
Priority ERP to Stripe:
CUSTOMERS → Customer.metadata- When
- First payment from a Stripe customer, once finance confirms the match
- Result
- The Priority customer number stored on the Stripe Customer, so later payments match on it.
Priority ERP to Stripe:
Priority receipt → Stripe Invoice- When
- Invoice settled outside Stripe, for example by bank transfer
- Result
- The Stripe invoice marked paid out of band — no charge is made.
Field by field.
Every mapping PartnerMCP proposes, with its transformation and confidence. Rules — keys, reconciliation, duplicate guards — carry no confidence: they’re decided and approved, not inferred.
Customer.
metadata. priority_ custname to CUSTOMERS.
CUSTNAME Written once, after the first confirmed match
95% confidenceThe link lives on the Stripe Customer, so later payments match without a search.Invoice.
metadata. priority_ ivnum to AINVOICES.
IVNUM Final numbers only; temporary T-numbers are rejected
92% confidencePriority replaces the temporary number when it finalizes an invoice.Payment
Intent. amount_ received to Receipt · Other Forms of Payment · Payment Amount
Smallest currency unit → decimal (÷100 for ILS, USD, EUR)
97% confidenceVerify on tenantThe Receipts form’s API names come from your tenant’s metadata.Payment
Intent. currency to Receipt currency
Lowercase ISO code → your Priority currency code
90% confidencePayment
Intent. latest_ charge to Receipt · Confirmation Number
The charge ID, for audit and refunds
88% confidenceCharge.
created to Receipt · Payment Date
Unix time → date in the company’s time zone
90% confidenceBalance
Transaction. fee to Payout deposit · fee line
Posted to the account finance chooses
90% confidenceA Stripe fee is an expense, not a short payment by the customer.Balance
Transaction. net to Payout deposit · bank line
Net lines per payout add up to Payout.
amount 95% confidenceListing by payout works for automatic payouts; manual payouts are matched by date and amount.Balance
Transaction. exchange_ rate to Payout deposit · exchange-rate difference
Stripe’s rate against Priority’s rate for the day
80% confidenceCharge.
amount_ refunded to Receipt · negative Payment Amount
Needs Allow Negative Value on the payment means
85% confidencePriority receipt number
to Payment
Intent. metadata. priority_ receipt Written after the receipt is recorded
90% confidenceMarks the payment as reconciled, so either system can be checked against the other.Priority receipt (paid outside Stripe)
to POST /
v1/ invoices/ :id/ pay · paid_ out_ of_ band=true Marks the Stripe invoice paid without charging
90% confidence
Edge cases, handled.
What goes wrong between Stripe and Priority in production, and what PartnerMCP does about it.
- 01
A payout is not a payment
Stripe pays out in batches, net of fees, so a bank deposit rarely equals any one invoice. PartnerMCP reconciles each payout through its balance transactions — amount, fee and net for every charge, refund and adjustment — so the deposit, the fees and the invoices add up.
- 02
Manual payouts can’t be listed by payout
Stripe lists the balance transactions inside a payout only for automatic payouts. Manual payouts are matched by date and amount, and PartnerMCP shows finance what it matched before anything is recorded.
- 03
Temporary invoice numbers
A Priority invoice carries a temporary T-number until it’s finalized — a Direct Activation that assigns the permanent number and records the journal entry. PartnerMCP only references final numbers; a payment for a not-yet-final invoice waits in the queue.
- 04
Partial and over-payments
Customers pay less, more, or several invoices at once. PartnerMCP applies exact matches, proposes a split for the rest and waits for a person — it never guesses which invoice a payment was for.
- 05
Late, repeated and out-of-order events
Stripe retries undelivered events for up to three days in live mode and doesn’t guarantee their order. PartnerMCP de-duplicates on the event ID, re-reads the object before acting and reconciles daily against Stripe’s lists, so a missed event can’t leave an invoice open.
- 06
Refunds in Priority
A partial refund can be recorded as a receipt with a negative amount, which Priority accepts only when the payment means allows negative values. A full reversal uses Priority’s Cancel Document action, which the REST API can’t run — so PartnerMCP uses the Web SDK for it, or routes it to finance.
- 07
Currencies and minor units
Stripe sends integer amounts in the smallest currency unit with lowercase ISO codes; Priority expects decimals with a point and its own currency codes. Zero-decimal currencies aren’t divided, and Stripe’s exchange_
rate is kept so a conversion difference stays visible. - 08
A paid payout can still fail
Stripe notes that some failed payouts first show as paid and only later change to failed. PartnerMCP keeps a payout’s deposit provisional until its status settles, and reopens the reconciliation if it fails.
Questions about Stripe and Priority.
Does PartnerMCP move money?
No. It reads payments, payouts and balance transactions and records them in Priority. Its only writes to Stripe are metadata — the customer link and a reconciled marker on each payment — and, if you enable it, marking an invoice paid out of band, which makes no charge. Refunds stay a decision your team takes in Stripe.
Priority has its own payment tools. Why connect Stripe?
Priority’s own tools, such as Click2Pay through Priority Connect, collect payment on Priority documents. If you also collect through Stripe — online checkout, subscriptions, international cards — Stripe holds the payment and Priority holds the invoice. PartnerMCP keeps the two in agreement.
Can it use Stripe’s MCP server?
Stripe’s MCP server is built for assistants and asks a person to confirm sensitive writes such as refunds. Reconciliation runs on Stripe’s REST API and signed events; PartnerMCP can use the MCP server where conversational access to your Stripe data helps.
Which Stripe credentials does it need?
A restricted API key limited to what reconciliation reads — payments, charges, payouts and balance transactions — plus write access only where PartnerMCP writes metadata or marks invoices paid out of band. No full-access secret key.
What does finance actually review?
Exceptions only: payments without a clear invoice, partial and over-payments, disputes, and payouts that don’t add up. Each arrives with the candidates PartnerMCP found and the reason it didn’t decide on its own.
Vendor documentation.
The public documentation behind the technical details on this page.
- Stripe — webhooksdocs.stripe.com (opens the vendor’s site in a new tab)
- Stripe — idempotent requestsdocs.stripe.com (opens the vendor’s site in a new tab)
- Stripe — PaymentIntent objectdocs.stripe.com (opens the vendor’s site in a new tab)
- Stripe — Balance Transaction objectdocs.stripe.com (opens the vendor’s site in a new tab)
- Stripe — list balance transactions (by payout)docs.stripe.com (opens the vendor’s site in a new tab)
- Stripe — Payout objectdocs.stripe.com (opens the vendor’s site in a new tab)
- Stripe — pay an invoice (paid_out_of_band)docs.stripe.com (opens the vendor’s site in a new tab)
- Priority REST API — create, update and $batchprioritysoftware.github.io (opens the vendor’s site in a new tab)
- Priority Web SDKprioritysoftware.github.io (opens the vendor’s site in a new tab)
- Priority Payments Guide (receipts and payment means)cdn.priority-software.com (opens the vendor’s site in a new tab)
Product names and logos are trademarks of their respective owners. Their use indicates compatibility only and does not imply endorsement or partnership.
§06Build
Build this integration.
Start from this plan, or change it in your own words. PartnerMCP builds it against your Stripe and Priority: sandbox first, production when you approve.