Files
baya-monorepo/product/data-model/07-payouts.html
T
2026-06-24 01:32:46 +03:30

47 lines
8.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Domain 7 — Payouts to Nurses — Balinyaar docs</title>
<link rel="stylesheet" href="../assets/doc.css">
</head>
<body>
<div class="layout">
<aside class="sidebar">
<a class="brand" href="../index.html"><span class="dot"></span> Balinyaar docs</a>
<p class="tagline">Trust-first home-nursing marketplace · Iran</p>
<nav><div class="group"><div class="label">Start here</div><ul><li><a href="../index.html">Docs home</a></li><li><a href="../overview/platform-summary.html">Platform summary &amp; ground truths</a></li></ul></div><div class="group"><div class="label">Business requirements</div><ul><li><a href="../business/index.html">Overview &amp; MVP scope</a></li><li><a href="../business/01-actors-and-onboarding.html">1. Actors &amp; onboarding</a></li><li><a href="../business/02-nurse-verification.html">2. Nurse verification</a></li><li><a href="../business/03-service-catalog-and-pricing.html">3. Service catalog &amp; pricing</a></li><li><a href="../business/04-search-and-matching.html">4. Search &amp; matching</a></li><li><a href="../business/05-booking-and-scheduling.html">5. Booking &amp; scheduling</a></li><li><a href="../business/06-evv-and-service-delivery.html">6. EVV / service delivery</a></li><li><a href="../business/07-cancellation-and-refunds.html">7. Cancellation &amp; refunds</a></li><li><a href="../business/08-payments-and-escrow.html">8. Payments &amp; escrow</a></li><li><a href="../business/09-installments-bnpl.html">9. Installments / BNPL</a></li><li><a href="../business/10-payouts.html">10. Payouts to nurses</a></li><li><a href="../business/11-reviews-trust-and-safety.html">11. Reviews, trust &amp; safety</a></li><li><a href="../business/12-messaging-and-emergencies.html">12. Messaging &amp; emergencies</a></li><li><a href="../business/13-tax-invoicing-and-legal.html">13. Tax, invoicing &amp; legal</a></li><li><a href="../business/14-notifications-and-admin.html">14. Notifications &amp; admin</a></li></ul></div><div class="group"><div class="label">Database model</div><ul><li><a href="index.html">Overview &amp; decisions</a></li><li><a href="diagrams.html">Diagrams</a></li><li><a href="01-identity-and-access.html">1. Identity &amp; access</a></li><li><a href="02-geography.html">2. Geography</a></li><li><a href="03-services-and-pricing.html">3. Services &amp; pricing</a></li><li><a href="04-verification-and-credentials.html">4. Verification &amp; credentials</a></li><li><a href="05-booking-and-scheduling.html">5. Booking &amp; scheduling</a></li><li><a href="06-payments-ledger-and-refunds.html">6. Payments, ledger &amp; refunds</a></li><li><a class="active" href="07-payouts.html">7. Payouts</a></li><li><a href="08-bnpl.html">8. BNPL / installments</a></li><li><a href="09-messaging.html">9. Messaging</a></li><li><a href="10-reviews-and-records.html">10. Reviews &amp; records</a></li><li><a href="11-notifications.html">11. Notifications</a></li><li><a href="12-audit-config-and-reference.html">12. Audit, config &amp; reference</a></li><li><a href="13-partner-centers-and-future.html">13. Partner centers &amp; future</a></li></ul></div><div class="group"><div class="label">Payments deep-dive</div><ul><li><a href="../payments/index.html">Overview &amp; exec summary</a></li><li><a href="../payments/iranian-payment-reality.html">Iranian payment reality</a></li><li><a href="../payments/escrow-ledger.html">Escrow as a ledger</a></li><li><a href="../payments/bnpl-landscape.html">BNPL landscape &amp; finding</a></li><li><a href="../payments/cancellation-and-payout.html">Cancellation &amp; nurse payout</a></li><li><a href="../payments/integration-notes.html">Integration &amp; schema touchpoints</a></li><li><a href="../payments/sources.html">Recommendations &amp; sources</a></li></ul></div><div class="group"><div class="label">Research &amp; strategy</div><ul><li><a href="../research/index.html">Overview &amp; exec summary</a></li><li><a href="../research/market-and-competitors.html">Market &amp; competitors</a></li><li><a href="../research/problems-and-risks.html">Problems &amp; risks</a></li><li><a href="../research/verification.html">Verification (research)</a></li><li><a href="../research/legal-landscape.html">Legal landscape</a></li><li><a href="../research/go-to-market.html">Go-to-market &amp; sources</a></li></ul></div><div class="group"><div class="label">Notes &amp; more</div><ul><li><a href="../notes/open-questions.html">Open questions</a></li><li><a href="../notes/future-ideas.html">Future ideas</a></li><li><a href="../wireframes/index.html">Wireframes</a></li><li><a href="../fa/index.html">Farsi documents</a></li></ul></div></nav>
</aside>
<main class="main"><div class="content">
<div class="topbar"><button class="theme-toggle" type="button" onclick="__t()">theme</button></div>
<h1 id="domain-7-payouts-to-nurses">Domain 7 — Payouts to Nurses</h1>
<p><a href="index.html">← Database Model</a></p>
<p><strong>Related:</strong> business requirements — <a href="../business/10-payouts.html">Payouts</a>.</p>
<h3 id="nurse_payout_batches-core"><code>nurse_payout_batches</code> [CORE] <a class="anchor" href="#nurse_payout_batches-core" aria-hidden="true">#</a></h3>
<p><strong>Role:</strong> Weekly aggregation of amounts owed for completed, payout-eligible, unpaid bookings/sessions. <strong>Why batched:</strong> matches the operational rhythm and the PAYA settlement cycle; an admin (or scheduled job) initiates it. <strong>Holiday-aware:</strong> <code>period_end</code>/processing dates shift off bank-closed days using <code>iranian_holidays</code> (a weekly payout landing on a multi-day Nowruz closure would otherwise fail). Fields unchanged: period, <code>total_amount</code>, <code>payout_count</code>, <code>status</code>, <code>initiated_by_admin_id</code>, <code>processed_at</code>, <code>failure_notes</code>, timestamps. CHECK: <code>total_amount = Σ payouts</code>. <strong>Relations:</strong> 1:N → <code>nurse_payouts</code>.</p>
<h3 id="nurse_payouts-core"><code>nurse_payouts</code> [CORE] <a class="anchor" href="#nurse_payouts-core" aria-hidden="true">#</a></h3>
<p><strong>Role:</strong> One row per nurse per batch — the exact amount transferred, the IBAN snapshot, and the bank transfer reference. <strong>Why these additions:</strong> a batch must be able to <strong>net prior clawbacks</strong> so it doesn't overpay a nurse who owes money back.</p>
<div class="table-wrap"><table><thead><tr><th>Field</th><th>Type</th><th>Notes</th></tr></thead><tbody>
<tr><td>baseline</td><td></td><td><code>id</code>, <code>batch_id</code>, <code>nurse_id</code>, <code>bank_account_id</code>, <code>iban_snapshot</code> (enc), <code>amount</code>, <code>booking_count</code>, <code>status</code>, <code>transfer_reference</code>, <code>paid_at</code>, <code>failure_reason</code>, <code>created_at</code></td></tr>
<tr><td><code>gross_earnings_irr</code></td><td>BIGINT</td><td><strong>NEW</strong> — sum of eligible session/booking payouts</td></tr>
<tr><td><code>clawback_applied_irr</code></td><td>BIGINT</td><td><strong>NEW</strong> — clawbacks netted this batch</td></tr>
<tr><td><code>net_amount_irr</code></td><td>BIGINT</td><td><strong>NEW</strong><code>gross_earnings clawback</code>; <code>amount</code> = actually transferred net</td></tr>
</tbody></table></div>
<p><strong>Relations:</strong> N:1 → <code>nurse_payout_batches</code>, <code>nurse_profiles</code>, <code>nurse_bank_accounts</code>; 1:N → <code>nurse_payout_booking_links</code>; referenced by <code>nurse_clawbacks</code>.</p>
<h3 id="nurse_payout_booking_links-core"><code>nurse_payout_booking_links</code> [CORE] <a class="anchor" href="#nurse_payout_booking_links-core" aria-hidden="true">#</a></h3>
<p><strong>Role:</strong> Join from a payout to the specific bookings it covers, with <code>booking_id</code> <strong>UNIQUE</strong> to guarantee a booking is paid in exactly one batch. <strong>Why:</strong> per-booking reconciliation and the structural anti-double-pay guard (the previous model's strongest correctness feature — kept). Fields unchanged. <strong>Relations:</strong> N:1 → <code>nurse_payouts</code>; 1:1 → <code>bookings</code>.</p>
<a class="back-to-top" href="#">↑ Back to top</a>
</div></main>
</div>
<script>
(function(){var k='balinyaar-docs-theme';var s=localStorage.getItem(k);
if(s)document.documentElement.setAttribute('data-theme',s);
else if(matchMedia('(prefers-color-scheme: dark)').matches)document.documentElement.setAttribute('data-theme','dark');})();
function __t(){var d=document.documentElement;var n=d.getAttribute('data-theme')==='dark'?'light':'dark';
d.setAttribute('data-theme',n);localStorage.setItem('balinyaar-docs-theme',n);}
</script>
</body>
</html>