# Infinity API - [Introduction](https://docs.infinityapp.in/guides/introduction.md): Send cross-border payouts from your own software: fund a wallet, register payees and pay them in their local currency. - [Quickstart](https://docs.infinityapp.in/guides/quickstart.md): Fund a sandbox wallet, register a payee and send your first payout, end to end, in about 10 minutes. - [Authentication](https://docs.infinityapp.in/guides/authentication.md): Authenticate requests with secret API keys, keep sandbox and live separate, and rotate keys without downtime. - [Sandbox](https://docs.infinityapp.in/guides/sandbox.md): Build and test against a simulated payout network. Fund wallets, activate payees and force any payout outcome on demand. - [Supported currencies](https://docs.infinityapp.in/guides/supported-currencies.md): The currencies and rails you can pay out on, the currencies you can fund with, and the limits for each. - [Account and wallets](https://docs.infinityapp.in/guides/account-and-wallets.md): Read your account, configure fees and hold expiry, and track the funds in each wallet. - [Funding your wallets](https://docs.infinityapp.in/guides/funding-your-wallets.md): Top up a wallet by bank transfer to your funding addresses, and track each credit as a deposit. - [Payees](https://docs.infinityapp.in/guides/payees.md): Register the people and businesses you pay, collect their bank details yourself or through a hosted page, and track when they become payable. - [Payee addresses and bank requirements](https://docs.infinityapp.in/guides/payee-addresses.md): Submit a payee's bank account through the API, validate it against each rail's rules, and understand who is liable for the details. - [Quotes and pricing](https://docs.infinityapp.in/guides/quotes-and-pricing.md): Price payouts before you create them: what the wallet is debited, the fee, the rate and what each payee receives. - [Payouts](https://docs.infinityapp.in/guides/payouts.md): Create 1 to 100 payouts in one call, follow each through its lifecycle, and handle payouts on hold, failures and returns. - [Batches](https://docs.infinityapp.in/guides/batches.md): Every POST /payouts call creates a batch. Use it to track a set of payouts together, from creation to completion. - [API conventions](https://docs.infinityapp.in/guides/ids-amounts-and-lists.md): Object IDs, money and currency formats, timestamps, null handling, metadata and cursor-based pagination. - [Idempotency](https://docs.infinityapp.in/guides/idempotency.md): Retry requests safely after timeouts and network errors without creating duplicate payouts. - [Errors and failure codes](https://docs.infinityapp.in/guides/errors.md): How the API reports errors, what each error code means, and which errors are safe to retry. - [Webhooks](https://docs.infinityapp.in/guides/webhooks.md): Receive events as payouts, payees, batches and deposits change, verify their signatures and process them reliably. - [Reconciliation](https://docs.infinityapp.in/guides/reconciliation.md): Match every payout and deposit to your own records using references, metadata, events and date-filtered lists. - [Rate limits](https://docs.infinityapp.in/guides/rate-limits.md): Request limits per API key, how they're enforced, and how to stay within them. - [Versioning and changelog](https://docs.infinityapp.in/guides/versioning.md): What Infinity commits not to break within /v1, what it may add, and how to keep your integration forward-compatible. - [Get your account](https://docs.infinityapp.in/api-reference/account/get-your-account.md) - [Update your settings](https://docs.infinityapp.in/api-reference/account/update-your-settings.md): Send at least one setting. It's all or nothing: if one value is invalid, nothing changes. A new `fee_bearer` applies to payouts created after the change. Existing payouts keep theirs. - [List wallets](https://docs.infinityapp.in/api-reference/wallets/list-wallets.md): Every wallet on your account, one per currency, with amounts read live. `has_more` is always `false`. `available` is what new payouts can use: `total` minus the amount `reserved` for payouts on hold or in flight. - [Get a wallet](https://docs.infinityapp.in/api-reference/wallets/get-a-wallet.md) - [List your funding addresses](https://docs.infinityapp.in/api-reference/funding-addresses/list-your-funding-addresses.md): The bank details to send money to, one entry per currency and rail. Money that arrives is credited to your balance as a deposit. `has_more` is always `false`. - [List deposits](https://docs.infinityapp.in/api-reference/deposits/list-deposits.md) - [Get a deposit](https://docs.infinityapp.in/api-reference/deposits/get-a-deposit.md) - [List currencies](https://docs.infinityapp.in/api-reference/currencies/list-currencies.md): Every active currency. `payout_enabled` says whether **your account** can pay payees in it. `decimals` is how many decimals an amount in that currency may have. `has_more` is always `false`. - [Get exchange rates](https://docs.infinityapp.in/api-reference/exchange-rates/get-exchange-rates.md): Indicative rates from USD, as your dashboard shows them. They aren't locked: a quote is the price, and a payout is priced again when you create it. - [List payees](https://docs.infinityapp.in/api-reference/payees/list-payees.md) - [Create a payee](https://docs.infinityapp.in/api-reference/payees/create-a-payee.md): Creates a payee with `status: invited`. Then either: - **we email them** a link to enter their own bank details (`send_invite: true`, the default), or - **you** send their bank details with **Add a payee address**, or send them the `onboarding_url` yourself (`send_invite: false`). - [Get a payee](https://docs.infinityapp.in/api-reference/payees/get-a-payee.md) - [Resend the invite](https://docs.infinityapp.in/api-reference/payees/resend-the-invite.md): Makes a new onboarding link; the old one stops working. With `send_invite: true` we email it. With `send_invite: false` it's returned in `onboarding_url` for you to send. Refused once the payee is `active`. - [List a payee's addresses](https://docs.infinityapp.in/api-reference/payee-addresses/list-a-payees-addresses.md): At most one in v1, so `has_more` is always `false`. - [Add a payee address](https://docs.infinityapp.in/api-reference/payee-addresses/add-a-payee-address.md): Sends a payee's bank details directly. The payee becomes `active` and can be paid straight away. - Global accounts only, and one address per payee. - Check the fields for each currency and rail with **List bank requirements**. - You're responsible for the details being right. We check the format and… - [Get a payee address](https://docs.infinityapp.in/api-reference/payee-addresses/get-a-payee-address.md) - [List bank requirements](https://docs.infinityapp.in/api-reference/bank-requirements/list-bank-requirements.md): The fields **Add a payee address** needs, per currency and rail. These are the same rules the API checks. `usd` returns two entries, `ach` and `wire`, with the same fields. `has_more` is always `false`. - [Create a quote](https://docs.infinityapp.in/api-reference/quotes/create-a-quote.md): Prices up to 100 payouts with the same pricing a Create payouts call uses, against the wallet you name. Nothing is stored or reserved, so it takes no `Idempotency-Key`. Rates aren't locked: payouts are priced again when you create them. A quote never fails for insufficient funds; it reports `suffici… - [List payouts](https://docs.infinityapp.in/api-reference/payouts/list-payouts.md) - [Create payouts](https://docs.infinityapp.in/api-reference/payouts/create-payouts.md): Creates 1 to 100 payouts in one call and groups them in a batch. Infinity validates every item, prices each payout at the current rate, reserves the total `debit_amount` in the wallet you name, and sends each payout whose payee is `active`. - **Payee `active`:** the payout starts as `pending`. - **P… - [Get a payout](https://docs.infinityapp.in/api-reference/payouts/get-a-payout.md) - [Update a payout on hold](https://docs.infinityapp.in/api-reference/payouts/update-a-payout-on-hold.md): Changes the amount or currency of a payout that's `awaiting_payee` or `awaiting_funds`. A higher amount checks your balance again. A currency change is allowed only while the payee has no address and no other payouts on hold. `description`, `reference` and `metadata` can't be changed. - [Cancel a payout on hold](https://docs.infinityapp.in/api-reference/payouts/cancel-a-payout-on-hold.md): Cancels a payout that's `awaiting_payee` or `awaiting_funds`, and frees its reserved money. Once a payout is `pending` it can't be canceled. - [List batches](https://docs.infinityapp.in/api-reference/batches/list-batches.md) - [Get a batch](https://docs.infinityapp.in/api-reference/batches/get-a-batch.md) - [List webhook endpoints](https://docs.infinityapp.in/api-reference/webhook-endpoints/list-webhook-endpoints.md): At most 5, so there are no list parameters and `has_more` is always `false`. - [Create a webhook endpoint](https://docs.infinityapp.in/api-reference/webhook-endpoints/create-a-webhook-endpoint.md): Up to 5 endpoints per account. The response holds the signing `secret`; **this is the only time it's shown**, so store it now. There's no secret rotation in v1: to replace a secret, create a new endpoint and delete the old one. - [Get a webhook endpoint](https://docs.infinityapp.in/api-reference/webhook-endpoints/get-a-webhook-endpoint.md) - [Update a webhook endpoint](https://docs.infinityapp.in/api-reference/webhook-endpoints/update-a-webhook-endpoint.md): Send at least one field. It's all or nothing, and the secret doesn't change. A `disabled` endpoint gets no deliveries, and retries due while it's disabled are dropped. Events are still recorded, so you can catch up with **List events**. - [Delete a webhook endpoint](https://docs.infinityapp.in/api-reference/webhook-endpoints/delete-a-webhook-endpoint.md): Stops all deliveries to it, including pending retries. It no longer counts toward your 5. - [List events](https://docs.infinityapp.in/api-reference/events/list-events.md): Every event from the last 30 days, newest first, whether or not an endpoint was subscribed to it. Use it to catch up after downtime. - [Get an event](https://docs.infinityapp.in/api-reference/events/get-an-event.md): The object inside is a snapshot from when the event happened. For the current state, get the object itself. - [Payout events](https://docs.infinityapp.in/api-reference/payout-events.md): `payout.created` (`status` is `pending` or `awaiting_payee`), `payout.updated` (a payout on hold was updated), and one event per later status: `payout.awaiting_funds`, `payout.pending`, `payout.processing`, `payout.paid`, `payout.failed`, `payout.returned`, `payout.canceled`, `payout.expired`. - [Batch events](https://docs.infinityapp.in/api-reference/batch-events.md): `batch.created`, then one event each time the batch's status moves: `batch.processing`, `batch.awaiting_funds`, `batch.awaiting_payees`, `batch.completed`, `batch.partially_completed`, `batch.failed`, `batch.canceled`. A batch's status follows its payouts, so it can move more than once and can go ba… - [Payee events](https://docs.infinityapp.in/api-reference/payee-events.md): `payee.created`, then one event per later status: `payee.details_pending`, `payee.verifying`, `payee.active`, `payee.inactive`. `onboarding_url` is always `null` inside events. - [Deposit events](https://docs.infinityapp.in/api-reference/deposit-events.md): `deposit.created`: money was credited to your balance. ## OpenAPI Specs - [openapi](/api-reference/openapi.yaml) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.