PageSourceSearch

https://www.zapinventory.com/purchase-order-software/

html zapinventory.com collected 2026-10-08 10:28:06 UTC 82,111 bytes, 65 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Purchase Order Software with Inventory Sync | ZapInventory</title><meta name="description" content="Create POs from reorder points, receive inventory, match supplier invoices, and sync approved purchases with Xero or QuickBooks in ZapInventory."><meta name="robots" content="index, follow"><link rel="canonical" href="https://www.zapinventory.com/purchase-order-software/"><meta property="og:type" content="website"><meta property="og:url" content="https://www.zapinventory.com/purchase-order-software/"><meta property="og:title" content="Purchase Order Software with Inventory Sync | ZapInventory"><meta property="og:description" content="Create POs from reorder points, receive inventory, match supplier invoices, and sync approved purchases with Xero or QuickBooks in ZapInventory."><meta property="og:image" content="https://www.zapinventory.com/images/og-default.png"><meta property="og:site_name" content="ZapInventory"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Purchase Order Software with Inventory Sync | ZapInventory"><meta name="twitter:description" content="Create POs from reorder points, receive inventory, match supplier invoices, and sync approved purchases with Xero or QuickBooks in ZapInventory."><meta name="twitter:image" content="https://www.zapinventory.com/images/og-default.png"><link rel="icon" href="/favicon.ico" sizes="any"><link rel="icon" type="image/svg+xml" href="/images/favicon/favicon.svg"><link rel="icon" type="image/png" sizes="32x32" href="/images/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="192x192" href="/images/favicon/favicon-192x192.png"><link rel="apple-touch-icon" sizes="180x180" href="/images/favicon/apple-touch-icon.png"><link rel="manifest" href="/site.webmanifest"><meta name="theme-color" content="#5e2ced">
1<script>(function(){const GA_ID = "G-06TKVD0WL7";
2
3        // Consent + config queue up immediately (these only push to dataLayer, near-zero cost),
4        // but the gtag.js library itself is lazy-loaded on first interaction or after the page
5        // settles. gtag.js is ~67 KiB of parse/execute that otherwise blocks the main thread
6        // during load (mobile TBT). Deferring it off the critical window keeps pageview capture
7        // (the queued commands flush the moment the library loads) while cutting TBT. Mirrors the
8        // Cloudflare beacon lazy pattern below.
9        window.dataLayer = window.dataLayer || [];
10        function gtag(){dataLayer.push(arguments);}
11        window.gtag = gtag;
12        gtag('js', new Date());
13        gtag('consent', 'default', {
14          analytics_storage: 'denied',
15          ad_storage: 'denied',
16          ad_user_data: 'denied',
17          ad_personalization: 'denied'
18        });
19        try {
20          if (localStorage.getItem('zapinventory_consent') === 'accepted') {
21            gtag('consent', 'update', { analytics_storage: 'granted' });
22          }
23        } catch (e) {}
24        gtag('config', GA_ID);
25
26        (function () {
27          var loaded = false;
28          function loadGtag() {
29            if (loaded) return;
30            loaded = true;
31            var s = document.createElement('script');
32            s.async = true;
33            s.src = 'https://www.googletagmanager.com/gtag/js?id=' + GA_ID;
34            document.head.appendChild(s);
35          }
36          ['mousedown', 'touchstart', 'keydown', 'scroll'].forEach(function (e) {
37            window.addEventListener(e, loadGtag, { once: true, passive: true });
38          });
39          function schedule() {
40            if ('requestIdleCallback' in window) {
41              requestIdleCallback(loadGtag, { timeout: 3000 });
42            } else {
43              setTimeout(loadGtag, 2000);
44            }
45          }
46          if (document.readyState === 'complete') {
47            schedule();
48          } else {
49            window.addEventListener('load', schedule);
50          }
51        })();
52      })();</script>
52<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","@id":"https://www.zapinventory.com/#organization","name":"ZapInventory","url":"https://www.zapinventory.com/","logo":{"@type":"ImageObject","url":"https://www.zapinventory.com/images/favicon/icon-512.png"},"description":"Multi-channel inventory and order management software for SMB retailers and wholesalers: real-time stock sync across Shopify, Amazon, WooCommerce, eBay and Flipkart, with Xero and QuickBooks accounting integration, purchase orders, and B2B order management.","parentOrganization":{"@id":"https://www.avansaber.com/#organization"},"sameAs":["https://ffinventory.com/"],"contactPoint":{"@type":"ContactPoint","contactType":"customer support","url":"https://ffinventory.com/contact/"}}</script>
52<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","@id":"https://www.zapinventory.com/#website","url":"https://www.zapinventory.com/","name":"ZapInventory","publisher":{"@id":"https://www.zapinventory.com/#organization"}}</script>
52<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.zapinventory.com/"},{"@type":"ListItem","position":2,"name":"Purchase order software","item":"https://www.zapinventory.com/purchase-order-software/"}]}</script>
52<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","name":"ZapInventory Purchase Order Software","applicationCategory":"BusinessApplication","operatingSystem":"Web","description":"Create purchase orders from reorder points, receive inventory, match supplier invoices, and sync approved purchases with Xero or QuickBooks.","featureList":["Create and send POs","Track every order","Receive inventory against the PO","Three-way match","Manage suppliers","Buy in packs"],"offers":{"@type":"Offer","price":"29.00","priceCurrency":"USD","priceValidUntil":"2027-12-31","url":"https://account.zapinventory.com/register"}}</script>
52<script>
53      (function () {
54        try {
55          var saved = localStorage.getItem('theme');
56          var prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
57          if (saved === 'dark' || (!saved && prefersDark)) {
58            document.documentElement.classList.add('dark');
59          }
60        } catch (e) {}
61      })();
62    </script>
62<style>/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
63@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--spacing:.25rem;--container-xs:20rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--blur-xl:24px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--default-mono-font-family:"JetBrains Mono", ui-monospace, "Fira Code", "SF Mono", Menlo, monospace;--color-accent-strong:var(--accent-strong);--color-accent-contrast:var(--accent-contrast)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}
63:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-x-0{inset-inline:0}.top-0{top:0}.top-6{top:calc(var(--spacing) * 6)}.top-10{top:calc(var(--spacing) * 10)}.top-full{top:100%}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.left-1\/2{left:50%}.z-50{z-index:50}.z-\[60\]{z-index:60}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>
63li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75
vendor: 2,617 bytes, line 63
63}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.
63mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-9{margin-top:calc(var(--spacing) * 9)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-7{margin-bottom:calc(var(--spacing) * 7)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-16{height:calc(var(--spacing) * 16)}.h-\[400px\]{height:400px}.h-\[600px\]{height:600px}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-64{width:calc(var(--spacing) * 64)}.w-\[700px\]{width:700px}.w-\[900px\]{width:900px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}.gap-10{gap:calc(var(--spacing) * 10)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-14>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 14) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 14) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--border)}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-border{border-color:var(--border)}.bg-accent-strong,.bg-accent-strong\/10{background-color:var(--accent-strong)}@supports (color:color-mix(in lab, red, red)){.bg-accent-strong\/10{background-color:color-mix(in oklab, var(--accent-strong) 10%, transparent)}}.bg-bg{background-color:var(--bg)}.bg-bg-secondary,.bg-bg-secondary\/95{background-color:var(--bg-secondary)}@supports (color:color-mix(in lab, red, red)){.bg-bg-secondary\/95{background-color:color-mix(in oklab, var(--bg-secondary) 95%, transparent)}}.bg-nav-bg{background-color:var(--nav-bg)}.bg-surface{background-color:var(--surface)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-10{padding:calc(var(--spacing) * 10)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-14{padding-block:calc(var(--spacing) * 14)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-40{padding-block:calc(var(--spacing) * 40)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-32{padding-top:calc(var(--spacing) * 32)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-14{padding-bottom:calc(var(--spacing) * 14)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:JetBrains Mono,ui-monospace,Fira Code,SF Mono,Menlo,monospace}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);
63line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-\[1\.08\]{--tw-leading:1.08;line-height:1.08}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-\[color\:var\(--accent-contrast\)\]{color:var(--accent-contrast)}.text-accent{color:var(--accent)}.text-text{color:var(--text)}.text-text-dim{color:var(--text-dim)}.text-text-heading{color:var(--text-heading)}.text-text-muted{color:var(--text-muted)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}
63.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.group-open\:rotate-180:is(:where(.group):is([open],:popover-open,:open) *){rotate:180deg}.group-focus-within\:visible:is(:where(.group):focus-within *){visibility:visible}.group-focus-within\:rotate-180:is(:where(.group):focus-within *){rotate:180deg}.group-focus-within\:text-text:is(:where(.group):focus-within *){color:var(--text)}.group-focus-within\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\:visible:is(:where(.group):hover *){visibility:visible}.group-hover\:rotate-180:is(:where(.group):hover *){rotate:180deg}.group-hover\:text-accent:is(:where(.group):hover *){color:var(--accent)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.peer-checked\:block:is(:where(.peer):checked~*){display:block}.peer-checked\:hidden:is(:where(.peer):checked~*){display:none}.marker\:content-\[\'\'\] ::marker,.marker\:content-\[\'\'\]::marker{--tw-content:"";content:var(--tw-content)}.marker\:content-\[\'\'\] ::-webkit-details-marker{--tw-content:"";content:var(--tw-content)}.marker\:content-\[\'\'\]::-webkit-details-marker{--tw-content:"";content:var(--tw-content)}@media (hover:hover){.hover\:border-border-hover:hover{border-color:var(--border-hover)}.hover\:bg-surface-hover:hover{background-color:var(--surface-hover)}.hover\:text-text:hover{color:var(--text)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}@media (width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:p-14{padding:calc(var(--spacing) * 14)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:py-28{padding-block:calc(var(--spacing) * 28)}.sm\:pt-36{padding-top:calc(var(--spacing) * 36)}.sm\:pt-40{padding-top:calc(var(--spacing) * 40)}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (width>=48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.lg\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}}}@font-face{font-family:Inter;src:url(/fonts/inter-variable.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-variable.woff2)format("woff2");font-weight:100 800;font-style:normal;font-display:swap}:root{--bg:#fff;--bg-secondary:#f9fafb;--surface:#f3f4f6;--surface-hover:#0000000a;--border:#e5e7eb;--border-hover:#d1d5db;--text:#1f2937;--text-muted:#4b5563;--text-dim:#6b7280;--text-heading:#0f172a;--nav-bg:#ffffffd9;--accent:#5e2ced;--accent-strong:#5e2ced;--accent-contrast:#fff;--accent-glow:#5e2ced1a}html.dark{--bg:#0a0a0a;--bg-secondary:#111;--surface:#1a1a1a;--surface-hover:#ffffff0a;--border:#262626;--border-hover:#3a3a3a;--text:#e5e7eb;--text-muted:#a3a3a3;--text-dim:#9ca3af;--text-heading:#fff;--nav-bg:#0a0a0ad9;--accent:#a78bfa;--accent-strong:#5e2ced;--accent-contrast:#fff;--accent-glow:#5e2ced26}html{scroll-behavior:smooth;background:var(--bg);color:var(--text)}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overflow-x:hidden}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.fade-in{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(20px)}.fade-in.visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.fade-in{opacity:1;transition:none;transform:none}html{scroll-behavior:auto}}@keyframes dot-pulse{0%,to{opacity:1;box-shadow:0 0 0 0 var(--accent-glow)}50%{opacity:.85;box-shadow:0 0 0 8px #0000}}.dot-pulse{animation:2s ease-in-out infinite dot-pulse}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.prose-tokens{--tw-prose-body:var(--text-muted);--tw-prose-headings:var(--text-heading);--tw-prose-lead:var(--text-muted);--tw-prose-links:var(--accent);--tw-prose-bold:var(--text-heading);--tw-prose-counters:var(--text-dim);--tw-prose-bullets:var(--border-hover);--tw-prose-hr:var(--border);--tw-prose-quotes:var(--text);--tw-prose-quote-borders:var(--accent);--tw-prose-captions:var(--text-dim);--tw-prose-code:var(--accent);--tw-prose-pre-code:var(--text);--tw-prose-pre-bg:var(--surface);--tw-prose-th-borders:var(--border);--tw-prose-td-borders:var(--border)}.prose [id],[id].scroll-anchor{scroll-margin-top:6rem}:root{--wordmark-gradient:linear-gradient(90deg, #5e2ced, #7444fd)}.wordmark-gradient{background:var(--wordmark-gradient);color:#0000;-webkit-background-clip:text;background-clip:text}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}::selection{background:var(--accent-glow);color:var(--accent)}.skip-to-content{z-index:100;background:var(--accent-strong,var(--color-accent-strong,#1a1a1a));color:var(--accent-contrast,var(--color-accent-contrast,#fff));border-radius:0 0 .5rem;padding:.6rem 1rem;font-size:.9rem;font-weight:600;position:absolute;top:0;left:-9999px}.skip-to-content:focus{left:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}nav[data-astro-cid-wpvy4v7s]:has(#mobile-menu-toggle:not(:checked)) #mobile-menu-panel[data-astro-cid-wpvy4v7s]{display:none}nav[data-astro-cid-wpvy4v7s]:has(#mobile-menu-toggle:checked) #mobile-menu-panel[data-astro-cid-wpvy4v7s]{display:block}
64</style></head><body class="bg-bg text-text antialiased">
64<a href="#main-content" class="skip-to-content">Skip to main content</a><nav class="fixed top-0 left-0 right-0 z-50 border-b border-border bg-nav-bg backdrop-blur-xl" data-astro-cid-wpvy4v7s><div class="border-b border-border bg-accent-strong/10" data-astro-cid-wpvy4v7s><p class="mx-auto max-w-7xl px-4 py-1.5 text-center text-xs text-text" data-astro-cid-wpvy4v7s>Looking for ZapInventory? It's now ffinventory.<a href="https://ffinventory.com/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=feature-purchase-order-software" target="_blank" rel="noopener" class="font-semibold text-accent hover:underline" data-astro-cid-wpvy4v7s>Visit ffinventory.com &rarr;</a></p></div><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8" data-astro-cid-wpvy4v7s><div class="flex h-16 items-center justify-between" data-astro-cid-wpvy4v7s><a href="/" class="flex items-center gap-2.5 group shrink-0" aria-label="ZapInventory home" data-astro-cid-wpvy4v7s><img src="/images/favicon/favicon.svg" alt="" width="32" height="32" class="h-8 w-8" data-astro-cid-wpvy4v7s><span class="text-lg font-bold tracking-tight text-text-heading" data-astro-cid-wpvy4v7s>Zap<span class="wordmark-gradient" data-astro-cid-wpvy4v7s>Inventory</span></span></a><div class="hidden lg:flex items-center gap-7" data-astro-cid-wpvy4v7s><div class="relative group" data-astro-cid-wpvy4v7s><button type="button" class="flex items-center gap-1 text-sm text-text-muted transition-colors hover:text-text group-focus-within:text-text" aria-haspopup="true" data-astro-cid-wpvy4v7s>Features<svg class="h-3.5 w-3.5 transition-transform group-hover:rotate-180 group-focus-within:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" data-astro-cid-wpvy4v7s><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" data-astro-cid-wpvy4v7s></path></svg></button><div class="invisible absolute left-1/2 top-full -translate-x-1/2 pt-3 opacity-0 transition-all duration-150 group-hover:visible group-hover:opacity-100 group-focus-within:visible group-focus-within:opacity-100" data-astro-cid-wpvy4v7s><div class="w-64 rounded-xl border border-border bg-bg-secondary p-2 shadow-xl" data-astro-cid-wpvy4v7s><a href="/inventory-management-software/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Inventory management</a><a href="/order-management-software/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Order management</a><a href="/warehouse-management-software/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Warehouse management</a><a href="/purchase-order-software/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Purchase orders</a><a href="/b2b-order-management-software/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>B2B / wholesale</a><a href="/batch-tracking/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Batch tracking</a><a href="/reports-analytics/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Reports &amp; analytics</a></div></div></div><div class="relative group" data-astro-cid-wpvy4v7s><button type="button" class="flex items-center gap-1 text-sm text-text-muted transition-colors hover:text-text group-focus-within:text-text" aria-haspopup="true" data-astro-cid-wpvy4v7s>Integrations<svg class="h-3.5 w-3.5 transition-transform group-hover:rotate-180 group-focus-within:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" data-astro-cid-wpvy4v7s><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" data-astro-cid-wpvy4v7s></path></svg></button><div class="invisible absolute left-1/2 top-full -translate-x-1/2 pt-3 opacity-0 transition-all duration-150 group-hover:visible group-hover:opacity-100 group-focus-within:visible group-focus-within:opacity-100" data-astro-cid-wpvy4v7s>
64<div class="w-64 rounded-xl border border-border bg-bg-secondary p-2 shadow-xl" data-astro-cid-wpvy4v7s><a href="/integrations/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>All integrations</a><a href="/integrations/multichannel-sync/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Multichannel sync</a><a href="/xero-inventory-management/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Xero inventory</a><a href="/QuickBooks-inventory-management/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>QuickBooks inventory</a><a href="/ecommerce-integrations/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Ecommerce</a><a href="/payment-integrations/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Payments</a><a href="/shipping-integrations/" class="block rounded-lg px-3 py-2 text-sm font-medium text-text transition-colors hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Shipping</a></div></div></div><a href="https://ffinventory.com/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=pricing" target="_blank" rel="noopener" class="text-sm text-text-muted transition-colors hover:text-text" data-astro-cid-wpvy4v7s>Pricing</a><a href="https://ffinventory.com/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=roadmap" target="_blank" rel="noopener" class="text-sm text-text-muted transition-colors hover:text-text" data-astro-cid-wpvy4v7s>Roadmap</a><button id="theme-toggle" type="button" aria-label="Toggle light/dark mode" class="p-1.5 rounded-md text-text-dim hover:text-text transition-colors" data-astro-cid-wpvy4v7s><svg id="icon-sun" class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-wpvy4v7s><circle cx="12" cy="12" r="4" data-astro-cid-wpvy4v7s></circle><path stroke-linecap="round" d="M12 2v2M12 20v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M2 12h2M20 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42" data-astro-cid-wpvy4v7s></path></svg><svg id="icon-moon" class="w-4 h-4 hidden" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-wpvy4v7s><path stroke-linecap="round" stroke-linejoin="round" d="M21 12.79A9 9 0 1 1 11.21 3a7 7 0 0 0 9.79 9.79z" data-astro-cid-wpvy4v7s></path></svg></button><a href="https://app.zapinventory.com/user/login" class="text-sm font-medium text-text-muted transition-colors hover:text-text" data-astro-cid-wpvy4v7s>Login</a><a href="https://account.zapinventory.com/register" class="rounded-lg bg-accent-strong px-4 py-2 text-sm font-semibold text-[color:var(--accent-contrast)] transition-opacity hover:opacity-90" data-astro-cid-wpvy4v7s>Get started</a></div><label for="mobile-menu-toggle" class="lg:hidden cursor-pointer p-2 text-text-muted hover:text-text" data-astro-cid-wpvy4v7s><input type="checkbox" id="mobile-menu-toggle" class="peer hidden" data-astro-cid-wpvy4v7s><svg class="h-6 w-6 peer-checked:hidden block" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-wpvy4v7s><path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16" data-astro-cid-wpvy4v7s></path></svg><svg class="h-6 w-6 peer-checked:block hidden" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-wpvy4v7s><path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" data-astro-cid-wpvy4v7s></path></svg></label></div></div><div id="mobile-menu-panel" class="lg:hidden border-t border-border bg-bg-secondary" data-astro-cid-wpvy4v7s><div class="px-4 py-4 space-y-1" data-astro-cid-wpvy4v7s><a href="/integrations/" class="block rounded-lg px-3 py-2.5 text-sm text-text-muted hover:text-text hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Integrations</a><a href="/inventory-management-software/" class="block rounded-lg px-3 py-2.5 text-sm text-text-muted hover:text-text hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Features</a><a href="https://ffinventory.com/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=pricing" target="_blank" rel="noopener" class="block rounded-lg px-3 py-2.5 text-sm text-text-muted hover:text-text hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Pricing</a><a href="https://ffinventory.com/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=roadmap" target="_blank" rel="noopener" class="block rounded-lg px-3 py-2.5 text-sm text-text-muted hover:text-text hover:bg-surface-hover" data-astro-cid-wpvy4v7s>Roadmap</a><div class="flex items-center gap-2 pt-2" data-astro-cid-wpvy4v7s><a href="https://account.zapinventory.com/register" class="flex-1 rounded-lg bg-accent-strong px-4 py-2.5 text-center text-sm font-semibold text-[color:var(--accent-contrast)]" data-astro-cid-wpvy4v7s>Get started</a><a href="https://app.zapinventory.com/user/login" class="flex-1 rounded-lg border border-border px-4 py-2.5 text-center text-sm font-medium text-text-muted" data-astro-cid-wpvy4v7s>Login</a><button id="theme-toggle-mobile" type="button" aria-label="Toggle light/dark mode" class="rounded-lg border border-border p-2.5 text-text-muted hover:text-text" data-astro-cid-wpvy4v7s><svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" data-astro-cid-wpvy4v7s><circle cx="12" cy="12" r="4" data-astro-cid-wpvy4v7s></circle><path stroke-linecap="round" d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41
64M17.66 6.34l1.41-1.41" data-astro-cid-wpvy4v7s></path></svg></button></div></div></div></nav>
64<script type="module">function e(){let e=document.documentElement.classList.contains(`dark`),t=document.getElementById(`icon-sun`),n=document.getElementById(`icon-moon`);t&&t.classList.toggle(`hidden`,!e),n&&n.classList.toggle(`hidden`,e)}function t(){let t=document.documentElement.classList.toggle(`dark`);localStorage.setItem(`theme`,t?`dark`:`light`),e()}e(),document.getElementById(`theme-toggle`)?.addEventListener(`click`,t),document.getElementById(`theme-toggle-mobile`)?.addEventListener(`click`,t);</script>
64<main id="main-content"><section class="relative px-4 pt-32 pb-14 sm:pt-36"><div class="pointer-events-none absolute top-10 left-1/2 -translate-x-1/2 h-[400px] w-[700px] rounded-full blur-3xl" style="background: var(--accent-glow);"></div><div class="relative mx-auto max-w-3xl text-center"><div class="mb-5 inline-flex items-center gap-2 rounded-full border border-border bg-surface px-3.5 py-1.5 font-mono text-xs text-accent"><span class="dot-pulse inline-block h-1.5 w-1.5 shrink-0 rounded-full" style="background: var(--accent);"></span>Purchase orders</div><h1 class="text-3xl sm:text-4xl lg:text-5xl font-extrabold tracking-tighter text-text-heading">Purchase order software that keeps stock and books in sync</h1><p class="mx-auto mt-4 max-w-2xl text-lg text-text-muted leading-relaxed">Raise purchase orders from reorder points, receive stock against them, match invoices, and push it all to your accounting system. No spreadsheets, no overpaying.</p></div></section><section class="px-4 pb-4"><div class="mx-auto max-w-3xl"><h2 class="text-2xl sm:text-3xl font-bold tracking-tight text-text-heading">How purchase orders sync inventory and accounting</h2><p class="mt-4 text-base leading-relaxed text-text-muted">A purchase order records what you expect from a supplier. When goods arrive, ZapInventory updates available stock from the quantity received, keeps any remainder open, and connects the receipt to the supplier bill. The accounting entry then reflects what was approved and received, rather than a disconnected spreadsheet total.</p><div class="mt-7 grid gap-4 sm:grid-cols-3"><div class="rounded-xl border border-border bg-surface p-5"><h3 class="font-semibold text-text-heading">Inventory</h3><p class="mt-2 text-sm leading-relaxed text-text-muted">Received quantities become available stock. Unreceived quantities stay open as incoming inventory.</p></div><div class="rounded-xl border border-border bg-surface p-5"><h3 class="font-semibold text-text-heading">Accounting</h3><p class="mt-2 text-sm leading-relaxed text-text-muted">Approved purchases and supplier bills sync with Xero or QuickBooks so payables follow the purchasing record.</p></div><div class="rounded-xl border border-border bg-surface p-5"><h3 class="font-semibold text-text-heading">Reconciliation</h3><p class="mt-2 text-sm leading-relaxed text-text-muted">The PO, goods receipt, and supplier invoice stay linked for a three-way match before payment.</p></div></div></div></section><section class="px-4 py-12"><div class="mx-auto max-w-6xl"><div class="fade-in"><div class="grid gap-6 sm:grid-cols-2 lg:grid-cols-3"><div class="rounded-xl border border-border bg-bg-secondary p-6 transition-colors hover:border-border-hover"><h3 class="font-semibold text-text-heading">Create and send POs</h3><p class="mt-2 text-sm text-text-muted leading-relaxed">Build purchase orders from low-stock alerts or reorder points, then email them to suppliers as branded PDFs in one click.</p></div><div class="rounded-xl border border-border bg-bg-secondary p-6 transition-colors hover:border-border-hover"><h3 class="font-semibold text-text-heading">Track every order</h3><p class="mt-2 text-sm text-text-muted leading-relaxed">See which POs are draft, sent, partially received, or closed, with expected delivery dates on one board.</p></div><div class="rounded-xl border border-border bg-bg-secondary p-6 transition-colors hover:border-border-hover"><h3 class="font-semibold text-text-heading">Receive inventory against the PO</h3><p class="mt-2 text-sm text-text-muted leading-relaxed">Receive full or partial shipments, scan barcodes on intake, and update stock from the quantities that actually arrived.</p></div><div class="rounded-xl border border-border bg-bg-secondary p-6 transition-colors hover:border-border-hover"><h3 class="font-semibold text-text-heading">Three-way match</h3><p class="mt-2 text-sm text-text-muted leading-relaxed">Match the purchase order, the goods receipt, and the supplier invoice before you approve payment, so you never overpay.</p></div><div class="rounded-xl border border-border bg-bg-secondary p-6 transition-colors hover:border-border-hover"><h3 class="font-semibold text-text-heading">Manage suppliers</h3><p class="mt-2 text-sm text-text-muted leading-relaxed">Keep supplier catalogues, lead times, pricing, and contact details in one place and reorder in a few clicks.</p></div><div class="rounded-xl border border-border bg-bg-secondary p-6 transition-colors hover:border-border-hover"><h3 class="font-semibold text-text-heading">Buy in packs</h3><p class="mt-2 text-sm text-text-muted leading-relaxed">Order in supplier pack sizes and let ZapInventory convert pack quantities to sellable units automatically.</p></div></div></div></div></section><div class="bg-bg-secondary"><section class="px-4 py-16"><div class="mx-auto max-w-3xl"><h2 class="text-2xl sm:text-3xl font-bold tracking-tight text-text-heading">From reorder point to paid invoice</h2><ol class="mt-8 space-y-6"><li class="flex gap-4"><span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-accent-strong/10 text-sm font-bold text-accent">1</span><div><h3 class="font-semibold text-text-heading">Raise the purchase order</h3><p class="mt-1 text-sm text-text-muted leading-relaxed">Create a PO from a reorder point or manually, add line items from the supplier catalogue, and set quantities and expected dates.</p></div></li><li class="flex gap-4"><span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-accent-strong/10 text-sm font-bold text-accent">2</span><div><h3 class="font-semibold text-text-heading">Approve and send</h3><p class="mt-1 text-sm text-text-muted leading-relaxed">Route the PO for approval if your workflow needs it, then send it to the supplier as a branded PDF directly from ZapInventory.</p></div></li><li class="flex gap-4"><span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-accent-strong/10 text-sm font-bold text-accent">3</span><div><h3 class="font-semibold text-text-heading">Receive the goods</h3><p class="mt-1 text-sm text-text-muted leading-relaxed">When stock arrives, receive against the PO. Scan barcodes to confirm quantities and let inventory update in real time.</p></div></li><li class="flex gap-4"><span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-accent-strong/10 text-sm font-bold text-accent">4</span><div><h3 class="font-semibold text-text-heading">Three-way match and pay</h3><p class="mt-1 text-sm text-text-muted leading-relaxed">
64Match the PO, the goods receipt, and the supplier invoice. Approve payment only when all three agree.</p></div></li></ol></div></section>
64<script type="application/ld+json">{"@context":"https://schema.org","@type":"HowTo","name":"How purchasing works in ZapInventory","step":[{"@type":"HowToStep","position":1,"name":"Raise the purchase order","text":"Create a PO from a reorder point or manually, add line items from the supplier catalogue, and set quantities and expected dates."},{"@type":"HowToStep","position":2,"name":"Approve and send","text":"Route the PO for approval if your workflow needs it, then send it to the supplier as a branded PDF directly from ZapInventory."},{"@type":"HowToStep","position":3,"name":"Receive the goods","text":"When stock arrives, receive against the PO. Scan barcodes to confirm quantities and let inventory update in real time."},{"@type":"HowToStep","position":4,"name":"Three-way match and pay","text":"Match the PO, the goods receipt, and the supplier invoice. Approve payment only when all three agree."}]}</script>
64</div><section class="px-4 py-16"><div class="mx-auto max-w-3xl"><h2 class="text-2xl sm:text-3xl font-bold tracking-tight text-text-heading">Purchase order questions</h2><div class="mt-8 divide-y divide-border border-t border-border"><details class="group py-4"><summary class="flex cursor-pointer items-center justify-between gap-4 text-left text-base font-medium text-text-heading marker:content-['']">Can ZapInventory raise purchase orders automatically?<svg class="h-5 w-5 shrink-0 text-text-dim transition-transform group-open:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></summary><p class="mt-3 text-sm text-text-muted leading-relaxed">Yes. Set reorder points per product and ZapInventory flags items that fall below them, then drafts purchase orders to the right suppliers for your review.</p></details><details class="group py-4"><summary class="flex cursor-pointer items-center justify-between gap-4 text-left text-base font-medium text-text-heading marker:content-['']">Does it support partial deliveries?<svg class="h-5 w-5 shrink-0 text-text-dim transition-transform group-open:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></summary><p class="mt-3 text-sm text-text-muted leading-relaxed">Yes. You can receive part of a purchase order, and ZapInventory keeps the remainder open with its expected date until the rest arrives.</p></details><details class="group py-4"><summary class="flex cursor-pointer items-center justify-between gap-4 text-left text-base font-medium text-text-heading marker:content-['']">What is a three-way match and does ZapInventory do it?<svg class="h-5 w-5 shrink-0 text-text-dim transition-transform group-open:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></summary><p class="mt-3 text-sm text-text-muted leading-relaxed">A three-way match compares the purchase order, the goods receipt, and the supplier invoice before payment is approved. ZapInventory lines all three up so you only pay for what you ordered and received.</p></details><details class="group py-4"><summary class="flex cursor-pointer items-center justify-between gap-4 text-left text-base font-medium text-text-heading marker:content-['']">Can I order in supplier pack sizes?<svg class="h-5 w-5 shrink-0 text-text-dim transition-transform group-open:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></summary><p class="mt-3 text-sm text-text-muted leading-relaxed">Yes. Define pack sizes per supplier product and ZapInventory converts pack quantities to your sellable units when stock is received.</p></details><details class="group py-4"><summary class="flex cursor-pointer items-center justify-between gap-4 text-left text-base font-medium text-text-heading marker:content-['']">Does purchasing connect to my accounting system?<svg class="h-5 w-5 shrink-0 text-text-dim transition-transform group-open:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></summary><p class="mt-3 text-sm text-text-muted leading-relaxed">Yes. Approved purchases and supplier bills sync to Xero or QuickBooks so your payables match your received stock.</p></details><details class="group py-4"><summary class="flex cursor-pointer items-center justify-between gap-4 text-left text-base font-medium text-text-heading marker:content-['']">How do purchase orders sync inventory?<svg class="h-5 w-5 shrink-0 text-text-dim transition-transform group-open:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></summary><p class="mt-3 text-sm text-text-muted leading-relaxed">The purchase order records what is expected. Receiving records what arrived and increases available stock by the received quantity. Any remainder stays open, so incoming and available inventory remain separate.</p></details>
64<details class="group py-4"><summary class="flex cursor-pointer items-center justify-between gap-4 text-left text-base font-medium text-text-heading marker:content-['']">When does a purchase order sync with Xero or QuickBooks?<svg class="h-5 w-5 shrink-0 text-text-dim transition-transform group-open:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></summary><p class="mt-3 text-sm text-text-muted leading-relaxed">The accounting entry follows the approved purchase and supplier bill. ZapInventory keeps the purchase order, receipt, and bill connected so the payable can be checked against the inventory received.</p></details></div></div></section>
64<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Can ZapInventory raise purchase orders automatically?","acceptedAnswer":{"@type":"Answer","text":"Yes. Set reorder points per product and ZapInventory flags items that fall below them, then drafts purchase orders to the right suppliers for your review."}},{"@type":"Question","name":"Does it support partial deliveries?","acceptedAnswer":{"@type":"Answer","text":"Yes. You can receive part of a purchase order, and ZapInventory keeps the remainder open with its expected date until the rest arrives."}},{"@type":"Question","name":"What is a three-way match and does ZapInventory do it?","acceptedAnswer":{"@type":"Answer","text":"A three-way match compares the purchase order, the goods receipt, and the supplier invoice before payment is approved. ZapInventory lines all three up so you only pay for what you ordered and received."}},{"@type":"Question","name":"Can I order in supplier pack sizes?","acceptedA
64nswer":{"@type":"Answer","text":"Yes. Define pack sizes per supplier product and ZapInventory converts pack quantities to your sellable units when stock is received."}},{"@type":"Question","name":"Does purchasing connect to my accounting system?","acceptedAnswer":{"@type":"Answer","text":"Yes. Approved purchases and supplier bills sync to Xero or QuickBooks so your payables match your received stock."}},{"@type":"Question","name":"How do purchase orders sync inventory?","acceptedAnswer":{"@type":"Answer","text":"The purchase order records what is expected. Receiving records what arrived and increases available stock by the received quantity. Any remainder stays open, so incoming and available inventory remain separate."}},{"@type":"Question","name":"When does a purchase order sync with Xero or QuickBooks?","acceptedAnswer":{"@type":"Answer","text":"The accounting entry follows the approved purchase and supplier bill. ZapInventory keeps the purchase order, receipt, and bill connected so the payable can be checked against the inventory received."}}]}</script>
64<section class="px-4 pb-8"><div class="mx-auto max-w-3xl text-sm text-text-dim">Looking for the approval and workflow side of purchasing? See<a href="/purchase-order-management-software/" class="text-accent hover:underline">purchase order management</a>, or connect purchasing to <a href="/xero-inventory-management/" class="text-accent hover:underline">Xero</a> and<a href="/QuickBooks-inventory-management/" class="text-accent hover:underline">QuickBooks</a>.</div></section><section class="px-4 py-20 sm:py-28"><div class="fade-in mx-auto max-w-4xl overflow-hidden rounded-2xl border border-border bg-bg-secondary p-10 text-center sm:p-14"><h2 class="text-2xl sm:text-3xl font-bold tracking-tight text-text-heading">Start syncing your inventory in minutes</h2><p class="mx-auto mt-3 max-w-xl text-base text-text-muted leading-relaxed">Try ZapInventory free for 14 days. No credit card required. Connect your channels, sync your stock, and see every order in one place. ZapInventory is now ffinventory.</p><div class="mt-8 flex flex-col items-center justify-center gap-3 sm:flex-row"><a href="https://account.zapinventory.com/register" class="inline-flex items-center gap-2 rounded-lg bg-accent-strong px-6 py-3 text-sm font-semibold text-[color:var(--accent-contrast)] transition-opacity hover:opacity-90">Start free trial</a><a href="https://ffinventory.com/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=feature-purchase-order-software" target="_blank" rel="noopener" class="inline-flex items-center gap-2 rounded-lg border border-border px-6 py-3 text-sm font-semibold text-text-muted transition-colors hover:border-border-hover hover:text-text">Visit ffinventory.com</a></div></div></section></main><footer class="border-t border-border bg-bg-secondary"><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 py-14"><div class="grid gap-10 md:grid-cols-2 lg:grid-cols-6"><div class="lg:col-span-2"><a href="/" class="flex items-center gap-2.5" aria-label="ZapInventory home"><img src="/images/favicon/favicon.svg" alt="" width="32" height="32" class="h-8 w-8"><span class="text-lg font-bold tracking-tight text-text-heading">Zap<span class="wordmark-gradient">Inventory</span></span></a><p class="mt-4 max-w-xs text-sm leading-relaxed text-text-muted">Multi-channel inventory and order management software that keeps stock, orders, and fulfillment in sync across every channel you sell on.</p><p class="mt-4 text-xs text-text-dim">ZapInventory is now <a href="https://ffinventory.com/" target="_blank" rel="noopener" class="text-accent hover:underline">FFInventory</a>, part of Invensync, Inc. (USA).</p><p class="mt-2 text-xs text-text-dim">A product of <a href="https://www.avansaber.com/" target="_blank" rel="noopener" class="text-accent hover:underline">AvanSaber</a>.</p></div><div><h3 class="text-xs font-semibold uppercase tracking-wider text-text-dim">Features</h3><ul class="mt-3 space-y-2"><li><a href="/inventory-management-software/" class="text-sm text-text-muted transition-colors hover:text-text">Inventory management</a></li><li><a href="/order-management-software/" class="text-sm text-text-muted transition-colors hover:text-text">Order management</a></li><li><a href="/warehouse-management-software/" class="text-sm text-text-muted transition-colors hover:text-text">Warehouse management</a></li><li><a href="/purchase-order-software/" class="text-sm text-text-muted transition-colors hover:text-text">Purchase orders</a></li><li><a href="/b2b-order-management-software/" class="text-sm text-text-muted transition-colors hover:text-text">B2B order management</a></li><li><a href="/batch-tracking/" class="text-sm text-text-muted transition-colors hover:text-text">Batch tracking</a></li></ul></div><div><h3 class="text-xs font-semibold uppercase tracking-wider text-text-dim">Integrations</h3><ul class="mt-3 space-y-2"><li><a href="/integrations/" class="text-sm text-text-muted transition-colors hover:text-text">All integrations</a></li><li><a href="/integrations/multichannel-sync/" class="text-sm text-text-muted transition-colors hover:text-text">Multichannel sync</a></li><li><a href="/xero-inventory-management/" class="text-sm text-text-muted transition-colors hover:text-text">Xero inventory</a></li><li><a href="/QuickBooks-inventory-management/" class="text-sm text-text-muted transition-colors hover:text-text">QuickBooks inventory</a></li><li><a href="/shipping-integrations/" class="text-sm text-text-muted transition-colors hover:text-text">Shipping</a></li></ul></div><div><h3 class="text-xs font-semibold uppercase tracking-wider text-text-dim">Company</h3><ul class="mt-3 space-y-2"><li><a href="https://ffinventory.com/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=pricing" target="_blank" rel="noopener" class="text-sm text-text-muted transition-colors hover:text-text">Pricing</a></li><li><a href="https://ffinventory.com/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=roadmap" target="_blank" rel="noopener" class="text-sm text-text-muted transition-colors hover:text-text">Roadmap</a></li><li><a href="https://www.inventorypath.com/blog/" target="_blank" rel="noopener" class="text-sm text-text-muted transition-colors hover:text-text">Blog</a></li><li><a href="https://ffinventory.com/contact/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=contact" target="_blank" rel="noopener" class="text-sm text-text-muted transition-colors hover:text-text">Contact</a></li></ul></div><div><h3 class="text-xs font-semibold uppercase tracking-wider text-text-dim">Legal</h3><ul class="mt-3 space-y-2"><li><a href="https://ffinventory.com/privacy-policy/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=privacy" target="_blank" rel="noopener" class="text-sm text-text-muted transition-colors hover:text-text">Privacy</a></li><li><a href="https://ffinventory.com/terms-and-conditions/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=terms" target="_blank" rel="noopener" class="text-sm text-text-muted transition-colors hover:text-text">Terms</a></li><li><a href="https://ffinventory.com/privacy-policy/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=privacy" target="_blank" rel="noopener" class="text-sm text-text-muted transition-colors hover:text-text">GDPR</a></li><li><a href="https://ffinventory.com/privacy-policy/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=privacy" target="_blank" rel="noopener" class="text-sm text-text-muted transition-colors hover:text-text">Data policy</a></li></ul></div></div><div class="mt-12 flex flex-col gap-2 border-t border-border pt-6 sm:flex-row sm:items-center sm:justify-between"><p class="text-xs text-text-dim">&copy; 2026 ZapInventory. All rights reserved.</p><p class="font-mono text-xs text-text-dim">Multi-channel inventory &middot; Orders &middot; Accounting sync</p></div></div></footer><div id="cookie-banner" class="fixed inset-x-0 bottom-0 z-[60] hidden border-t border-border bg-bg-secondary/95 backdrop-blur-xl"><div class="mx-auto flex max-w-7xl flex-col gap-4 px-4 py-4 sm:flex-row sm:items-center sm:justify-between sm:px-6 lg:px-8"><p class="text-sm text-text-muted">We use cookies to understand how the site is used and to improve it. See our<a href="https://ffinventory.com/privacy-policy/?utm_source=zapinventory&amp;utm_medium=referral&amp;utm_campaign=acquired-domain&amp;utm_content=privacy" target="_blank" rel="noopener" class="text-accent underline-offset-2 hover:underline">privacy policy</a>.</p><div class="flex shrink-0 items-center gap-2"><button id="cookie-decline" type="button" class="rounded-lg border border-border px-4 py-2 text-sm font-medium text-text-muted hover:text-text">Decline</button><button id="cookie-accept" type="button" class="rounded-lg bg-accent-strong px-4 py-2 text-sm font-semibold text-[color:var(--accent-contrast)] hover:opacity-90">Accept</button></div></div></div>
64<script type="module">(function(){let e=`zapinventory_consent`,t=document.getElementById(`cookie-banner`);if(!t)return;try{localStorage.getItem(e)||t.classList.remove(`hidden`)}catch{t.classList.remove(`hidden`)}function n(n){try{localStorage.setItem(e,n)}catch{}n===`accepted`&&typeof window.gtag==`function`&&window.gtag(`consent`,`update`,{analytics_storage:`granted`}),t.classList.add(`hidden`)}document.getElementById(`cookie-accept`)?.addEventListener(`click`,()=>n(`accepted`)),document.getElementById(`cookie-decline`)?.addEventListener(`click`,()=>n(`declined`))})();</script>
64<script type="module">var e=new IntersectionObserver(t=>t.forEach(t=>{t.isIntersecting&&(t.target.classList.add(`visible`),e.unobserve(t.target))}),{threshold:.1});document.querySelectorAll(`.fade-in`).forEach(t=>e.observe(t));</script>
64<script type="module">document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`a[href]`);if(!t)return;let n=window.gtag;typeof n==`function`&&/account\.zapinventory\.com\/register/.test(t.getAttribute(`href`)||``)&&n(`event`,`trial_cta_click`,{link_url:t.href,outbound:!0})});</script>
64<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"17435762fc954ee88211495d1b8a19a4","r":1,"spa":2}' crossorigin="anonymous"></script>
64
65</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.