Skip to content

§00Connect

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.

Stripe → Priority
Sandbox

You

“Automatically match Stripe payments to Priority ERP invoices and synchronize payment status.”

PartnerMCP· I will:

  1. 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.
  2. 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.
  3. 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.
  4. Never guess: a payment without a clear invoice, a partial payment or an overpayment goes to a review queue with the candidates PartnerMCP found.
  5. 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.
  6. 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.
  7. 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.
  8. Send an idempotency key with every Stripe write and stay within both systems’ API limits.
Payment succeededInvoice matchAmounts & feesPost receiptClose invoiceReconcile payoutsExceptionsMark reconciled
Integration plan: Stripe ↔ Priority ERP. Stripe to Priority ERP.
  1. Payment succeeded — Stripe: Trigger · webhooks
  2. Invoice match — PartnerMCP: Invoice ⇄ AINVOICES
  3. Amounts & fees — PartnerMCP: currency · fees · partials
  4. Post receipt — Priority ERP: TINVOICES
  5. Close invoice — Priority ERP: AINVOICES
  6. Reconcile payouts — PartnerMCP: payouts · fees · refunds
  7. Exceptions — PartnerMCP: unmatched → review queue
  8. Mark reconciled — Stripe: PaymentIntent
Product preview · sample data
§01—What syncs

What syncs, and which way.

Every record that moves between Stripe and Priority: what starts it, and what it produces on the other side.

StripePriority
  1. 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.
  2. 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.
  3. 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.
  4. Stripe to Priority ERP:

    Dispute → finance review
    When
    charge.dispute.created
    Result
    Invoice and customer flagged for finance; nothing is reversed automatically.
  5. 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.
  6. 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.
§02—Field mapping

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.

Stripe ⇄ Priority
Draft
  1. Customer.metadata.priority_custname

    to CUSTOMERS.CUSTNAME

    Written once, after the first confirmed match

    95% confidence
    The link lives on the Stripe Customer, so later payments match without a search.
  2. Invoice.metadata.priority_ivnum

    to AINVOICES.IVNUM

    Final numbers only; temporary T-numbers are rejected

    92% confidence
    Priority replaces the temporary number when it finalizes an invoice.
  3. PaymentIntent.amount_received

    to Receipt · Other Forms of Payment · Payment Amount

    Smallest currency unit → decimal (÷100 for ILS, USD, EUR)

    97% confidence
    Verify on tenantThe Receipts form’s API names come from your tenant’s metadata.
  4. PaymentIntent.currency

    to Receipt currency

    Lowercase ISO code → your Priority currency code

    90% confidence
  5. PaymentIntent.latest_charge

    to Receipt · Confirmation Number

    The charge ID, for audit and refunds

    88% confidence
  6. Charge.created

    to Receipt · Payment Date

    Unix time → date in the company’s time zone

    90% confidence
  7. BalanceTransaction.fee

    to Payout deposit · fee line

    Posted to the account finance chooses

    90% confidence
    A Stripe fee is an expense, not a short payment by the customer.
  8. BalanceTransaction.net

    to Payout deposit · bank line

    Net lines per payout add up to Payout.amount

    95% confidence
    Listing by payout works for automatic payouts; manual payouts are matched by date and amount.
  9. BalanceTransaction.exchange_rate

    to Payout deposit · exchange-rate difference

    Stripe’s rate against Priority’s rate for the day

    80% confidence
  10. Charge.amount_refunded

    to Receipt · negative Payment Amount

    Needs Allow Negative Value on the payment means

    85% confidence
  11. Priority receipt number

    to PaymentIntent.metadata.priority_receipt

    Written after the receipt is recorded

    90% confidence
    Marks the payment as reconciled, so either system can be checked against the other.
  12. 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
12 field mappings · 0 rules Confidence Lower, or verify on tenant
Product preview · sample data
§03—Edge cases

Edge cases, handled.

What goes wrong between Stripe and Priority in production, and what PartnerMCP does about it.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

§04—Questions

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.

§05—References

§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.