{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"c9de821b-0b9b-40ae-b8a0-a311b49d417a","name":"Karat Payout API","description":"## Introduction\n\nWelcome to the Payout API, your gateway to seamless, automated, and scalable payment solutions. Our API is engineered to empower developers and businesses to programmatically manage payouts. Our infrastructure provides the tools you need to create, track, and manage your payouts efficiently.\n\nThis document provides a comprehensive guide to our API, detailing its RESTful architecture, authentication methods, and available endpoints. Here, you will find all the information required to integrate our payout capabilities into your applications. We are committed to providing a clear, consistent, and developer-friendly experience to help you build with confidence.\n\n## Environments\n\nProduction: [https://payouts.api.trykarat.com/](https://payouts.api.trykarat.com/)\n\nSandbox: contact peter@trykarat.com to get sandbox information\n\n## API Keys\n\n### Generating and Managing API Keys\n\nTo use the Payout API, you will need an API key. You can generate and manage your API keys through your user dashboard. To access your API keys, navigate to the **Settings** page in your account.\n\nFrom the settings page, you can:\n\n- Generate new API keys\n    \n- View your existing API keys\n    \n- Revoke API keys that are no longer needed\n    \n\n### API Key Storage Best Practices\n\nYour API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.\n\nHere are some best practices for storing your API keys:\n\n- **Store keys in environment variables**: Do not hardcode your API keys in your application code. Instead, use environment variables and key vaults to store your keys and access them in your code.\n    \n- **Limit access to keys**: Only give access to your API keys to authorized personnel. Use a secret management service to store and manage your keys securely.\n    \n- **Rotate keys regularly**: We recommend rotating your API keys on a regular basis to reduce the risk of a compromised key being used.\n    \n\n### Revoking API Keys\n\nIf you suspect that an API key has been compromised, you should revoke it immediately from your user dashboard. Once an API key is revoked, it can no longer be used to make API requests.\n\n## Idempotency\n\nOur API supports idempotency, which allows you to safely retry requests without accidentally performing the same operation twice. This is useful for cases where a request may have failed due to a network error, but you are unsure if the operation was successful.\n\nThis is particularly useful for `POST` requests that create new resources, as it prevents the creation of duplicate resources.\n\n## Sandbox Test Recipients\n\nIn the Sandbox environment, you can use predefined test recipient email addresses to simulate payout outcomes and error scenarios. This makes it easier to test your payout flows, webhook handling, and error recovery logic without creating real payouts.\n\n| Email | Target Status |\n| --- | --- |\n| `sandbox+completed@trykarat.com` | `completed` |\n| `sandbox+failed@trykarat.com` | `failed` |\n| `sandbox+returned@trykarat.com` | `returned` |\n| `sandbox+canceled@trykarat.com` | `canceled` |\n| `sandbox+pending@trykarat.com` | `pending` |\n| `sandbox+created@trykarat.com` | `created` |\n| `sandbox+awaiting_acceptance@trykarat.com` | `awaiting_acceptance` |\n\nThese test recipients are especially useful for validating webhook notifications and ensuring your application handles each payout lifecycle state correctly.\n\n| Email | Simulated Error | HTTP Status |\n| --- | --- | --- |\n| `sandbox+error_insufficient_funds@trykarat.com` | \"Insufficient funds to cover the payout batch\" | 500 |\n| `sandbox+error_invalid_amount@trykarat.com` | \"All payout amounts must be greater than zero.\" | 400 |\n\nThese scenarios can help you verify that your application properly handles validation failures and server-side errors.\n\nNotes\n\n- These recipient emails work only in the Sandbox environment.\n    \n- Sandbox test recipients are intended for testing and should not be used in production.\n    \n- Status-based test recipients can be used together with your webhook configuration to validate event delivery and downstream processing.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"19392455","team":2065504,"collectionId":"c9de821b-0b9b-40ae-b8a0-a311b49d417a","publishedId":"2sB3dLVsMR","public":true,"publicUrl":"https://api.docs.trykarat.com","privateUrl":"https://go.postman.co/documentation/19392455-c9de821b-0b9b-40ae-b8a0-a311b49d417a","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"8E81FF"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/8ddc58de-02cd-43cb-bd08-67c676da9d81/a2FyYXQucG5n","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"8E81FF"}},{"name":"light","logo":"https://content.pstmn.io/8ddc58de-02cd-43cb-bd08-67c676da9d81/a2FyYXQucG5n","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"8E81FF"}}]}},"version":"8.10.1","publishDate":"2025-12-01T19:12:43.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/8ddc58de-02cd-43cb-bd08-67c676da9d81/a2FyYXQucG5n","logoDark":"https://content.pstmn.io/8ddc58de-02cd-43cb-bd08-67c676da9d81/a2FyYXQucG5n"}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/575c948ebaafe4be55d3c5068c51a5b2c68b82fbb9a2e88705cd7b4023c9d22b","favicon":"https://trykarat.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://api.docs.trykarat.com/view/metadata/2sB3dLVsMR"}