availsync 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/.adal/skills/stripe-best-practices/SKILL.md +42 -0
  2. package/.adal/skills/stripe-best-practices/references/billing.md +36 -0
  3. package/.adal/skills/stripe-best-practices/references/connect.md +48 -0
  4. package/.adal/skills/stripe-best-practices/references/payments.md +79 -0
  5. package/.adal/skills/stripe-best-practices/references/security.md +109 -0
  6. package/.adal/skills/stripe-best-practices/references/treasury.md +16 -0
  7. package/.adal/skills/stripe-projects/SKILL.md +139 -0
  8. package/.adal/skills/upgrade-stripe/SKILL.md +185 -0
  9. package/.agents/skills/stripe-best-practices/SKILL.md +42 -0
  10. package/.agents/skills/stripe-best-practices/references/billing.md +36 -0
  11. package/.agents/skills/stripe-best-practices/references/connect.md +48 -0
  12. package/.agents/skills/stripe-best-practices/references/payments.md +79 -0
  13. package/.agents/skills/stripe-best-practices/references/security.md +109 -0
  14. package/.agents/skills/stripe-best-practices/references/treasury.md +16 -0
  15. package/.agents/skills/stripe-projects/SKILL.md +139 -0
  16. package/.agents/skills/upgrade-stripe/SKILL.md +185 -0
  17. package/.augment/skills/stripe-best-practices/SKILL.md +42 -0
  18. package/.augment/skills/stripe-best-practices/references/billing.md +36 -0
  19. package/.augment/skills/stripe-best-practices/references/connect.md +48 -0
  20. package/.augment/skills/stripe-best-practices/references/payments.md +79 -0
  21. package/.augment/skills/stripe-best-practices/references/security.md +109 -0
  22. package/.augment/skills/stripe-best-practices/references/treasury.md +16 -0
  23. package/.augment/skills/stripe-projects/SKILL.md +139 -0
  24. package/.augment/skills/upgrade-stripe/SKILL.md +185 -0
  25. package/.bob/skills/stripe-best-practices/SKILL.md +42 -0
  26. package/.bob/skills/stripe-best-practices/references/billing.md +36 -0
  27. package/.bob/skills/stripe-best-practices/references/connect.md +48 -0
  28. package/.bob/skills/stripe-best-practices/references/payments.md +79 -0
  29. package/.bob/skills/stripe-best-practices/references/security.md +109 -0
  30. package/.bob/skills/stripe-best-practices/references/treasury.md +16 -0
  31. package/.bob/skills/stripe-projects/SKILL.md +139 -0
  32. package/.bob/skills/upgrade-stripe/SKILL.md +185 -0
  33. package/.claude/settings.local.json +7 -0
  34. package/.claude/skills/stripe-best-practices/SKILL.md +42 -0
  35. package/.claude/skills/stripe-best-practices/references/billing.md +36 -0
  36. package/.claude/skills/stripe-best-practices/references/connect.md +48 -0
  37. package/.claude/skills/stripe-best-practices/references/payments.md +79 -0
  38. package/.claude/skills/stripe-best-practices/references/security.md +109 -0
  39. package/.claude/skills/stripe-best-practices/references/treasury.md +16 -0
  40. package/.claude/skills/stripe-projects/SKILL.md +139 -0
  41. package/.claude/skills/upgrade-stripe/SKILL.md +185 -0
  42. package/.codebuddy/skills/stripe-best-practices/SKILL.md +42 -0
  43. package/.codebuddy/skills/stripe-best-practices/references/billing.md +36 -0
  44. package/.codebuddy/skills/stripe-best-practices/references/connect.md +48 -0
  45. package/.codebuddy/skills/stripe-best-practices/references/payments.md +79 -0
  46. package/.codebuddy/skills/stripe-best-practices/references/security.md +109 -0
  47. package/.codebuddy/skills/stripe-best-practices/references/treasury.md +16 -0
  48. package/.codebuddy/skills/stripe-projects/SKILL.md +139 -0
  49. package/.codebuddy/skills/upgrade-stripe/SKILL.md +185 -0
  50. package/.commandcode/skills/stripe-best-practices/SKILL.md +42 -0
  51. package/.commandcode/skills/stripe-best-practices/references/billing.md +36 -0
  52. package/.commandcode/skills/stripe-best-practices/references/connect.md +48 -0
  53. package/.commandcode/skills/stripe-best-practices/references/payments.md +79 -0
  54. package/.commandcode/skills/stripe-best-practices/references/security.md +109 -0
  55. package/.commandcode/skills/stripe-best-practices/references/treasury.md +16 -0
  56. package/.commandcode/skills/stripe-projects/SKILL.md +139 -0
  57. package/.commandcode/skills/upgrade-stripe/SKILL.md +185 -0
  58. package/.continue/skills/stripe-best-practices/SKILL.md +42 -0
  59. package/.continue/skills/stripe-best-practices/references/billing.md +36 -0
  60. package/.continue/skills/stripe-best-practices/references/connect.md +48 -0
  61. package/.continue/skills/stripe-best-practices/references/payments.md +79 -0
  62. package/.continue/skills/stripe-best-practices/references/security.md +109 -0
  63. package/.continue/skills/stripe-best-practices/references/treasury.md +16 -0
  64. package/.continue/skills/stripe-projects/SKILL.md +139 -0
  65. package/.continue/skills/upgrade-stripe/SKILL.md +185 -0
  66. package/.cortex/skills/stripe-best-practices/SKILL.md +42 -0
  67. package/.cortex/skills/stripe-best-practices/references/billing.md +36 -0
  68. package/.cortex/skills/stripe-best-practices/references/connect.md +48 -0
  69. package/.cortex/skills/stripe-best-practices/references/payments.md +79 -0
  70. package/.cortex/skills/stripe-best-practices/references/security.md +109 -0
  71. package/.cortex/skills/stripe-best-practices/references/treasury.md +16 -0
  72. package/.cortex/skills/stripe-projects/SKILL.md +139 -0
  73. package/.cortex/skills/upgrade-stripe/SKILL.md +185 -0
  74. package/.crush/skills/stripe-best-practices/SKILL.md +42 -0
  75. package/.crush/skills/stripe-best-practices/references/billing.md +36 -0
  76. package/.crush/skills/stripe-best-practices/references/connect.md +48 -0
  77. package/.crush/skills/stripe-best-practices/references/payments.md +79 -0
  78. package/.crush/skills/stripe-best-practices/references/security.md +109 -0
  79. package/.crush/skills/stripe-best-practices/references/treasury.md +16 -0
  80. package/.crush/skills/stripe-projects/SKILL.md +139 -0
  81. package/.crush/skills/upgrade-stripe/SKILL.md +185 -0
  82. package/.env.example +20 -0
  83. package/.factory/skills/stripe-best-practices/SKILL.md +42 -0
  84. package/.factory/skills/stripe-best-practices/references/billing.md +36 -0
  85. package/.factory/skills/stripe-best-practices/references/connect.md +48 -0
  86. package/.factory/skills/stripe-best-practices/references/payments.md +79 -0
  87. package/.factory/skills/stripe-best-practices/references/security.md +109 -0
  88. package/.factory/skills/stripe-best-practices/references/treasury.md +16 -0
  89. package/.factory/skills/stripe-projects/SKILL.md +139 -0
  90. package/.factory/skills/upgrade-stripe/SKILL.md +185 -0
  91. package/.goose/skills/stripe-best-practices/SKILL.md +42 -0
  92. package/.goose/skills/stripe-best-practices/references/billing.md +36 -0
  93. package/.goose/skills/stripe-best-practices/references/connect.md +48 -0
  94. package/.goose/skills/stripe-best-practices/references/payments.md +79 -0
  95. package/.goose/skills/stripe-best-practices/references/security.md +109 -0
  96. package/.goose/skills/stripe-best-practices/references/treasury.md +16 -0
  97. package/.goose/skills/stripe-projects/SKILL.md +139 -0
  98. package/.goose/skills/upgrade-stripe/SKILL.md +185 -0
  99. package/.iflow/skills/stripe-best-practices/SKILL.md +42 -0
  100. package/.iflow/skills/stripe-best-practices/references/billing.md +36 -0
  101. package/.iflow/skills/stripe-best-practices/references/connect.md +48 -0
  102. package/.iflow/skills/stripe-best-practices/references/payments.md +79 -0
  103. package/.iflow/skills/stripe-best-practices/references/security.md +109 -0
  104. package/.iflow/skills/stripe-best-practices/references/treasury.md +16 -0
  105. package/.iflow/skills/stripe-projects/SKILL.md +139 -0
  106. package/.iflow/skills/upgrade-stripe/SKILL.md +185 -0
  107. package/.junie/skills/stripe-best-practices/SKILL.md +42 -0
  108. package/.junie/skills/stripe-best-practices/references/billing.md +36 -0
  109. package/.junie/skills/stripe-best-practices/references/connect.md +48 -0
  110. package/.junie/skills/stripe-best-practices/references/payments.md +79 -0
  111. package/.junie/skills/stripe-best-practices/references/security.md +109 -0
  112. package/.junie/skills/stripe-best-practices/references/treasury.md +16 -0
  113. package/.junie/skills/stripe-projects/SKILL.md +139 -0
  114. package/.junie/skills/upgrade-stripe/SKILL.md +185 -0
  115. package/.kilocode/skills/stripe-best-practices/SKILL.md +42 -0
  116. package/.kilocode/skills/stripe-best-practices/references/billing.md +36 -0
  117. package/.kilocode/skills/stripe-best-practices/references/connect.md +48 -0
  118. package/.kilocode/skills/stripe-best-practices/references/payments.md +79 -0
  119. package/.kilocode/skills/stripe-best-practices/references/security.md +109 -0
  120. package/.kilocode/skills/stripe-best-practices/references/treasury.md +16 -0
  121. package/.kilocode/skills/stripe-projects/SKILL.md +139 -0
  122. package/.kilocode/skills/upgrade-stripe/SKILL.md +185 -0
  123. package/.kiro/skills/stripe-best-practices/SKILL.md +42 -0
  124. package/.kiro/skills/stripe-best-practices/references/billing.md +36 -0
  125. package/.kiro/skills/stripe-best-practices/references/connect.md +48 -0
  126. package/.kiro/skills/stripe-best-practices/references/payments.md +79 -0
  127. package/.kiro/skills/stripe-best-practices/references/security.md +109 -0
  128. package/.kiro/skills/stripe-best-practices/references/treasury.md +16 -0
  129. package/.kiro/skills/stripe-projects/SKILL.md +139 -0
  130. package/.kiro/skills/upgrade-stripe/SKILL.md +185 -0
  131. package/.kode/skills/stripe-best-practices/SKILL.md +42 -0
  132. package/.kode/skills/stripe-best-practices/references/billing.md +36 -0
  133. package/.kode/skills/stripe-best-practices/references/connect.md +48 -0
  134. package/.kode/skills/stripe-best-practices/references/payments.md +79 -0
  135. package/.kode/skills/stripe-best-practices/references/security.md +109 -0
  136. package/.kode/skills/stripe-best-practices/references/treasury.md +16 -0
  137. package/.kode/skills/stripe-projects/SKILL.md +139 -0
  138. package/.kode/skills/upgrade-stripe/SKILL.md +185 -0
  139. package/.mcpjam/skills/stripe-best-practices/SKILL.md +42 -0
  140. package/.mcpjam/skills/stripe-best-practices/references/billing.md +36 -0
  141. package/.mcpjam/skills/stripe-best-practices/references/connect.md +48 -0
  142. package/.mcpjam/skills/stripe-best-practices/references/payments.md +79 -0
  143. package/.mcpjam/skills/stripe-best-practices/references/security.md +109 -0
  144. package/.mcpjam/skills/stripe-best-practices/references/treasury.md +16 -0
  145. package/.mcpjam/skills/stripe-projects/SKILL.md +139 -0
  146. package/.mcpjam/skills/upgrade-stripe/SKILL.md +185 -0
  147. package/.mux/skills/stripe-best-practices/SKILL.md +42 -0
  148. package/.mux/skills/stripe-best-practices/references/billing.md +36 -0
  149. package/.mux/skills/stripe-best-practices/references/connect.md +48 -0
  150. package/.mux/skills/stripe-best-practices/references/payments.md +79 -0
  151. package/.mux/skills/stripe-best-practices/references/security.md +109 -0
  152. package/.mux/skills/stripe-best-practices/references/treasury.md +16 -0
  153. package/.mux/skills/stripe-projects/SKILL.md +139 -0
  154. package/.mux/skills/upgrade-stripe/SKILL.md +185 -0
  155. package/.neovate/skills/stripe-best-practices/SKILL.md +42 -0
  156. package/.neovate/skills/stripe-best-practices/references/billing.md +36 -0
  157. package/.neovate/skills/stripe-best-practices/references/connect.md +48 -0
  158. package/.neovate/skills/stripe-best-practices/references/payments.md +79 -0
  159. package/.neovate/skills/stripe-best-practices/references/security.md +109 -0
  160. package/.neovate/skills/stripe-best-practices/references/treasury.md +16 -0
  161. package/.neovate/skills/stripe-projects/SKILL.md +139 -0
  162. package/.neovate/skills/upgrade-stripe/SKILL.md +185 -0
  163. package/.nixpacksignore +14 -0
  164. package/.openhands/skills/stripe-best-practices/SKILL.md +42 -0
  165. package/.openhands/skills/stripe-best-practices/references/billing.md +36 -0
  166. package/.openhands/skills/stripe-best-practices/references/connect.md +48 -0
  167. package/.openhands/skills/stripe-best-practices/references/payments.md +79 -0
  168. package/.openhands/skills/stripe-best-practices/references/security.md +109 -0
  169. package/.openhands/skills/stripe-best-practices/references/treasury.md +16 -0
  170. package/.openhands/skills/stripe-projects/SKILL.md +139 -0
  171. package/.openhands/skills/upgrade-stripe/SKILL.md +185 -0
  172. package/.pi/skills/stripe-best-practices/SKILL.md +42 -0
  173. package/.pi/skills/stripe-best-practices/references/billing.md +36 -0
  174. package/.pi/skills/stripe-best-practices/references/connect.md +48 -0
  175. package/.pi/skills/stripe-best-practices/references/payments.md +79 -0
  176. package/.pi/skills/stripe-best-practices/references/security.md +109 -0
  177. package/.pi/skills/stripe-best-practices/references/treasury.md +16 -0
  178. package/.pi/skills/stripe-projects/SKILL.md +139 -0
  179. package/.pi/skills/upgrade-stripe/SKILL.md +185 -0
  180. package/.pochi/skills/stripe-best-practices/SKILL.md +42 -0
  181. package/.pochi/skills/stripe-best-practices/references/billing.md +36 -0
  182. package/.pochi/skills/stripe-best-practices/references/connect.md +48 -0
  183. package/.pochi/skills/stripe-best-practices/references/payments.md +79 -0
  184. package/.pochi/skills/stripe-best-practices/references/security.md +109 -0
  185. package/.pochi/skills/stripe-best-practices/references/treasury.md +16 -0
  186. package/.pochi/skills/stripe-projects/SKILL.md +139 -0
  187. package/.pochi/skills/upgrade-stripe/SKILL.md +185 -0
  188. package/.qoder/skills/stripe-best-practices/SKILL.md +42 -0
  189. package/.qoder/skills/stripe-best-practices/references/billing.md +36 -0
  190. package/.qoder/skills/stripe-best-practices/references/connect.md +48 -0
  191. package/.qoder/skills/stripe-best-practices/references/payments.md +79 -0
  192. package/.qoder/skills/stripe-best-practices/references/security.md +109 -0
  193. package/.qoder/skills/stripe-best-practices/references/treasury.md +16 -0
  194. package/.qoder/skills/stripe-projects/SKILL.md +139 -0
  195. package/.qoder/skills/upgrade-stripe/SKILL.md +185 -0
  196. package/.qwen/skills/stripe-best-practices/SKILL.md +42 -0
  197. package/.qwen/skills/stripe-best-practices/references/billing.md +36 -0
  198. package/.qwen/skills/stripe-best-practices/references/connect.md +48 -0
  199. package/.qwen/skills/stripe-best-practices/references/payments.md +79 -0
  200. package/.qwen/skills/stripe-best-practices/references/security.md +109 -0
  201. package/.qwen/skills/stripe-best-practices/references/treasury.md +16 -0
  202. package/.qwen/skills/stripe-projects/SKILL.md +139 -0
  203. package/.qwen/skills/upgrade-stripe/SKILL.md +185 -0
  204. package/.roo/skills/stripe-best-practices/SKILL.md +42 -0
  205. package/.roo/skills/stripe-best-practices/references/billing.md +36 -0
  206. package/.roo/skills/stripe-best-practices/references/connect.md +48 -0
  207. package/.roo/skills/stripe-best-practices/references/payments.md +79 -0
  208. package/.roo/skills/stripe-best-practices/references/security.md +109 -0
  209. package/.roo/skills/stripe-best-practices/references/treasury.md +16 -0
  210. package/.roo/skills/stripe-projects/SKILL.md +139 -0
  211. package/.roo/skills/upgrade-stripe/SKILL.md +185 -0
  212. package/.trae/skills/stripe-best-practices/SKILL.md +42 -0
  213. package/.trae/skills/stripe-best-practices/references/billing.md +36 -0
  214. package/.trae/skills/stripe-best-practices/references/connect.md +48 -0
  215. package/.trae/skills/stripe-best-practices/references/payments.md +79 -0
  216. package/.trae/skills/stripe-best-practices/references/security.md +109 -0
  217. package/.trae/skills/stripe-best-practices/references/treasury.md +16 -0
  218. package/.trae/skills/stripe-projects/SKILL.md +139 -0
  219. package/.trae/skills/upgrade-stripe/SKILL.md +185 -0
  220. package/.vibe/skills/stripe-best-practices/SKILL.md +42 -0
  221. package/.vibe/skills/stripe-best-practices/references/billing.md +36 -0
  222. package/.vibe/skills/stripe-best-practices/references/connect.md +48 -0
  223. package/.vibe/skills/stripe-best-practices/references/payments.md +79 -0
  224. package/.vibe/skills/stripe-best-practices/references/security.md +109 -0
  225. package/.vibe/skills/stripe-best-practices/references/treasury.md +16 -0
  226. package/.vibe/skills/stripe-projects/SKILL.md +139 -0
  227. package/.vibe/skills/upgrade-stripe/SKILL.md +185 -0
  228. package/.windsurf/skills/stripe-best-practices/SKILL.md +42 -0
  229. package/.windsurf/skills/stripe-best-practices/references/billing.md +36 -0
  230. package/.windsurf/skills/stripe-best-practices/references/connect.md +48 -0
  231. package/.windsurf/skills/stripe-best-practices/references/payments.md +79 -0
  232. package/.windsurf/skills/stripe-best-practices/references/security.md +109 -0
  233. package/.windsurf/skills/stripe-best-practices/references/treasury.md +16 -0
  234. package/.windsurf/skills/stripe-projects/SKILL.md +139 -0
  235. package/.windsurf/skills/upgrade-stripe/SKILL.md +185 -0
  236. package/.zencoder/skills/stripe-best-practices/SKILL.md +42 -0
  237. package/.zencoder/skills/stripe-best-practices/references/billing.md +36 -0
  238. package/.zencoder/skills/stripe-best-practices/references/connect.md +48 -0
  239. package/.zencoder/skills/stripe-best-practices/references/payments.md +79 -0
  240. package/.zencoder/skills/stripe-best-practices/references/security.md +109 -0
  241. package/.zencoder/skills/stripe-best-practices/references/treasury.md +16 -0
  242. package/.zencoder/skills/stripe-projects/SKILL.md +139 -0
  243. package/.zencoder/skills/upgrade-stripe/SKILL.md +185 -0
  244. package/AUDIT.md +95 -0
  245. package/BLOCKERS.md +0 -0
  246. package/COOLIFY.md +51 -0
  247. package/MCP_SETUP.md +23 -0
  248. package/PRODUCTION_CHECKLIST.md +246 -0
  249. package/README.md +47 -0
  250. package/ROADMAP.md +91 -0
  251. package/docs/superpowers/plans/2026-05-11-availsync-frontend-sales-flow.md +2445 -0
  252. package/frontend/.env.example +2 -0
  253. package/frontend/app/admin/layout.tsx +13 -0
  254. package/frontend/app/admin/page.tsx +747 -0
  255. package/frontend/app/app/activity/page.tsx +257 -0
  256. package/frontend/app/app/agents/[agentId]/page.tsx +21 -0
  257. package/frontend/app/app/agents/page.tsx +1155 -0
  258. package/frontend/app/app/audit/page.tsx +225 -0
  259. package/frontend/app/app/availability/page.tsx +840 -0
  260. package/frontend/app/app/holds/page.tsx +262 -0
  261. package/frontend/app/app/layout.tsx +19 -0
  262. package/frontend/app/app/onboarding/page.tsx +10 -0
  263. package/frontend/app/app/onboarding/verify/page.tsx +309 -0
  264. package/frontend/app/app/page.tsx +508 -0
  265. package/frontend/app/app/settings/page.tsx +399 -0
  266. package/frontend/app/app/work/page.tsx +426 -0
  267. package/frontend/app/changelog/page.tsx +93 -0
  268. package/frontend/app/checkout/page.tsx +25 -0
  269. package/frontend/app/docs/api/page.tsx +157 -0
  270. package/frontend/app/docs/page.tsx +296 -0
  271. package/frontend/app/docs/pilot/page.tsx +127 -0
  272. package/frontend/app/docs/quickstart/page.tsx +318 -0
  273. package/frontend/app/docs/reliability/page.tsx +78 -0
  274. package/frontend/app/docs/sdk/node/page.tsx +166 -0
  275. package/frontend/app/globals.css +57 -0
  276. package/frontend/app/icon.png +0 -0
  277. package/frontend/app/layout.tsx +87 -0
  278. package/frontend/app/login/page.tsx +14 -0
  279. package/frontend/app/page.tsx +47 -0
  280. package/frontend/app/pricing/page.tsx +66 -0
  281. package/frontend/app/privacy/page.tsx +52 -0
  282. package/frontend/app/robots.ts +26 -0
  283. package/frontend/app/security/page.tsx +74 -0
  284. package/frontend/app/signup/page.tsx +14 -0
  285. package/frontend/app/sitemap.ts +14 -0
  286. package/frontend/app/terms/page.tsx +51 -0
  287. package/frontend/components/brand/AvailsyncLogo.tsx +56 -0
  288. package/frontend/components/checkout/CheckoutClient.tsx +100 -0
  289. package/frontend/components/dashboard/AgentForm.tsx +59 -0
  290. package/frontend/components/dashboard/AppShell.tsx +291 -0
  291. package/frontend/components/dashboard/AvailabilityChecker.tsx +117 -0
  292. package/frontend/components/dashboard/AvailabilityWindowForm.tsx +40 -0
  293. package/frontend/components/dashboard/HoldForm.tsx +133 -0
  294. package/frontend/components/dashboard/MetricCard.tsx +10 -0
  295. package/frontend/components/login/LoginForm.tsx +95 -0
  296. package/frontend/components/marketing/AgentCoordinationStory.tsx +1530 -0
  297. package/frontend/components/marketing/Faq.tsx +41 -0
  298. package/frontend/components/marketing/Hero.tsx +73 -0
  299. package/frontend/components/marketing/HowItWorks.tsx +28 -0
  300. package/frontend/components/marketing/ObserveModeTeaser.tsx +41 -0
  301. package/frontend/components/marketing/PricingTeaser.tsx +23 -0
  302. package/frontend/components/marketing/ProblemSolution.tsx +36 -0
  303. package/frontend/components/marketing/SiteFooter.tsx +59 -0
  304. package/frontend/components/marketing/SiteHeader.tsx +45 -0
  305. package/frontend/components/marketing/UseCases.tsx +27 -0
  306. package/frontend/components/onboarding/OnboardingClient.tsx +278 -0
  307. package/frontend/components/pricing/PricingCards.tsx +65 -0
  308. package/frontend/components/privacy/CookieConsent.tsx +230 -0
  309. package/frontend/components/privacy/CookieSettingsButton.tsx +15 -0
  310. package/frontend/components/seo/JsonLd.tsx +10 -0
  311. package/frontend/components/signup/SignupForm.tsx +55 -0
  312. package/frontend/components/ui/Badge.tsx +23 -0
  313. package/frontend/components/ui/Button.tsx +37 -0
  314. package/frontend/components/ui/Card.tsx +11 -0
  315. package/frontend/components/ui/ConfirmDialog.tsx +77 -0
  316. package/frontend/components/ui/EmptyState.tsx +24 -0
  317. package/frontend/components/ui/Input.tsx +14 -0
  318. package/frontend/components/ui/KeyDisplay.tsx +49 -0
  319. package/frontend/components/ui/Select.tsx +14 -0
  320. package/frontend/components/ui/Skeleton.tsx +24 -0
  321. package/frontend/components/ui/Tabs.tsx +19 -0
  322. package/frontend/components/ui/Textarea.tsx +14 -0
  323. package/frontend/components/ui/Toast.tsx +78 -0
  324. package/frontend/components/waitlist/WaitlistDialog.tsx +128 -0
  325. package/frontend/lib/api.ts +1282 -0
  326. package/frontend/lib/billing.ts +6 -0
  327. package/frontend/lib/cookieConsent.ts +113 -0
  328. package/frontend/lib/format.ts +16 -0
  329. package/frontend/lib/plans.ts +62 -0
  330. package/frontend/lib/schemas.ts +108 -0
  331. package/frontend/lib/seo.ts +376 -0
  332. package/frontend/lib/setupGuides.ts +630 -0
  333. package/frontend/lib/storage.ts +30 -0
  334. package/frontend/next-env.d.ts +6 -0
  335. package/frontend/next.config.mjs +13 -0
  336. package/frontend/package-lock.json +14409 -0
  337. package/frontend/package.json +41 -0
  338. package/frontend/playwright.config.ts +20 -0
  339. package/frontend/postcss.config.mjs +8 -0
  340. package/frontend/public/.gitkeep +0 -0
  341. package/frontend/public/brand/availsync-logo-board.png +0 -0
  342. package/frontend/public/brand/availsync-logo-dark.png +0 -0
  343. package/frontend/public/brand/availsync-mark-dark.png +0 -0
  344. package/frontend/public/brand/availsync-wordmark-dark.png +0 -0
  345. package/frontend/public/marketing/hero-agent-coordination.png +0 -0
  346. package/frontend/tailwind.config.ts +53 -0
  347. package/frontend/tests/smoke.spec.ts +89 -0
  348. package/frontend/tsconfig.json +23 -0
  349. package/jest.config.js +7 -0
  350. package/nixpacks.toml +11 -0
  351. package/package.json +53 -0
  352. package/packages/mcp/LICENSE +21 -0
  353. package/packages/mcp/README.md +60 -0
  354. package/packages/mcp/jest.config.cjs +8 -0
  355. package/packages/mcp/package.json +54 -0
  356. package/packages/mcp/src/helpers.ts +38 -0
  357. package/packages/mcp/src/index.test.ts +60 -0
  358. package/packages/mcp/src/index.ts +387 -0
  359. package/packages/mcp/tsconfig.json +20 -0
  360. package/packages/mcp/tsconfig.test.json +12 -0
  361. package/packages/node/LICENSE +21 -0
  362. package/packages/node/README.md +120 -0
  363. package/packages/node/jest.config.cjs +8 -0
  364. package/packages/node/package.json +46 -0
  365. package/packages/node/src/index.test.ts +360 -0
  366. package/packages/node/src/index.ts +402 -0
  367. package/packages/node/tsconfig.json +20 -0
  368. package/packages/node/tsconfig.test.json +12 -0
  369. package/plan.md +923 -0
  370. package/skills/stripe-best-practices/SKILL.md +42 -0
  371. package/skills/stripe-best-practices/references/billing.md +36 -0
  372. package/skills/stripe-best-practices/references/connect.md +48 -0
  373. package/skills/stripe-best-practices/references/payments.md +79 -0
  374. package/skills/stripe-best-practices/references/security.md +109 -0
  375. package/skills/stripe-best-practices/references/treasury.md +16 -0
  376. package/skills/stripe-projects/SKILL.md +139 -0
  377. package/skills/upgrade-stripe/SKILL.md +185 -0
  378. package/skills-lock.json +20 -0
  379. package/src/core/availability.ts +178 -0
  380. package/src/core/conflict.ts +209 -0
  381. package/src/core/work.ts +490 -0
  382. package/src/db/client.ts +17 -0
  383. package/src/db/migrations/001_init.sql +88 -0
  384. package/src/db/migrations/002_stripe.sql +2 -0
  385. package/src/db/migrations/003_workspace_auth.sql +19 -0
  386. package/src/db/migrations/004_agent_mcp_status.sql +2 -0
  387. package/src/db/migrations/005_hold_event_actor.sql +4 -0
  388. package/src/db/migrations/006_agent_activity.sql +35 -0
  389. package/src/db/migrations/007_work_coordination.sql +60 -0
  390. package/src/db/migrations/008_work_claim_leases.sql +20 -0
  391. package/src/db/migrations/009_billing_subscription_state.sql +23 -0
  392. package/src/db/migrations/010_agent_api_key_prefix.sql +10 -0
  393. package/src/db/migrations/011_org_verified_and_work_event_retention.sql +11 -0
  394. package/src/db/migrations/012_agent_enforcement_mode.sql +12 -0
  395. package/src/db/migrations/013_support_tickets.sql +21 -0
  396. package/src/db/migrations/014_paid_plan_waitlist.sql +23 -0
  397. package/src/db/migrations/015_agent_last_seen.sql +2 -0
  398. package/src/db/migrations.ts +164 -0
  399. package/src/db/run-migrations.ts +13 -0
  400. package/src/index.ts +183 -0
  401. package/src/lib/activity.ts +137 -0
  402. package/src/lib/apiKeys.ts +32 -0
  403. package/src/lib/appInfo.ts +26 -0
  404. package/src/lib/billingConfig.ts +3 -0
  405. package/src/lib/env.ts +75 -0
  406. package/src/lib/logger.ts +8 -0
  407. package/src/lib/plans.ts +204 -0
  408. package/src/mcp/server.js +5 -0
  409. package/src/mcp/server.ts +350 -0
  410. package/src/middleware/auth.ts +342 -0
  411. package/src/middleware/requestId.ts +16 -0
  412. package/src/routes/account.ts +168 -0
  413. package/src/routes/activity.ts +126 -0
  414. package/src/routes/admin.ts +514 -0
  415. package/src/routes/audit.ts +68 -0
  416. package/src/routes/auth.ts +203 -0
  417. package/src/routes/availability.ts +325 -0
  418. package/src/routes/billing.ts +406 -0
  419. package/src/routes/conflicts.ts +131 -0
  420. package/src/routes/holds.ts +437 -0
  421. package/src/routes/mcp.ts +57 -0
  422. package/src/routes/metrics.ts +39 -0
  423. package/src/routes/onboarding.ts +273 -0
  424. package/src/routes/orgs.ts +981 -0
  425. package/src/routes/preferences.ts +132 -0
  426. package/src/routes/session.ts +16 -0
  427. package/src/routes/support.ts +77 -0
  428. package/src/routes/value.ts +186 -0
  429. package/src/routes/waitlist.ts +63 -0
  430. package/src/routes/work.ts +1578 -0
  431. package/src/server.ts +36 -0
  432. package/src/types/index.ts +109 -0
  433. package/tests/integration/activity.route.test.ts +103 -0
  434. package/tests/integration/admin.route.test.ts +143 -0
  435. package/tests/integration/agent-keys.route.test.ts +237 -0
  436. package/tests/integration/availability.route.test.ts +125 -0
  437. package/tests/integration/billing.route.test.ts +393 -0
  438. package/tests/integration/conflicts.route.test.ts +131 -0
  439. package/tests/integration/flows.test.ts +154 -0
  440. package/tests/integration/helpers.ts +134 -0
  441. package/tests/integration/holds.route.test.ts +185 -0
  442. package/tests/integration/metrics.route.test.ts +100 -0
  443. package/tests/integration/onboarding.verify.route.test.ts +163 -0
  444. package/tests/integration/preferences.route.test.ts +53 -0
  445. package/tests/integration/session.route.test.ts +97 -0
  446. package/tests/integration/system.route.test.ts +92 -0
  447. package/tests/integration/value.route.test.ts +235 -0
  448. package/tests/integration/work.route.test.ts +745 -0
  449. package/tests/setup.ts +4 -0
  450. package/tests/smoke.sh +62 -0
  451. package/tests/unit/auth.test.ts +114 -0
  452. package/tests/unit/availability.test.ts +149 -0
  453. package/tests/unit/conflict.test.ts +118 -0
  454. package/tests/unit/env.test.ts +69 -0
  455. package/tests/unit/migrations.test.ts +135 -0
  456. package/tests/unit/request-id.test.ts +37 -0
  457. package/tmp-mobile-agents.png +0 -0
  458. package/tmp-next-mobile.err.log +10 -0
  459. package/tmp-next-mobile.log +5 -0
  460. package/tsconfig.json +16 -0
