Records a purchase against a subscriber, identified by email_address — use this to sync order data from your e-commerce platform into Kit so it appears on the subscriber’s profile and can drive purchase-based automations. If no subscriber with that email address exists, one is created (in the active state) as part of the request.
Provide the external transaction_id (required), monetary breakdown (subtotal, tax, shipping, discount, total), a 3-letter currency code (e.g. USD), transaction_time, and the purchased products — each product needs a pid (your platform’s product identifier); products that don’t exist yet are created automatically.
Note: purchases are matched on transaction_id, so submitting one that already exists updates the existing purchase instead of creating a duplicate. The products in your request are added to that purchase as additional line items — they don’t replace the ones already recorded — so resending the same products will duplicate the line items. Only include products you haven’t already synced for that transaction_id.
Returns 422 when required parameters are missing or invalid.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Kit Developer Documentation","colors":{"primary":"#44B1FF","light":"#F2EFE9","dark":"#1E1E1E"},"logo":{"light":"https://mintcdn.com/kit-314e57c1/7adJHuc_n17cs81K/logo/kit-logo-soft-black.svg?fit=max\u0026auto=format\u0026n=7adJHuc_n17cs81K\u0026q=85\u0026s=f8b2597b9e12c38f282a39af1e827443","dark":"https://mintcdn.com/kit-314e57c1/7adJHuc_n17cs81K/logo/kit-logo-warm-white.svg?fit=max\u0026auto=format\u0026n=7adJHuc_n17cs81K\u0026q=85\u0026s=4aa6d3d2cd08c65d6286c611a21e8321"},"favicon":"https://mintcdn.com/kit-314e57c1/e9nHA3E-BCD6lL7Q/logo/kit-favicon-dark.png?fit=max\u0026auto=format\u0026n=e9nHA3E-BCD6lL7Q\u0026q=85\u0026s=9183688d8f368eaade3cd6386335038b","api":{"examples":{"languages":["curl","ruby","javascript","go","php","python"]}},"background":{"color":{"light":"#FFFFFF","dark":"#1E1E1E"}},"navbar":{"links":[{"href":"https://app.kit.com/users/login","label":"Log in"}],"primary":{"type":"button","label":"Start free trial","href":"https://app.kit.com/users/signup?plan=1k"}},"footer":{"socials":{"x":"https://x.com/kit","github":"https://github.com/kit","linkedin":"https://www.linkedin.com/company/kit.com/posts"}},"seo":{"metatags":{"og:title":"Kit Developer Documentation","og:image":"/images/kit-hero.png","twitter:image":"/images/kit-hero.png"},"indexing":"all"},"fonts":{"heading":{"family":"KitSansBold","weight":400,"source":"https://cdn.kit.com/assets/fonts/KitSansBold.woff","format":"woff"},"body":{"family":"Libre Franklin","weight":400,"source":"https://fonts.gstatic.com/s/librefranklin/v18/jizOREVItHgc8qDIbSTKq4XkRg8T88bjFuXOnduhLsWkANDJTedX18mE.woff2","format":"woff2"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Kit","icon":"house","href":"https://kit.com"},{"anchor":"Developer Community","icon":"slack","href":"https://kit.typeform.com/to/f8urvmPe"},{"anchor":"Blog","icon":"newspaper","href":"https://kit.com/resources"},{"anchor":"Support","icon":"messages-question","href":"https://kit.com/support"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kit-314e57c1","hasAudioNarration":false,"actualSubdomain":"kit-314e57c1","customDomains":["developers.kit.com"],"gitSource":{"type":"github","owner":"kit","repo":"developer-documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae281d64af3f303602e2dd8","collectionId":"36220ca0-c4ad-45dc-a5cd-2b360cbf9ce3","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae281d64af3f303602e2dd8"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4b7cad2f3537f5ebb1eac","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API Reference","count":117},{"language":"default","tag":"Endpoints","count":94},{"language":"default","tag":"Plugins","count":35},{"language":"default","tag":"Building plugins","count":32},{"language":"default","tag":"Webhooks","count":17},{"language":"default","tag":"Plugin component library","count":15},{"language":"default","tag":"Subscribers","count":12},{"language":"default","tag":"Tags","count":12},{"language":"default","tag":"Kit App Store","count":11},{"language":"default","tag":"Content blocks","count":11}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUS2zcLig.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUb2zcLig.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUQ2zcLig.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUR2zcLig.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUf2zc.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUS2zcLig.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUb2zcLig.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUQ2zcLig.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUR2zcLig.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUf2zc.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUS2zcLig.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUb2zcLig.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUQ2zcLig.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUR2zcLig.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Libre Franklin';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/librefranklin/v20/jizDREVItHgc8qDIbSTKq4XkRiUf2zc.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\nstrong{font-weight:600!important}.prose a:not(.not-prose):not(.not-prose a):not(.card-group a){text-decoration-line:underline;text-decoration-style:solid;text-decoration-thickness:1px;text-underline-offset:2px;border:0;font-weight:600}.prose a:not(.not-prose):not(.not-prose a):not(.card-group a):hover{--tw-text-opacity:1;color:rgb(106 110 114/var(--tw-text-opacity, 1))}#navigation-items h5{font-family:\"Libre Franklin\"}.dark li[id=topbar-cta-button]>a>div>span,li[id=topbar-cta-button]>a>div>span{color:#000!important;font-weight:600!important}li[id=topbar-cta-button]>a>div>svg>path{stroke:#000!important;font-weight:700!important}li[id=topbar-cta-button]>a>span{background:#44b1ff!important}h1,h2,h3,h4,h5{letter-spacing:0!important}h2,h3,h4,h5,h6{font-family:\"Libre Franklin\"!important}#topbar-cta-button svg{display:none!important}#topbar-cta-button a{padding:6px 12px!important}#topbar-cta-button a>span{border-radius:8px!important;transition:all .2s ease!important}"}],"page":{"pagePath":"api-reference/purchases/create-a-purchase","slug":"/api-reference/purchases/create-a-purchase","pageMetadata":{"title":"Create a purchase","description":"Records a purchase against a subscriber, identified by `email_address` — use this to sync order data from your e-commerce platform into Kit so it appears on the subscriber's profile and can drive purchase-based automations. If no subscriber with that email address exists, one is created (in the `active` state) as part of the request.\n\nProvide the external `transaction_id` (required), monetary breakdown (`subtotal`, `tax`, `shipping`, `discount`, `total`), a 3-letter `currency` code (e.g. `USD`), `transaction_time`, and the purchased `products` — each product needs a `pid` (your platform's product identifier); products that don't exist yet are created automatically.\n\n**Note:** purchases are matched on `transaction_id`, so submitting one that already exists updates the existing purchase instead of creating a duplicate. The `products` in your request are *added* to that purchase as additional line items — they don't replace the ones already recorded — so resending the same products will duplicate the line items. Only include `products` you haven't already synced for that `transaction_id`.\n\nReturns `422` when required parameters are missing or invalid.","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/purchases","href":"/api-reference/purchases/create-a-purchase","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n em: \"em\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Records a purchase against a subscriber, identified by \", _jsx(_components.code, {\n children: \"email_address\"\n }), \" — use this to sync order data from your e-commerce platform into Kit so it appears on the subscriber’s profile and can drive purchase-based automations. If no subscriber with that email address exists, one is created (in the \", _jsx(_components.code, {\n children: \"active\"\n }), \" state) as part of the request.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Provide the external \", _jsx(_components.code, {\n children: \"transaction_id\"\n }), \" (required), monetary breakdown (\", _jsx(_components.code, {\n children: \"subtotal\"\n }), \", \", _jsx(_components.code, {\n children: \"tax\"\n }), \", \", _jsx(_components.code, {\n children: \"shipping\"\n }), \", \", _jsx(_components.code, {\n children: \"discount\"\n }), \", \", _jsx(_components.code, {\n children: \"total\"\n }), \"), a 3-letter \", _jsx(_components.code, {\n children: \"currency\"\n }), \" code (e.g. \", _jsx(_components.code, {\n children: \"USD\"\n }), \"), \", _jsx(_components.code, {\n children: \"transaction_time\"\n }), \", and the purchased \", _jsx(_components.code, {\n children: \"products\"\n }), \" — each product needs a \", _jsx(_components.code, {\n children: \"pid\"\n }), \" (your platform’s product identifier); products that don’t exist yet are created automatically.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Note:\"\n }), \" purchases are matched on \", _jsx(_components.code, {\n children: \"transaction_id\"\n }), \", so submitting one that already exists updates the existing purchase instead of creating a duplicate. The \", _jsx(_components.code, {\n children: \"products\"\n }), \" in your request are \", _jsx(_components.em, {\n children: \"added\"\n }), \" to that purchase as additional line items — they don’t replace the ones already recorded — so resending the same products will duplicate the line items. Only include \", _jsx(_components.code, {\n children: \"products\"\n }), \" you haven’t already synced for that \", _jsx(_components.code, {\n children: \"transaction_id\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Returns \", _jsx(_components.code, {\n children: \"422\"\n }), \" when required parameters are missing or invalid.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create a purchase","description":"Records a purchase against a subscriber, identified by `email_address` — use this to sync order data from your e-commerce platform into Kit so it appears on the subscriber's profile and can drive purchase-based automations. If no subscriber with that email address exists, one is created (in the `active` state) as part of the request.\n\nProvide the external `transaction_id` (required), monetary breakdown (`subtotal`, `tax`, `shipping`, `discount`, `total`), a 3-letter `currency` code (e.g. `USD`), `transaction_time`, and the purchased `products` — each product needs a `pid` (your platform's product identifier); products that don't exist yet are created automatically.\n\n**Note:** purchases are matched on `transaction_id`, so submitting one that already exists updates the existing purchase instead of creating a duplicate. The `products` in your request are *added* to that purchase as additional line items — they don't replace the ones already recorded — so resending the same products will duplicate the line items. Only include `products` you haven't already synced for that `transaction_id`.\n\nReturns `422` when required parameters are missing or invalid.","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/purchases","href":"/api-reference/purchases/create-a-purchase","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Create a purchase","description":"Records a purchase against a subscriber, identified by `email_address` — use this to sync order data from your e-commerce platform into Kit so it appears on the subscriber's profile and can drive purchase-based automations. If no subscriber with that email address exists, one is created (in the `active` state) as part of the request.\n\nProvide the external `transaction_id` (required), monetary breakdown (`subtotal`, `tax`, `shipping`, `discount`, `total`), a 3-letter `currency` code (e.g. `USD`), `transaction_time`, and the purchased `products` — each product needs a `pid` (your platform's product identifier); products that don't exist yet are created automatically.\n\n**Note:** purchases are matched on `transaction_id`, so submitting one that already exists updates the existing purchase instead of creating a duplicate. The `products` in your request are *added* to that purchase as additional line items — they don't replace the ones already recorded — so resending the same products will duplicate the line items. Only include `products` you haven't already synced for that `transaction_id`.\n\nReturns `422` when required parameters are missing or invalid.","tags":["Purchases"],"security":["8c70f3df-5426-4aaa-8206-fda3a0b7ab92"],"parameters":[],"responses":{"201":"cee108ff-475c-4ef9-af89-0125dd8bec84","401":"095171ac-29e1-499f-be12-a79a059ba227","422":"17804a4d-59a0-4e98-8787-a55be811c73e"},"requestBody":"13ba26ac-c93e-4e63-bc1c-5fd7c51ff6b9","method":"post","type":"path","servers":["b97e9272-5577-4d9b-8342-6d9a1cb92813"],"path":"/v4/purchases","baseUrlOptions":["https://api.kit.com"],"title":"Create a purchase","codeSamples":[],"requestExampleLanguages":["bash","ruby","javascript","go","php","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"purchase":{"type":"object","properties":{"email_address":{"type":"string","description":"The subscriber that the purchase belongs to","isRequired":true,"uniqueKey":"purchase.email_address","typeLabel":"string"},"transaction_id":{"type":"string","isRequired":true,"uniqueKey":"purchase.transaction_id","typeLabel":"string"},"status":{"type":"string","isRequired":true,"uniqueKey":"purchase.status","typeLabel":"string"},"subtotal":{"type":"number","format":"float","isRequired":true,"uniqueKey":"purchase.subtotal","typeLabel":"number\u003cfloat>"},"tax":{"type":"number","format":"float","isRequired":true,"uniqueKey":"purchase.tax","typeLabel":"number\u003cfloat>"},"shipping":{"type":"integer","isRequired":true,"uniqueKey":"purchase.shipping","typeLabel":"integer"},"discount":{"type":"number","format":"float","isRequired":true,"uniqueKey":"purchase.discount","typeLabel":"number\u003cfloat>"},"total":{"type":"number","format":"float","isRequired":true,"uniqueKey":"purchase.total","typeLabel":"number\u003cfloat>"},"currency":{"type":"string","description":"3 letter currency code (e.g. `USD`)","isRequired":true,"uniqueKey":"purchase.currency","typeLabel":"string"},"transaction_time":{"type":"string","isRequired":true,"uniqueKey":"purchase.transaction_time","typeLabel":"string"},"products":{"type":"array","description":"Array of purchased products","items":{"type":"object","properties":{"name":{"type":"string","description":"Product name","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].name","typeLabel":"string"},"pid":{"type":"string","description":"This is your identifier for a product. Each product provided in the `products` array must have a unique pid. Variants of the same product should have the same pid.","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].pid","typeLabel":"string"},"lid":{"type":"string","description":"Each product should have a unique `lid` (i.e., line item identifier) for this purchase.","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].lid","typeLabel":"string"},"quantity":{"type":"integer","description":"Product quantity","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].quantity","typeLabel":"integer"},"unit_price":{"type":"number","format":"float","description":"Product price","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].unit_price","typeLabel":"number\u003cfloat>"},"sku":{"type":"string","description":"Product sku","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].sku","typeLabel":"string"}},"required":["name","pid","lid","quantity","unit_price","sku"],"uniqueKey":"purchase.products.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchase.products","typeLabel":"object[]"}},"required":["email_address","transaction_id","status","subtotal","tax","shipping","discount","total","currency","transaction_time","products"],"isRequired":true,"uniqueKey":"purchase","typeLabel":"object"}},"required":["purchase"],"uniqueKey":"","typeLabel":"object"},"example":{"purchase":{"email_address":"pru.magoo@convertkit.dev","transaction_id":"796-92-4892","status":"paid","subtotal":78.66,"tax":7.87,"shipping":0,"discount":5,"total":81.53,"currency":"USD","transaction_time":"2023-02-17T11:43:55Z","products":[{"name":"Phantom Hourglass","pid":"804-02-4430","lid":"811-75-7900","quantity":1,"unit_price":23.22,"sku":"SM21-SH-M02-RD-S-001"},{"name":"Twilight Princess","pid":"833-51-1151","lid":"766-49-1241","quantity":1,"unit_price":32.22,"sku":"WT21-JK-M03-BK-L-012"},{"name":"Four Swords","pid":"217-99-4325","lid":"563-95-8878","quantity":1,"unit_price":23.22,"sku":"FL21-TS-M01-BL-M-020"}]}},"examples":{"Example":{"title":"Example","value":{"purchase":{"email_address":"pru.magoo@convertkit.dev","transaction_id":"796-92-4892","status":"paid","subtotal":78.66,"tax":7.87,"shipping":0,"discount":5,"total":81.53,"currency":"USD","transaction_time":"2023-02-17T11:43:55Z","products":[{"name":"Phantom Hourglass","pid":"804-02-4430","lid":"811-75-7900","quantity":1,"unit_price":23.22,"sku":"SM21-SH-M02-RD-S-001"},{"name":"Twilight Princess","pid":"833-51-1151","lid":"766-49-1241","quantity":1,"unit_price":32.22,"sku":"WT21-JK-M03-BK-L-012"},{"name":"Four Swords","pid":"217-99-4325","lid":"563-95-8878","quantity":1,"unit_price":23.22,"sku":"FL21-TS-M01-BL-M-020"}]}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"cee108ff-475c-4ef9-af89-0125dd8bec84":{"description":"Creates a purchase for the provided subscriber and returns its details. It also creates products if they don't exist.","content":{"application/json":{"schema":{"type":"object","properties":{"purchase":{"type":"object","properties":{"id":{"type":"integer","isRequired":true,"uniqueKey":"purchase.id","typeLabel":"integer"},"transaction_id":{"type":"string","isRequired":true,"uniqueKey":"purchase.transaction_id","typeLabel":"string"},"subscriber_id":{"type":"integer","isRequired":true,"uniqueKey":"purchase.subscriber_id","typeLabel":"integer"},"status":{"type":"string","isRequired":true,"uniqueKey":"purchase.status","typeLabel":"string"},"email_address":{"type":"string","description":"The subscriber that the purchase belongs to","isRequired":true,"uniqueKey":"purchase.email_address","typeLabel":"string"},"currency":{"type":"string","description":"3 letter currency code (e.g. `USD`)","isRequired":true,"uniqueKey":"purchase.currency","typeLabel":"string"},"transaction_time":{"type":"string","isRequired":true,"uniqueKey":"purchase.transaction_time","typeLabel":"string"},"subtotal":{"type":"number","format":"float","isRequired":true,"uniqueKey":"purchase.subtotal","typeLabel":"number\u003cfloat>"},"discount":{"type":"number","format":"float","isRequired":true,"uniqueKey":"purchase.discount","typeLabel":"number\u003cfloat>"},"tax":{"type":"number","format":"float","isRequired":true,"uniqueKey":"purchase.tax","typeLabel":"number\u003cfloat>"},"total":{"type":"number","format":"float","isRequired":true,"uniqueKey":"purchase.total","typeLabel":"number\u003cfloat>"},"products":{"type":"array","items":{"type":"object","properties":{"quantity":{"type":"integer","description":"Product quantity","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].quantity","typeLabel":"integer"},"lid":{"type":"string","description":"Each product should have a unique `lid` (i.e., line item identifier) for this purchase.","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].lid","typeLabel":"string"},"unit_price":{"type":"number","format":"float","description":"Product price","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].unit_price","typeLabel":"number\u003cfloat>"},"sku":{"type":"string","description":"Product sku","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].sku","typeLabel":"string"},"name":{"type":"string","description":"Product name","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].name","typeLabel":"string"},"pid":{"type":"string","description":"This is your identifier for a product. Each product provided in the `products` array must have a unique pid. Variants of the same product should have the same pid.","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].pid","typeLabel":"string"}},"required":["quantity","lid","unit_price","sku","name","pid"],"uniqueKey":"purchase.products.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchase.products","typeLabel":"object[]"},"source":{"type":"string","uniqueKey":"purchase.source","typeLabel":"string"}},"required":["id","transaction_id","status","email_address","subscriber_id","currency","transaction_time","subtotal","discount","tax","total","products"],"isRequired":true,"uniqueKey":"purchase","typeLabel":"object"}},"required":["purchase"],"uniqueKey":"","typeLabel":"object"},"example":{"purchase":{"id":22,"transaction_id":"796-92-4892","subscriber_id":42,"status":"paid","email_address":"pru.magoo@convertkit.dev","currency":"USD","transaction_time":"2023-02-17T11:43:55Z","subtotal":78.66,"discount":5,"tax":7.87,"total":81.53,"products":[{"quantity":1,"lid":"811-75-7900","unit_price":23.22,"sku":"SM21-SH-M02-RD-S-001","name":"Phantom Hourglass","pid":"804-02-4430"},{"quantity":1,"lid":"766-49-1241","unit_price":32.22,"sku":"WT21-JK-M03-BK-L-012","name":"Twilight Princess","pid":"833-51-1151"},{"quantity":1,"lid":"563-95-8878","unit_price":23.22,"sku":"FL21-TS-M01-BL-M-020","name":"Four Swords","pid":"217-99-4325"}],"source":"Fancy App 434"}},"examples":{"Example":{"title":"Example","value":{"purchase":{"id":22,"transaction_id":"796-92-4892","subscriber_id":42,"status":"paid","email_address":"pru.magoo@convertkit.dev","currency":"USD","transaction_time":"2023-02-17T11:43:55Z","subtotal":78.66,"discount":5,"tax":7.87,"total":81.53,"products":[{"quantity":1,"lid":"811-75-7900","unit_price":23.22,"sku":"SM21-SH-M02-RD-S-001","name":"Phantom Hourglass","pid":"804-02-4430"},{"quantity":1,"lid":"766-49-1241","unit_price":32.22,"sku":"WT21-JK-M03-BK-L-012","name":"Twilight Princess","pid":"833-51-1151"},{"quantity":1,"lid":"563-95-8878","unit_price":23.22,"sku":"FL21-TS-M01-BL-M-020","name":"Four Swords","pid":"217-99-4325"}],"source":"Fancy App 434"}}}},"exampleType":"examples"}},"exampleType":"examples"},"095171ac-29e1-499f-be12-a79a059ba227":{"description":"Returns a 401 if the token and/or account cannot be authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"string","uniqueKey":"errors.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"errors","typeLabel":"string[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":["The access token is invalid"]},"examples":{"Example":{"title":"Example","value":{"errors":["The access token is invalid"]}}},"exampleType":"examples"}},"exampleType":"examples"},"17804a4d-59a0-4e98-8787-a55be811c73e":{"description":"Returns a 422 when one or more of the parameters are invalid","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"string","uniqueKey":"errors.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"errors","typeLabel":"string[]"}},"required":["errors"],"uniqueKey":"","typeLabel":"object"},"example":{"errors":["Transaction cannot be blank"]},"examples":{"Example":{"title":"Example","value":{"errors":["Transaction cannot be blank"]}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"8c70f3df-5426-4aaa-8206-fda3a0b7ab92":{"OAuth2":{"description":"Authenticate API requests via an OAuth token","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.kit.com/v4/oauth/authorize","tokenUrl":"https://api.kit.com/v4/oauth/token","refreshUrl":"https://api.kit.com/v4/oauth/token","scopes":{"read":"Read access to Kit API v4","write":"Write access to Kit API v4"}}},"scopes":[],"schemeName":"OAuth2"}}},"servers":{"b97e9272-5577-4d9b-8342-6d9a1cb92813":{"url":"https://api.kit.com"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"description":"Authenticate API requests via an OAuth token","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.kit.com/v4/oauth/authorize","tokenUrl":"https://api.kit.com/v4/oauth/token","refreshUrl":"https://api.kit.com/v4/oauth/token","scopes":{"read":"Read access to Kit API v4","write":"Write access to Kit API v4"}}},"scopes":[],"schemeName":"OAuth2"},"schema":{"title":"OAuth2 Auth","type":"string","isRequired":true,"description":"Authenticate API requests via an OAuth token","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"OAuth2","name":"Authorization"}],"title":"OAuth2"}]},"originalFileLocation":"api-reference/v4.json"},"subdomain":"kit-314e57c1","siteName":"Kit Developer Documentation","title":"Kit Developer Documentation","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{"API 4.0":{"href":"/api-reference/purchases/create-a-purchase","matchLevel":0},"API 3.0 (legacy)":{"href":"/api-reference/v3/account","matchLevel":2}},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T23:14:37.091Z","originalFileLocation":"api-reference/purchases/create-a-purchase.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Records a purchase against a subscriber, identified by email_address — use this to sync order data from your e-commerce platform into Kit so it appears on the subscriber\u0026#x27;s profile and can drive purchase-based automations. If no subscriber with that email address exists, one is created (in the active state) as part of the request. Provide the external transaction_id (required), monetary breakdown (subtotal, tax, shipping, discount, total), a 3-letter currency code (e.g. USD), transaction_time, and the purchased products — each product needs a pid (your platform\u0026#x27;s product identifier); products that don\u0026#x27;t exist yet are created automatically. Note: purchases are matched on transaction_id, so submitting one that already exists updates the existing purchase instead of creating a duplicate. The products in your request are added to that purchase as additional line items — they don\u0026#x27;t replace the ones already recorded — so resending the same products will duplicate the line items. Only include products you haven\u0026#x27;t already synced for that transaction_id. Returns 422 when required parameters are missing or invalid.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Kit Developer Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kit-314e57c1/Pkdyit4Q00bMDtMW/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/kit-314e57c1/Pkdyit4Q00bMDtMW/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kit-314e57c1/Pkdyit4Q00bMDtMW/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kit-314e57c1/Pkdyit4Q00bMDtMW/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kit-314e57c1/Pkdyit4Q00bMDtMW/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kit-314e57c1/Pkdyit4Q00bMDtMW/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kit-314e57c1/Pkdyit4Q00bMDtMW/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kit-314e57c1/Pkdyit4Q00bMDtMW/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kit-314e57c1/Pkdyit4Q00bMDtMW/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Kit Developer Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Records a purchase against a subscriber, identified by email_address — use this to sync order data from your e-commerce platform into Kit so it appears on the subscriber\u0026#x27;s profile and can drive purchase-based automations. If no subscriber with that email address exists, one is created (in the active state) as part of the request. Provide the external transaction_id (required), monetary breakdown (subtotal, tax, shipping, discount, total), a 3-letter currency code (e.g. USD), transaction_time, and the purchased products — each product needs a pid (your platform\u0026#x27;s product identifier); products that don\u0026#x27;t exist yet are created automatically. Note: purchases are matched on transaction_id, so submitting one that already exists updates the existing purchase instead of creating a duplicate. The products in your request are added to that purchase as additional line items — they don\u0026#x27;t replace the ones already recorded — so resending the same products will duplicate the line items. Only include products you haven\u0026#x27;t already synced for that transaction_id. Returns 422 when required parameters are missing or invalid.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Kit Developer Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.kit.com/api-reference/purchases/create-a-purchase\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kit-314e57c1.mintlify.app/images/kit-hero.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Kit Developer Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Records a purchase against a subscriber, identified by email_address — use this to sync order data from your e-commerce platform into Kit so it appears on the subscriber\u0026#x27;s profile and can drive purchase-based automations. If no subscriber with that email address exists, one is created (in the active state) as part of the request. Provide the external transaction_id (required), monetary breakdown (subtotal, tax, shipping, discount, total), a 3-letter currency code (e.g. USD), transaction_time, and the purchased products — each product needs a pid (your platform\u0026#x27;s product identifier); products that don\u0026#x27;t exist yet are created automatically. Note: purchases are matched on transaction_id, so submitting one that already exists updates the existing purchase instead of creating a duplicate. The products in your request are added to that purchase as additional line items — they don\u0026#x27;t replace the ones already recorded — so resending the same products will duplicate the line items. Only include products you haven\u0026#x27;t already synced for that transaction_id. Returns 422 when required parameters are missing or invalid.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kit-314e57c1.mintlify.app/images/kit-hero.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/kit-314e57c1/Pkdyit4Q00bMDtMW/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Kit Developer Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#44B1FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.kit.com/api-reference/purchases/create-a-purchase\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/purchases/create-a-purchase.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developers.kit.com/#organization\",\"name\":\"Kit Developer Documentation\",\"url\":\"https://developers.kit.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kit-314e57c1/7adJHuc_n17cs81K/logo/kit-logo-soft-black.svg?fit=max\u0026auto=format\u0026n=7adJHuc_n17cs81K\u0026q=85\u0026s=f8b2597b9e12c38f282a39af1e827443\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developers.kit.com#website\",\"name\":\"Kit Developer Documentation\",\"url\":\"https://developers.kit.com\",\"publisher\":{\"@id\":\"https://developers.kit.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.kit.com/api-reference/purchases/create-a-purchase#webpage\",\"url\":\"https://developers.kit.com/api-reference/purchases/create-a-purchase\",\"name\":\"Create a purchase\",\"description\":\"Records a purchase against a subscriber, identified by email_address — use this to sync order data from your e-commerce platform into Kit so it appears on the subscriber's profile and can drive purchase-based automations. If no subscriber with that email address exists, one is created (in the active state) as part of the request. Provide the external transaction_id (required), monetary breakdown (subtotal, tax, shipping, discount, total), a 3-letter currency code (e.g. USD), transaction_time, and the purchased products — each product needs a pid (your platform's product identifier); products that don't exist yet are created automatically. Note: purchases are matched on transaction_id, so submitting one that already exists updates the existing purchase instead of creating a duplicate. The products in your request are added to that purchase as additional line items — they don't replace the ones already recorded — so resending the same products will duplicate the line items. Only include products you haven't already synced for that transaction_id. Returns 422 when required parameters are missing or invalid.\",\"dateModified\":\"2026-10-28T23:14:37.091Z\",\"isPartOf\":{\"@id\":\"https://developers.kit.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.kit.com/api-reference/purchases/create-a-purchase#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.kit.com/api-reference/purchases/create-a-purchase#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://developers.kit.com/api-reference/accounts/get-current-account\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Purchases\",\"item\":\"https://developers.kit.com/api-reference/purchases/list-purchases\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a purchase\",\"item\":\"https://developers.kit.com/api-reference/purchases/create-a-purchase\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.kit.com/api-reference/purchases/create-a-purchase#apireference\",\"headline\":\"Create a purchase\",\"name\":\"Create a purchase\",\"description\":\"Records a purchase against a subscriber, identified by email_address — use this to sync order data from your e-commerce platform into Kit so it appears on the subscriber's profile and can drive purchase-based automations. If no subscriber with that email address exists, one is created (in the active state) as part of the request. Provide the external transaction_id (required), monetary breakdown (subtotal, tax, shipping, discount, total), a 3-letter currency code (e.g. USD), transaction_time, and the purchased products — each product needs a pid (your platform's product identifier); products that don't exist yet are created automatically. Note: purchases are matched on transaction_id, so submitting one that already exists updates the existing purchase instead of creating a duplicate. The products in your request are added to that purchase as additional line items — they don't replace the ones already recorded — so resending the same products will duplicate the line items. Only include products you haven't already synced for that transaction_id. Returns 422 when required parameters are missing or invalid.\",\"url\":\"https://developers.kit.com/api-reference/purchases/create-a-purchase\",\"mainEntityOfPage\":{\"@id\":\"https://developers.kit.com/api-reference/purchases/create-a-purchase#webpage\"},\"image\":\"https://developers.kit.com/images/kit-hero.png\",\"dateModified\":\"2026-10-28T23:14:37.091Z\",\"publisher\":{\"@id\":\"https://developers.kit.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.kit.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Kit Developer Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Kit Developer Documentation","nav":{"global":{"anchors":[{"anchor":"Kit","icon":"house","href":"https://kit.com"},{"anchor":"Developer Community","icon":"slack","href":"https://kit.typeform.com/to/f8urvmPe"},{"anchor":"Blog","icon":"newspaper","href":"https://kit.com/resources"},{"anchor":"Support","icon":"messages-question","href":"https://kit.com/support"}]},"tabs":[{"tab":"Welcome","pages":[{"title":"Welcome","href":"/welcome"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"Kit App Store","pages":[{"title":"Kit App Store","href":"/kit-app-store/overview"}]},{"tab":"Plugins","pages":[{"title":"Plugins","href":"/plugins/overview"}]},{"tab":"API Reference","versions":[{"version":"API 4.0","groups":[{"group":"Getting started","boost":3,"pages":[{"title":"API Overview","sidebarTitle":"Overview","mode":"wide","href":"/api-reference/overview"},{"title":"API Authentication","sidebarTitle":"Authentication","href":"/api-reference/authentication"}]},{"group":"Guides","pages":[{"group":"OAuth guides","pages":[{"title":"OAuth refresh token flow","href":"/api-reference/oauth-refresh-token-flow"},{"title":"Proof Key for Code Exchange (PKCE) flow","href":"/api-reference/oauth-proof-key-for-code-exchange-flow"},{"title":"OAuth token revocation","href":"/api-reference/oauth-token-revocation"}]},{"title":"Upgrading to V4","href":"/api-reference/upgrading-to-v4"},{"title":"Pagination","href":"/api-reference/pagination"},{"title":"Bulk \u0026 async processing","href":"/api-reference/bulk-and-async-processing"},{"title":"Eventual consistency","href":"/api-reference/eventual-consistency"},{"title":"Dates","href":"/api-reference/dates"},{"title":"Email data retention","href":"/api-reference/email-data-retention"},{"title":"API response codes","sidebarTitle":"Response codes","href":"/api-reference/response-codes"}]},{"group":"Webhooks","pages":[{"title":"Webhooks overview","sidebarTitle":"Overview","href":"/webhooks/overview"},{"title":"Getting started with webhooks","sidebarTitle":"Getting started","href":"/webhooks/getting-started"},{"title":"Delivery format","sidebarTitle":"Delivery format","href":"/webhooks/delivery-format"},{"title":"Event types","sidebarTitle":"Event types","href":"/webhooks/event-types"},{"title":"Verifying signatures","sidebarTitle":"Verifying signatures","href":"/webhooks/verifying-signatures"},{"title":"Retries","sidebarTitle":"Retries","href":"/webhooks/retries"},{"title":"Delivery history","sidebarTitle":"Delivery history","href":"/webhooks/delivery-history"},{"title":"Errors and gating","sidebarTitle":"Errors","href":"/webhooks/errors"}]},{"group":"Endpoints","pages":[{"group":"Accounts","pages":[{"title":"Get current account","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/account","href":"/api-reference/accounts/get-current-account"},{"title":"List colors","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/account/colors","href":"/api-reference/accounts/list-colors"},{"title":"Update colors","deprecated":null,"version":null,"openapi":"/api-reference/v4.json put /v4/account/colors","href":"/api-reference/accounts/update-colors"},{"title":"Get Creator Profile","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/account/creator_profile","href":"/api-reference/accounts/get-creator-profile"},{"title":"Get email stats","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/account/email_stats","href":"/api-reference/accounts/get-email-stats"},{"title":"Get growth stats","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/account/growth_stats","href":"/api-reference/accounts/get-growth-stats"}]},{"group":"Broadcasts","pages":[{"title":"List broadcasts","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/broadcasts","href":"/api-reference/broadcasts/list-broadcasts"},{"title":"Create a broadcast","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/broadcasts","href":"/api-reference/broadcasts/create-a-broadcast"},{"title":"Get stats for a list of broadcasts","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/broadcasts/stats","href":"/api-reference/broadcasts/get-stats-for-a-list-of-broadcasts"},{"title":"Get link clicks for a broadcast","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/broadcasts/{broadcast_id}/clicks","href":"/api-reference/broadcasts/get-link-clicks-for-a-broadcast"},{"title":"Get stats for a broadcast","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/broadcasts/{broadcast_id}/stats","href":"/api-reference/broadcasts/get-stats-for-a-broadcast"},{"title":"Get a broadcast","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/broadcasts/{id}","href":"/api-reference/broadcasts/get-a-broadcast"},{"title":"Update a broadcast","deprecated":null,"version":null,"openapi":"/api-reference/v4.json put /v4/broadcasts/{id}","href":"/api-reference/broadcasts/update-a-broadcast"},{"title":"Delete a broadcast","deprecated":null,"version":null,"openapi":"/api-reference/v4.json delete /v4/broadcasts/{id}","href":"/api-reference/broadcasts/delete-a-broadcast"}]},{"group":"Custom Fields","pages":[{"title":"Bulk create custom fields","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/bulk/custom_fields","href":"/api-reference/custom-fields/bulk-create-custom-fields"},{"title":"Bulk update subscriber custom field values","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/bulk/custom_fields/subscribers","href":"/api-reference/custom-fields/bulk-update-subscriber-custom-field-values"},{"title":"List custom fields","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/custom_fields","href":"/api-reference/custom-fields/list-custom-fields"},{"title":"Create a custom field","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/custom_fields","href":"/api-reference/custom-fields/create-a-custom-field"},{"title":"Update a custom field","deprecated":null,"version":null,"openapi":"/api-reference/v4.json put /v4/custom_fields/{id}","href":"/api-reference/custom-fields/update-a-custom-field"},{"title":"Delete custom field","deprecated":null,"version":null,"openapi":"/api-reference/v4.json delete /v4/custom_fields/{id}","href":"/api-reference/custom-fields/delete-custom-field"}]},{"group":"Email Templates","pages":[{"title":"List email templates","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/email_templates","href":"/api-reference/email-templates/list-email-templates"}]},{"group":"Forms","pages":[{"title":"Bulk add subscribers to forms","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/bulk/forms/subscribers","href":"/api-reference/forms/bulk-add-subscribers-to-forms"},{"title":"List forms","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/forms","href":"/api-reference/forms/list-forms"},{"title":"List subscribers for a form","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/forms/{form_id}/subscribers","href":"/api-reference/forms/list-subscribers-for-a-form"},{"title":"Add subscriber to form by email address","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/forms/{form_id}/subscribers","href":"/api-reference/forms/add-subscriber-to-form-by-email-address"},{"title":"Add subscriber to form","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/forms/{form_id}/subscribers/{id}","href":"/api-reference/forms/add-subscriber-to-form"}]},{"group":"Posts","pages":[{"title":"List posts","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/posts","href":"/api-reference/posts/list-posts"},{"title":"Get a post","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/posts/{id}","href":"/api-reference/posts/get-a-post"}]},{"group":"Purchases","pages":[{"title":"List purchases","description":"Returns a cursor-paginated list of purchases recorded in the account, typically imported from e-commerce platforms. Each purchase includes its `transaction_id`, `status`, `source` (e.g. the originating platform), the buyer's `email_address` and `subscriber_id`, monetary breakdown (`subtotal`, `discount`, `tax`, `total`, `currency`), and the purchased `products`.\n\nTo record a new purchase, use [Create a purchase](/api-reference/purchases/create-a-purchase).","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/purchases","href":"/api-reference/purchases/list-purchases"},{"title":"Create a purchase","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/purchases","href":"/api-reference/purchases/create-a-purchase"},{"title":"Get a purchase","description":"Returns a single purchase's details: `transaction_id`, `status`, `source`, the buyer's `email_address` and `subscriber_id`, monetary breakdown (`subtotal`, `discount`, `tax`, `total`, `currency`), `transaction_time`, and the purchased `products` with quantities and unit prices.","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/purchases/{id}","href":"/api-reference/purchases/get-a-purchase"}]},{"group":"Segments","pages":[{"title":"List segments","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/segments","href":"/api-reference/segments/list-segments"}]},{"group":"Sequence Emails","pages":[{"title":"List sequence emails","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/sequences/{sequence_id}/emails","href":"/api-reference/sequence-emails/list-sequence-emails"},{"title":"Create a sequence email","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/sequences/{sequence_id}/emails","href":"/api-reference/sequence-emails/create-a-sequence-email"},{"title":"Get a sequence email","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/sequences/{sequence_id}/emails/{id}","href":"/api-reference/sequence-emails/get-a-sequence-email"},{"title":"Update a sequence email","deprecated":null,"version":null,"openapi":"/api-reference/v4.json put /v4/sequences/{sequence_id}/emails/{id}","href":"/api-reference/sequence-emails/update-a-sequence-email"},{"title":"Delete a sequence email","deprecated":null,"version":null,"openapi":"/api-reference/v4.json delete /v4/sequences/{sequence_id}/emails/{id}","href":"/api-reference/sequence-emails/delete-a-sequence-email"}]},{"group":"Sequences","pages":[{"title":"List sequences","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/sequences","href":"/api-reference/sequences/list-sequences"},{"title":"Create a sequence","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/sequences","href":"/api-reference/sequences/create-a-sequence"},{"title":"Get a sequence","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/sequences/{id}","href":"/api-reference/sequences/get-a-sequence"},{"title":"Update a sequence","deprecated":null,"version":null,"openapi":"/api-reference/v4.json put /v4/sequences/{id}","href":"/api-reference/sequences/update-a-sequence"},{"title":"Delete a sequence","deprecated":null,"version":null,"openapi":"/api-reference/v4.json delete /v4/sequences/{id}","href":"/api-reference/sequences/delete-a-sequence"},{"title":"List subscribers for a sequence","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/sequences/{sequence_id}/subscribers","href":"/api-reference/sequences/list-subscribers-for-a-sequence"},{"title":"Add subscriber to sequence by email address","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/sequences/{sequence_id}/subscribers","href":"/api-reference/sequences/add-subscriber-to-sequence-by-email-address"},{"title":"Add subscriber to sequence","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/sequences/{sequence_id}/subscribers/{id}","href":"/api-reference/sequences/add-subscriber-to-sequence"}]},{"group":"Snippets","pages":[{"title":"List snippets","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/snippets","href":"/api-reference/snippets/list-snippets"},{"title":"Create a snippet","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/snippets","href":"/api-reference/snippets/create-a-snippet"},{"title":"Get a snippet","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/snippets/{id}","href":"/api-reference/snippets/get-a-snippet"},{"title":"Update a snippet","deprecated":null,"version":null,"openapi":"/api-reference/v4.json put /v4/snippets/{id}","href":"/api-reference/snippets/update-a-snippet"}]},{"group":"Subscribers","pages":[{"title":"Bulk create subscribers","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/bulk/subscribers","href":"/api-reference/subscribers/bulk-create-subscribers"},{"title":"List subscribers","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/subscribers","href":"/api-reference/subscribers/list-subscribers"},{"title":"Create a subscriber","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/subscribers","href":"/api-reference/subscribers/create-a-subscriber"},{"title":"Filter subscribers by engagement, sign-up date, state, and tags","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/subscribers/filter","href":"/api-reference/subscribers/filter-subscribers-by-engagement-sign-up-date-state-and-tags"},{"title":"Get a subscriber","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/subscribers/{id}","href":"/api-reference/subscribers/get-a-subscriber"},{"title":"Update a subscriber","deprecated":null,"version":null,"openapi":"/api-reference/v4.json put /v4/subscribers/{id}","href":"/api-reference/subscribers/update-a-subscriber"},{"title":"Unsubscribe subscriber","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/subscribers/{id}/unsubscribe","href":"/api-reference/subscribers/unsubscribe-subscriber"},{"title":"Pin a subscriber's location","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/subscribers/{subscriber_id}/location","href":"/api-reference/subscribers/pin-a-subscribers-location"},{"title":"Delete a subscriber's location","deprecated":null,"version":null,"openapi":"/api-reference/v4.json delete /v4/subscribers/{subscriber_id}/location","href":"/api-reference/subscribers/delete-a-subscribers-location"},{"title":"Update a subscriber's pinned location","deprecated":null,"version":null,"openapi":"/api-reference/v4.json patch /v4/subscribers/{subscriber_id}/location","href":"/api-reference/subscribers/update-a-subscribers-pinned-location"},{"title":"List stats for a subscriber","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/subscribers/{subscriber_id}/stats","href":"/api-reference/subscribers/list-stats-for-a-subscriber"},{"title":"List tags for a subscriber","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/subscribers/{subscriber_id}/tags","href":"/api-reference/subscribers/list-tags-for-a-subscriber"}]},{"group":"Tags","pages":[{"title":"Bulk create tags","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/bulk/tags","href":"/api-reference/tags/bulk-create-tags"},{"title":"Bulk delete tags","deprecated":null,"version":null,"openapi":"/api-reference/v4.json delete /v4/bulk/tags","href":"/api-reference/tags/bulk-delete-tags"},{"title":"Bulk tag subscribers","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/bulk/tags/subscribers","href":"/api-reference/tags/bulk-tag-subscribers"},{"title":"Bulk remove tags from subscribers","deprecated":null,"version":null,"openapi":"/api-reference/v4.json delete /v4/bulk/tags/subscribers","href":"/api-reference/tags/bulk-remove-tags-from-subscribers"},{"title":"List tags","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/tags","href":"/api-reference/tags/list-tags"},{"title":"Create a tag","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/tags","href":"/api-reference/tags/create-a-tag"},{"title":"Update tag name","deprecated":null,"version":null,"openapi":"/api-reference/v4.json put /v4/tags/{id}","href":"/api-reference/tags/update-tag-name"},{"title":"List subscribers for a tag","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/tags/{tag_id}/subscribers","href":"/api-reference/tags/list-subscribers-for-a-tag"},{"title":"Tag a subscriber by email address","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/tags/{tag_id}/subscribers","href":"/api-reference/tags/tag-a-subscriber-by-email-address"},{"title":"Remove tag from subscriber by email address","deprecated":null,"version":null,"openapi":"/api-reference/v4.json delete /v4/tags/{tag_id}/subscribers","href":"/api-reference/tags/remove-tag-from-subscriber-by-email-address"},{"title":"Tag a subscriber","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/tags/{tag_id}/subscribers/{id}","href":"/api-reference/tags/tag-a-subscriber"},{"title":"Remove tag from subscriber","deprecated":null,"version":null,"openapi":"/api-reference/v4.json delete /v4/tags/{tag_id}/subscribers/{id}","href":"/api-reference/tags/remove-tag-from-subscriber"}]},{"group":"Webhooks","pages":[{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/webhook_endpoints","href":"/api-reference/webhooks/list-webhook-endpoints"},{"title":"Create a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/webhook_endpoints","href":"/api-reference/webhooks/create-a-webhook-endpoint"},{"title":"Get a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/webhook_endpoints/{id}","href":"/api-reference/webhooks/get-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/v4.json delete /v4/webhook_endpoints/{id}","href":"/api-reference/webhooks/delete-a-webhook-endpoint"},{"title":"Update a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/v4.json patch /v4/webhook_endpoints/{id}","href":"/api-reference/webhooks/update-a-webhook-endpoint"},{"title":"List webhook deliveries","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/webhook_endpoints/{id}/deliveries","href":"/api-reference/webhooks/list-webhook-deliveries"},{"title":"Get webhook delivery details","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/webhook_endpoints/{id}/deliveries/{delivery_id}","href":"/api-reference/webhooks/get-webhook-delivery-details"},{"title":"Revoke the previous webhook endpoint secret","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/webhook_endpoints/{id}/revoke_previous_secret","href":"/api-reference/webhooks/revoke-the-previous-webhook-endpoint-secret"},{"title":"Rotate a webhook endpoint secret","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/webhook_endpoints/{id}/rotate_secret","href":"/api-reference/webhooks/rotate-a-webhook-endpoint-secret"}]},{"group":"Webhooks (Legacy)","pages":[{"title":"List webhooks","deprecated":null,"version":null,"openapi":"/api-reference/v4.json get /v4/webhooks","href":"/api-reference/webhooks-legacy/list-webhooks"},{"title":"Create a webhook","deprecated":null,"version":null,"openapi":"/api-reference/v4.json post /v4/webhooks","href":"/api-reference/webhooks-legacy/create-a-webhook"},{"title":"Delete a webhook","deprecated":null,"version":null,"openapi":"/api-reference/v4.json delete /v4/webhooks/{id}","href":"/api-reference/webhooks-legacy/delete-a-webhook"}]}]}]},{"version":"API 3.0 (legacy)","pages":[{"title":"API 3.0 (legacy)","href":"/api-reference/v3/account"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Kit Developer Documentation","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js","Markdown-D7QRHV3m.js","clsx-D1Z-ELXV.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-lvhuD9Du.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CKfC4ywL.js"]}