KYB onboarding with Middesk and Erebor — business and person applicants, onboarding flows, and document upload.
Fee computation covering Grain fees, network fees, and net payout based on your take rate.
Payment records with currency, network and token detail, fee breakdown, and net payout.
Grain Pay checkout with QR code generation.
Dashboard login.
Fixed
Payment processing uses the specified amount rather than a hardcoded default.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Grain","colors":{"primary":"#4b4847","light":"#cdc2af","dark":"#4b4847"},"logo":{"light":"https://mintcdn.com/grain/NdV47NtMcDFGBfow/logo/light.svg?fit=max\u0026auto=format\u0026n=NdV47NtMcDFGBfow\u0026q=85\u0026s=deae0a3295bc245d29aca19c53ec202a","dark":"https://mintcdn.com/grain/NdV47NtMcDFGBfow/logo/dark.svg?fit=max\u0026auto=format\u0026n=NdV47NtMcDFGBfow\u0026q=85\u0026s=b348302a851894275d54aa34ef76efad"},"favicon":{"light":"https://mintcdn.com/grain/NdV47NtMcDFGBfow/favicon-light.svg?fit=max\u0026auto=format\u0026n=NdV47NtMcDFGBfow\u0026q=85\u0026s=5cc0c73a4d75f8b39d5b1ea053cd414a","dark":"https://mintcdn.com/grain/NdV47NtMcDFGBfow/favicon-dark.svg?fit=max\u0026auto=format\u0026n=NdV47NtMcDFGBfow\u0026q=85\u0026s=046bf4182908d69cda9157838ad16ee6"},"navbar":{"links":[{"href":"mailto:contact@grain.inc","label":"Support"}]},"footer":{"socials":{"x":"https://x.com/GrainPayments","linkedin":"https://www.linkedin.com/company/graininc"}},"contextual":{"options":[],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"grain","hasAudioNarration":false,"actualSubdomain":"grain","customDomains":["docs.grain.inc"],"gitSource":{"type":"github","owner":"grain-inc","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aa09c2d6987b2ebec308156","collectionId":"4cbdf98c-e7d8-4aab-a407-11faafa27996","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aa09c2d6987b2ebec308156"},"entitlements":{},"buildId":"6aa09c2d6987b2ebec308156","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"Grain Dashboard","count":13},{"language":"default","tag":"Payment SDK","count":10},{"language":"default","tag":"Configuring Settings","count":6},{"language":"default","tag":"Get Started","count":5},{"language":"default","tag":"Integration Guide","count":4},{"language":"default","tag":"How Grain Works","count":3},{"language":"default","tag":"Managing Transactions","count":3},{"language":"default","tag":"Your Business at a Glance","count":3},{"language":"default","tag":"API Reference","count":3},{"language":"default","tag":"Support \u0026 Resources","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#navigation-items>div.mt-6{border-top:1px solid #e5e5e5;padding-top:16px}.dark #navigation-items>div.mt-6{border-top-color:#333}"}],"page":{"pagePath":"support/release-notes","slug":"/support/release-notes","pageMetadata":{"title":"Release Notes","description":"Latest updates and changes to the Grain platform","icon":"clock-rotate-left","href":"/support/release-notes"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Latest updates and changes to the Grain platform\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,hr:`hr`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Tip}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Tip,{children:_jsxs(_components.p,{children:[`Subscribe to release notifications in your Dashboard under `,_jsx(_components.strong,{children:`Settings > Notifications`}),` to get notified when new versions are published.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`v0-12-1-september-4-2026`,children:`v0.12.1 --- September 4, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Payment links are now served from `,_jsx(_components.code,{children:`pay.grain.inc`}),` under your partner slug.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`v0-12-0-september-4-2026`,children:`v0.12.0 --- September 4, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Billing \u0026 Payouts`}),` settings section in the Dashboard.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Grain Pay overhaul — new payment-link URLs and reorganized checkout routes.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`v0-11-0-august-31-2026`,children:`v0.11.0 --- August 31, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Adverse media and PEP screening now run as part of KYB submission.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The KYB save button sits beside the next button, and summary details collapse fully.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Fixed`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Session churn that forced constant re-authentication, and the KYB 403 errors it caused.`}),`\n`,_jsx(_components.li,{children:`A failed database write no longer sends a KYB invite email anyway.`}),`\n`,_jsx(_components.li,{children:`A stale modified timestamp that silently blocked saving your KYB progress.`}),`\n`,_jsx(_components.li,{children:`Only document keys matching the selected document type are submitted.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`v0-10-0-–-v0-10-2-august-26–27-2026`,children:`v0.10.0 – v0.10.2 --- August 26–27, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Invoices section and sidebar navigation in the Dashboard.`}),`\n`,_jsx(_components.li,{children:`Transaction details now show the asset and network used.`}),`\n`,_jsx(_components.li,{children:`Email alerts when a transaction settles.`}),`\n`,_jsx(_components.li,{children:`KYB invite emails.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`KYB authenticates through your Dashboard login rather than an invite token, and autosaves when the page loads.`}),`\n`,_jsx(_components.li,{children:`Payment pages gained an Address Line 2 field, thousands separators in amounts, and address autocomplete limited to street addresses.`}),`\n`,_jsx(_components.li,{children:`Consistent money formatting across the Dashboard and payment pages.`}),`\n`,_jsx(_components.li,{children:`Unified toast notifications throughout KYB.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Fixed`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Over-eager Dashboard re-authentication.`}),`\n`,_jsx(_components.li,{children:`Payment notification email formatting.`}),`\n`,_jsx(_components.li,{children:`Dropdowns no longer clear your typed value when reopened.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`v0-9-0-–-v0-9-2-august-13–20-2026`,children:`v0.9.0 – v0.9.2 --- August 13–20, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Submit a transaction hash to speed up payment processing.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Monetary amounts are handled in minor units for exact precision.`}),`\n`,_jsx(_components.li,{children:`Payments now complete correctly even if the customer closes the page after the confirmation screen.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Changed`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Automatic Erebor onboarding removed from the Middesk webhook; the `,_jsx(_components.code,{children:`kyb_status`}),` field is gone.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`v0-8-0-–-v0-8-1-august-11–13-2026`,children:`v0.8.0 – v0.8.1 --- August 11–13, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Multi-factor authentication with preferred and fallback methods.`}),`\n`,_jsx(_components.li,{children:`Reset password and MFA code emails.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Changed`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`KYB submission can be finalized without waiting on Middesk success.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`v0-7-0-–-v0-7-1-july-28–29-2026`,children:`v0.7.0 – v0.7.1 --- July 28–29, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Blocked-account email template.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Coinbase Wallet now behaves like any other wallet at checkout.`}),`\n`,_jsx(_components.li,{children:`Payouts are generally available — the feature flag is removed.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Fixed`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A race between the funding webhook and payment submission that stranded auto-capture.`}),`\n`,_jsx(_components.li,{children:`Deleting a payment from the Dashboard.`}),`\n`,_jsx(_components.li,{children:`Restored the “This field is required” message in place of an unclear error.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`v0-6-0-july-23-2026`,children:`v0.6.0 --- July 23, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Notes on payments.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Manual payments are now called `,_jsx(_components.strong,{children:`invoices`}),` throughout.`]}),`\n`,_jsxs(_components.li,{children:[`A payment session in `,_jsx(_components.code,{children:`PENDING`}),` now displays as `,_jsx(_components.code,{children:`CREATED`}),` in the Dashboard.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Fixed`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Recent transactions and payout summary modules.`}),`\n`,_jsx(_components.li,{children:`Filter status names now match transaction labels.`}),`\n`,_jsx(_components.li,{children:`Address autocomplete and the country dropdown on the create payment form.`}),`\n`,_jsx(_components.li,{children:`Invoice bugs surfaced by the payments service refactor.`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/payment`}),` and `,_jsx(_components.code,{children:`/payments`}),` now redirect to the base URL.`]}),`\n`,_jsx(_components.li,{children:`Auth0 signup redirect loop and stale session handling.`}),`\n`,_jsx(_components.li,{children:`Cross-origin payment deletion.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`v0-5-0-–-v0-5-3-july-14–21-2026`,children:`v0.5.0 – v0.5.3 --- July 14–21, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Passkey and security key autoprompt at login.`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`dashboard_status`}),` on payments.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Fixed`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Payout summary and Dashboard statuses now window on the correct timestamp.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`v0-4-0-july-10-2026`,children:`v0.4.0 --- July 10, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Manual payments end to end — create and edit from the Dashboard, with a payment details panel and reusable templates.`}),`\n`,_jsxs(_components.li,{children:[`White-label payment page at `,_jsx(_components.code,{children:`/pay/[token]`}),`.`]}),`\n`,_jsx(_components.li,{children:`Payment link template endpoints.`}),`\n`,_jsx(_components.li,{children:`Per-partner checkout configuration resolved by slug.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Shared dropdown component across the Dashboard and payment pages.`}),`\n`,_jsx(_components.li,{children:`“Powered by Grain” mark on the payment page.`}),`\n`,_jsx(_components.li,{children:`Create Payment form UX.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`0-3-0-–-0-3-3-june-30-–-july-8-2026`,children:`0.3.0 – 0.3.3 --- June 30 – July 8, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Invite team members to your organization.`}),`\n`,_jsx(_components.li,{children:`Add and update your partner bank account.`}),`\n`,_jsx(_components.li,{children:`An organization is created automatically when a partner is created.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Auto-capture v2.`}),`\n`,_jsx(_components.li,{children:`Identity verification during KYB is now best-effort and no longer blocks finalizing your profile.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Fixed`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fee calculation now activates when a payment reaches `,_jsx(_components.code,{children:`SUCCEEDED`}),`.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`0-2-0-june-15-2026`,children:`0.2.0 --- June 15, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Dashboard overhaul, including a rebuilt transaction list.`}),`\n`,_jsx(_components.li,{children:`Plaid bank connection.`}),`\n`,_jsx(_components.li,{children:`Multi-organization support.`}),`\n`,_jsx(_components.li,{children:`Passkey authentication screens and custom login pages.`}),`\n`,_jsx(_components.li,{children:`KYB clickwrap consent recording.`}),`\n`,_jsx(_components.li,{children:`Solana and Coinbase Wallet support at checkout.`}),`\n`,_jsx(_components.li,{children:`Merchant-specific networks and tokens on the payment page.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Payment SDK separated into its own package and hardened over two QA rounds.`}),`\n`,_jsx(_components.li,{children:`KYB flow — address autocomplete, phone number input, and review page.`}),`\n`,_jsx(_components.li,{children:`PO boxes are flagged during address entry.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Security`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed merchant API key exposure in the Payment SDK.`}),`\n`,_jsx(_components.li,{children:`Added IP and VPN detection with sanctioned-country blocking at checkout.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`0-1-0-may-20-2026`,children:`0.1.0 --- May 20, 2026`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`KYB onboarding with Middesk and Erebor — business and person applicants, onboarding flows, and document upload.`}),`\n`,_jsx(_components.li,{children:`Fee computation covering Grain fees, network fees, and net payout based on your take rate.`}),`\n`,_jsx(_components.li,{children:`Payment records with currency, network and token detail, fee breakdown, and net payout.`}),`\n`,_jsx(_components.li,{children:`Grain Pay checkout with QR code generation.`}),`\n`,_jsx(_components.li,{children:`Dashboard login.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Fixed`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Payment processing uses the specified amount rather than a hardcoded default.`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Release Notes","description":"Latest updates and changes to the Grain platform","icon":"clock-rotate-left","href":"/support/release-notes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"v0.12.1 --- September 4, 2026","slug":"v0-12-1-september-4-2026","depth":3,"children":[]},{"title":"v0.12.0 --- September 4, 2026","slug":"v0-12-0-september-4-2026","depth":3,"children":[]},{"title":"v0.11.0 --- August 31, 2026","slug":"v0-11-0-august-31-2026","depth":3,"children":[]},{"title":"v0.10.0 – v0.10.2 --- August 26–27, 2026","slug":"v0-10-0-–-v0-10-2-august-26–27-2026","depth":3,"children":[]},{"title":"v0.9.0 – v0.9.2 --- August 13–20, 2026","slug":"v0-9-0-–-v0-9-2-august-13–20-2026","depth":3,"children":[]},{"title":"v0.8.0 – v0.8.1 --- August 11–13, 2026","slug":"v0-8-0-–-v0-8-1-august-11–13-2026","depth":3,"children":[]},{"title":"v0.7.0 – v0.7.1 --- July 28–29, 2026","slug":"v0-7-0-–-v0-7-1-july-28–29-2026","depth":3,"children":[]},{"title":"v0.6.0 --- July 23, 2026","slug":"v0-6-0-july-23-2026","depth":3,"children":[]},{"title":"v0.5.0 – v0.5.3 --- July 14–21, 2026","slug":"v0-5-0-–-v0-5-3-july-14–21-2026","depth":3,"children":[]},{"title":"v0.4.0 --- July 10, 2026","slug":"v0-4-0-july-10-2026","depth":3,"children":[]},{"title":"0.3.0 – 0.3.3 --- June 30 – July 8, 2026","slug":"0-3-0-–-0-3-3-june-30-–-july-8-2026","depth":3,"children":[]},{"title":"0.2.0 --- June 15, 2026","slug":"0-2-0-june-15-2026","depth":3,"children":[]},{"title":"0.1.0 --- May 20, 2026","slug":"0-1-0-may-20-2026","depth":3,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"grain","siteName":"Grain","title":"Release Notes - Grain","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-08T23:36:26.380Z","originalFileLocation":"support/release-notes.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=\"Latest updates and changes to the Grain platform\">\u003cmeta data-mint-head name=\"application-name\" content=\"Grain\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/grain/-w3cyG4E7elnZnVe/_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/grain/-w3cyG4E7elnZnVe/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/grain/-w3cyG4E7elnZnVe/_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/grain/-w3cyG4E7elnZnVe/_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/grain/-w3cyG4E7elnZnVe/_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/grain/-w3cyG4E7elnZnVe/_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/grain/-w3cyG4E7elnZnVe/_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/grain/-w3cyG4E7elnZnVe/_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/grain/-w3cyG4E7elnZnVe/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Release Notes - Grain\">\u003cmeta data-mint-head property=\"og:description\" content=\"Latest updates and changes to the Grain platform\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Grain\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.grain.inc/support/release-notes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://grain.mintlify.site/_mintlify/api/og/v2?division=Support+%26+Resources\u0026amp;title=Release+Notes\u0026amp;description=Latest+updates+and+changes+to+the+Grain+platform\u0026amp;theme=04029a7f16cda565d0454356\u0026amp;signature=8f46fbb16e645e1a939638a44b588b7d6e0f8c27043971fe12c1f4d262fb94a4\">\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=\"Release Notes - Grain\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Latest updates and changes to the Grain platform\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://grain.mintlify.site/_mintlify/api/og/v2?division=Support+%26+Resources\u0026amp;title=Release+Notes\u0026amp;description=Latest+updates+and+changes+to+the+Grain+platform\u0026amp;theme=04029a7f16cda565d0454356\u0026amp;signature=8f46fbb16e645e1a939638a44b588b7d6e0f8c27043971fe12c1f4d262fb94a4\">\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/grain/-w3cyG4E7elnZnVe/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Grain\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4b4847\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.grain.inc/support/release-notes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/support/release-notes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.grain.inc/#organization\",\"name\":\"Grain\",\"url\":\"https://docs.grain.inc\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/grain/NdV47NtMcDFGBfow/logo/light.svg?fit=max\u0026auto=format\u0026n=NdV47NtMcDFGBfow\u0026q=85\u0026s=deae0a3295bc245d29aca19c53ec202a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.grain.inc#website\",\"name\":\"Grain\",\"url\":\"https://docs.grain.inc\",\"publisher\":{\"@id\":\"https://docs.grain.inc/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.grain.inc/support/release-notes#webpage\",\"url\":\"https://docs.grain.inc/support/release-notes\",\"name\":\"Release Notes\",\"description\":\"Latest updates and changes to the Grain platform\",\"dateModified\":\"2026-09-08T23:36:26.380Z\",\"isPartOf\":{\"@id\":\"https://docs.grain.inc#website\"},\"breadcrumb\":{\"@id\":\"https://docs.grain.inc/support/release-notes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.grain.inc/support/release-notes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Support \u0026 Resources\",\"item\":\"https://docs.grain.inc/support/system-status\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Release Notes\",\"item\":\"https://docs.grain.inc/support/release-notes\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.grain.inc/support/release-notes#article\",\"headline\":\"Release Notes\",\"name\":\"Release Notes\",\"description\":\"Latest updates and changes to the Grain platform\",\"url\":\"https://docs.grain.inc/support/release-notes\",\"mainEntityOfPage\":{\"@id\":\"https://docs.grain.inc/support/release-notes#webpage\"},\"dateModified\":\"2026-09-08T23:36:26.380Z\",\"publisher\":{\"@id\":\"https://docs.grain.inc/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.grain.inc#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Grain\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Grain","nav":{"global":null,"groups":[{"group":"Home","pages":[{"title":"Grain Documentation","href":"/index"}]},{"group":"Get Started","icon":"rocket","pages":[{"group":"How Grain Works","icon":"circle-info","expanded":false,"pages":[{"title":"Overview","icon":"circle-info","href":"/how-grain-works/overview"},{"title":"Payment Lifecycle","icon":"arrows-spin","href":"/how-grain-works/payment-lifecycle"},{"title":"Settlement","icon":"building-columns","href":"/how-grain-works/settlement"}]},{"group":"Onboarding \u0026 KYB","icon":"clipboard-check","expanded":false,"pages":[{"title":"KYB Requirements","icon":"clipboard-check","href":"/get-started/onboarding/kyb-requirements"},{"title":"Submitting the KYB Application","icon":"browser","href":"/get-started/onboarding/kyb-dashboard"}]}]},{"group":"Payment SDK","icon":"code","pages":[{"group":"Getting Started","icon":"play","expanded":false,"pages":[{"title":"Overview","icon":"cube","href":"/payment-sdk/overview"},{"title":"Installation \u0026 Setup","icon":"download","href":"/payment-sdk/installation-setup"}]},{"group":"Integration Guide","icon":"puzzle-piece","expanded":false,"pages":[{"title":"Initialize the SDK","icon":"play","href":"/payment-sdk/integration-guide/initialize-sdk"},{"title":"Create a Payment Session","icon":"credit-card","href":"/payment-sdk/integration-guide/create-payment-session"},{"title":"Handle Payment Completion","icon":"circle-check","href":"/payment-sdk/integration-guide/handle-payment-completion"},{"title":"Handle Errors \u0026 Edge Cases","icon":"triangle-exclamation","href":"/payment-sdk/integration-guide/handle-errors"}]},{"group":"Testing","icon":"flask","expanded":false,"pages":[{"title":"Test in Sandbox","icon":"flask","href":"/payment-sdk/testing/test-in-sandbox"}]},{"group":"API Reference","icon":"square-terminal","expanded":false,"pages":[{"title":"Authentication","icon":"key","href":"/payment-sdk/api-reference/authentication"},{"title":"Endpoints","icon":"code","href":"/payment-sdk/api-reference/endpoints"},{"title":"Error Codes","icon":"circle-xmark","href":"/payment-sdk/api-reference/error-codes"}]}]},{"group":"Grain Dashboard","icon":"chart-line","pages":[{"title":"Overview \u0026 Navigation","icon":"layout-dashboard","href":"/partner-dashboard/overview"},{"group":"Your Business at a Glance","icon":"gauge","expanded":false,"pages":[{"title":"Key Metrics","icon":"chart-simple","href":"/partner-dashboard/guide/key-metrics"},{"title":"Filters and Performance","icon":"filter","href":"/partner-dashboard/guide/filters-and-performance"},{"title":"Payouts and Recent Transactions","icon":"money-bill-transfer","href":"/partner-dashboard/guide/payouts-and-recent-transactions"}]},{"group":"Managing Transactions","icon":"receipt","expanded":false,"pages":[{"title":"Viewing Transactions","icon":"list","href":"/partner-dashboard/guide/viewing-transactions"},{"title":"Filtering and Searching","icon":"magnifying-glass","href":"/partner-dashboard/guide/filtering-and-searching"},{"title":"Transaction Details","icon":"receipt","href":"/partner-dashboard/guide/transaction-details"}]},{"group":"Configuring Settings","icon":"gear","expanded":false,"pages":[{"title":"API and Webhooks","icon":"code","href":"/partner-dashboard/guide/api-and-webhooks"},{"title":"Payment Settings","icon":"coins","href":"/partner-dashboard/guide/payment-settings"},{"title":"Team Management","icon":"users","href":"/partner-dashboard/guide/team-management"},{"title":"Security","icon":"shield-halved","href":"/partner-dashboard/guide/security"},{"title":"Notifications","icon":"bell","href":"/partner-dashboard/guide/notifications"},{"title":"Billing and Payouts","icon":"building-columns","href":"/partner-dashboard/guide/billing-and-payouts"}]}]},{"group":"Support \u0026 Resources","icon":"life-ring","pages":[{"title":"System Status","description":"Check the current operational status of Grain services","icon":"signal","href":"/support/system-status"},{"title":"Release Notes","icon":"clock-rotate-left","href":"/support/release-notes"},{"title":"Complaints","description":"How to submit a complaint and what to expect","icon":"flag","href":"/support/complaints"}]}]},"basePath":"","title":"Release Notes - Grain","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":[],"chunks":[]}