@@ -0,0 +1,139 @@
1
+ ---
2
+ name: stripe-projects
3
+ description: >-
4
+ Use when the user needs to provision a third-party service available on
5
+ https://projects.dev/providers; create or retrieve a provider/service API, key
6
+ or token; sign up for a service; or references projects.dev. Handles the full
7
+ flow from checking provider availability through project initialization, then
8
+ hands off to locally installed skills.
9
+ allowed-tools:
10
+ - Bash(stripe *)
11
+ - Bash(which stripe)
12
+ - Bash(brew install stripe/stripe-cli/stripe)
13
+ - Bash(brew upgrade stripe/stripe-cli/stripe)
14
+ - Bash(scoop bucket add stripe https://github.com/stripe/scoop-stripe-cli.git)
15
+ - Bash(scoop install stripe)
16
+ - Bash(sudo apt *)
17
+ - Bash(curl -s https://packages.stripe.dev/*)
18
+ - WebFetch
19
+ - Skill
20
+ - Read
21
+
22
+ ---
23
+
24
+ ## Stripe Projects — Service Provisioning
25
+
26
+ Provision third-party services and retrieve API keys/tokens using the Stripe Projects CLI plugin.
27
+
28
+ ## Workflow
29
+
30
+ ### Step 1: Verify Provider Availability
31
+
32
+ Before doing anything else, fetch `https://projects.dev/providers` and check whether the requested provider appears in the directory listing.
33
+
34
+ - If the provider **isn’t listed** on that page, inform the user that Stripe Projects **doesn’t support** this provider and stop.
35
+ - If the provider **is listed**, continue.
36
+
37
+ ### Step 2: Ensure Stripe CLI is Installed
38
+
39
+ Check if the Stripe CLI is available:
40
+
41
+ ```bash
42
+ which stripe && stripe --version
43
+ ```
44
+
45
+ If not installed, install based on the user’s platform:
46
+
47
+ **macOS (Homebrew):**
48
+
49
+ ```bash
50
+ brew install stripe/stripe-cli/stripe
51
+ ```
52
+
53
+ **Linux (Debian/Ubuntu via APT):**
54
+
55
+ ```bash
56
+ curl -s https://packages.stripe.dev/api/security/keypair/stripe-cli-gpg/public | gpg --dearmor | sudo tee /usr/share/keyrings/stripe.gpg > /dev/null
57
+ echo "deb [signed-by=/usr/share/keyrings/stripe.gpg] https://packages.stripe.dev/stripe-cli-debian-local stable main" | sudo tee -a /etc/apt/sources.list.d/stripe.list
58
+ sudo apt update
59
+ sudo apt install stripe
60
+ ```
61
+
62
+ **Windows (Scoop):**
63
+
64
+ ```bash
65
+ scoop bucket add stripe https://github.com/stripe/scoop-stripe-cli.git
66
+ scoop install stripe
67
+ ```
68
+
69
+ If installed, but the version is lower than 1.40.0, then upgrade based on the user’s platform:
70
+
71
+ **macOS (Homebrew):**
72
+
73
+ ```bash
74
+ brew upgrade stripe/stripe-cli/stripe
75
+ ```
76
+
77
+ or follow instructions at https://docs.stripe.com/stripe-cli/upgrade for other platforms.
78
+
79
+ ### Step 3: Ensure Stripe Projects Plugin is Installed and on Latest
80
+
81
+ ```bash
82
+ stripe plugin install projects
83
+ ```
84
+
85
+ ### Step 4: Search the Catalog
86
+
87
+ Confirm the specific provider is available and validates the specific service:
88
+
89
+ ```bash
90
+ stripe projects search <query> --json
91
+ ```
92
+
93
+ If `result_count` is 0, inform the user the service was not found in the catalog and stop.
94
+
95
+ ### Step 5: Initialize a Project
96
+
97
+ Check if a project is already initialized:
98
+
99
+ ```bash
100
+ stripe projects status --json
101
+ ```
102
+
103
+ If not initialized:
104
+
105
+ ```bash
106
+ stripe projects init --json --yes
107
+ ```
108
+
109
+ Note: If the user hasn’t logged in to the Stripe CLI, `projects init` will redirect them to a browser to either log in to an existing Stripe account or create a new Stripe Projects account. When this happens, prompt the user:
110
+
111
+ > ▎ Stripe Projects is redirecting you to the browser to authenticate. ▎ - If you have an existing Stripe account, log in with your credentials. ▎ - If you’re new, you can create a free Stripe Projects account in seconds. ▎ ▎ Complete the sign-in in your browser, then come back here and let me know when you’re done.
112
+
113
+ Wait for the user to confirm before proceeding.
114
+
115
+ ### Step 6: Hand Off to local stripe-projects-cli skill
116
+
117
+ Important: After the project is initialized, always use the `stripe-projects-cli` skill installed at `.claude/skills/stripe-projects-cli` in the local project directory (invoke via the Skill tool with name `stripe-projects-cli`) to continue the workflow for adding services. Print out the env variable names returned in a table, but never their values.
118
+
119
+ ### Step 7: Provider Recommendations
120
+
121
+ After a successful ‘add’ output, you must give the user helpful suggestions on other providers services available on Stripe Projects catalog that could be complementary (different primary category) or helpful - 3 to 5 suggestions. NEVER show fabricated commands to provision these services, only ones from the `stripe projects catalog` output if at all.
122
+
123
+ ## Non-Interactive Mode
124
+
125
+ Always use `--json --yes` flags to suppress interactive prompts. If a paid service requires confirmation, add `--confirm-paid-service`.
126
+
127
+ ## Working Agreement
128
+
129
+ - Don’t hand-edit CLI-managed files under `.projects` or the generated `.env` output.
130
+ - NEVER look at any files in the .projects directory. The CLI manages everything for you.
131
+ - NEVER look at the .env file. The CLI manages everything for you.
132
+
133
+ ## Error Handling
134
+
135
+ - Provider not listed at `projects.dev/providers` → stop early, tell the user it’s not supported
136
+ - Stripe CLI missing → install per platform instructions above
137
+ - Plugin missing → install via `stripe plugin install projects`
138
+ - `projects init` triggers browser login → prompt user, wait for confirmation
139
+ - Service not in catalog → inform user, suggest `stripe projects catalog --json` to browse alternatives
@@ -0,0 +1,185 @@
1
+ ---
2
+ name: upgrade-stripe
3
+ description: Guide for upgrading Stripe API versions and SDKs
4
+
5
+ ---
6
+
7
+ The latest Stripe API version is 2026-04-22.dahlia - use this version when upgrading unless the user specifies a different target version.
8
+
9
+ # Upgrading Stripe Versions
10
+
11
+ This guide covers upgrading Stripe API versions, server-side SDKs, Stripe.js, and mobile SDKs.
12
+
13
+ ## Understanding Stripe API Versioning
14
+
15
+ Stripe uses date-based API versions (e.g., `2026-04-22.dahlia`, `2025-08-27.basil`, `2024-12-18.acacia`). Your account’s API version determines request/response behavior.
16
+
17
+ ### Types of Changes
18
+
19
+ **Backward-Compatible Changes** (don’t require code updates):
20
+
21
+ - New API resources
22
+ - New optional request parameters
23
+ - New properties in existing responses
24
+ - Changes to opaque string lengths (e.g., object IDs)
25
+ - New webhook event types
26
+
27
+ **Breaking Changes** (require code updates):
28
+
29
+ - Field renames or removals
30
+ - Behavioral modifications
31
+ - Removed endpoints or parameters
32
+
33
+ Review the [API Changelog](https://docs.stripe.com/changelog.md) for all changes between versions.
34
+
35
+ ## Server-Side SDK Versioning
36
+
37
+ See [SDK Version Management](https://docs.stripe.com/sdks/set-version.md) for details.
38
+
39
+ ### Dynamically-Typed Languages (Ruby, Python, PHP, Node.js)
40
+
41
+ These SDKs offer flexible version control:
42
+
43
+ **Global Configuration:**
44
+
45
+ ```python
46
+ import stripe
47
+ stripe.api_version = '2026-04-22.dahlia'
48
+ ```
49
+
50
+ ```ruby
51
+ Stripe.api_version = '2026-04-22.dahlia'
52
+ ```
53
+
54
+ ```javascript
55
+ const stripe = require('stripe')('sk_test_xxx', {
56
+ apiVersion: '2026-04-22.dahlia'
57
+ });
58
+ ```
59
+
60
+ **Per-Request Override:**
61
+
62
+ ```python
63
+ stripe.Customer.create(
64
+ email="customer@example.com",
65
+ stripe_version='2026-04-22.dahlia'
66
+ )
67
+ ```
68
+
69
+ ### Strongly-Typed Languages (Java, Go, .NET)
70
+
71
+ These use a fixed API version matching the SDK release date. Don’t set a different API version for strongly-typed languages because response objects might not match the strong types in the SDK. Instead, update the SDK to target a new API version.
72
+
73
+ ### Best Practice
74
+
75
+ Always specify the API version you’re integrating against in your code instead of relying on your account’s default API version:
76
+
77
+ ```javascript
78
+ // Good: Explicit version
79
+ const stripe = require('stripe')('sk_test_xxx', {
80
+ apiVersion: '2026-04-22.dahlia'
81
+ });
82
+
83
+ // Avoid: Relying on account default
84
+ const stripe = require('stripe')('sk_test_xxx');
85
+ ```
86
+
87
+ ## Stripe.js Versioning
88
+
89
+ See [Stripe.js Versioning](https://docs.stripe.com/sdks/stripejs-versioning.md) for details.
90
+
91
+ Stripe.js uses an evergreen model with major releases (Acacia, Basil, Clover, Dahlia) on a biannual basis.
92
+
93
+ ### Loading Versioned Stripe.js
94
+
95
+ **Via Script Tag:**
96
+
97
+ ```html
98
+ <script src="https://js.stripe.com/dahlia/stripe.js"></script>
99
+ ```
100
+
101
+ **Via npm:**
102
+
103
+ ```bash
104
+ npm install @stripe/stripe-js
105
+ ```
106
+
107
+ Major npm versions correspond to specific Stripe.js versions.
108
+
109
+ ### API Version Pairing
110
+
111
+ Each Stripe.js version automatically pairs with its corresponding API version. For instance:
112
+
113
+ - Dahlia Stripe.js uses `2026-04-22.dahlia` API
114
+ - Acacia Stripe.js uses `2024-12-18.acacia` API
115
+
116
+ You can’t override this association.
117
+
118
+ ### Migrating from v3
119
+
120
+ 1. Identify your current API version in code
121
+ 1. Review the changelog for relevant changes
122
+ 1. Consider gradually updating your API version before switching Stripe.js versions
123
+ 1. Stripe continues supporting v3 indefinitely
124
+
125
+ ## Mobile SDK Versioning
126
+
127
+ See [Mobile SDK Versioning](https://docs.stripe.com/sdks/mobile-sdk-versioning.md) for details.
128
+
129
+ ### iOS and Android SDKs
130
+
131
+ Both platforms follow **semantic versioning** (MAJOR.MINOR.PATCH):
132
+
133
+ - **MAJOR**: Breaking API changes
134
+ - **MINOR**: New functionality (backward-compatible)
135
+ - **PATCH**: Bug fixes (backward-compatible)
136
+
137
+ New features and fixes release only on the latest major version. Upgrade regularly to access improvements.
138
+
139
+ ### React Native SDK
140
+
141
+ Uses a different model (0.x.y schema):
142
+
143
+ - **Minor version changes** (x): Breaking changes AND new features
144
+ - **Patch updates** (y): Critical bug fixes only
145
+
146
+ ### Backend Compatibility
147
+
148
+ All mobile SDKs work with any Stripe API version you use on your backend unless documentation specifies otherwise.
149
+
150
+ ## Upgrade Checklist
151
+
152
+ 1. Review the [API Changelog](https://docs.stripe.com/changelog.md) for changes between your current and target versions
153
+ 1. Check [Upgrades Guide](https://docs.stripe.com/upgrades.md) for migration guidance
154
+ 1. Update server-side SDK package version (e.g., `npm update stripe`, `pip install --upgrade stripe`)
155
+ 1. Update the `apiVersion` parameter in your Stripe client initialization
156
+ 1. Test your integration against the new API version using the `Stripe-Version` header
157
+ 1. Update webhook handlers to handle new event structures
158
+ 1. Update Stripe.js script tag or npm package version if needed
159
+ 1. Update mobile SDK versions in your package manager if needed
160
+ 1. Store Stripe object IDs in databases that accommodate up to 255 characters (case-sensitive collation)
161
+
162
+ ## Testing API Version Changes
163
+
164
+ Use the `Stripe-Version` header to test your code against a new version without changing your default:
165
+
166
+ ```bash
167
+ curl https://api.stripe.com/v1/customers \
168
+ -u sk_test_xxx: \
169
+ -H "Stripe-Version: 2026-04-22.dahlia"
170
+ ```
171
+
172
+ Or in code:
173
+
174
+ ```javascript
175
+ const stripe = require('stripe')('sk_test_xxx', {
176
+ apiVersion: '2026-04-22.dahlia' // Test with new version
177
+ });
178
+ ```
179
+
180
+ ## Important Notes
181
+
182
+ - Your webhook listener should handle unfamiliar event types gracefully
183
+ - Test webhooks with the new version structure before upgrading
184
+ - Breaking changes are tagged by affected product areas (Payments, Billing, Connect, etc.)
185
+ - Multiple API versions coexist simultaneously, enabling staged adoption
@@ -0,0 +1,14 @@
1
+ node_modules
2
+ frontend/node_modules
3
+ frontend/.next
4
+ frontend/test-results
5
+ frontend/playwright-report
6
+ dist
7
+ .git
8
+ .env
9
+ .env.local
10
+ frontend/.env.local
11
+ npm-debug.log*
12
+ *.log
13
+ %LOCALAPPDATA%
14
+ frontend/%LOCALAPPDATA%
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: stripe-best-practices
3
+ description: >-
4
+ Guides Stripe integration decisions — API selection (Checkout Sessions vs
5
+ PaymentIntents), Connect platform setup (Accounts v2, controller properties),
6
+ billing/subscriptions, Treasury financial accounts, integration surfaces
7
+ (Checkout, Payment Element), migrating from deprecated Stripe APIs, and
8
+ security best practices (API key management, restricted keys, webhooks,
9
+ OAuth). Use when building, modifying, or reviewing any Stripe integration —
10
+ including accepting payments, building marketplaces, integrating Stripe,
11
+ processing payments, setting up subscriptions, creating connected accounts, or
12
+ implementing secure key handling.
13
+
14
+ ---
15
+
16
+ Latest Stripe API version: **2026-04-22.dahlia**. Always use the latest API version and SDK unless the user specifies otherwise.
17
+
18
+ ## Integration routing
19
+
20
+ | Building… | Recommended API | Details |
21
+ | ------------------------------------------------------------------------ | ----------------------------------- | ------------------------ |
22
+ | One-time payments | Checkout Sessions | <references/payments.md> |
23
+ | Custom payment form with embedded UI | Checkout Sessions + Payment Element | <references/payments.md> |
24
+ | Saving a payment method for later | Setup Intents | <references/payments.md> |
25
+ | Connect platform or marketplace | Accounts v2 (`/v2/core/accounts`) | <references/connect.md> |
26
+ | Subscriptions or recurring billing | Billing APIs + Checkout Sessions | <references/billing.md> |
27
+ | Embedded financial accounts / banking | v2 Financial Accounts | <references/treasury.md> |
28
+ | Security (key management, RAKs, webhooks, OAuth, 2FA, Connect liability) | See security reference | <references/security.md> |
29
+
30
+ Read the relevant reference file before answering any integration question or writing code.
31
+
32
+ ## Critical rules
33
+
34
+ - *Never include `payment_method_types` in any Stripe API call*, with one exception: Terminal (in-person payments) integrations must pass `payment_method_types: ['card_present']` on the PaymentIntent. For all other integrations, omit this parameter entirely to enable dynamic payment methods, which enables you to configure payment method settings from the Dashboard and dynamically display the most relevant eligible payment methods to each customer to maximize conversion. To customize which payment methods you accept, use [`payment_method_configurations`](https://docs.stripe.com/payments/payment-method-configurations.md) or `excluded_payment_method_types` instead of `payment_method_types`.
35
+
36
+ ## Key documentation
37
+
38
+ When the user’s request does not clearly fit a single domain above, consult:
39
+
40
+ - [Integration Options](https://docs.stripe.com/payments/payment-methods/integration-options.md) — Start here when designing any integration.
41
+ - [API Tour](https://docs.stripe.com/payments-api/tour.md) — Overview of Stripe’s API surface.
42
+ - [Go Live Checklist](https://docs.stripe.com/get-started/checklist/go-live.md) — Review before launching.
@@ -0,0 +1,36 @@
1
+ # Billing / Subscriptions
2
+
3
+ ## Table of contents
4
+
5
+ - When to use Billing APIs
6
+ - Recommended frontend pairing
7
+ - Traps to avoid
8
+
9
+ ## When to use Billing APIs
10
+
11
+ If the user has a recurring revenue model (subscriptions, usage-based billing, seat-based pricing), use the Billing APIs to [plan their integration](https://docs.stripe.com/billing/subscriptions/design-an-integration.md) instead of a direct PaymentIntent integration.
12
+
13
+ Review the [Subscription Use Cases](https://docs.stripe.com/billing/subscriptions/use-cases.md) and [SaaS guide](https://docs.stripe.com/saas.md) to find the right pattern for the user’s pricing model.
14
+
15
+ ## Recommended frontend pairing
16
+
17
+ Combine Billing APIs with Stripe Checkout for the payment frontend. Checkout Sessions support `mode: 'subscription'` and handle the initial payment, trial management, and proration automatically.
18
+
19
+ For self-service subscription management (upgrades, downgrades, cancellation, payment method updates), recommend the [Customer Portal](https://docs.stripe.com/customer-management/integrate-customer-portal.md).
20
+
21
+ ## Traps to avoid
22
+
23
+ - Don’t build manual subscription renewal loops using raw PaymentIntents. Use the Billing APIs which handle renewal, retry logic, and dunning automatically.
24
+ - Don’t use the deprecated `plan` object. Use [Prices](https://docs.stripe.com/api/prices.md) instead.
25
+ - *Never pass `payment_method_types` when creating a subscription Checkout Session.* Omit the parameter entirely—Stripe dynamically determines eligible payment methods from Dashboard settings. Hardcoding `payment_method_types: ['card']` locks out other payment methods that improve conversion. See [dynamic payment methods](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md). Correct pattern:
26
+
27
+ ```ts
28
+ const session = await stripe.checkout.sessions.create({
29
+ mode: 'subscription',
30
+ // Do NOT include payment_method_types here — let Stripe handle it dynamically
31
+ line_items: [{ price: priceId, quantity: 1 }],
32
+ subscription_data: { trial_period_days: 14 },
33
+ success_url: `${url}/success?session_id={CHECKOUT_SESSION_ID}`,
34
+ cancel_url: `${url}/pricing`,
35
+ });
36
+ ```
@@ -0,0 +1,48 @@
1
+ # Connect / platforms
2
+
3
+ ## Table of contents
4
+
5
+ - Accounts v2 API
6
+ - Controller properties
7
+ - Charge types
8
+ - Integration guides
9
+
10
+ ## Accounts v2 API
11
+
12
+ For new Connect platforms, ALWAYS use the [Accounts v2 API](https://docs.stripe.com/connect/accounts-v2.md) (`POST /v2/core/accounts`). This is Stripe’s actively invested path and ensures long-term support.
13
+
14
+ **Traps to avoid:** Don’t use the legacy `type` parameter (`type: 'express'`, `type: 'custom'`, `type: 'standard'`) in `POST /v1/accounts` for new platforms unless the user has explicitly requested v1.
15
+
16
+ ## Controller properties
17
+
18
+ Configure connected accounts using `controller` properties instead of legacy account types:
19
+
20
+ | Property | Controls |
21
+ | ----------------------------------- | -------------------------------------------- |
22
+ | `controller.losses.payments` | Who is liable for negative balances |
23
+ | `controller.fees.payer` | Who pays Stripe fees |
24
+ | `controller.stripe_dashboard.type` | Dashboard access (`full`, `express`, `none`) |
25
+ | `controller.requirement_collection` | Who collects onboarding requirements |
26
+
27
+ Use `defaults.responsibilities`, `dashboard`, and `configuration` as described in [connected account configuration](https://docs.stripe.com/connect/accounts-v2/connected-account-configuration.md).
28
+
29
+ Always describe accounts in terms of their responsibility settings, dashboard access, and [capabilities](https://docs.stripe.com/connect/account-capabilities.md) to describe what connected accounts can do.
30
+
31
+ **Traps to avoid:** Don’t use the terms “Standard”, “Express”, or “Custom” as account types. These are legacy categories that bundle together responsibility, dashboard, and requirement decisions into opaque labels. Controller properties give explicit control over each dimension.
32
+
33
+ ## Charge types
34
+
35
+ Choose one charge type per integration — don’t mix them. For most platforms, start with destination charges:
36
+
37
+ - **Destination charges** — Use when the platform accepts liability for negative balances. Funds route to the connected account via `transfer_data.destination`.
38
+ - **Direct charges** — Use when the platform wants Stripe to take risk on the connected account. The charge is created on the connected account directly.
39
+
40
+ Use `on_behalf_of` to control the merchant of record, but only after reading [how charges work in Connect](https://docs.stripe.com/connect/charges.md).
41
+
42
+ **Traps to avoid:** Don’t use the Charges API for Connect fund flows — use PaymentIntents or Checkout Sessions with `transfer_data` or `on_behalf_of`. Don’t mix charge types within a single integration.
43
+
44
+ ## Integration guides
45
+
46
+ - [SaaS platforms and marketplaces guide](https://docs.stripe.com/connect/saas-platforms-and-marketplaces.md) — Choosing the right integration shape.
47
+ - [Interactive platform guide](https://docs.stripe.com/connect/interactive-platform-guide.md) — Step-by-step platform builder.
48
+ - [Design an integration](https://docs.stripe.com/connect/design-an-integration.md) — Detailed risk and responsibility decisions.
@@ -0,0 +1,79 @@
1
+ # Payments
2
+
3
+ ## Table of contents
4
+
5
+ - API hierarchy
6
+ - Integration surfaces
7
+ - Payment Element guidance
8
+ - Saving payment methods
9
+ - Dynamic payment methods
10
+ - Deprecated APIs and migration paths
11
+ - PCI compliance
12
+
13
+ ## API hierarchy
14
+
15
+ Use the [Checkout Sessions API](https://docs.stripe.com/api/checkout/sessions.md) (`checkout.sessions.create`) for on-session payments. It supports one-time payments and subscriptions and handles taxes, discounts, shipping, and adaptive pricing automatically.
16
+
17
+ Use the [PaymentIntents API](https://docs.stripe.com/payments/paymentintents/lifecycle.md) for off-session payments, or when the merchant needs to model checkout state independently and just create a charge.
18
+
19
+ **Integrations should only use Checkout Sessions, PaymentIntents, SetupIntents, or higher-level solutions (Invoicing, Payment Links, subscription APIs).**
20
+
21
+ ## Integration surfaces
22
+
23
+ Prioritize Stripe-hosted or embedded Checkout where possible. Use in this order of preference:
24
+
25
+ 1. **Payment Links** — No-code. Best for simple products.
26
+ 1. **Checkout** ([docs](https://docs.stripe.com/payments/checkout.md)) — Stripe-hosted or embedded form. Best for most web apps.
27
+ 1. **Payment Element** ([docs](https://docs.stripe.com/payments/payment-element.md)) — Embedded UI component for advanced customization.
28
+ - When using the Payment Element, back it with the Checkout Sessions API (via `ui_mode: 'custom'`) over a raw PaymentIntent where possible.
29
+
30
+ **Traps to avoid:** Don’t recommend the legacy Card Element or the Payment Element in card-only mode. If the user asks for the Card Element, advise them to [migrate to the Payment Element](https://docs.stripe.com/payments/payment-element/migration.md).
31
+
32
+ ## Payment Element guidance
33
+
34
+ For surcharging or inspecting card details before payment (e.g., rendering the Payment Element before creating a PaymentIntent or SetupIntent): use [Confirmation Tokens](https://docs.stripe.com/payments/finalize-payments-on-the-server.md). Don’t recommend `createPaymentMethod` or `createToken` from Stripe.js.
35
+
36
+ ## Saving payment methods
37
+
38
+ Use the [Setup Intents API](https://docs.stripe.com/api/setup_intents.md) to save a payment method for later use.
39
+
40
+ **Traps to avoid:** Don’t use the Sources API to save cards to customers. The Sources API is deprecated — Setup Intents is the correct approach.
41
+
42
+ ## Dynamic payment methods
43
+
44
+ *Never pass `payment_method_types` to any Stripe API call*, except for Terminal (in-person payments) integrations. Omitting this parameter enables [dynamic payment methods](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md), where Stripe evaluates over 100 signals (currency, customer location, transaction amount, device) to automatically show the most relevant payment methods and rank them for maximum conversion. Payment methods are managed from the [Dashboard](https://dashboard.stripe.com/settings/payment_methods) with no code changes required.
45
+
46
+ This applies to all integration patterns:
47
+
48
+ - `checkout.sessions.create`: omit `payment_method_types` entirely. Dynamic method selection is the default behavior.
49
+ - `paymentIntents.create`: omit `payment_method_types`. On API versions 2023-08-16+, dynamic methods are the default. On older versions, pass `automatic_payment_methods: { enabled: true }`.
50
+ - `setupIntents.create`: same as PaymentIntents above.
51
+ - `subscriptions.create`: omit `payment_settings.payment_method_types`. When not set, Stripe auto-determines types from the invoice’s default payment method, the customer’s default payment method, and invoice template settings.
52
+ - **Terminal** (`paymentIntents.create`): pass `payment_method_types: ['card_present']`. Required for all in-person payments. In Canada, also include `interac_present`: `['card_present', 'interac_present']`. This is the only valid use of `payment_method_types`.
53
+
54
+ See the [integration options guide](https://docs.stripe.com/payments/payment-methods/integration-options.md) for full details on dynamic versus manual configuration.
55
+
56
+ **Traps to avoid:**
57
+
58
+ - Never hardcode `payment_method_types: ['card']` even if the user only mentions credit cards. Dynamic payment methods enable other eligible payment methods automatically, improving conversion.
59
+ - If the user wants to customize which payment methods appear, use [`payment_method_configurations`](https://docs.stripe.com/payments/payment-method-configurations.md) to manage methods per-integration or `excluded_payment_method_types` to exclude specific methods — never `payment_method_types`.
60
+ - If the user has a custom frontend that renders UI for specific payment method types, ensure those methods are enabled in their [payment method settings](https://dashboard.stripe.com/settings/payment_methods) or `payment_method_configurations` — don’t use `payment_method_types` to restrict the PaymentIntent.
61
+
62
+ ## Deprecated APIs and migration paths
63
+
64
+ Never recommend the Charges API. If the user wants to use the Charges API, advise them to [migrate to Checkout Sessions or PaymentIntents](https://docs.stripe.com/payments/payment-intents/migration/charges.md).
65
+
66
+ Don’t call other deprecated or outdated API endpoints unless there is a specific need and absolutely no other way.
67
+
68
+ | API | Status | Use instead | Migration guide |
69
+ | ------------ | ---------- | ----------------------------------- | ---------------------------------------------------------------------------------------- |
70
+ | Charges API | Never use | Checkout Sessions or PaymentIntents | [Migration guide](https://docs.stripe.com/payments/payment-intents/migration/charges.md) |
71
+ | Sources API | Deprecated | Setup Intents | [Setup Intents docs](https://docs.stripe.com/api/setup_intents.md) |
72
+ | Tokens API | Outdated | Setup Intents or Checkout Sessions | — |
73
+ | Card Element | Legacy | Payment Element | [Migration guide](https://docs.stripe.com/payments/payment-element/migration.md) |
74
+
75
+ ## PCI compliance
76
+
77
+ If a PCI-compliant user asks about sending server-side raw PAN data, advise them that they may need to prove PCI compliance to access options like [payment_method_data](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_data).
78
+
79
+ For users migrating PAN data from another acquirer or payment processor, point them to [the PAN import process](https://docs.stripe.com/get-started/data-migrations/pan-import.md).
@@ -0,0 +1,109 @@
1
+ # Security best practices
2
+
3
+ ## Table of contents
4
+
5
+ - API keys
6
+ - Restricted API keys (RAKs)
7
+ - IP restrictions
8
+ - Incident response
9
+ - Webhook security
10
+ - Mobile and client-side integrations
11
+ - OAuth and CSRF protection
12
+ - Two-factor authentication
13
+ - Connect security
14
+ - SAML and SCIM
15
+
16
+ ## API keys
17
+
18
+ Never include keys in source code. You might find example code like `client = new Stripe("sk_...")` that are for illustration only. Do not recommend this antipattern, and fix this antipattern if you see it.
19
+
20
+ Store secret keys and restricted keys in a secrets vault (such as AWS Secrets Manager, HashiCorp Vault, or your platform’s equivalent), not in source code or environment variables committed to a repository. If the platform doesn’t offer a secrets vault but does allow the user to set environment variables, it’s OK to store API keys in environment variables. Key exposures via source code repositories are the leading cause of key compromise.
21
+
22
+ Always advise the user on best practices for handling secrets such as secret API keys or restricted API keys:
23
+
24
+ - Never share secret keys with third parties. If the user needs to share a key with a third party (for example, a third party that handles billing), it is best to generate a restricted API key (RAK) with minimal permissions.
25
+ - Rotate Stripe API keys when personnel with access to those keys depart.
26
+ - Read [best practices for managing secret API keys](https://docs.stripe.com/keys-best-practices.md).
27
+
28
+ Code must never log keys or include them in error messages or analytics. Remove those from logs if you find them.
29
+
30
+ Never build API endpoints or error pages that dump environment variables. In addition to Stripe API keys, the environment may have other secrets.
31
+
32
+ Use separate keys for separate environments (production, staging, QA). This limits the blast radius if any single key is compromised.
33
+
34
+ If the code is under version control, help the user set up a pre-commit hook to catch keys like `"sk_..."` and `"rk_..."` in source code.
35
+
36
+ **Traps to avoid:** Do not embed keys in client-side code, mobile apps, or any code that runs outside your own infrastructure. Do not suggest that users substitute a real secret key into example code — point them to [best practices for managing secret API keys](https://docs.stripe.com/keys-best-practices.md) instead.
37
+
38
+ ## Restricted API keys (RAKs)
39
+
40
+ Use [restricted API keys](https://docs.stripe.com/keys/restricted-api-keys.md) (prefix `rk_`) instead of secret keys (prefix `sk_`) wherever possible. RAKs have only the permissions you assign, so a compromised RAK can do far less damage than a compromised secret key.
41
+
42
+ Follow the principle of least privilege: give each RAK only the permissions it needs for its specific job and nothing more. Create a separate RAK for each service or use case.
43
+
44
+ Preferred migration approach:
45
+
46
+ 1. Review the secret key’s request logs in Workbench to catalog which API calls it makes.
47
+ 1. Create a RAK in test mode with matching permissions.
48
+ 1. Use the [Stripe CLI](https://docs.stripe.com/stripe-cli.md)’s `stripe logs tail` command to watch logs.
49
+ 1. Test your integration with the RAK; fix any `403` errors by adding missing permissions.
50
+ 1. Create the equivalent live-mode RAK and replace the secret key.
51
+ 1. Rotate or expire the old secret key once confident.
52
+
53
+ **Traps to avoid:** Do not default to recommending secret keys. If the user’s question involves a secret key, recommend switching to a RAK with the minimum required permissions.
54
+
55
+ ## IP restrictions
56
+
57
+ Encourage users to add an [IP allowlist](https://docs.stripe.com/keys.md#limit-api-secret-keys-ip-address) to every API key. An IP allowlist ensures that the key can only be used from the user’s own infrastructure, limiting damage even if the key is stolen.
58
+
59
+ Use separate IP allowlists for separate keys (for example, one allowlist for production, another for QA) so that compromising one key’s environment doesn’t expose others.
60
+
61
+ ## Incident response
62
+
63
+ If a key is exposed or compromised, follow [protecting against compromised API keys](https://support.stripe.com/questions/protecting-against-compromised-api-keys), which can be summarized as:
64
+
65
+ 1. **Roll the key immediately** — go to the [API keys page](https://dashboard.stripe.com/apikeys) and roll or delete the exposed key. Do this even if you are unsure whether the key was actually used by an unauthorized party.
66
+ 1. **Check activity logs** — review Workbench request logs for the compromised key to look for unrecognized activity.
67
+ 1. **Contact Stripe support** if you see activity you don’t recognize.
68
+
69
+ To prepare before an incident: practice rolling keys, audit source code for any committed keys, and use pre-commit hooks to prevent accidental key check-ins. See [protecting against compromised API keys](https://support.stripe.com/questions/protecting-against-compromised-api-keys).
70
+
71
+ ## Webhook security
72
+
73
+ Always [verify webhook signatures](https://docs.stripe.com/webhooks.md#verify-events) using Stripe’s webhook signing secret. Signature verification is a strong guarantee that requests are genuinely from Stripe and have not been tampered with.
74
+
75
+ For defense in depth, also [allowlist Stripe’s IP addresses](https://docs.stripe.com/ips.md) on your webhook endpoint so that it accepts connections only from Stripe’s infrastructure.
76
+
77
+ **Traps to avoid:** Do not process webhook events without verifying their signatures. Unverified webhooks can be spoofed.
78
+
79
+ ## Mobile and client-side integrations
80
+
81
+ Do not use production secret keys or RAKs in mobile apps or other client-side code. Client-side code can be extracted and keys decompiled.
82
+
83
+ For cases where a client must interact directly with Stripe, use [ephemeral keys](https://docs.stripe.com/issuing/elements.md#ephemeral-key-authentication). Ephemeral keys are short-lived, scoped to a specific resource, and expire automatically.
84
+
85
+ For most integrations, proxy Stripe API calls through your own backend server rather than calling Stripe directly from the client.
86
+
87
+ ## OAuth and CSRF protection
88
+
89
+ When implementing [Connect OAuth flows](https://docs.stripe.com/connect/oauth-reference.md), always use the `state` parameter to protect against CSRF attacks. Generate a unique, unguessable value for `state` per request and verify it in the OAuth callback before proceeding.
90
+
91
+ This applies to all Stripe OAuth surfaces: Connect, Link, and Stripe Apps.
92
+
93
+ ## Two-factor authentication
94
+
95
+ Recommend [passkeys or authenticator apps](https://docs.stripe.com/security.md) rather than SMS-based 2FA for Stripe Dashboard access. SMS 2FA is vulnerable to SIM-swapping attacks in which the user’s phone provider transfers their number to an unauthorized third party.
96
+
97
+ Users can audit which Dashboard team members are using weak 2FA and can require stronger authentication methods for their accounts.
98
+
99
+ ## Connect security
100
+
101
+ **Account type liability:** When using Connect, platform operators bear financial liability for fraud and disputes on Express and Custom connected accounts. Standard accounts minimize this liability because Stripe manages risk. Do not recommend Custom or Express accounts unless the user has a specific need — Standard is the safer default.
102
+
103
+ **Connect onboarding:** Use [Stripe-hosted onboarding](https://docs.stripe.com/connect/onboarding.md) rather than building a custom onboarding flow. Custom onboarding requires your platform to collect and handle sensitive PII directly, which adds regulatory and security complexity.
104
+
105
+ ## SAML and SCIM
106
+
107
+ For teams managing Dashboard access, recommend [SSO via SAML](https://docs.stripe.com/get-started/account/sso.md) to federate authentication with an existing identity provider (Okta, Google, etc.). SSO centralizes access control and simplifies offboarding.
108
+
109
+ [SCIM provisioning](https://docs.stripe.com/get-started/account/sso/scim.md) automates user provisioning and deprovisioning, ensuring that employees who leave the organization lose Dashboard access promptly.