Connected Accounts
If you’re building a platform or marketplace, and you want to:
- Charge on behalf of someone else, or
- Share revenue with other accounts
Connected Accounts is for you.
With Connected Accounts you can charge on behalf of other accounts using your own API keys, without needing access to their API keys.
Two ways to connect accounts
You can work with Connected Accounts in two ways:
- Create and manage a new connected account from your platform. This is the recommended flow when your platform onboards the merchant, manages their data, and configures their bank account.
- Connect an existing Recurrente account. This flow is useful when the merchant already uses Recurrente and only wants to authorize your platform to charge on their behalf.
Both paths end with a child account connected to your account. In both cases, you’ll use that child account ID in account_id when creating checkouts.
Create and connect an account by API
You can create a connected account managed by your platform with POST /api/connected_accounts. Recurrente creates the child account, connects it to your account, validates the required documents, and marks onboarding as completed.
If a connected account already exists for the same email, Recurrente reuses that account and updates the submitted data. tax_id and tax_name are extracted automatically from the tax registration document sent in verification[tax_registration_document]; you do not need to send them in the request.
Required documents
Each account type requires different files in verification:
Example: individual account
Example: business account
You can send bank_account in the same request to configure the external bank account that will receive withdrawals. Use GET /api/banks to see valid bank_name values.
Example: non-profit account
Update a connected account
You can update the public name and withdrawal frequency for a connected account:
Manage bank accounts
To add another external bank account to a connected account:
To change the default bank account, update the desired bank account with is_preferred: true:
To remove a bank account, use DELETE. Recurrente archives it and stops showing it in the API.
Connect an existing account
If the merchant already has a Recurrente account, you don’t need to create another account by API. Connect both accounts from the Recurrente UI by following these instructions.
Create a checkout for a connected account
Once accounts are connected, create checkouts on behalf of the child account using the account_id parameter:
Fund distribution
You can distribute funds between accounts using transfer_setups. Each element defines a transfer that Recurrente executes automatically once the payment completes successfully:
recipient_idis the ID of the Recurrente account that receives the funds (e.g.ac_789012) — not a bank account. Funds are credited to that account’s Recurrente balance, and from there follow its normal withdrawal flow.- If you omit
recipient_id, funds are transferred to your own account — useful for keeping a commission when the checkout is created on behalf of a connected account. - Use
purpose: "platform_commission"when the transfer is a commission paid by the child account to your platform. If you omitpurpose, Recurrente usesfund_splitand excludes it from commission invoicing. - For one-time payments send
amount_in_cents: a fixed amount transferred once. It can be as high as the net available amount after fees, FEL, and VAT. - For subscriptions send
amount_percent: a percentage of each invoice’s total (0–100, up to 2 decimal places), transferred on every successful charge while the subscription is active. At checkout creation we validate that the percentage fits within the net amount after fees, FEL, and VAT. If the subscription is cancelled, its recurring transfers are cancelled with it.
Daily commission invoicing
You can ask Recurrente to issue one daily DTE per currency for transfers marked as platform_commission that each connected account pays to your platform. Your platform has a general setting (daily or none), and each connection can override it. It only covers completed live transfers after enabled_at; it does not classify or invoice historical transfers.
Enable it with a live API key. Your platform must be ready to issue FEL through INFILE, and the connected account must have a verified tax ID and legal name:
Recurrente processes closed America/Guatemala days asynchronously. Each document sums the exact completed commissions for one day and currency; it does not move the principal again. List documents and reconcile each line to its source transfer:
The detail response exposes transfer_setup_id, transfer_id, source_id, source_type, and completed_at. The partner_commission_invoice.issued and partner_commission_invoice.failed webhooks signal the result; failed is only delivered when no further automatic retry is appropriate.
Sending { "mode": "none" } sets an override that closes the interval. Sending { "mode": "default" } removes the override and resumes inheriting the general setting. Recurrente still drains commissions completed before disabled_at and preserves every existing document and line. The issuing platform can continue reading that history after disconnecting the account; configuration still requires an active connection.
Webhooks
When a child account connects to your account, Recurrente sends an account_connection.create webhook to your account. The payload includes the connection and both accounts:
When events occur in a child account, you’ll receive webhooks with additional parameters:
connected: trueindicates the event was generated by a connected accountaccount_id: "ac_123456"is the ID of the account that generated the event
You can use these fields to identify and process connected account events separately.

