Shopify Admin Payout Reconciliation logo

Shopify Admin Payout Reconciliation

Organization
40RTY-ai
shopify-admin-payout-reconciliation

Read-only: reconciles Shopify Payments payouts against the order transactions that funded them and flags amount discrepancies.

Overview

Publisher40RTY-ai
Repositoryshopify-admin-skills
Skill nameshopify-admin-payout-reconciliation
Stars
200
Forks
22
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by 40RTY-ai on GitHub. Read the source before you install it.

Installation

Install the Shopify Admin Payout Reconciliation AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/40RTY-ai/shopify-admin-skills/tree/main/skills/finance/shopify-admin-payout-reconciliation
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/40RTY-ai/shopify-admin-skills.git /tmp/shopify-admin-skills
mkdir -p .claude/skills
cp -r /tmp/shopify-admin-skills/skills/finance/shopify-admin-payout-reconciliation .claude/skills/shopify-admin-payout-reconciliation
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Shopify Admin Payout Reconciliation in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Shopify Admin Payout Reconciliation on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Shopify Admin Payout Reconciliation is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Purpose

Reconciles Shopify Payments payouts to the order transactions that contributed to them. For each payout, sums gross sales, refunds, adjustments, and fees, and compares the computed net to the payout's reported net amount. Discrepancies are flagged with a delta and the suspected cause. Read-only — no mutations.

Prerequisites

  • Authenticated Shopify CLI session: shopify store auth --store <domain> --scopes read_shopify_payments_payouts,read_orders
  • API scopes: read_shopify_payments_payouts, read_orders
  • Store must use Shopify Payments. If the store uses only third-party gateways, this skill exits cleanly with a message.

Parameters

ParameterTypeRequiredDefaultDescription
storestringyes—Store domain (e.g., mystore.myshopify.com)
days_backintegerno30Lookback window covering payouts issued in this period
tolerancenumberno0.01Acceptable delta in store currency before flagging a discrepancy
formatstringnohumanOutput format: human or json

Safety

ℹ️ Read-only skill — no mutations are executed. Reconciliation output is informational; do not treat flagged discrepancies as confirmed errors before reviewing the underlying transactions in the Shopify admin.

Workflow Steps

  1. OPERATION: shopifyPaymentsAccount — query Inputs: select payouts(first: 100, query: "issued_at:>='<NOW - days_back days>'") with id, issuedAt, status, net, gross, summary { chargesGross, chargesFee, refundsGross, refundsFee, adjustmentsGross, adjustmentsFee, retriedPayoutsGross, retriedPayoutsFee } Expected output: All payouts in the window. If account is null, exit — store does not use Shopify Payments.

  2. For each payout, compute reconciliation expectation:

    expected_net = chargesGross - chargesFee
                 - refundsGross + refundsFee   (refundsFee is normally negative / reversed)
                 + adjustmentsGross - adjustmentsFee
                 + retriedPayoutsGross - retriedPayoutsFee

    delta = reported_net - expected_net

  3. OPERATION: orders — query (only for flagged payouts to drill down) Inputs: query: "transactions:'gateway:shopify_payments processed_at:>=<payout.issuedAt - 7d> processed_at:<=<payout.issuedAt + 1d>'", first: 250 Expected output: Candidate orders that may have contributed to the payout, used for an order-level cross-check on top discrepancies

  4. Classify each payout:

    • ok if |delta| <= tolerance
    • discrepancy otherwise — record sign (positive: payout overpaid us; negative: payout underpaid)
  5. Aggregate totals across the window: total payouts, total reconciled, total discrepancies, sum of absolute deltas

GraphQL Operations

