# Zoneless > Open-source payments, checkout, subscriptions, and marketplace payouts using USDC on Solana. Use these canonical Markdown documents when integrating with Zoneless. ## Get started - [Quickstart](https://zoneless.com/docs/quickstart.md): Onboard a seller and send their first USDC payout with no code. - [API Quickstart](https://zoneless.com/docs/api-quickstart.md): Create a connected account, onboard a seller, and send their first USDC payout. - [Authentication](https://zoneless.com/docs/authentication.md): Authenticate Zoneless API requests with a secret API key. - [Migrate from Stripe](https://zoneless.com/docs/migrate-from-stripe.md): Move a Stripe Connect integration to Zoneless and pay sellers in USDC on Solana. - [Platform Dashboard](https://zoneless.com/docs/platform-dashboard.md): Manage connected accounts, seller balances, payouts, and developer settings from one dashboard. ## Marketplaces - [Connected Accounts](https://zoneless.com/docs/connected-accounts.md): If you use Zoneless, you can issue requests on behalf of your connected accounts. To act as a connected account, include a Zoneless-Account header containing the connected account ID, which starts with the acct_z_ prefix. - [Fund your platform wallet](https://zoneless.com/docs/fund-platform-wallet.md): Turn money from your sales into USDC on Solana, then add it to your Zoneless balance for seller payouts. - [Identity Verification (KYC)](https://zoneless.com/docs/identity-verification.md): Review suspicious accounts and require identity checks before sellers receive larger payouts. ## Self-hosting - [Self-hosting](https://zoneless.com/docs/self-hosting.md): Run the Zoneless API, dashboard, and database with Docker. - [Environment variables](https://zoneless.com/docs/environment-variables.md): Configure URLs, settlement, tenancy, and optional services for a self-hosted instance. - [Deployment](https://zoneless.com/docs/deployment.md): Deploy a self-hosted Zoneless instance to a Linux server with Docker. - [Local Development](https://zoneless.com/docs/local-development.md): Test and debug a local Zoneless instance running in Docker. ## Development - [Webhooks](https://zoneless.com/docs/webhooks.md): Listen for events from your Zoneless instance so your application can automatically react to payments, subscriptions, account changes, and payouts. - [Errors](https://zoneless.com/docs/errors.md): Zoneless uses conventional HTTP response codes to indicate the success or failure of an API request. Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error given the information provided (e.g., a required parameter was omitted, authentication failed, etc.). Codes in the 5xx range indicate an error with the Zoneless server. - [Idempotent Requests](https://zoneless.com/docs/idempotent-requests.md): The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. When creating or updating an object, use an idempotency key. Then, if a connection error occurs, you can safely repeat the request without risk of creating a second object or performing the update twice. - [Pagination](https://zoneless.com/docs/pagination.md): All top-level API resources have support for bulk fetches through "list" API methods. For example, you can list accounts, list transfers, and list payouts. These list API methods share a common structure and accept, at a minimum, the following three parameters: limit, starting_after, and ending_before. - [Expanding Responses](https://zoneless.com/docs/expanding-responses.md): Many objects allow you to request additional information as an expanded response by using the expand request parameter. This parameter is available on all API requests, and applies to the response of that request only. You can expand responses in two ways. ## Payments - [Payment Links quickstart](https://zoneless.com/docs/payment-link-quickstart.md): Accept your first stablecoin payment with no code. - [Checkout API quickstart](https://zoneless.com/docs/checkout-api-quickstart.md): Accept USDC payments from your app with Checkout and the Zoneless Node.js SDK. This guide uses Zoneless Cloud in live mode. ## Core Resources - [Balance](https://zoneless.com/docs/balance.md): This is an object representing your Zoneless balance. You can retrieve it to see the balance currently on your Zoneless account or a connected account. - [Balance Transactions](https://zoneless.com/docs/balance-transactions.md): Balance transactions represent funds moving through your Zoneless account. Zoneless creates them for every type of transaction that enters or leaves your Zoneless account balance. - [Charges](https://zoneless.com/docs/charges.md): The Charge object represents a single attempt to move money into your Zoneless account. PaymentIntent confirmation is the most common way to create Charges. Some legacy payment flows create Charges directly, which is not recommended for new integrations. - [Customers](https://zoneless.com/docs/customers.md): This object represents a customer of your business. Use it to create recurring subscriptions, save wallet and contact information, and track USDC payments that belong to the same customer. - [Events](https://zoneless.com/docs/events.md): Events allow you to track and react to activity in your Zoneless integration. When the state of another API resource changes, Zoneless creates an Event object that contains all the relevant information associated with that action, including the affected API resource. - [Payment Intents](https://zoneless.com/docs/payment-intents.md): A PaymentIntent guides you through collecting a payment from your customer. Create one PaymentIntent per order or customer session, then reference it later to inspect the history of payment attempts for that session. - [Payouts](https://zoneless.com/docs/payouts.md): A Payout object is created when you send funds from a connected account's Zoneless balance to their external Solana wallet. Payouts transfer USDC when you process them with .processAll() or .processBatch(), and typically complete within seconds due to Solana's fast finality. ## Balance - [The Balance object](https://zoneless.com/docs/balance/object.md): This is an object representing your Zoneless balance. You can retrieve it to see the balance currently on your Zoneless account or a connected account. - [Retrieve balance](https://zoneless.com/docs/balance/retrieve.md): Retrieves the current account balance, based on the authentication that was used to make the request. ## Balance Transactions - [The Balance Transaction object](https://zoneless.com/docs/balance-transactions/object.md): Balance transactions represent funds moving through your Zoneless account. Zoneless creates them for every type of transaction that enters or leaves your Zoneless account balance. - [Retrieve a balance transaction](https://zoneless.com/docs/balance-transactions/retrieve.md): Retrieves the balance transaction with the given ID. - [List all balance transactions](https://zoneless.com/docs/balance-transactions/list.md): Returns a list of transactions that have contributed to the Zoneless account balance (e.g., transfers, payouts, topups). The transactions are returned in sorted order, with the most recent transactions appearing first. ## Charges - [The Charge object](https://zoneless.com/docs/charges/object.md): The Charge object represents a single attempt to move money into your Zoneless account. PaymentIntent confirmation is the most common way to create Charges. Some legacy payment flows create Charges directly, which is not recommended for new integrations. - [Create a charge](https://zoneless.com/docs/charges/create.md): This method is no longer recommended—use the Payment Intents API to initiate a new payment instead. Confirmation of the PaymentIntent creates the Charge object used to request payment. - [Update a charge](https://zoneless.com/docs/charges/update.md): Updates the specified charge by setting the values of the parameters passed. Any parameters not provided will be left unchanged. - [Retrieve a charge](https://zoneless.com/docs/charges/retrieve.md): Retrieves the details of a charge that has previously been created. Supply the unique charge ID that was returned from your previous request, and Zoneless will return the corresponding charge information. The same information is returned when creating or refunding the charge. - [List all charges](https://zoneless.com/docs/charges/list.md): Returns a list of charges you've previously created. The charges are returned in sorted order, with the most recent charges appearing first. - [Capture a charge](https://zoneless.com/docs/charges/capture.md): Capture the payment of an existing, uncaptured charge that was created with the capture option set to false. Uncaptured payments expire a set number of days after they are created (7 by default), after which they are marked as refunded and capture attempts will fail. Don't use this method to capture a PaymentIntent-initiated charge—use Capture a PaymentIntent instead. ## Customers - [The Customer object](https://zoneless.com/docs/customers/object.md): This object represents a customer of your business. Use it to create recurring subscriptions, save wallet and contact information, and track USDC payments that belong to the same customer. - [Create a customer](https://zoneless.com/docs/customers/create.md): Creates a new customer object. - [Update a customer](https://zoneless.com/docs/customers/update.md): Updates the specified customer by setting the values of the parameters passed. Any parameters not provided are left unchanged. - [Retrieve a customer](https://zoneless.com/docs/customers/retrieve.md): Retrieves a Customer object. - [List all customers](https://zoneless.com/docs/customers/list.md): Returns a list of your customers. The customers are returned sorted by creation date, with the most recent customers appearing first. - [Delete a customer](https://zoneless.com/docs/customers/delete.md): Permanently deletes a customer. It cannot be undone. Also immediately cancels any active subscriptions on the customer. ## Events - [The Event object](https://zoneless.com/docs/events/object.md): Events allow you to track and react to activity in your Zoneless integration. When the state of another API resource changes, Zoneless creates an Event object that contains all the relevant information associated with that action, including the affected API resource. - [Retrieve an event](https://zoneless.com/docs/events/retrieve.md): Retrieves the details of an event if it was created in the last 30 days. Supply the unique identifier of the event, which you might have received in a webhook. - [List all events](https://zoneless.com/docs/events/list.md): List events, going back up to 30 days. Platforms receive events for themselves and all their connected accounts. - [Types of events](https://zoneless.com/docs/events/types.md): This is a list of all the event types currently supported by Zoneless. Events use the resource.event naming convention. ## Payment Intents - [The PaymentIntent object](https://zoneless.com/docs/payment-intents/object.md): A PaymentIntent guides you through collecting a payment from your customer. Create one PaymentIntent per order or customer session, then reference it later to inspect the history of payment attempts for that session. - [Create a PaymentIntent](https://zoneless.com/docs/payment-intents/create.md): Creates a PaymentIntent object. After creation, attach a payment method and confirm the PaymentIntent to continue the payment. When you later confirm successfully, Zoneless creates the Charge that records the USDC settlement. - [Update a PaymentIntent](https://zoneless.com/docs/payment-intents/update.md): Updates properties on a PaymentIntent object without confirming. Depending on which properties you update, you might need to confirm the PaymentIntent again—for example, updating `payment_method` always requires confirmation. - [Retrieve a PaymentIntent](https://zoneless.com/docs/payment-intents/retrieve.md): Retrieves the details of a PaymentIntent that has previously been created. You can retrieve a PaymentIntent client-side using a publishable key when the `client_secret` is provided. With a publishable key, only a subset of properties is returned. - [List all PaymentIntents](https://zoneless.com/docs/payment-intents/list.md): Returns a list of PaymentIntents. - [List amount details line items](https://zoneless.com/docs/payment-intents/amount-details-line-items.md): Lists all line items under `amount_details` for a given PaymentIntent. - [Cancel a PaymentIntent](https://zoneless.com/docs/payment-intents/cancel.md): You can cancel a PaymentIntent when its status is `requires_payment_method`, `requires_capture`, `requires_confirmation`, `requires_action`, or (in rare cases) `processing`. After cancellation, no additional charges are made and operations on the PaymentIntent fail with an error. For PaymentIntents in `requires_capture`, the remaining `amount_capturable` is automatically refunded. ## Payouts - [The Payout object](https://zoneless.com/docs/payouts/object.md): A Payout object is created when you send funds from a connected account's Zoneless balance to their external Solana wallet. Payouts transfer USDC when you process them with .processAll() or .processBatch(), and typically complete within seconds due to Solana's fast finality. - [Create a payout](https://zoneless.com/docs/payouts/create.md): To send funds from a connected account's balance to their Solana wallet, create a new payout object. The connected account's balance must cover the payout amount. If it doesn't, you receive an "Insufficient Funds" error. - [Update a payout](https://zoneless.com/docs/payouts/update.md): Updates the specified payout by setting the values of the parameters you pass. Parameters not provided are left unchanged. This request only accepts the metadata as arguments. - [Retrieve a payout](https://zoneless.com/docs/payouts/retrieve.md): Retrieves the details of an existing payout. Supply the unique payout ID from either a payout creation request or the payout list. Zoneless returns the corresponding payout information. - [List all payouts](https://zoneless.com/docs/payouts/list.md): Returns a list of existing payouts sent to connected account wallets. The payouts return in sorted order, with the most recently created payouts appearing first. - [Cancel a payout](https://zoneless.com/docs/payouts/cancel.md): You can cancel a previously created payout if its status is pending. Zoneless refunds the funds to the connected account's available balance. You cannot cancel payouts that have already been sent to the blockchain. - [Build a payout batch](https://zoneless.com/docs/payouts/build.md): Build an unsigned batch payout transaction for multiple pending payouts. This enables self-custodial payouts where your platform signs transactions locally using your Solana wallet. - [Broadcast a payout batch](https://zoneless.com/docs/payouts/broadcast.md): Broadcast a signed batch payout transaction to the Solana network. This endpoint submits your signed transaction and updates all included payouts to paid or failed status. ## Products - [Products](https://zoneless.com/docs/products.md): Products describe the specific goods or services you offer to your customers. For example, you might offer a Standard and Premium version of your goods or service; each version would be a separate Product. They can be used in conjunction with Prices to configure pricing in Payment Links, Checkout, and Subscriptions. - [The Product object](https://zoneless.com/docs/products/object.md): Products describe the specific goods or services you offer to your customers. For example, you might offer a Standard and Premium version of your goods or service; each version would be a separate Product. They can be used in conjunction with Prices to configure pricing in Payment Links, Checkout, and Subscriptions. - [Create a product](https://zoneless.com/docs/products/create.md): Creates a new product object. - [Update a product](https://zoneless.com/docs/products/update.md): Updates the specific product by setting the values of the parameters passed. Any parameters not provided will be left unchanged. - [Retrieve a product](https://zoneless.com/docs/products/retrieve.md): Retrieves the details of an existing product. Supply the unique product ID from either a product creation request or the product list. Zoneless returns the corresponding product information. - [List all products](https://zoneless.com/docs/products/list.md): Returns a list of products. The products are returned in sorted order, with the most recently created products appearing first. - [Delete a product](https://zoneless.com/docs/products/delete.md): Deletes an existing product. - [Prices](https://zoneless.com/docs/prices.md): Prices define the unit cost, currency, and (optional) billing cycle for both recurring and one-time purchases of products. Products help you track inventory or provisioning, and prices help you track payment terms. Different physical goods or levels of service should be represented by products, and pricing options should be represented by prices. This approach lets you change prices without having to change your provisioning scheme. For example, you might have a single “Pro pass" product that has prices for $10 USDC/month, $100 USDC/year, and $9 USDC once-off. ## Prices - [The Price object](https://zoneless.com/docs/prices/object.md): Prices define the unit cost, currency, and (optional) billing cycle for both recurring and one-time purchases of products. Products help you track inventory or provisioning, and prices help you track payment terms. Different physical goods or levels of service should be represented by products, and pricing options should be represented by prices. This approach lets you change prices without having to change your provisioning scheme. For example, you might have a single “Pro pass" product that has prices for $10 USDC/month, $100 USDC/year, and $9 USDC once-off. - [Create a price](https://zoneless.com/docs/prices/create.md): Creates a new price object. - [Update a price](https://zoneless.com/docs/prices/update.md): Updates the specific price by setting the values of the parameters passed. Any parameters not provided will be left unchanged. - [Retrieve a price](https://zoneless.com/docs/prices/retrieve.md): Retrieves the price with the given ID. - [List all prices](https://zoneless.com/docs/prices/list.md): Returns a list of prices. The prices are returned in sorted order, with the most recently created prices appearing first. ## Checkout - [Checkout Sessions](https://zoneless.com/docs/checkout-sessions.md): A Checkout Session represents your customer's session as they pay for one-time purchases or subscriptions through Checkout or Payment Links. Create a new Session each time your customer attempts to pay. Once payment succeeds, the Session references the Customer and either the successful PaymentIntent or an active Subscription. Create a Session on your server and redirect to its `url` to begin Checkout. ## Checkout Sessions - [The Checkout Session object](https://zoneless.com/docs/checkout-sessions/object.md): A Checkout Session represents your customer's session as they pay for one-time purchases or subscriptions through Checkout or Payment Links. Create a new Session each time your customer attempts to pay. Once payment succeeds, the Session references the Customer and either the successful PaymentIntent or an active Subscription. Create a Session on your server and redirect to its `url` to begin Checkout. - [Create a Checkout Session](https://zoneless.com/docs/checkout-sessions/create.md): Creates a Checkout Session object. - [Update a Checkout Session](https://zoneless.com/docs/checkout-sessions/update.md): Updates a Checkout Session object. You can only update Sessions that are in an `open` state. - [Retrieve a Checkout Session](https://zoneless.com/docs/checkout-sessions/retrieve.md): Retrieves a Checkout Session object. - [List all Checkout Sessions](https://zoneless.com/docs/checkout-sessions/list.md): Returns a list of Checkout Sessions. - [Expire a Checkout Session](https://zoneless.com/docs/checkout-sessions/expire.md): A Checkout Session can be expired when it is in `open` status. Once a Session is expired, it can no longer be used to complete a payment and customers can no longer access the Checkout page for it. Expiring a Session has the same effect as it expiring naturally, and any customer that attempts to pay is redirected to a page that says the Session is expired. - [Retrieve a Checkout Session's line items](https://zoneless.com/docs/checkout-sessions/list-line-items.md): When retrieving a Checkout Session, there is an option to expand the `line_items` field. This lets you retrieve the list of line items directly without expanding the whole Session. ## Payment Links - [Payment Links](https://zoneless.com/docs/payment-links.md): A payment link is a shareable URL that takes your customers to a hosted payment page. A payment link can be shared and used multiple times. When a customer opens a payment link, Zoneless creates a new [Checkout Session](#checkout-sessions-object) to render the payment page. Use [Checkout Session events](#checkout-sessions-object-events) such as `checkout.session.completed` to track payments made through payment links. - [The Payment Link object](https://zoneless.com/docs/payment-links/object.md): A payment link is a shareable URL that takes your customers to a hosted payment page. A payment link can be shared and used multiple times. When a customer opens a payment link, Zoneless creates a new [Checkout Session](#checkout-sessions-object) to render the payment page. Use [Checkout Session events](#checkout-sessions-object-events) such as `checkout.session.completed` to track payments made through payment links. - [Create a payment link](https://zoneless.com/docs/payment-links/create.md): Creates a payment link. - [Update a payment link](https://zoneless.com/docs/payment-links/update.md): Updates a payment link. - [Retrieve a payment link](https://zoneless.com/docs/payment-links/retrieve.md): Retrieve a payment link. - [Retrieve a payment link's line items](https://zoneless.com/docs/payment-links/list-line-items.md): When retrieving a payment link, there is an includable `line_items` property containing the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of line items. - [List all payment links](https://zoneless.com/docs/payment-links/list.md): Returns a list of your payment links. ## Billing - [Billing Helpers](https://zoneless.com/docs/billing.md): Billing helpers process due subscription renewals and invoice retries for your platform. Recurring USDC collection is not a shared Stripe-like backend job you ignore — on Zoneless Cloud the operator runs billing on a schedule; self-hosters trigger it themselves (or enable the optional in-process monitor). - [Invoices](https://zoneless.com/docs/invoices.md): Invoices are statements of amounts owed by a customer. They are generated one-off, or periodically from a subscription. They contain invoice items and proration adjustments that may be caused by subscription upgrades or downgrades. Invoices settle in USDC on Solana. If your invoice is configured for automatic collection, Zoneless finalizes the invoice and attempts payment after webhooks are delivered. If configured for send_invoice, Zoneless emails the customer with a link to the hosted invoice page. Any customer credit balance is applied before determining the amount due. - [Invoice Items](https://zoneless.com/docs/invoiceitems.md): Invoice Items represent the component lines of an invoice. When you create an invoice item with an invoice field, it is attached to the specified invoice and included as an invoice line item within invoice.lines. Invoice items can be created before you are ready to send the invoice, which is useful with subscriptions when you want to add a charge or credit that settles with the customer's wallet at the end of a billing cycle. - [Subscriptions](https://zoneless.com/docs/subscriptions.md): Subscriptions allow you to charge a customer on a recurring basis in USDC. ## Billing Helpers - [The Billing run object](https://zoneless.com/docs/billing/object.md): Billing helpers process due subscription renewals and invoice retries for your platform. Recurring USDC collection is not a shared Stripe-like backend job you ignore — on Zoneless Cloud the operator runs billing on a schedule; self-hosters trigger it themselves (or enable the optional in-process monitor). - [Run billing for your platform](https://zoneless.com/docs/billing/run_for_platform.md): Runs one billing pass for the authenticated platform: retries open subscription invoices that are due for another attempt, then creates and collects cycle invoices for subscriptions whose current period has ended. - [Retrieve monitor status](https://zoneless.com/docs/billing/monitor-status.md): Returns whether the optional in-process billing monitor is enabled and running on this API instance, along with its poll interval. ## Invoices - [The Invoice object](https://zoneless.com/docs/invoices/object.md): Invoices are statements of amounts owed by a customer. They are generated one-off, or periodically from a subscription. They contain invoice items and proration adjustments that may be caused by subscription upgrades or downgrades. Invoices settle in USDC on Solana. If your invoice is configured for automatic collection, Zoneless finalizes the invoice and attempts payment after webhooks are delivered. If configured for send_invoice, Zoneless emails the customer with a link to the hosted invoice page. Any customer credit balance is applied before determining the amount due. - [Create an invoice](https://zoneless.com/docs/invoices/create.md): This endpoint creates a draft invoice for a given customer. The invoice remains a draft until you finalize the invoice, which allows you to pay or send the invoice to your customers. - [Update an invoice](https://zoneless.com/docs/invoices/update.md): Draft invoices are fully editable. Once an invoice is finalized, monetary values, as well as collection_method, become uneditable. If you would like to stop Zoneless from automatically finalizing, reattempting payments on, or sending reminders for invoices, pass auto_advance=false. - [Retrieve an invoice](https://zoneless.com/docs/invoices/retrieve.md): Retrieves the invoice with the given ID. - [List all invoices](https://zoneless.com/docs/invoices/list.md): You can list all invoices, or list the invoices for a specific customer. The invoices are returned sorted by creation date, with the most recently created invoices appearing first. - [Delete a draft invoice](https://zoneless.com/docs/invoices/delete.md): Permanently deletes a one-off invoice draft. This cannot be undone. Attempts to delete invoices that are no longer in a draft state will fail; once an invoice has been finalized or if an invoice is for a subscription, it must be voided. - [Finalize an invoice](https://zoneless.com/docs/invoices/finalize.md): Zoneless automatically finalizes drafts before sending and attempting payment on invoices. However, if you’d like to finalize a draft invoice manually, you can do so using this method. - [Mark an invoice as uncollectible](https://zoneless.com/docs/invoices/mark_uncollectible.md): Marking an invoice as uncollectible is useful for keeping track of bad debts that can be written off for accounting purposes. - [Pay an invoice](https://zoneless.com/docs/invoices/pay.md): Zoneless automatically creates and then attempts to collect payment on invoices for customers on subscriptions according to your billing settings. However, if you’d like to attempt payment on an invoice outside of the normal collection schedule, you can do so with this endpoint. Collection settles in USDC on Solana. - [Void an invoice](https://zoneless.com/docs/invoices/void.md): Mark a finalized invoice as void. This cannot be undone. Voiding an invoice is similar to deletion, however it only applies to finalized invoices and maintains a papertrail where the invoice can still be found. Consult with local regulations to determine whether and how an invoice might be amended, canceled, or voided in the jurisdiction you’re doing business in. You might need to issue another invoice or a credit note instead. ## Invoice Items - [The Invoice Item object](https://zoneless.com/docs/invoiceitems/object.md): Invoice Items represent the component lines of an invoice. When you create an invoice item with an invoice field, it is attached to the specified invoice and included as an invoice line item within invoice.lines. Invoice items can be created before you are ready to send the invoice, which is useful with subscriptions when you want to add a charge or credit that settles with the customer's wallet at the end of a billing cycle. - [Create an invoice item](https://zoneless.com/docs/invoiceitems/create.md): Creates an item to be added to a draft invoice (up to 250 items per invoice). If no invoice is specified, the item will be on the next invoice created for the customer specified. - [Update an invoice item](https://zoneless.com/docs/invoiceitems/update.md): Updates the amount or description of an invoice item on an upcoming invoice. Updating an invoice item is only possible before the invoice it's attached to is closed. - [Retrieve an invoice item](https://zoneless.com/docs/invoiceitems/retrieve.md): Retrieves the invoice item with the given ID. - [List all invoice items](https://zoneless.com/docs/invoiceitems/list.md): Returns a list of your invoice items. Invoice items are returned sorted by creation date, with the most recently created invoice items appearing first. - [Delete an invoice item](https://zoneless.com/docs/invoiceitems/delete.md): Deletes an invoice item, removing it from an invoice. Deleting invoice items is only possible when they're not attached to invoices, or if they're attached to a draft invoice. ## Subscriptions - [The Subscription object](https://zoneless.com/docs/subscriptions/object.md): Subscriptions allow you to charge a customer on a recurring basis in USDC. - [Create a subscription](https://zoneless.com/docs/subscriptions/create.md): Creates a new subscription on an existing customer. Each customer can have up to 500 active or scheduled subscriptions. When you create a subscription with collection_method=charge_automatically, the first invoice is finalized as part of the request. The payment_behavior parameter controls what happens if that initial payment fails. - [Update a subscription](https://zoneless.com/docs/subscriptions/update.md): Updates an existing subscription to match the specified parameters. When changing prices or quantities, prorations are created by default. For example, if a customer upgrades from a 100 USDC plan to a 200 USDC plan mid-cycle, Zoneless creates a proration for the unused time on the old price and charges for the remaining time on the new price. Use proration_behavior to control or disable this. - [Retrieve a subscription](https://zoneless.com/docs/subscriptions/retrieve.md): Retrieves the subscription with the given ID. - [List all subscriptions](https://zoneless.com/docs/subscriptions/list.md): By default, returns a list of subscriptions that have not been canceled. To list canceled subscriptions, specify status=canceled. - [Cancel a subscription](https://zoneless.com/docs/subscriptions/cancel.md): Cancels a customer's subscription immediately. The customer will not be charged again for the subscription. After cancellation, any outstanding invoices remain open and must be paid separately. - [Migrate a subscription](https://zoneless.com/docs/subscriptions/migrate.md): Upgrade a subscription's billing mode from classic to flexible. - [Resume a subscription](https://zoneless.com/docs/subscriptions/resume.md): Resumes a paused subscription. Only subscriptions with collection_method=charge_automatically can be resumed. The subscription must be in the paused status (typically after a trial ends without a payment method). ## Connect - [Accounts](https://zoneless.com/docs/accounts.md): This is an object representing a Zoneless account. You can retrieve it to see properties on the account like its current requirements or if the account is enabled to receive transfers and USDC payouts to their Solana wallet. - [Login Links](https://zoneless.com/docs/login-links.md): Login Links are single-use URLs that take an Express account directly to the login page for their Zoneless dashboard. A Login Link differs from an Account Link in that it takes the user directly to their Express dashboard rather than through an onboarding flow. - [Account Links](https://zoneless.com/docs/account-links.md): Account Links are the means by which a platform grants a connected account permission to access Zoneless-hosted applications, such as the onboarding flow. - [External Wallets](https://zoneless.com/docs/external-wallets.md): External wallets are Solana wallet addresses associated with a connected account for receiving USDC payouts. They are the crypto equivalent of bank accounts in traditional payment systems. - [Persons](https://zoneless.com/docs/persons.md): This is an object representing a person associated with a Zoneless account. Persons are used to collect information about individuals associated with the account's legal entity, such as owners, directors, executives, and representatives. - [Top-ups](https://zoneless.com/docs/topups.md): To top up your Zoneless balance in live mode, send USDC to your platform's Solana wallet. Once the funds are detected, a top-up object is created and your balance is increased. In test mode, add simulated USDC from the dashboard instead. You can retrieve individual top-ups, as well as list all top-ups. Top-ups are identified by a unique, random ID. - [Transfers](https://zoneless.com/docs/transfers.md): A Transfer object is created when you move funds between Zoneless accounts as part of Connect. Transfers allow platforms to send funds to their connected accounts. ## Accounts - [The Account object](https://zoneless.com/docs/accounts/object.md): This is an object representing a Zoneless account. You can retrieve it to see properties on the account like its current requirements or if the account is enabled to receive transfers and USDC payouts to their Solana wallet. - [Create an account](https://zoneless.com/docs/accounts/create.md): With Zoneless, you can create accounts for your users. To do this, you'll first need to register your platform. - [Update an account](https://zoneless.com/docs/accounts/update.md): Updates a connected account by setting the values of the parameters passed. Any parameters not provided are left unchanged. - [Retrieve account](https://zoneless.com/docs/accounts/retrieve.md): Retrieves the details of an account. - [List all connected accounts](https://zoneless.com/docs/accounts/list.md): Returns a list of accounts connected to your platform via Zoneless. This endpoint requires a platform API key. - [Delete an account](https://zoneless.com/docs/accounts/delete.md): With Zoneless, you can delete accounts you manage. - [Reject an account](https://zoneless.com/docs/accounts/reject.md): With Zoneless, you can reject accounts that you have flagged as suspicious. Only accounts where your platform is liable for negative account balances, which includes Custom and Express accounts, can be rejected. Accounts can only be rejected after all balances are zero. ## Login Links - [The Login Link object](https://zoneless.com/docs/login-links/object.md): Login Links are single-use URLs that take an Express account directly to the login page for their Zoneless dashboard. A Login Link differs from an Account Link in that it takes the user directly to their Express dashboard rather than through an onboarding flow. - [Create a login link](https://zoneless.com/docs/login-links/create.md): Creates a login link for a connected account to access the Express Dashboard. ## Account Links - [The Account Link object](https://zoneless.com/docs/account-links/object.md): Account Links are the means by which a platform grants a connected account permission to access Zoneless-hosted applications, such as the onboarding flow. - [Create an account link](https://zoneless.com/docs/account-links/create.md): Creates an AccountLink object that includes a single-use Zoneless URL that the platform can redirect their user to in order to take them through the Connect Onboarding flow. ## External Wallets - [The External Wallet object](https://zoneless.com/docs/external-wallets/object.md): External wallets are Solana wallet addresses associated with a connected account for receiving USDC payouts. They are the crypto equivalent of bank accounts in traditional payment systems. - [Create an external wallet](https://zoneless.com/docs/external-wallets/create.md): Creates a new external wallet for a connected account. The wallet address is screened against sanctions lists before being added. - [Update an external wallet](https://zoneless.com/docs/external-wallets/update.md): Updates the metadata, account holder name, account holder type, and default status of an external wallet. The wallet address cannot be changed—delete and create a new wallet instead. - [Retrieve an external wallet](https://zoneless.com/docs/external-wallets/retrieve.md): Retrieves the details of an existing external wallet. Supply the unique wallet ID and the account ID it belongs to. - [List all external wallets](https://zoneless.com/docs/external-wallets/list.md): Returns a list of external wallets for a given connected account. The wallets are returned in sorted order, with the most recently created wallets appearing first. - [Delete an external wallet](https://zoneless.com/docs/external-wallets/delete.md): Deletes an external wallet from a connected account. Once deleted, the wallet can no longer receive payouts. ## Persons - [The Person object](https://zoneless.com/docs/persons/object.md): This is an object representing a person associated with a Zoneless account. Persons are used to collect information about individuals associated with the account's legal entity, such as owners, directors, executives, and representatives. - [Create a person](https://zoneless.com/docs/persons/create.md): Creates a new person associated with an account. You can create persons to represent owners, directors, executives, or representatives of a business. - [Update a person](https://zoneless.com/docs/persons/update.md): Updates an existing person. Any parameters not provided are left unchanged. - [Retrieve a person](https://zoneless.com/docs/persons/retrieve.md): Retrieves an existing person. - [List all persons](https://zoneless.com/docs/persons/list.md): Returns a list of people associated with the account's legal entity. The people are returned sorted by creation date, with the most recent people appearing first. - [Delete a person](https://zoneless.com/docs/persons/delete.md): Deletes an existing person's relationship to the account's legal entity. ## Top-ups - [The Top-up object](https://zoneless.com/docs/topups/object.md): To top up your Zoneless balance in live mode, send USDC to your platform's Solana wallet. Once the funds are detected, a top-up object is created and your balance is increased. In test mode, add simulated USDC from the dashboard instead. You can retrieve individual top-ups, as well as list all top-ups. Top-ups are identified by a unique, random ID. - [Create a top-up](https://zoneless.com/docs/topups/create.md): Creates a new top-up record in pending status. In practice, most top-ups are created automatically when the check-deposits endpoint detects incoming USDC transfers to your platform wallet. - [Update a top-up](https://zoneless.com/docs/topups/update.md): Updates the metadata of a top-up. Other top-up details are not editable by design. - [Retrieve a top-up](https://zoneless.com/docs/topups/retrieve.md): Retrieves the details of a top-up that has previously been created. Supply the unique top-up ID that was returned from your previous request, and Zoneless will return the corresponding top-up information. - [List all top-ups](https://zoneless.com/docs/topups/list.md): Returns a list of top-ups. The top-ups are returned in sorted order, with the most recently created top-ups appearing first. - [Cancel a top-up](https://zoneless.com/docs/topups/cancel.md): Cancels a top-up. Only pending top-ups can be canceled. - [Check for deposits](https://zoneless.com/docs/topups/check-deposits.md): Checks the Solana blockchain for new incoming USDC deposits to your platform wallet. This endpoint queries the blockchain for recent USDC transfers and automatically creates top-up records for any new deposits found. ## Transfers - [The Transfer object](https://zoneless.com/docs/transfers/object.md): A Transfer object is created when you move funds between Zoneless accounts as part of Connect. Transfers allow platforms to send funds to their connected accounts. - [Create a transfer](https://zoneless.com/docs/transfers/create.md): To send funds from your platform account to a connected account, create a new transfer. Your platform balance must have sufficient funds to cover the transfer amount, or you'll receive an "Insufficient Funds" error. - [Update a transfer](https://zoneless.com/docs/transfers/update.md): Updates the specified transfer by setting the values of the parameters passed. Any parameters not provided will be left unchanged. - [Retrieve a transfer](https://zoneless.com/docs/transfers/retrieve.md): Retrieves the details of an existing transfer. Supply the unique transfer ID from either a transfer creation request or the transfer list, and Zoneless will return the corresponding transfer information. - [List all transfers](https://zoneless.com/docs/transfers/list.md): Returns a list of existing transfers sent to connected accounts. The transfers are returned in sorted order, with the most recently created transfers appearing first. ## Webhooks - [Webhook Endpoints](https://zoneless.com/docs/webhook-endpoints.md): You can configure webhook endpoints via the API to be notified about events that happen in your Zoneless platform. When an event occurs (such as a payout completing or an account being updated), Zoneless sends a POST request to your configured URL with the event data. ## Webhook Endpoints - [The Webhook Endpoint object](https://zoneless.com/docs/webhook-endpoints/object.md): You can configure webhook endpoints via the API to be notified about events that happen in your Zoneless platform. When an event occurs (such as a payout completing or an account being updated), Zoneless sends a POST request to your configured URL with the event data. - [Create a webhook endpoint](https://zoneless.com/docs/webhook-endpoints/create.md): A webhook endpoint must have a url and a list of enabled_events. When events matching those types occur in your platform, Zoneless will send a POST request to the specified URL. - [Update a webhook endpoint](https://zoneless.com/docs/webhook-endpoints/update.md): Updates the webhook endpoint. You may edit the url, the list of enabled_events, and the status of your endpoint. - [Retrieve a webhook endpoint](https://zoneless.com/docs/webhook-endpoints/retrieve.md): Retrieves the webhook endpoint with the given ID. - [List all webhook endpoints](https://zoneless.com/docs/webhook-endpoints/list.md): Returns a list of your webhook endpoints. - [Delete a webhook endpoint](https://zoneless.com/docs/webhook-endpoints/delete.md): Deletes a webhook endpoint. Once deleted, the endpoint will no longer receive any events. ## Agents Docs - [Agent Payments Quickstart](https://zoneless.com/docs/agent-payments-quickstart.md): Give a coding agent a secure, additive path for adding USDC subscriptions or one-time checkout to an existing site or app. - [Agent Marketplace Quickstart](https://zoneless.com/docs/agent-marketplace-quickstart.md): Give a coding agent a secure, additive path for adding optional Zoneless USDC seller payouts to an existing marketplace.