One row per shop and service month — whatever revision the invoice is on now — with what to do next. Creating and sending a whole month is on Billing runs.
Needs attention — one case per invoice (or shop): its alerts together, resolved together
Invoices
Shop
Service & document
Money
Payment
State
Next step
Made by hand in Stripe — without a month, or sharing a month with an invoice of ours
An open invoice made in the Stripe Dashboard for a shop we bill is found every morning (or now: Find) and followed like ours — reminders, overdue, debtors. Its month is read from the memo (“May 2026”); if it can't be, set it here. The app never rebuilds such an invoice: change it in Stripe, or Void it.
Organization
Status
Amount
Stripe
Month
Bank accounts with a failed ACH payment — billed at the standard rate until the mark is cleared
Account
Why
Status
Stores
The shops we bill (the billing group, Settings): the service month's registrations and invoice, and what each owes now across all months.
Owed now is every invoice that went out and is not paid, all months together — ours and those made by hand in Stripe; drafts not sent yet are not counted. Past due counts days from the oldest unpaid invoice's due date: the shop is warned at 15 days and its deactivation is recommended at 30 (Settings → Debtors). History shows a shop month by month.
From our own records (no Stripe). Blocks: an Automatic shop's draft is held for review on the 5th until it is sorted out. Check: said, not held.
What happens on the 5th
Month
Registrations
Invoices
Other invoices — older, or made by hand without a month
Every change
When
Mode
Why
Who
Manual: an operator makes and sends the invoice. Scheduled with review: the run on the 5th makes the draft, a person sends it. Automatic: made and sent by itself — only while invoice sending is Automatic in Settings and the readiness check passes. Paused: no invoice is made.
Contacts — kept in this app only
Name
Role
E-mail
Phone
Price conditions: a contract ACH price or a discount, from a date (finance admin). Billing setup: whether it is billed, its Stripe customer, notes.
Registrations & revenue
A pet transferred to a buyer is billed once per month to the organization that transferred it. Only the billing group is billed (Settings). Free: cancelled transfers, and re-transfers within 90 days of a transfer in an earlier month. Old script is what the previous counting script would have billed — Details show why each pet differs.
Each cell: the month's billable pets and its invoice (the amount and where it stands). before billing — before the app's first invoice of all; not started — before the shop's first invoice or transfer; no invoice needed — no billable pets; not invoiced — billable pets and no invoice yet; so far — the month in progress. A cell opens its invoice (or the store's page). Up to 24 months; the money under the table: billed for the service month, sent in the month, paid in the month (New York).
Outside the billing group, with a billing profile — not billed
Saved before the group rule, or the organization's token changed. Unlink the Stripe customer here if another organization should pay with it.
Organization
Stripe customer
Note
Pets without an organization — billing_log has no shop for their transfer
Pet
Its record names
Transfers
By the rules
Decided
Billing runs
Invoice a service month: preview what would be created, create the drafts in Stripe, then send them. Running it twice never makes a second invoice for the same shop and month.
Preview — what Create drafts would make; nothing is written
Organization
Payment
Registrations
Amount
Notes
Reconciliation — from the pets to the money, for the service month
Runs — every Create drafts, Send and monthly run of the month, kept
Started
Run
What came of it
Settings
Everyone sees these; only the owner changes them. Turning on something that acts by itself asks for a reason; turning it off is one click.
Billing group
Only organizations that share one API token are billed — the chain of Findpet shops. Shelters, test accounts and partners with a token of their own are never billed; a new shop added with the group's token is billed automatically. Tokens are never shown: a group is named by a short fingerprint of its token.
Only the owner can change this.
Invoice sending
What happens after the monthly run has created an invoice in Stripe.
Manual (default)
Invoices are created in Stripe as drafts. Nothing is emailed and nothing is charged until someone presses Send.
Automatic
Once an invoice's amount check passes, the app finalizes it and emails it or charges the saved payment method by itself.
Only the owner can change this.
Slack and reminders
Alerts go to the Stripe Invoices Slack channel at once, a summary every day at 07:00 New York. While invoicing runs in Stripe test mode every message is marked [TEST].
Slack
Loading…
Reminders to shops
Stripe re-sends each open invoice paid by e-mail (sent at least 7 days ago, not paused for its shop) on the reminder days at 06:00 New York.
Only the owner can change these.
Debtors
Counted from the due date of the organization's oldest unpaid invoice (ours or made by hand in Stripe). At the first limit the shop is warned: a banner on findpet.com says new pet transfers and registrations may be paused, and an alert goes to Slack. At the second, deactivation is recommended (an alert). Deactivating is always done by a person (Stores → the shop → Deactivate).
The months rule (off by default): that many service months with an invoice past due recommend deactivation, one fewer warns the shop (never just one month: with 2, it only recommends). With both rules, whichever reaches a level first wins.
Warnings to shops
When a shop reaches a level, Stripe at once re-sends its past-due invoices (those paid by e-mail) — once per invoice and level. And while it stays at a level, each invoice you send to that shop carries a dated notice at the top: “PAST DUE … new pet transfers and registrations may be paused”. It is written when you press Send, from what Stripe shows at that moment (paid meanwhile — no notice). Shops with reminders paused get neither. (An invoice that has gone out cannot be changed in Stripe, so the notice is only in new ones.)
Only the owner can change these.
Prices
Per billable registration. The ACH Direct Debit price is a discount for paying by bank debit; the standard price is always the ACH price × 1.03. A shop's contract price or discount is set on Registrations & revenue (Pricing).
History
From
Standard
ACH
ACH failure fee
Set by
Reason
Only the owner can change prices.
Users
Who can sign in, with which role, and whether their 2FA is set up. Every sign-in needs the password and a code; a session ends after 60 minutes without activity.
Username
Role
Status
2FA
Created
Audit log
Every sign-in, view, change and Stripe action: who, when, the target and the reason given.
Dates are New York's; words in the details in any case. A search is itself written to the log (shown when the action filter asks for audit_).
Time
User
Action
Target
IP
Details
FindPet Finance — user guide
How to bill the pet shops every month, follow their payments, handle failed payments and debtors — step by step, with no technical knowledge needed.
Test mode. Right now every invoice is created in Stripe test mode: nobody is e-mailed or charged, and Slack messages start with [TEST]. Everything below works the same way once real billing is switched on — only then shops really get the invoices.
1. The basics
What we bill. A shop pays for each pet it transferred to a buyer in a month. The same pet is billed once a month. Free: a transfer cancelled in the same month, and a pet transferred again within 90 days of an earlier transfer.
Who we bill. Only the shops of the billing group (Settings → Billing group). Shelters, test accounts and partners are never billed.
Months are New York months (midnight to midnight, Eastern time). A month can be invoiced once it is over. This month of the registrations is the service month; it is not the day an invoice was sent or paid.
Prices. Standard price $9.785 per registration. Shops that pay by ACH Direct Debit (a saved US bank account) get the ACH price $9.50. A failed ACH payment adds a $10.00 fee. A shop may have its own contract price or discount.
Payment. A shop with a saved bank account or card is charged automatically when you send its invoice. Everybody else gets the invoice by e-mail with a link to pay online. E-mailed invoices are due in 15 days.
Four roles, each can do everything the one before it can:
viewer — sees everything, changes nothing;
operator — creates, rebuilds and sends invoices, charges one with a saved payment method, sets the month of a hand-made one, resolves alerts, pauses a shop's reminders, runs a store's simulation and reads its billing e-mail from Stripe;
finance_admin — also corrects: deletes, recreates and voids invoices, makes a pet billable by hand, assigns a pet transferred without an organization to a shop (or marks it not billable), deactivates a shop, edits a shop (its name, network, contacts, billing setup, billing e-mail, billing mode) and its contract price or discount;
owner — also the base prices, every setting and the users.
A button your role can't use is not shown at all.
Everything is recorded in the Audit log: who did what, when, and the reason they gave.
2. Signing in
Open finance.findpet.com, enter your username and password, press Continue.
Enter the 6-digit code from your authenticator app (Google Authenticator, 1Password, Authy…), press Verify.
The very first time you get a temporary password from the owner: the app asks you to add the account to your authenticator app, then to choose your own password (at least 12 characters).
Forgot your password? Ask the owner for a temporary one (Users → Temp password). Lost your phone? Ask the owner to Reset 2FA. You are signed out after 60 minutes without activity.
3. Finding your way
The menu on the left (on a phone — the strip at the top; slide it sideways to see the rest):
Page
What it is for
Overview
Where the month stands and what needs doing (section 4).
Invoices
Every invoice of the month in views with their counts; each invoice’s card with what can be done now (section 5). At the top — Needs attention, as cases; lower down — invoices made by hand in Stripe and bank accounts with a failed ACH payment. The number next to it counts the alerts waiting.
Stores
Every shop we bill at a glance: the month's invoice, what it owes, how late it is; a shop's History (section 6).
Registrations & revenue
Pets to bill per shop and why; Make billable, contract prices, a shop's billing profile.
Billing runs
Invoicing a whole month: Preview, Create drafts, Send all drafts.
Settings
Billing group, invoice sending, Slack and reminders, debtors, prices.
Users
Who can sign in and with which role (owner only).
Audit log
Every sign-in, view and change.
Help
This guide, in English and Russian.
The top bar shows at a glance how the app is set: TEST MODE (nobody is charged), Sending: Manual / Automatic (a click opens Settings) and Last Stripe check — a click shows whether Stripe is talking to us: the last morning check, the last message from Stripe, messages waiting, Slack. Then your name and role, Change password and Sign out.
The period bar above Overview, Invoices, Stores, Registrations and Billing runs chooses the service month for all of them at once: ‹ Previous, the month list, Next ›. Current billing month jumps back to the month to invoice now — last month. The current month is marked “so far”: it is not over yet.
The address in the browser keeps the page and the month (for example #invoices?period=2026-08). Copy it to show a colleague exactly the same screen; the browser's Back button works; links from Slack open the right place.
Confirmation windows. Every button that changes something opens a window first: what exactly will happen, and a field for the reason where one is needed. The button at the bottom does it. Cancel, Esc or a click outside the window closes it, and nothing changes. If the app refuses (for example the invoice changed meanwhile), the reason is shown inside the window.
4. Overview: what needs doing
The first page after signing in. Each number says what it covers:
The service month (the period bar): registrations to bill (and how many shops had none, or were not invoiced yet); Drafts — not sent yet, not owed; Sent — what went out, and how much of it is unpaid; Paid — gross, as Stripe shows it (a disputed / returned part is named).
All periods, as of now: owed now (sent and unpaid, every month together; drafts are not counted); net collected (paid, less what was disputed or returned and not won back — refunds made by hand in the Stripe Dashboard are not known here); disputed / returned; shops past due (and how many are deactivated).
Work queue — what a person should do, with a View link to the place where it is done: Needs attention, drafts to send, payment problems, shops past due, shops not invoiced yet. How the app is set — test mode, invoice sending, reminders, warnings to shops, Slack, the last Stripe check.
5. Invoices: views, the invoice's card, cases
Invoices is the daily workplace: one row per shop and service month — whatever revision the invoice is on now.
Views — the buttons above the list, each with the number it holds: Needs action (out of date, Problem, payment failed, disputed, uncollectible), Price / data mismatch (out-of-date drafts), Ready to send, ACH processing, Payment failed, Awaiting payment, Overdue, Disputed, Paid, Made by hand, All, Void / history. The numbers count invoices (not alerts), over the same search.
Search by the shop's name, org ID, the invoice number or a Stripe id. Any payment narrows it to ACH, card, e-mail or hand-made invoices; Every month looks at all months at once (the period bar is then not applied).
Each row shows the shop, the service month and the document, the money, how it is paid, its state — what a person has to do, for example Out of date or Ready to send (Stripe's own status is written under it) — and one next step button: Send, Review, Set month or View.
The invoice's card — click the shop's name: everything about one invoice (its lines, the payment, the earlier versions and calculations, the documents) and every action it allows now: Send, Charge, Rebuild, Refresh, Recreate, Void, Delete, Timeline. The address keeps it open, so a link to it opens it; Back, Esc or ✕ closes it.
Out-of-date drafts and Rebuild
A draft is a snapshot of the month at the moment it was made. When a contract price, a discount, the base prices or the billable pets change afterwards, the draft no longer matches: it is marked Out of date (view Price / data mismatch). Its card shows the draft against the month now — pets, lines, total and the difference.
Send is blocked for it — on the card, and Send selected and Send all drafts leave it out and list it. Nothing reaches Stripe.
Rebuild + a reason (operator and up): the old draft is deleted from Stripe, a new one is made from the month now and checked to the cent. It is not sent — look at it and press Send. The earlier calculation stays on the card (“Rebuilt — the earlier calculations”). A Problem draft can be rebuilt the same way.
If nothing is to be billed any more (the shop was taken out of billing, no pets left), Rebuild says so — Delete the draft.
Rebuild is only for a draft that never went out. An invoice that went out is replaced with Recreate (section 10).
Send selected
Tick the rows that are ready to send (the box on the left; the box at the top ticks every such row on the page) and press Send N invoices. The window shows how many, the total, how many go by e-mail and how many are charged. Each invoice is checked again right before it goes; one that is out of date by then is left out and listed. The list follows the progress.
Charge with a saved payment method
Charge… on the invoice's card (operator and up) takes the payment now with one of the shop's payment methods saved in Stripe — for example after the shop said “take it from the new card”, or for an e-mailed or overdue invoice. It is always a person's choice: the app never switches to another method by itself.
The window reads the shop's saved methods from Stripe right then. Each says whether it can pay this invoice, and if not, why: a blocked bank account, one with a failed ACH payment, no mandate, or another rate.
The method sets the rate. A bank account (ACH) pays the ACH rate; a card or Link pays the standard rate. A method at another rate than the invoice's is not offered — Recreate the invoice at that rate first (section 10). The price is never changed under the shop.
The button says exactly what happens: Charge $… to visa ••4242. A draft is finalized and paid in one go (it is not e-mailed). A card pays at once; a bank debit is ACH processing for a few days.
Never twice. Charge is not offered while a payment is processing, for a paid or partly paid invoice, an out-of-date draft (Rebuild it first), a Problem draft, or an invoice made by hand in Stripe (take the payment in Stripe).
Declined, or the bank debit fails later: nothing else is tried and no replacement is made. Needs attention gets an alert (“the payment by hand … was declined / failed — decide by hand”): try another saved method, Recreate, or wait for the shop. A bank account that failed is marked as after any failed ACH payment.
Every charge is listed on the card (Charge 1, 2…: when, who, the method, the result) and in the Audit log.
Needs attention, as cases
At the top of Invoices. The alerts about one invoice (a decline, the replacement ready, the next decline…) are one case; the alerts about a shop (past due, reactivate it) are the shop's case. A case shows its latest alert, all of them on a click, Open the invoice (or The shop) and Resolve case: one comment closes the alerts you saw in it — one that arrived meanwhile stays open. The first three cases are shown; Show all opens the rest.
6. Stores: every shop at a glance
Stores shows every shop we bill, for the service month (last month by default):
Column
What it means
Shop
Name (the display name, if one is set) and org ID — click it for the store's page. Badges: Deactivated, Warned, Deactivation recommended, Taken out of billing, the billing mode when it is not Manual, and a mode change planned for a later month.
Registrations
Pets to bill for that month (and how many transfers there were). A shop with none needs no invoice.
Invoice for the month
Its status (Draft, Open, Paid, Overdue…), the amount, the Stripe number (click it to open the invoice in Stripe). “made by hand in Stripe” — an invoice someone created in Stripe directly.
Paid
What has been paid for that month.
Owed now
Everything the shop owes today, all months together: every invoice that went out and is not paid. Drafts that were never sent are not counted.
Past due
How many days the shop's oldest unpaid invoice is past its due date.
Search by the shop's name, display name, network or org ID; the filter shows only the shops that owe money, are past due, paid, did not pay, were not invoiced, are deactivated — or are in one billing mode.
History is a quick look at one shop month by month: registrations, every invoice (with the payment date, reminders sent, earlier versions), what it owes, how late it is, its price today. From there: Store page, Pricing, Billing profile, Deactivate / Reactivate.
The line at the bottom adds everything up.
The store's page
Everything about one shop, where it is changed (the address #stores/<org ID> opens it; ← All stores goes back). At the top: Edit store, Change billing mode, Pause / Resume reminders, Deactivate — each shown only to a role that may use it.
Overview — owed now, past due, the price, the billing mode; Ready to be billed without a person? — checks from our own records: in the billing group, the Stripe customer, the price rule, the billing e-mail, how it paid last time, open payment problems or disputes, marked bank accounts, out-of-date or Problem drafts, hand-made invoices without a month. Blocks: an Automatic shop's draft is held for review until it is sorted out; Check: said, not held.
What happens on the 5th → Simulate (operator and up): what the monthly run would do for this shop now — nothing, a draft, a draft held for review, or made and sent — with the pets so far, the lines, the total and how it would be paid, read from Stripe. Nothing is written.
Invoices — month by month (as History); Open in Invoices lists them all.
Billing mode — how the shop is billed, from which service month on, and every change with its reason. Manual: an operator makes and sends the invoice. Scheduled with review: the run on the 5th makes the draft, a person sends it. Automatic: made and sent by itself — only while invoice sending is Automatic in Settings and nothing blocks the readiness check. Paused: no invoice is made (Create drafts leaves the shop out); what it owes stays. A change applies from the month in progress or a later one (a month already billed keeps how it was billed) and never sends or charges anything by itself. Every shop starts in Manual.
Contacts — the billing e-mail is the Stripe customer's e-mail (an e-mailed invoice and its reminders go there): Read from Stripe shows it now; Change… writes it to Stripe (test mode — in live the key is read-only: change it in the Stripe Dashboard). Below, the shop's contacts (name, role, e-mail, phone), kept in this app only.
Pricing & payment — the price now, Price conditions (a contract price or a discount), how it pays, Billing setup (in billing, the Stripe customer, notes).
Edit store — the display name and the network (for this app only: Stripe and findpet.com keep theirs) and up to 10 contacts.
7. Monthly invoicing, step by step
Do this in the first days of every month, for the month that just ended (Current billing month on the period bar).
The monthly run goes by itself on the 5th, 06:00 New York, for the month before (caught up within 5 days if the app was down). It does for each shop what its billing mode says (Stores → the shop → Billing mode): Manual — nothing, the shop is listed in the run's Slack summary for a person to invoice by hand (the steps below); Paused — nothing; Scheduled with review — its draft, which a person sends; Automatic — its draft, sent by itself only while invoice sending is Automatic in Settings and its readiness check passes. A shop that has its invoice already is left as it is. Every shop starts in Manual, so at first the run only reports.
On Billing runs: Reconciliation — the month from the transfers to the money (billable pets → shops with pets → invoiced → sent → paid) and what is left for a person: shops with billable pets and no invoice (and why), out-of-date and Problem drafts, invoices made by hand in Stripe, pets without an organization. Runs — every Create drafts, Send and monthly run of the month, who or what started it, what came of each shop (Details; a Slack summary links there).
Step 1 — check the registrations
Open Registrations & revenue.
Look at To bill for each shop. Old script is what the old counting script would have billed; a difference is explained in Details (for each pet: why it is billed or free).
Use the search and the filter (Past due, Deactivated, Stripe customer not linked) to find shops quickly.
Across months — the Monthly matrix
Registrations & revenue → Monthly matrix: the shops by rows, the service months by columns (12 up to the month in progress by default, up to 24 — From / To). Each cell: the month's billable pets and its invoice — the amount and where it stands (draft, open, paid, overdue, disputed…; “by hand” = made in Stripe; out of date in red). Where there is no invoice the cell says why: before billing (before the app's first invoice of all — billing had not begun), not started (before the shop's first invoice or transfer), no invoice needed (no billable pets), not invoiced (billable pets, no invoice yet), excluded (taken out of billing), so far (the month in progress). Cells shows the pets, the invoice or the state alone. A cell opens its invoice's card (or the store's page). Under the table, per month: the pets, what was billed for the month (sent), what was sent in the month and what was paid in the month. CSV: one line per shop and month.
Step 2 — fix what needs fixing (before creating invoices)
A pet should be billed, but the rules made it free (for example a cancelled transfer that really happened): Details → the pet's row → Make billable → write why → Save. To take it back: Undo. Changes to months before last month ask you to confirm.
A pet was transferred without an organization (billing_log has no shop for the transfer, so nobody is billed): Pets without an organization, under the month's table (the Overview's queue and the reconciliation lead there). Each pet shows its microchip, its name and the organization its own record names. Assign… → choose the shop of the billing group (its record's shop is offered first) → why → Assign: that month's transfers of the pet become the shop's — invoiced to it, in its history, in the matrix and in the 90-day rule (the old script's column never changes). Not billable… → why: looked at, nobody pays. Undo brings it back to review. Assigning is refused once that shop's invoice for the month has gone out (void it first); its unsent draft becomes out of date — Rebuild it. Only finance_admin and owner decide; everyone sees the list.
A shop has a contract price or a discount:Pricing (see section 13).
Link the shop to its Stripe customer (needed for real billing): Edit → Stripe customer id (starts with cus_, copy it from the customer page in Stripe) → Save. The app checks that the customer exists.
A shop must not be billed (closed store, separate agreement): Edit → untick Bill this organization → Save. It moves to “Taken out of billing”.
Pause the reminders for one shop (for example during a dispute): Edit → tick Pause payment reminders for this shop.
Step 3 — preview, create the drafts, send
Open Billing runs and press Preview: what would be created, per shop, with the amount and how it will be paid. Nothing is written yet.
Press Create drafts and confirm with Start. The app creates one draft per shop in Stripe and checks every draft against its own calculation to the cent. Wait until the progress line says it has finished (you may go to other pages meanwhile).
Check the list on Invoices. A draft marked Out of date was made before something changed (a contract price, a pet): open it and press Rebuild. A Problem draft differs from what Stripe computed and is never sent: fix the cause and Rebuild it (or Delete it and press Create drafts again).
Send: Send on one invoice, Send selected for the rows you ticked (Invoices), or Send all drafts (Billing runs). The window says how the shop will pay. Before sending, the app checks once more that nothing changed (pets, prices, the payment method). Shops with a saved bank account or card are charged; everyone else is e-mailed.
Manual or Automatic sending (Settings → Invoice sending, owner only). Manual (default): drafts wait until someone presses Send. Automatic: every clean draft is sent right after it is created. Going back to Manual stops the very next automatic send. The top bar always shows which one is on.
Running Create drafts twice never creates a second invoice for the same shop and month.
8. After sending: statuses and what to do
Status
Meaning
What to do
Draft
Created, not sent.
Send it (or Delete it).
Out of date
A draft made before the prices or the pets changed.
Rebuild it — Send is blocked.
Problem
The Stripe draft differs from our numbers.
Fix the cause, then Rebuild (or Delete and Create drafts again).
Open
Sent, waiting for payment.
Nothing; reminders go by themselves if they are on.
ACH processing
A bank debit is on its way (up to about 4 business days).
Wait. An alert comes if it takes more than 7 days.
Usually a replacement is prepared automatically (section 9).
Disputed
The shop disputed the payment, or the bank returned it.
See the alert in Needs attention.
Uncollectible
Marked uncollectible in Stripe.
It can still be paid; decide by hand.
Void
Cancelled.
The month can be invoiced again.
Replacing… / Creating…
The app is working on it.
Wait, then Refresh.
Statuses update by themselves: Stripe tells the app within seconds, and every morning at 05:00 (New York) the app re-checks everything. Refresh re-reads one invoice from Stripe now.
Timeline shows the whole story of an invoice: every status change, every message from Stripe, alerts, reminders, earlier versions.
PDF links download the invoice PDF (and the paid one).
Needs attention (top of the Invoices page; the Overview's work queue leads there too) lists what a person must look at. The alerts of one invoice (or shop) are one case; when it is handled, press Resolve case and write what was done.
9. When a payment fails
A bank (ACH) payment failed or came back from the bank later: the app cancels the old invoice and prepares a replacement at the standard price plus the $10.00 fee, paid online by e-mail. The shop's bank account is marked (it gets the standard price until someone clears the mark).
A card was declined: a replacement with the same price, paid online by e-mail.
In Manual mode the replacement waits as a draft — Needs attention says “ready as a draft — press Send”. Check it and press Send. In Automatic mode it goes out by itself.
The app does this automatically once per invoice. If it happens again, or the shop disputed the payment itself, Needs attention asks you to decide by hand.
A payment you took by hand with Charge is not re-issued automatically when it is declined or fails: Needs attention asks you to decide (Charge).
Bank accounts with a failed ACH payment (bottom of the Invoices page): when the shop's account is fine again, press Clear and write why — its invoices get the ACH price again.
10. Cancelling and rejecting
I want to…
How
Correct a draft after a price or pet change
The invoice’s card → Rebuild + a reason (section 5).
Throw away a draft that was never sent
Invoices → the invoice’s card → Delete. Create drafts will make a new one.
Cancel an invoice that went out, with no new one
Invoices → the invoice’s card → Void + a reason. Only for open / unpaid invoices. The month is free again: Create drafts would invoice it anew.
Replace an invoice (other price, add or remove the fee, e-mail instead of charging)
Invoices → the invoice’s card → Recreate: choose the rate (as the saved payment method gives / ACH / standard), how it is collected, the fee, write a reason. The preview shows the new amount. The old one is cancelled; the new one waits as a draft for Send.
Stop a replacement that is being made
Invoices → the invoice’s card → Cancel replacement + a reason (the month may stay unbilled — the app says so).
Undo “Make billable” on a pet
Registrations & revenue → Details → Undo + a reason.
Undo a pet assigned to a shop / marked not billable
Registrations & revenue → Pets without an organization → Undo + a reason (not once the shop's invoice with the pet has gone out).
Registrations & revenue → Edit → untick Bill this organization.
Stop a shop's reminders
Edit → Pause payment reminders for this shop.
Close an alert
Invoices → Needs attention → Resolve + what was done.
A paid invoice cannot be cancelled or replaced here (that needs a credit note in Stripe).
11. Invoices you create by hand in Stripe
Sometimes you make an invoice directly in the Stripe Dashboard — for example a month billed before this app existed, re-issued with the late fee. The app finds it and follows it like its own.
In Stripe, create the invoice for the shop's Stripe customer, add the lines, and write the month and year in the memo, for example: Unpaid registrations for May 2026. You may also write a due date (“pay by June 15, 2026”) — a single date is not taken as the month. Send (finalize) it in Stripe.
The app finds it within seconds (or at 05:00 the next morning). To look right now: Invoices → Find hand-made invoices.
If the month was read from the memo, the invoice appears in that month with the badge hand-made. If not (no month, several months, or a month in the future), Needs attention asks you to set it: Invoices → “Made by hand in Stripe” → Set month → choose the month and write why.
From then on it gets reminders, counts as owed and for debtors, and shows on Stores and in the shop's History.
The app never changes it: no Recreate, no Send. To change it, edit it in Stripe (Stripe cancels it and makes a new version — the app then follows the new one), or cancel it here with Void.
If the app already has its own invoice for that shop and month, an alert says “two invoices bill the same month — void one of them”.
In test mode the shop's test customer is the one with the e-mail <org id>@example.com; it exists once the app has made at least one draft for that shop.
12. Debtors and deactivation
The app counts how many days a shop's oldest unpaid invoice is past due (ours and hand-made ones). Every morning:
from 15 days (Settings → Debtors) the shop is Warned: an alert in Slack, and the shop sees a banner on findpet.com that new pet transfers and registrations may be paused from a date;
from 30 daysdeactivation is recommended: an alert in Slack;
or by months (Settings → Debtors, off by default): with “after N unpaid months” set, N service months with an invoice past due recommend deactivation, and N−1 warn the shop (never a single month: with N = 2 the rule only recommends — one month is the days rule's) — whichever rule reaches a level first wins, and the earlier date is the one the shop sees.
Deactivating is always your decision — the app never does it by itself.
Stores → the shop's row → Deactivate (or History → Deactivate), write the reason.
On findpet.com the shop can no longer transfer its pets to buyers or register new pets. It can still edit its pets and report a lost or found pet. A message goes to Slack.
When it has paid: Reactivate + a reason. If a deactivated shop owes nothing any more, Slack reminds you every day to reactivate it.
Good to know.
While invoicing runs in test mode, a deactivation is a rehearsal: findpet.com ignores it.
The shop's part on findpet.com is ready but waits for the website's release.
Shops that send pets through the partner API are not blocked there yet.
Warnings to shops (Settings → Debtors, owner)
When this switch is On:
a shop that becomes Warned or “deactivation recommended” gets its past-due invoices re-sent by Stripe at once;
every invoice you send to that shop while it is at a level carries a dated notice at the top: “PAST DUE … new pet transfers and registrations may be paused … if you have paid since, please disregard this notice”. It is written when you press Send, from what Stripe shows at that moment: if the shop has paid in the meantime, there is no notice.
Shops with reminders paused (Edit) get neither. Off by default. An invoice that has already gone out can't get the notice: Stripe doesn't allow changing a sent invoice's text.
13. Prices
Base prices (Settings → Prices, owner): to change them, add new prices from a date. The old ones stay for the months before; the standard price is always the ACH price × 1.03.
A shop's contract price or discount (Registrations & revenue → Pricing, or Stores → History → Pricing; finance_admin or owner): name it, choose Contract price (the ACH price) or Discount %, the first day, the last day (or “No end date”), and the reason. The preview shows both prices. Two conditions of one shop can't overlap.
End — set the last day of a condition (it stays in the history).
Cancel — as if it never existed: every month in its dates is priced at the base price again. Not possible if an invoice already went out at that price (void or recreate it first, or set the last day instead). Drafts made at that price must be deleted and created again — the app lists them.
Changes that reach into months before this one ask you to confirm.
14. Reminders, Slack and the daily summary
Reminders to shops (Settings, owner): On — on the chosen days of the month (by default the 1st and the 15th) at 06:00 New York, Stripe re-sends every open invoice that was e-mailed at least 7 days ago. Shops with reminders paused are skipped. Off by default.
Slack (channel Stripe Invoices): alerts come at once; a daily summary at 07:00 New York: open, overdue and failed invoices, payments of the last 24 hours, debtors, whether the app is healthy. Every message links back to the right page of the app (Admin): a shop's alert (debtor, deactivation) — its store page; an invoice's — the month's cases on Invoices; a run's — the run on Billing runs; the daily summary — Overview; failed reminders — Invoices, every month (a reminder goes to any month's unpaid invoice).
15. Settings — who can change what
Setting
What it does
Default
Billing group
Which shops are billed (those sharing one API token).
Nobody
Invoice sending
Manual: drafts wait for Send. Automatic: sent right away — only for shops whose billing mode is Automatic (Stores → the shop → Billing mode).
Manual
Reminders
Stripe re-sends open e-mailed invoices on the chosen days.
Off, days 1 and 15
Debtors
Days past due for “Warned” and “Deactivation recommended”.
15 and 30
Warnings to shops
Re-send past-due invoices when a level is reached; a dated PAST DUE notice in the invoices sent to that shop.
Off
Prices
Base prices from a date.
$9.50 / $9.785 / $10.00
Only the owner changes settings. Turning something on that acts by itself (Automatic sending, reminders, warnings) asks for a reason; turning it off is one click.
16. Users (owner) and the Audit log
Add user: a username, a temporary password (at least 12 characters, valid 72 hours) and the role. Give the password privately; at the first sign-in they set up 2FA and choose their own password.
Temp password — the user forgot the password. Reset 2FA — the user lost the phone. Both give a new temporary password.
Role — choose another one in the user's row and confirm with Change the role; it applies at once. Your own role can't be changed here.
Audit log: every sign-in, view, change and Stripe action, with the user, the time and the reason. Filters: the user, the action (or its start — invoice_ finds every invoice action), the target (a shop's org ID, a month, a setting…), New York dates, words in the details (any case); they stay in the address, and a store's page opens its own (Activity). A search is itself written to the log, with its filters — it is shown when the action filter asks for it (audit_), so a store's Activity is its own actions, not who looked at them.
17. Questions
Where did the Dashboard and the tabs go?
The Dashboard is now Stores; Preview, Create drafts and Send all drafts are on Billing runs; Needs attention is at the top of Invoices. The month is chosen once, on the period bar. Old links still open the right page.
Create drafts made nothing for a shop.
It had no pets to bill, it was taken out of billing, or it already has an invoice for that month (Billing runs → Preview shows why).
Send says the draft is out of date, or that something changed.
Out of date: pets or prices changed after the draft was made — Rebuild it. If the payment method changed, the draft became a Problem: Rebuild it (or Delete it and press Create drafts again).
A shop says it paid, but the app shows Open.
Press Refresh. A bank payment can take a few days (ACH processing).
Invoice sending is Automatic, but a draft was not sent.
A draft goes out by itself only when the shop's billing mode is Automatic for that month too (the store's page → Billing mode). Every shop starts in Manual.
The shop asks us to take the payment from its card now.
Open the invoice's card → Charge… → pick the card. If the invoice is at the ACH rate, a card can't pay it: Recreate it at the standard rate first. If the card isn't listed, the shop hasn't saved it in Stripe yet.
The shop should pay the ACH price, but gets the standard price.
It has no saved bank account with a mandate in Stripe, or its bank account is marked after a failed payment (Invoices → bank accounts → Clear).
A hand-made invoice doesn't show up.
Is it for the shop's Stripe customer, and sent (finalized) in Stripe? Press Find hand-made invoices. Without a month in the memo it waits under “Made by hand in Stripe” for Set month.
I don't see a button described here.
Your role can't use it (section 1). Ask the owner.
Why can't I change a sent invoice's text?
Stripe doesn't allow it; only Recreate (a new invoice) can.
18. Words used here
Service month
The New York month in which the pets were transferred — what an invoice is for.
Out of date (a stale draft)
A draft that no longer matches its month: the prices or the pets changed after it was made. Rebuild makes it right.
ACH Direct Debit
Payment straight from a US bank account; cheaper price.
Draft / Finalize / Send
A draft can still change; finalizing gives it a number; sending charges the saved payment method or e-mails it.
Void
Cancelled invoice; cannot be paid.
Replacement / revision
A new invoice for the same month that replaces the cancelled one.
Dispute
The shop or its bank took the payment back.
Org ID
The shop's ID on findpet.com (for example AZX67GZC).
Billing group
The shops that share one API token — the ones we bill.
FindPet Finance — руководство пользователя
Как каждый месяц выставлять счета магазинам, следить за оплатами, разбираться с неудачными платежами и должниками — по шагам, без технических знаний.
Тестовый режим. Сейчас все счета создаются в Stripe в test mode: никому ничего не приходит и ничего не списывается, сообщения в Slack начинаются с [TEST]. Всё, что описано ниже, работает так же и после включения настоящего биллинга — только тогда магазины получают счета по-настоящему.
1. Основное
За что выставляем. Магазин платит за каждого питомца, которого он передал покупателю за месяц; один питомец — один раз в месяц. Бесплатно: передача, отменённая в том же месяце, и повторная передача того же питомца в течение 90 дней после предыдущей.
Кому выставляем. Только магазинам биллинговой группы (Settings → Billing group). Приюты, тестовые аккаунты и партнёры не выставляются никогда.
Месяц — по времени Нью-Йорка (с полуночи до полуночи по восточному времени). Счёт за месяц можно выставить, когда месяц закончился. Месяц регистраций называется сервисным месяцем (service month); это не день, когда счёт отправили или оплатили.
Цены. Стандартная цена — $9.785 за регистрацию. Магазины, которые платят через ACH Direct Debit (сохранённый банковский счёт в США), платят $9.50. За неудачный ACH-платёж добавляется штраф $10.00. У магазина может быть своя договорная цена или скидка.
Оплата. У магазина с сохранённым банковским счётом или картой деньги списываются автоматически, когда вы отправляете счёт. Остальные получают счёт письмом со ссылкой на оплату онлайн; срок оплаты — 15 дней.
Четыре роли, каждая может всё, что может предыдущая:
viewer — видит всё, ничего не меняет;
operator — создаёт, пересобирает и отправляет счета, списывает оплату сохранённым способом, ставит месяц ручному счёту, разбирает тревоги, ставит на паузу напоминания магазина, запускает симуляцию магазина и читает его billing e-mail из Stripe;
finance_admin — ещё исправляет: удаляет, пересоздаёт и аннулирует счета, делает питомца платным вручную, привязывает питомца, переданного без организации, к магазину (или отмечает «не платный»), деактивирует магазин, правит магазин (имя, сеть, контакты, billing setup, billing e-mail, режим биллинга) и его договорную цену или скидку;
owner — ещё базовые цены, все настройки и пользователей.
Кнопок, которые вашей роли недоступны, вы просто не увидите.
Всё записывается в Audit log: кто, когда, что сделал и какую причину указал.
2. Вход
Откройте finance.findpet.com, введите имя пользователя и пароль, нажмите Continue.
Введите 6-значный код из приложения-аутентификатора (Google Authenticator, 1Password, Authy…), нажмите Verify.
Первый вход — по временному паролю от owner'а: приложение попросит добавить аккаунт в аутентификатор, затем придумать свой пароль (не короче 12 символов).
Забыли пароль? Попросите у owner'а временный (Users → Temp password). Потеряли телефон? Попросите owner'а сделать Reset 2FA. После 60 минут бездействия приложение выходит из аккаунта само.
3. Как устроено приложение
Меню слева (на телефоне — полоса сверху, её можно листать вбок):
Раздел
Для чего
Overview
Как обстоят дела за месяц и что нужно сделать (раздел 4).
Invoices
Все счета месяца по видам с числами; карточка каждого счёта с тем, что с ним можно сделать сейчас (раздел 5). Вверху — Needs attention кейсами, ниже — счета, созданные вручную в Stripe, и банковские счета с неудачным ACH-платежом. Число рядом — сколько тревог ждёт.
Stores
Все магазины, которым мы выставляем: счёт за месяц, долг, просрочка; история магазина (раздел 6).
Registrations & revenue
Сколько питомцев к оплате у каждого магазина и почему; Make billable, договорные цены, биллинговый профиль магазина.
Billing runs
Выставление за весь месяц: Preview, Create drafts, Send all drafts.
Settings
Биллинговая группа, отправка счетов, Slack и напоминания, должники, цены.
Users
Кто может входить и с какой ролью (только owner).
Audit log
Каждый вход, просмотр и изменение.
Help
Это руководство, на английском и русском.
Верхняя панель сразу показывает, как настроено приложение: TEST MODE (ни с кого не списывается), Sending: Manual / Automatic (нажатие открывает Settings) и Last Stripe check — по нажатию видно, связан ли Stripe с нами: последняя утренняя сверка, последнее сообщение от Stripe, ожидающие сообщения, Slack. Дальше — ваше имя и роль, Change password и Sign out.
Панель периода над Overview, Invoices, Stores, Registrations и Billing runs выбирает сервисный месяц сразу для всех: ‹ Previous, список месяцев, Next ›. Current billing month возвращает к месяцу, который выставляем сейчас, — прошлому. Текущий месяц помечен «so far»: он ещё не закончился.
Адрес в браузере хранит раздел и месяц (например, #invoices?period=2026-08). Скопируйте его, чтобы коллега увидел ровно тот же экран; кнопка «Назад» браузера работает; ссылки из Slack открывают нужное место.
Окна подтверждения. Любая кнопка, которая что-то меняет, сначала открывает окно: что именно произойдёт и поле для причины, где она нужна. Кнопка внизу окна выполняет действие. Cancel, Esc или щелчок мимо окна закрывают его, и ничего не меняется. Если приложение отказало (например, счёт тем временем изменился), причина видна прямо в окне.
4. Overview: что нужно сделать
Первый экран после входа. Каждое число подписано, к чему оно относится:
Сервисный месяц (панель периода): регистрации к оплате (и сколько магазинов без них или ещё без счёта); Drafts — ещё не отправлены, не долг; Sent — что ушло и сколько из этого не оплачено; Paid — брутто, как в Stripe (оспоренная / возвращённая часть названа).
Все периоды на сейчас: долг (отправлено и не оплачено за все месяцы вместе; черновики не считаются); net collected — чистые поступления (оплачено минус оспоренное или возвращённое и не отыгранное; возвраты, сделанные вручную в Stripe Dashboard, здесь не видны); disputed / returned; магазины с просрочкой (и сколько деактивировано).
Work queue — что нужно сделать человеку, со ссылкой View туда, где это делается: Needs attention, черновики к отправке, проблемы с оплатой, просрочившие магазины, магазины без счёта. How the app is set — тестовый режим, отправка счетов, напоминания, предупреждения магазинам, Slack, последняя сверка со Stripe.
5. Invoices: виды, карточка счёта, кейсы
Invoices — рабочее место на каждый день: одна строка на магазин и сервисный месяц, какая бы версия счёта ни была сейчас.
Виды — кнопки над списком, у каждой число счетов в ней: Needs action (устаревшие, Problem, неудачная оплата, спор, безнадёжные), Price / data mismatch (устаревшие черновики), Ready to send, ACH processing, Payment failed, Awaiting payment, Overdue, Disputed, Paid, Made by hand, All, Void / history. Числа считают счета (не тревоги) по тому же поиску.
Поиск — по названию магазина, org ID, номеру счёта или идентификатору Stripe. Any payment оставляет только ACH, карту, письмо или ручные счета; Every month ищет сразу по всем месяцам (панель периода тогда не действует).
В строке: магазин, сервисный месяц и документ, деньги, способ оплаты, состояние — что нужно сделать человеку, например Out of date или Ready to send (статус Stripe написан под ним), — и одна кнопка следующего шага: Send, Review, Set month или View.
Карточка счёта — нажмите на название магазина: всё об одном счёте (строки, оплата, прежние версии и расчёты, документы) и все действия, доступные сейчас: Send, Charge, Rebuild, Refresh, Recreate, Void, Delete, Timeline. Адрес хранит открытую карточку — ссылка на неё открывает её же; «Назад», Esc или ✕ закрывают.
Устаревшие черновики и Rebuild
Черновик — снимок месяца на момент создания. Если потом изменились договорная цена, скидка, базовые цены или платные питомцы, черновик больше не совпадает: он помечается Out of date (вид Price / data mismatch). Его карточка показывает черновик против месяца сейчас — питомцы, строки, итог и разница.
Send для него заблокирован — в карточке, а Send selected и Send all drafts его пропускают и перечисляют. В Stripe ничего не уходит.
Rebuild + причина (operator и выше): старый черновик удаляется из Stripe, новый делается по месяцу сейчас и сверяется до цента. Он не отправляется — проверьте и нажмите Send. Прежний расчёт остаётся в карточке («Rebuilt — the earlier calculations»). Черновик Problem пересобирается так же.
Если выставлять больше нечего (магазин выведен из биллинга, питомцев не осталось), Rebuild так и скажет — удалите черновик (Delete).
Rebuild — только для черновика, который ни разу не уходил. Ушедший счёт заменяется через Recreate (раздел 10).
Send selected
Отметьте строки, готовые к отправке (галочка слева; галочка в шапке отмечает все такие строки на странице), и нажмите Send N invoices. Окно покажет, сколько счетов, общую сумму, сколько уйдёт письмом и со скольких спишутся деньги. Каждый счёт ещё раз проверяется прямо перед отправкой; устаревший к тому моменту пропускается и попадает в список. Список следит за ходом отправки.
Charge — списать сохранённым способом
Charge… в карточке счёта (operator и выше) берёт оплату сейчас одним из способов, сохранённых у магазина в Stripe, — например, когда магазин попросил «спишите с новой карты», или по счёту, ушедшему письмом или просроченному. Это всегда решение человека: само приложение на другой способ не переключается.
Окно читает сохранённые способы магазина из Stripe в тот же момент. У каждого написано, может ли он оплатить этот счёт, а если нет — почему: банковский счёт заблокирован, по нему был неудачный ACH-платёж, нет разрешения (mandate) или другая цена.
Способ задаёт цену. Банковский счёт (ACH) платит по ACH-цене, карта или Link — по стандартной. Способ с другой ценой, чем у счёта, не предлагается — сначала Recreate по этой цене (раздел 10). Цена за спиной магазина не меняется.
Кнопка говорит, что именно произойдёт: Charge $… to visa ••4242. Черновик финализируется и оплачивается за один раз (письмо не уходит). Карта платит сразу; банковское списание идёт несколько дней (ACH processing).
Никогда дважды. Charge не предлагается, пока платёж в обработке, для оплаченного или частично оплаченного счёта, для устаревшего черновика (сначала Rebuild), для черновика Problem и для счёта, созданного вручную в Stripe (оплату берите в Stripe).
Отказ или банк вернул списание позже: ничего другого не пробуется и замена не создаётся. В Needs attention появляется тревога («the payment by hand … was declined / failed — decide by hand»): попробуйте другой сохранённый способ, Recreate или дождитесь магазина. Банковский счёт с неудачей помечается, как после любого неудачного ACH-платежа.
Каждое списание видно в карточке (Charge 1, 2…: когда, кто, способ, результат) и в Audit log.
Needs attention — кейсами
Вверху раздела Invoices. Тревоги об одном счёте (отказ, готова замена, следующий отказ…) — один кейс; тревоги о магазине (просрочка, пора реактивировать) — кейс магазина. В кейсе видна последняя тревога, все — по нажатию, Open the invoice (или The shop) и Resolve case: один комментарий закрывает тревоги, которые вы в нём видели; пришедшая за это время остаётся открытой. Показаны первые три кейса; Show all открывает остальные.
6. Stores: все магазины на одном экране
Stores показывает все магазины, которым мы выставляем счета, за сервисный месяц (по умолчанию — прошлый):
Колонка
Что означает
Shop
Название (отображаемое имя, если задано) и org ID — нажмите, откроется страница магазина. Отметки: Deactivated (деактивирован), Warned (предупреждён), Deactivation recommended (рекомендована деактивация), Taken out of billing (выведен из биллинга), режим биллинга, если он не Manual, и смена режима, запланированная на следующий месяц.
Registrations
Сколько питомцев к оплате за месяц (и сколько всего было передач). Магазину без регистраций счёт не нужен.
Invoice for the month
Статус счёта (Draft, Open, Paid, Overdue…), сумма и номер в Stripe (нажмите — откроется в Stripe). «made by hand in Stripe» — счёт, созданный вручную прямо в Stripe.
Paid
Сколько оплачено за этот месяц.
Owed now
Сколько магазин должен сегодня за все месяцы вместе: все отправленные и неоплаченные счета. Неотправленные черновики не считаются.
Past due
На сколько дней самый старый неоплаченный счёт магазина просрочен.
Поиск — по названию, отображаемому имени, сети или org ID; фильтр оставляет только тех, кто должен, просрочил, оплатил, не оплатил, кому ещё не выставлен счёт, деактивированных — или магазины в одном режиме биллинга.
History — быстрый взгляд на магазин по месяцам: регистрации, все счета (с датой оплаты, числом напоминаний, прежними версиями), долг, просрочка, цена сейчас. Оттуда же: Store page, Pricing, Billing profile, Deactivate / Reactivate.
Последняя строка таблицы — итог.
Страница магазина
Всё об одном магазине, и там же всё меняется (адрес #stores/<org ID>; ← All stores — назад к списку). Вверху: Edit store, Change billing mode, Pause / Resume reminders, Deactivate — каждая кнопка видна только роли, которой она доступна.
Overview — долг, просрочка, цена, режим биллинга; Ready to be billed without a person? — проверки по нашим записям: в группе биллинга, клиент Stripe, правило цены, billing e-mail, как платил в прошлый раз, неразобранные проблемы оплаты или споры, помеченные банковские счета, устаревшие черновики или Problem, ручные счета без месяца. Blocks: черновик магазина в Automatic задерживается на проверку, пока это не разобрано; Check: сказано, но не задерживает.
What happens on the 5th → Simulate (operator и выше): что ежемесячный запуск сделал бы с этим магазином сейчас — ничего, черновик, черновик на проверку или создал и отправил, — с питомцами на сегодня, строками, суммой и способом оплаты из Stripe. Ничего не записывается.
Invoices — по месяцам (как в History); Open in Invoices показывает все счета магазина.
Billing mode — как магазину выставляются счета, с какого сервисного месяца, и все изменения с причинами. Manual: счёт делает и отправляет оператор. Scheduled with review: черновик делает запуск 5-го, отправляет человек. Automatic: делается и отправляется сам — только пока в Settings отправка Automatic и ничего не блокирует проверку готовности. Paused: счёт не делается (Create drafts магазин пропускает), долг остаётся. Изменение действует с текущего месяца или позже (уже выставленный месяц не меняется) и само ничего не отправляет и не списывает. Все магазины начинают с Manual.
Contacts — billing e-mail — это e-mail клиента в Stripe (туда уходят счёт по e-mail и напоминания): Read from Stripe показывает его сейчас; Change… записывает в Stripe (test mode; в live ключ только на чтение — меняйте в Stripe Dashboard). Ниже — контакты магазина (имя, роль, e-mail, телефон), хранятся только в этом приложении.
Pricing & payment — цена сейчас, Price conditions (договорная цена или скидка), как платит, Billing setup (в биллинге ли, клиент Stripe, заметки).
Edit store — отображаемое имя и сеть (только для этого приложения: у Stripe и findpet.com свои) и до 10 контактов.
7. Ежемесячное выставление счетов по шагам
Делается в первые дни каждого месяца — за только что закончившийся месяц (Current billing month на панели периода).
Ежемесячный запуск идёт сам 5-го числа в 06:00 по Нью-Йорку за предыдущий месяц (если приложение было недоступно — догоняет в течение 5 дней). С каждым магазином он делает то, что говорит его режим биллинга (Stores → магазин → Billing mode): Manual — ничего, магазин перечислен в сводке запуска в Slack, чтобы человек выставил счёт вручную (шаги ниже); Paused — ничего; Scheduled with review — черновик, который отправит человек; Automatic — черновик, который уходит сам, только пока в Settings отправка Automatic и проверка готовности пройдена. Магазин, у которого счёт уже есть, не трогается. Все магазины начинают с Manual, так что поначалу запуск только сообщает.
В Billing runs: Reconciliation — сверка месяца от передач до денег (платные питомцы → магазины с питомцами → выставлено → отправлено → оплачено) и что осталось человеку: магазины с платными питомцами без счёта (и почему), устаревшие черновики и Problem, счета, созданные вручную в Stripe, питомцы без организации. Runs — все запуски месяца (Create drafts, Send, ежемесячный): кто или что запустил, чем закончилось по каждому магазину (Details; туда же ведёт ссылка из сводки в Slack).
Шаг 1 — проверить регистрации
Откройте Registrations & revenue.
Посмотрите колонку To bill (к оплате) по каждому магазину. Old script — сколько насчитал бы старый скрипт; разница объяснена в Details (по каждому питомцу — почему он платный или бесплатный).
Поиск и фильтр (Past due, Deactivated, Stripe customer not linked) помогают быстро найти нужные магазины.
По месяцам — Monthly matrix
Registrations & revenue → Monthly matrix: магазины по строкам, сервисные месяцы по столбцам (по умолчанию 12 до текущего, до 24 — From / To). В ячейке: платные питомцы месяца и его счёт — сумма и где он (draft, open, paid, overdue, disputed…; «by hand» — создан в Stripe; out of date — красным). Где счёта нет, ячейка говорит почему: before billing (до первого счёта приложения вообще — биллинг ещё не начался), not started (до первого счёта или передачи магазина), no invoice needed (платных питомцев нет), not invoiced (питомцы есть, счёта ещё нет), excluded (выведен из биллинга), so far (текущий месяц). Cells показывает только питомцев, только счёт или только состояние. Ячейка открывает карточку своего счёта (или страницу магазина). Под таблицей по месяцам: питомцы, выставлено за месяц (ушедшие счета), отправлено в месяце, оплачено в месяце. CSV — строка на магазин и месяц.
Шаг 2 — поправить то, что нужно (до создания счетов)
Питомца нужно выставить, а правила сделали его бесплатным (например, отменённая передача, которая на самом деле состоялась): Details → строка питомца → Make billable → напишите причину → Save. Отменить: Undo. Правка месяцев раньше прошлого потребует подтверждения.
Питомца передали без организации (в billing_log у передачи нет магазина, поэтому её никому не выставляют): блок Pets without an organization под таблицей месяца (туда же ведут очередь в Overview и сверка). У каждого питомца — микрочип, кличка и организация из его собственной карточки. Assign… → выберите магазин биллинговой группы (первым предложен магазин из карточки) → причина → Assign: передачи питомца в этом месяце становятся передачами магазина — выставляются ему, видны в его истории, в матрице и учитываются правилом 90 дней (колонка старого скрипта не меняется). Not billable… → причина: разобран, никто не платит. Undo возвращает на разбор. Привязать нельзя, если счёт этого магазина за месяц уже вышел (сначала Void); его неотправленный черновик устаревает — нажмите Rebuild. Решают только finance_admin и owner, список видят все.
У магазина договорная цена или скидка:Pricing (см. раздел 13).
Привязать магазин к его клиенту в Stripe (нужно для настоящего биллинга): Edit → Stripe customer id (начинается с cus_, скопируйте со страницы клиента в Stripe) → Save. Приложение проверит, что такой клиент есть.
Магазину не нужно выставлять счёт (магазин закрыт, отдельная договорённость): Edit → снимите галочку Bill this organization → Save. Магазин переедет в список «Taken out of billing».
Остановить напоминания одному магазину (например, пока идёт спор): Edit → галочка Pause payment reminders for this shop.
Шаг 3 — предпросмотр, черновики, отправка
Откройте Billing runs и нажмите Preview: что будет создано по каждому магазину, на какую сумму и как будет оплачено. Пока ничего не записывается.
Нажмите Create drafts и подтвердите кнопкой Start. Приложение создаст в Stripe по одному черновику на магазин и сверит каждый со своим расчётом до цента. Дождитесь, пока строка прогресса покажет, что всё готово (тем временем можно переходить в другие разделы).
Проверьте список в Invoices. Черновик с отметкой Out of date сделан до того, как что-то изменилось (договорная цена, питомец): откройте его и нажмите Rebuild. Черновик Problem расходится с расчётом Stripe и никогда не будет отправлен: устраните причину и пересоберите его (Rebuild) — или удалите (Delete) и снова нажмите Create drafts.
Отправьте: Send на одном счёте, Send selected — отмеченные строки (Invoices) — или Send all drafts, все сразу (Billing runs). Окно покажет, как магазин будет платить. Перед отправкой приложение ещё раз проверяет, что ничего не изменилось (питомцы, цены, способ оплаты). С магазинов с сохранённым банковским счётом или картой деньги списываются, остальным счёт уходит письмом.
Ручная или автоматическая отправка (Settings → Invoice sending, только owner). Manual (по умолчанию): черновики ждут, пока кто-то нажмёт Send. Automatic: каждый проверенный черновик отправляется сразу после создания. Возврат в Manual останавливает ближайшую же автоматическую отправку. Что включено сейчас, всегда видно на верхней панели.
Повторный Create drafts никогда не создаст второй счёт тому же магазину за тот же месяц.
8. После отправки: статусы и что делать
Статус
Что значит
Что делать
Draft
Создан, не отправлен.
Отправить (или Delete — удалить).
Out of date
Черновик сделан до изменения цен или питомцев.
Rebuild — Send заблокирован.
Problem
Черновик в Stripe не совпадает с нашим расчётом.
Устранить причину, затем Rebuild (или Delete и снова Create drafts).
Статусы обновляются сами: Stripe сообщает о событиях за секунды, а каждое утро в 05:00 (Нью-Йорк) приложение перепроверяет всё. Refresh перечитывает один счёт из Stripe прямо сейчас.
Timeline — вся история счёта: смены статусов, сообщения от Stripe, тревоги, напоминания, прежние версии.
Ссылки PDF скачивают PDF счёта (и оплаченного счёта).
Needs attention (вверху раздела Invoices; туда же ведёт очередь работ в Overview) — то, на что нужно посмотреть человеку. Тревоги одного счёта (или магазина) — один кейс; разобрались — нажмите Resolve case и напишите, что сделано.
9. Если платёж не прошёл
Не прошёл банковский (ACH) платёж или банк вернул его позже: приложение аннулирует старый счёт и готовит замену — по стандартной цене плюс штраф $10.00, оплата онлайн по письму. Банковский счёт магазина помечается: пока пометку не снимут, у магазина стандартная цена.
Отклонена карта: замена по той же цене, оплата онлайн по письму.
В режиме Manual замена ждёт черновиком — Needs attention пишет «ready as a draft — press Send». Проверьте и нажмите Send. В режиме Automatic она уходит сама.
Автоматически это делается один раз на счёт. Если снова не прошло, или магазин сам оспорил платёж, Needs attention попросит решить вручную.
Оплата, которую вы взяли вручную через Charge, при отказе или неудаче автоматически не перевыставляется: Needs attention попросит решить (Charge).
Bank accounts with a failed ACH payment (внизу раздела Invoices): когда со счётом магазина всё в порядке, нажмите Clear и напишите причину — его счета снова получат ACH-цену.
10. Отменить и отклонить
Хочу…
Как
Исправить черновик после изменения цены или питомцев
Invoices → карточка счёта → Void + причина. Только для открытых / неоплаченных. Месяц освобождается: Create drafts выставит его заново.
Заменить счёт (другая цена, добавить или убрать штраф, письмом вместо списания)
Invoices → карточка счёта → Recreate: выберите тариф (как даёт сохранённый способ оплаты / ACH / стандартный), способ оплаты, штраф, напишите причину. Предпросмотр покажет новую сумму. Старый счёт аннулируется, новый ждёт черновиком кнопку Send.
Остановить замену, которая создаётся
Invoices → карточка счёта → Cancel replacement + причина (месяц может остаться невыставленным — приложение предупредит).
Registrations & revenue → Edit → снять галочку Bill this organization.
Остановить напоминания магазину
Edit → Pause payment reminders for this shop.
Закрыть тревогу
Invoices → Needs attention → Resolve + что сделано.
Оплаченный счёт здесь не отменить и не заменить (для этого нужна кредит-нота в Stripe).
11. Счета, созданные вручную в Stripe
Иногда счёт создаётся прямо в Stripe Dashboard — например, за месяц, выставленный ещё до этого приложения, перевыставленный со штрафом. Приложение само находит такой счёт и ведёт его как свой.
В Stripe создайте счёт на клиента магазина в Stripe, добавьте строки и напишите в поле memo месяц и год, например: Unpaid registrations for May 2026. Можно указать и срок оплаты («pay by June 15, 2026») — одиночная дата за месяц не считается. Отправьте (финализируйте) счёт в Stripe.
Приложение найдёт его за секунды (или в 05:00 следующего утра). Проверить сразу: Invoices → Find hand-made invoices.
Если месяц прочитан из memo, счёт появится в этом месяце с отметкой hand-made. Если нет (месяц не указан, указано несколько месяцев или месяц в будущем), Needs attention попросит указать его: Invoices → «Made by hand in Stripe» → Set month → выберите месяц и напишите причину.
Дальше по нему идут напоминания, он входит в долг и в подсчёт должников, виден в Stores и в истории магазина.
Приложение его никогда не меняет: нет Recreate и Send. Чтобы изменить — правьте в Stripe (Stripe аннулирует его и создаёт новую версию, приложение переключится на неё) или отмените здесь через Void.
Если у приложения уже есть свой счёт этому магазину за тот же месяц, придёт тревога «два счёта за один месяц — аннулируйте один».
В тестовом режиме тестовый клиент магазина в Stripe — с e-mail <org id>@example.com; он появляется после того, как приложение хотя бы раз создало черновик для этого магазина.
12. Должники и деактивация
Приложение считает, на сколько дней просрочен самый старый неоплаченный счёт магазина (свои и ручные). Каждое утро:
с 15 дней (Settings → Debtors) магазин Warned — предупреждён: тревога в Slack, а магазин видит на findpet.com баннер, что новые передачи и регистрации питомцев могут быть приостановлены с такой-то даты;
с 30 дней — рекомендована деактивация: тревога в Slack;
или по месяцам (Settings → Debtors, по умолчанию выключено): если задано «после N неоплаченных месяцев», N сервисных месяцев с просроченным счётом — рекомендована деактивация, N−1 — предупреждение (но не один месяц: при N = 2 правило только рекомендует, один месяц — дело правила по дням). Срабатывает то правило, которое наступило раньше, и магазин видит более раннюю дату.
Деактивацию всегда решает человек — сама она не включается.
Stores → строка магазина → Deactivate (или History → Deactivate), напишите причину.
На findpet.com магазин больше не может передавать своих питомцев покупателям и регистрировать новых. Править питомцев и сообщать о потерянном или найденном питомце можно. В Slack уходит сообщение.
Когда магазин оплатил: Reactivate + причина. Если деактивированный магазин больше ничего не должен, Slack каждый день напоминает его реактивировать.
Важно.
Пока счета выставляются в тестовом режиме, деактивация — репетиция: findpet.com её не выполняет.
Часть на стороне findpet.com готова и ждёт релиза сайта.
Магазины, которые передают питомцев через партнёрский API, там пока не блокируются.
магазину, который стал Warned или «deactivation recommended», Stripe сразу переотправляет просроченные счета;
каждый счёт, который вы отправляете магазину, пока он на уровне, несёт вверху датированное предупреждение: «PAST DUE … new pet transfers and registrations may be paused … if you have paid since, please disregard this notice». Оно пишется в момент нажатия Send по тому, что Stripe показывает сейчас: если магазин тем временем оплатил, предупреждения не будет.
Магазинам с остановленными напоминаниями (Edit) — ни того, ни другого. По умолчанию выключено. В уже отправленный счёт предупреждение не добавить: Stripe не даёт менять текст отправленного счёта.
13. Цены
Базовые цены (Settings → Prices, owner): чтобы изменить, добавьте новые цены с даты. Старые остаются для прошлых месяцев; стандартная цена всегда равна ACH-цене × 1.03.
Договорная цена или скидка магазина (Registrations & revenue → Pricing или Stores → History → Pricing; finance_admin или owner): название, Contract price (договорная ACH-цена) или Discount % (скидка), первый день, последний день (или «No end date»), причина. Предпросмотр покажет обе цены. Два условия одного магазина не могут пересекаться.
End — поставить условию последний день (оно остаётся в истории).
Cancel — как будто условия не было: все месяцы в его датах снова по базовой цене. Нельзя, если по этой цене уже ушёл счёт (сначала Void или Recreate этого счёта — или просто поставьте последний день). Черновики по этой цене нужно удалить и создать заново — приложение их перечислит.
Изменения, затрагивающие месяцы раньше текущего, попросят подтверждения.
14. Напоминания, Slack и ежедневная сводка
Напоминания магазинам (Settings, owner): On — в выбранные дни месяца (по умолчанию 1-го и 15-го) в 06:00 по Нью-Йорку Stripe переотправляет каждый открытый счёт, отправленный письмом не меньше 7 дней назад. Магазины с остановленными напоминаниями пропускаются. По умолчанию выключено.
Slack (канал Stripe Invoices): тревоги приходят сразу; ежедневная сводка в 07:00 по Нью-Йорку — открытые, просроченные и неудачные счета, оплаты за сутки, должники, всё ли в порядке с приложением. В каждом сообщении — ссылка на нужный раздел приложения (Admin): тревога о магазине (должник, деактивация) — его страница; о счёте — кейсы месяца на Invoices; о запуске — этот запуск на Billing runs; ежедневная сводка — Overview; неудачные напоминания — Invoices за все месяцы (напоминание идёт по неоплаченному счёту любого месяца).
15. Настройки — кто что меняет
Настройка
Что делает
По умолчанию
Billing group
Каким магазинам выставлять (тем, у кого общий API-токен).
Никому
Invoice sending
Manual: черновики ждут Send. Automatic: отправляются сразу — только у магазинов в режиме биллинга Automatic (Stores → магазин → Billing mode).
Manual
Reminders
Stripe переотправляет открытые счета в выбранные дни.
Off, 1-е и 15-е
Debtors
Дни просрочки для «Warned» и «Deactivation recommended».
15 и 30
Warnings to shops
Переотправка просроченных счетов при достижении уровня; датированное предупреждение PAST DUE в счетах, отправляемых этому магазину.
Off
Prices
Базовые цены с даты.
$9.50 / $9.785 / $10.00
Настройки меняет только owner. Включение того, что действует само (Automatic, напоминания, предупреждения), требует причину; выключение — в один клик.
16. Пользователи (owner) и Audit log
Add user: имя, временный пароль (не короче 12 символов, действует 72 часа) и роль. Передайте пароль лично; при первом входе человек настроит 2FA и придумает свой пароль.
Temp password — пользователь забыл пароль. Reset 2FA — потерял телефон. В обоих случаях выдаётся новый временный пароль.
Роль — выберите другую в строке пользователя и подтвердите кнопкой Change the role; она действует сразу. Свою роль здесь не поменять.
Audit log: каждый вход, просмотр, изменение и действие в Stripe — кто, когда, с какой причиной. Фильтры: пользователь, действие (или его начало — invoice_ найдёт все действия со счетами), цель (org ID магазина, месяц, настройка…), даты по Нью-Йорку, слова в подробностях (регистр не важен); они остаются в адресе, а страница магазина открывает свой журнал (Activity). Сам поиск тоже пишется в журнал, вместе с фильтрами; в результатах его видно, когда фильтр действия просит его (audit_), — поэтому Activity магазина показывает его действия, а не кто их смотрел.
17. Частые вопросы
Куда делись Dashboard и вкладки?
Dashboard теперь называется Stores; Preview, Create drafts и Send all drafts — в Billing runs; Needs attention — вверху Invoices. Месяц выбирается один раз, на панели периода. Старые ссылки по-прежнему открывают нужный раздел.
Create drafts ничего не создал для магазина.
У него нет питомцев к оплате, он выведен из биллинга или у него уже есть счёт за этот месяц (Billing runs → Preview показывает причину).
Send говорит, что черновик устарел или что-то изменилось.
Out of date: после создания черновика изменились питомцы или цены — пересоберите его (Rebuild). Если изменился способ оплаты, черновик стал Problem: Rebuild (или Delete и снова Create drafts).
Магазин говорит, что оплатил, а в приложении Open.
Нажмите Refresh. Банковский платёж может идти несколько дней (ACH processing).
В Settings отправка Automatic, а черновик не ушёл.
Сам уходит только черновик магазина, у которого на этот месяц и режим биллинга Automatic (страница магазина → Billing mode). Все магазины начинают с Manual.
Магазин просит списать оплату с его карты сейчас.
Карточка счёта → Charge… → выберите карту. Если счёт по ACH-цене, карта его оплатить не может: сначала Recreate по стандартной цене. Если карты нет в списке, магазин ещё не сохранил её в Stripe.
Магазин должен платить по ACH-цене, а получает стандартную.
В Stripe у него нет сохранённого банковского счёта с разрешением на списание (mandate), или его счёт помечен после неудачного платежа (Invoices → bank accounts → Clear).
Ручной счёт не появился.
Он выставлен клиенту этого магазина и отправлен (финализирован) в Stripe? Нажмите Find hand-made invoices. Без месяца в memo он ждёт в «Made by hand in Stripe», пока вы не укажете Set month.
Не вижу кнопку, о которой здесь написано.
Вашей роли она недоступна (раздел 1). Обратитесь к owner'у.
Почему нельзя поменять текст отправленного счёта?
Stripe этого не разрешает; можно только Recreate (новый счёт).
18. Словарь
Out of date (устаревший черновик)
Черновик, который больше не совпадает со своим месяцем: после его создания изменились цены или питомцы. Rebuild его исправляет.
Service month (сервисный месяц)
Месяц по Нью-Йорку, в котором питомцев передали, — за него и выставляется счёт.
ACH Direct Debit
Оплата прямо с банковского счёта в США; цена ниже.
Draft / Finalize / Send
Черновик ещё можно менять; финализация даёт счёту номер; отправка списывает деньги с сохранённого способа оплаты или отправляет счёт письмом.
Void
Аннулированный счёт; оплатить его нельзя.
Replacement / revision
Новый счёт за тот же месяц вместо аннулированного.
Dispute
Магазин или его банк вернули платёж.
Org ID
Идентификатор магазина на findpet.com (например, AZX67GZC).
Billing group
Магазины с общим API-токеном — те, кому мы выставляем счета.