graphql
# shopifyPaymentsAccount:query — validated against api_version 2025-01
query PayoutReconciliation($payoutQuery: String!, $payoutAfter: String) {
  shopifyPaymentsAccount {
    id
    payoutSchedule { interval }
    payouts(first: 100, after: $payoutAfter, query: $payoutQuery) {
      edges {
        node {
          id
          issuedAt
          status
          net { amount currencyCode }
          gross { amount currencyCode }
          summary {
            chargesGross { amount currencyCode }
            chargesFee { amount currencyCode }
            refundsFeeGross { amount currencyCode }
            refundsFee { amount currencyCode }
            adjustmentsGross { amount currencyCode }
            adjustmentsFee { amount currencyCode }
            retriedPayoutsGross { amount currencyCode }
            retriedPayoutsFee { amount currencyCode }
          }
        }
      }
      pageInfo { hasNextPage endCursor }
    }
  }
}
graphql
# orders:query — validated against api_version 2025-01
query OrdersFundingPayout($query: String!, $after: String) {
  orders(first: 250, after: $after, query: $query) {
    edges {
      node {
        id
        name
        processedAt
        totalPriceSet { shopMoney { amount currencyCode } }
        totalReceivedSet { shopMoney { amount currencyCode } }
        transactions {
          id
          gateway
          kind
          status
          processedAt
          amountSet { shopMoney { amount currencyCode } }
        }
      }
    }
    pageInfo { hasNextPage endCursor }
  }
}

Session Tracking

Claude MUST emit the following output at each stage. This is mandatory.

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: Payout Reconciliation                ║
║  Store: <store domain>                       ║
║  Started: <YYYY-MM-DD HH:MM UTC>             ║
╚══════════════════════════════════════════════╝

After each step, emit:

[N/TOTAL] <QUERY|MUTATION>  <OperationName>
          → Params: <brief summary of key inputs>
          → Result: <count or outcome>

On completion, emit:

For format: human (default):

══════════════════════════════════════════════
PAYOUT RECONCILIATION  (<days_back> days)
  Payouts in window:    <n>
  Reconciled (ok):      <n>
  Discrepancies:        <n>   ⚠️
  Sum of abs deltas:    $<amount>

  Top discrepancies:
    Payout <date>  Reported: $<n>  Expected: $<n>  Δ: $<n>

  Output: payout_reconciliation_<date>.csv
══════════════════════════════════════════════

For format: json, emit:

json
{
  "skill": "payout-reconciliation",
  "store": "<domain>",
  "period_days": 30,
  "payouts_count": 0,
  "reconciled_count": 0,
  "discrepancy_count": 0,
  "sum_abs_delta": 0,
  "currency": "USD",
  "output_file": "payout_reconciliation_<date>.csv"
}

Output Format

CSV file payout_reconciliation_<YYYY-MM-DD>.csv with columns: payout_id, issued_at, status, reported_net, expected_net, delta, currency, charges_gross, charges_fee, refunds_gross, refunds_fee, adjustments_gross, verdict

Error Handling

ErrorCauseRecovery
THROTTLEDAPI rate limit exceededWait 2 seconds, retry up to 3 times
shopifyPaymentsAccount is nullStore does not use Shopify PaymentsExit cleanly; suggest reconciling via the third-party gateway dashboard
Currency mismatch within payoutMulti-currency storeReconcile only payouts in the presentment currency that matches account currency; flag others as currency_mismatch
Payout still IN_TRANSITNot yet finalSkip — reconcile after status moves to PAID

Best Practices

  • Run weekly on the morning after a payout is scheduled — same-day reconciliation catches discrepancies while transactions are easy to investigate.
  • For any flagged discrepancy, drill in: refunds processed inside the payout window often show up in the next payout's refundsGross, which can look like an underpayment if you forget to reconcile across windows.
  • Use this skill alongside your accounting export — these numbers should match your bookkeeping software's deposit records to the cent.
  • Tolerance > $0.01 should be used cautiously: anything above a few cents typically reflects a real fee or adjustment that deserves an explanation.
  • This skill does not detect fraud; it detects accounting deltas. If you suspect fraud, escalate via the Shopify admin's payout detail view.

Frequently asked questions

What does the Shopify Admin Payout Reconciliation AI skill do?

Read-only: reconciles Shopify Payments payouts against the order transactions that funded them and flags amount discrepancies.

Why use Shopify Admin Payout Reconciliation on TypingMind?

Because you install it once and use it with any model. Shopify Admin Payout Reconciliation is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Shopify Admin Payout Reconciliation in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/40RTY-ai/shopify-admin-skills/tree/main/skills/finance/shopify-admin-payout-reconciliation. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Shopify Admin Payout Reconciliation?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Shopify Admin Payout Reconciliation?

As many as you like. As long as a model supports skills, you can use Shopify Admin Payout Reconciliation with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Shopify Admin Payout Reconciliation AI skill free?

Yes. It is published on GitHub by 40RTY-ai under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