Authorize a transfer between the client's own accounts
Verify the developer-key signature against the immutable approval and settle the move. A retry cannot change the accounts, the amount or the quote it was fixed at.
POST
/
swaps
/
{swapId}
/
confirm
Authorize a transfer between the client's own accounts
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"HEVN","description":"HEVN documentation: the whitelabel REST API for linking and operating your customers' own accounts, remote transfers for paying from your own account with a capped key, and how the non-custodial platform underneath works.","colors":{"primary":"#256FAD","light":"#3C8DCE","dark":"#1B527F"},"logo":{"light":"https://mintcdn.com/hevninc/to0nUVRkO9X57VRK/logo/light.svg?fit=max\u0026auto=format\u0026n=to0nUVRkO9X57VRK\u0026q=85\u0026s=0d24037b3480e3fd22fdbc2ea7c2a1bf","dark":"https://mintcdn.com/hevninc/to0nUVRkO9X57VRK/logo/dark.svg?fit=max\u0026auto=format\u0026n=to0nUVRkO9X57VRK\u0026q=85\u0026s=ae6bd68499f79b907f010902b41a52e8"},"favicon":"https://mintcdn.com/hevninc/BoTZRcp0gyv2H79f/favicon.png?fit=max\u0026auto=format\u0026n=BoTZRcp0gyv2H79f\u0026q=85\u0026s=0d529d33047e81a45ef91637a41645b1","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","python","javascript"]}},"navbar":{"links":[{"href":"https://calendly.com/hevn/hevn","label":"Book a call"}],"primary":{"type":"button","label":"Open app","href":"https://app.gethevn.com"}},"icons":{"library":"lucide"},"markdown":{"instructions":["HEVN accounts are non-custodial in both products. Self-serve (the General tab): the person who owns the email holds the only key and signs for themselves. Whitelabel (the Whitelabel and REST API tabs): the integrator's customer creates and owns their account through Sign in with HEVN, a HEVN-hosted popup on the integrator's site; the integrator's backend holds a developer key, operates linked accounts and books their payouts, and the account holder approves every payout in that popup. The developer key signs only for the integrator's own wallet; it never signs a client's money.","Use HEVN's terms exactly. A rail is a bank route a client can request. A virtual account (bnk_) is an opened rail. Account details are what a payer needs in order to wire money, and arrive in a field named requisites. A client is a customer's own account linked to the integrator through Sign in with HEVN (POST /dapi/v1/connect/sessions, then POST /dapi/v1/clients/link); there is no API call that creates one. The business behind it is the integrator's customer. A contact is a saved destination; a beneficiary is the party at the far end of a fiat payout. Every departure of money is a payout, to a bank account or to a wallet alike.","Never name a banking partner. Say 'a licensed banking partner'.","There are no published fee rates, spreads or minimums. Prices come from a quote on a specific payment; direct pricing questions to HEVN rather than inventing numbers.","The whitelabel API is at /dapi/v1 and takes a developer-key session plus an X-Hevn-Account header. Developer keys have an IP allowlist and no scopes. Remote transfers are at /api/v1/remote_spend_limit and take a remote transfer key (rsl_) in X-Api-Key, bounded by an onchain spend permission the account holder grants. They are different credentials and neither works on the other surface. The HEVN CLI is discontinued."]},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hevninc","hasAudioNarration":false,"actualSubdomain":"hevninc","customDomains":[],"gitSource":{"type":"github","owner":"hevn-inc","repo":"docs","deployBranch":"main","isPrivate":false,"contentDirectory":"","mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"agentFeedback":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"}},"buildId":"6af5f1ed510572438570ff24","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"REST API","count":51},{"language":"default","tag":"Whitelabel","count":29},{"language":"default","tag":"General","count":10},{"language":"default","tag":"Escrow","count":8},{"language":"default","tag":"Reference","count":7},{"language":"default","tag":"Clients","count":6},{"language":"default","tag":"Contacts","count":6},{"language":"default","tag":"Core concepts","count":5},{"language":"default","tag":"Verification","count":5},{"language":"default","tag":"Overview","count":4}],"searchSettings":{"showContentSnippets":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts","slug":"/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts","pageMetadata":{"title":"Authorize a transfer between the client's own accounts","description":"Verify the developer-key signature against the immutable approval and settle the move. A retry cannot change the accounts, the amount or the quote it was fixed at.","deprecated":null,"version":null,"openapi":"/openapi.json post /swaps/{swapId}/confirm","href":"/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts","autogeneratedByOpenApi":true},"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: \"Verify the developer-key signature against the immutable approval and settle the move. A retry cannot change the accounts, the amount or the quote it was fixed at.\"\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Authorize a transfer between the client's own accounts","description":"Verify the developer-key signature against the immutable approval and settle the move. A retry cannot change the accounts, the amount or the quote it was fixed at.","deprecated":null,"version":null,"openapi":"/openapi.json post /swaps/{swapId}/confirm","href":"/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["transfers"],"summary":"Authorize a transfer between the client's own accounts","description":"Verify the developer-key signature against the immutable approval and settle the move. A retry cannot change the accounts, the amount or the quote it was fixed at.","operationId":"confirm_swap_swaps__swapId__confirm_post","security":["be43728a-fae6-4018-b673-acac7af6f9df"],"parameters":["8616dc26-d15d-4763-bd08-e6703c0ff555","10910f52-f15e-4168-970b-42af7f69afae"],"requestBody":"52eb8128-23b5-448f-8f5a-d779943f3ea1","responses":{"200":"33dcc81e-6bea-4b8c-8117-288275056455","202":"cd95169c-04a6-49d2-b83d-4470b88f6dca","422":"0a148931-a6a3-4f71-ab4f-09ee1adcdd39"},"method":"post","type":"path","servers":[],"path":"/swaps/{swapId}/confirm","baseUrlOptions":[],"title":"Authorize a transfer between the client's own accounts","codeSamples":[],"requestExampleLanguages":["bash","python","javascript"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"8616dc26-d15d-4763-bd08-e6703c0ff555":{"name":"swapId","in":"path","required":true,"schema":{"type":"string","title":"Swapid","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"10910f52-f15e-4168-970b-42af7f69afae":{"name":"X-Hevn-Account","in":"header","required":false,"schema":{"oneOf":[{"type":"string","title":"X-Hevn-Account","description":"The client account to act for, as a `cl_…` id. Omit it to act as yourself.","example":"cl_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"X-Hevn-Account","description":"The client account to act for, as a `cl_…` id. Omit it to act as yourself.","example":"cl_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"},"description":"The client account to act for, as a `cl_…` id. Omit it to act as yourself."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"signature":{"type":"string","maxLength":2048,"minLength":1,"title":"Signature","description":"Base64 DER ECDSA P-256/SHA-256 signature over base64decode(approval.payload).","isRequired":true,"uniqueKey":"signature","typeLabel":"string"},"publicKey":{"oneOf":[{"type":"string","title":"Publickey","description":"Registered P-256 public key; omit when the signature uniquely identifies the key.","maxLength":512,"minLength":1,"uniqueKey":"publicKey.oneOf.0","typeLabel":"string"},{"type":"null","title":"Publickey","description":"Registered P-256 public key; omit when the signature uniquely identifies the key.","uniqueKey":"publicKey.oneOf.1","typeLabel":"null"}],"uniqueKey":"publicKey","typeLabel":"string | null"}},"additionalProperties":false,"type":"object","required":["signature"],"title":"ConfirmRequest","uniqueKey":"","typeLabel":"ConfirmRequest · object"},"examples":{"Example":{"title":"Example","value":{"signature":"\u003cstring>","publicKey":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"33dcc81e-6bea-4b8c-8117-288275056455":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"id":{"type":"string","pattern":"^(?:swp_)?[A-Za-z0-9._:\\-]{1,216}$","title":"Id","description":"Stable public identifier for this swap.","examples":["swp_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41"],"isRequired":true,"uniqueKey":"id","typeLabel":"string"},"status":{"type":"string","enum":["awaitingSignature","submitted","settled","failed"],"title":"SwapState","description":"Current public lifecycle status of the swap.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"transactionHash":{"oneOf":[{"type":"string","title":"Transactionhash","description":"On-chain transaction hash, when broadcast.","uniqueKey":"transactionHash.oneOf.0","typeLabel":"string"},{"type":"null","title":"Transactionhash","description":"On-chain transaction hash, when broadcast.","uniqueKey":"transactionHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"transactionHash","typeLabel":"string | null"},"pollUrl":{"oneOf":[{"type":"string","title":"Pollurl","description":"Relative API URL to poll while processing continues.","uniqueKey":"pollUrl.oneOf.0","typeLabel":"string"},{"type":"null","title":"Pollurl","description":"Relative API URL to poll while processing continues.","uniqueKey":"pollUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"pollUrl","typeLabel":"string | null"},"failure":{"oneOf":[{"type":"object","title":"SwapFailureView","description":"Terminal or actionable failure details.","required":["code"],"properties":{"code":{"type":"string","title":"Code","description":"Stable machine-readable code for the swap failure.","isRequired":true,"uniqueKey":"failure.oneOf.0.code","typeLabel":"string"}},"uniqueKey":"failure.oneOf.0","typeLabel":"SwapFailureView · object"},{"type":"null","description":"Terminal or actionable failure details.","uniqueKey":"failure.oneOf.1","typeLabel":"null"}],"uniqueKey":"failure","typeLabel":"SwapFailureView · object | null"}},"type":"object","required":["id","status"],"title":"SwapReceiptResponse","uniqueKey":"","typeLabel":"SwapReceiptResponse · object"},"examples":{"Example":{"title":"Example","value":{"id":"swp_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41","status":"awaitingSignature","transactionHash":"\u003cstring>","pollUrl":"\u003cstring>","failure":{"code":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"cd95169c-04a6-49d2-b83d-4470b88f6dca":{"content":{"application/json":{"schema":{"properties":{"id":{"type":"string","pattern":"^(?:swp_)?[A-Za-z0-9._:\\-]{1,216}$","title":"Id","description":"Stable public identifier for this swap.","examples":["swp_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41"],"isRequired":true,"uniqueKey":"id","typeLabel":"string"},"status":{"type":"string","enum":["awaitingSignature","submitted","settled","failed"],"title":"SwapState","description":"Current public lifecycle status of the swap.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"transactionHash":{"oneOf":[{"type":"string","title":"Transactionhash","description":"On-chain transaction hash, when broadcast.","uniqueKey":"transactionHash.oneOf.0","typeLabel":"string"},{"type":"null","title":"Transactionhash","description":"On-chain transaction hash, when broadcast.","uniqueKey":"transactionHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"transactionHash","typeLabel":"string | null"},"pollUrl":{"oneOf":[{"type":"string","title":"Pollurl","description":"Relative API URL to poll while processing continues.","uniqueKey":"pollUrl.oneOf.0","typeLabel":"string"},{"type":"null","title":"Pollurl","description":"Relative API URL to poll while processing continues.","uniqueKey":"pollUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"pollUrl","typeLabel":"string | null"},"failure":{"oneOf":[{"type":"object","title":"SwapFailureView","description":"Terminal or actionable failure details.","required":["code"],"properties":{"code":{"type":"string","title":"Code","description":"Stable machine-readable code for the swap failure.","isRequired":true,"uniqueKey":"failure.oneOf.0.code","typeLabel":"string"}},"uniqueKey":"failure.oneOf.0","typeLabel":"SwapFailureView · object"},{"type":"null","description":"Terminal or actionable failure details.","uniqueKey":"failure.oneOf.1","typeLabel":"null"}],"uniqueKey":"failure","typeLabel":"SwapFailureView · object | null"}},"type":"object","required":["id","status"],"title":"SwapReceiptResponse","uniqueKey":"","typeLabel":"SwapReceiptResponse · object"},"examples":{"Example":{"title":"Example","value":{"id":"swp_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41","status":"awaitingSignature","transactionHash":"\u003cstring>","pollUrl":"\u003cstring>","failure":{"code":"\u003cstring>"}}}},"exampleType":"generated"}},"description":"Accepted","exampleType":"generated"},"0a148931-a6a3-4f71-ab4f-09ee1adcdd39":{"description":"Request validation failed","content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string","enum":["invalid_request","validation_failed","invalid_cursor","invalid_id","idempotency_key_invalid","idempotency_key_reused","unauthenticated","token_expired","forbidden","not_found","method_not_allowed","conflict","gone","payload_too_large","rate_limited","provider_unavailable","database_unavailable","internal_error","invalid_credentials","request_expired","challenge_not_found","challenge_consumed","challenge_expired","signature_invalid","key_not_registered","signer_not_attached","wallet_not_linked","approval_consumed","approval_expired","approval_mismatch","signing_policy_refused","login_unavailable","login_mode_unavailable","developer_key_not_found","developer_key_already_exists","account_header_invalid","account_scope_conflict","account_not_found","account_forbidden","account_read_only","account_not_controlled","contact_not_found","quote_not_submitted","quote_not_fundable","funding_mode_unsupported","funding_token_unsupported","insufficient_funds","smart_wallet_not_deployed","wallet_owner_unverified","already_funded","payment_slot_consumed","funding_in_progress","funding_attempt_expired","contact_changed","user_operation_rejected","user_operation_unavailable","transfer_policy_denied","client_creation_not_enabled","client_not_found","link_code_invalid","link_code_expired","client_already_linked","redirect_uri_not_allowed","payout_not_awaiting_signature","verification_not_applicable","profile_locked","contact_not_payable","contact_chain_unsupported","contact_token_unsupported","contact_payment_details_invalid","amount_below_minimum","amount_above_maximum","amount_precision_unsupported","payout_not_found","payout_not_fundable","quote_expired","bundler_rejected","bundler_unavailable","contact_details_invalid","contact_in_use","kyb_incomplete","kyb_documents_processing","kyb_roster_conflict","kyb_subject_conflict","document_not_found","document_type_unsupported","invalid_enum_value","entity_not_found","escrow_not_found","escrow_action_not_found","escrow_not_operated_by_you","escrow_state_changed","action_in_flight","simulation_failed","stale_nonce","amount_out_of_range","amount_not_allowed","window_closed","token_not_supported","receiver_not_a_client","rail_not_found","rail_not_available","payin_not_available","payin_expired","payin_not_found","transaction_not_found","account_unavailable","account_not_supported","swap_not_found","swap_route_unavailable","swap_not_confirmable","intent_not_signable","sandbox_amount_limit_exceeded","sandbox_faucet_balance_too_high"],"title":"PlatformErrorCode","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","title":"Message","description":"Human-readable explanation safe to show to an end user.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Structured context for this error, when available.","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Structured context for this error, when available.","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["code","message"],"title":"PlatformErrorBody","description":"Public error body.","isRequired":true,"uniqueKey":"error","typeLabel":"PlatformErrorBody · object"}},"type":"object","required":["error"],"title":"PlatformErrorResponse","uniqueKey":"","typeLabel":"PlatformErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"be43728a-fae6-4018-b673-acac7af6f9df":{"HTTPBearer":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"HTTPBearer"}}},"servers":{},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"HTTPBearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"HTTPBearer","name":"Authorization"}],"title":"HTTPBearer"}]},"originalFileLocation":"openapi.json"},"subdomain":"hevninc","siteName":"HEVN","title":"Authorize a transfer between the client's own accounts - HEVN","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T10:43:04.651Z","originalFileLocation":"api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts.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=\"Verify the developer-key signature against the immutable approval and settle the move. A retry cannot change the accounts, the amount or the quote it was fixed at.\">\u003cmeta data-mint-head name=\"application-name\" content=\"HEVN\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_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/hevninc/Mrkw47wG7Tt5G32B/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Authorize a transfer between the client\u0026#x27;s own accounts - HEVN\">\u003cmeta data-mint-head property=\"og:description\" content=\"Verify the developer-key signature against the immutable approval and settle the move. A retry cannot change the accounts, the amount or the quote it was fixed at.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"HEVN\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://hevninc.mintlify.app/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hevninc.mintlify.site/_mintlify/api/og/v2?division=Swaps\u0026amp;title=Authorize+a+transfer+between+the+client%27s+own+accounts\u0026amp;description=Verify+the+developer-key+signature+against+the+immutable+approval+and+settle+the+move.+A+retry+cannot+change+the+accounts%2C+the+amount+or+the+quote+it+was+fixed+\u0026amp;theme=aed7afc4fc65302f1c71cd72\u0026amp;signature=e6df59827b82e6e82e8ec13183fd07ede7f6ccde85896ce5ed8ed87e151d1379\">\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=\"Authorize a transfer between the client\u0026#x27;s own accounts - HEVN\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Verify the developer-key signature against the immutable approval and settle the move. A retry cannot change the accounts, the amount or the quote it was fixed at.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hevninc.mintlify.site/_mintlify/api/og/v2?division=Swaps\u0026amp;title=Authorize+a+transfer+between+the+client%27s+own+accounts\u0026amp;description=Verify+the+developer-key+signature+against+the+immutable+approval+and+settle+the+move.+A+retry+cannot+change+the+accounts%2C+the+amount+or+the+quote+it+was+fixed+\u0026amp;theme=aed7afc4fc65302f1c71cd72\u0026amp;signature=e6df59827b82e6e82e8ec13183fd07ede7f6ccde85896ce5ed8ed87e151d1379\">\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/hevninc/Mrkw47wG7Tt5G32B/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"HEVN\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#256FAD\">\u003clink data-mint-head rel=\"canonical\" href=\"https://hevninc.mintlify.app/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://hevninc.mintlify.app/#organization\",\"name\":\"HEVN\",\"url\":\"https://hevninc.mintlify.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hevninc/to0nUVRkO9X57VRK/logo/light.svg?fit=max\u0026auto=format\u0026n=to0nUVRkO9X57VRK\u0026q=85\u0026s=0d24037b3480e3fd22fdbc2ea7c2a1bf\"}},{\"@type\":\"WebSite\",\"@id\":\"https://hevninc.mintlify.app#website\",\"name\":\"HEVN\",\"url\":\"https://hevninc.mintlify.app\",\"publisher\":{\"@id\":\"https://hevninc.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://hevninc.mintlify.app/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts#webpage\",\"url\":\"https://hevninc.mintlify.app/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts\",\"name\":\"Authorize a transfer between the client's own accounts\",\"description\":\"Verify the developer-key signature against the immutable approval and settle the move. A retry cannot change the accounts, the amount or the quote it was fixed at.\",\"dateModified\":\"2026-10-23T10:43:04.651Z\",\"isPartOf\":{\"@id\":\"https://hevninc.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://hevninc.mintlify.app/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://hevninc.mintlify.app/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Swaps\",\"item\":\"https://hevninc.mintlify.app/api-reference/transfers/create-a-transfer-between-the-clients-own-accounts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authorize a transfer between the client's own accounts\",\"item\":\"https://hevninc.mintlify.app/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://hevninc.mintlify.app/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts#apireference\",\"headline\":\"Authorize a transfer between the client's own accounts\",\"name\":\"Authorize a transfer between the client's own accounts\",\"description\":\"Verify the developer-key signature against the immutable approval and settle the move. A retry cannot change the accounts, the amount or the quote it was fixed at.\",\"url\":\"https://hevninc.mintlify.app/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts\",\"mainEntityOfPage\":{\"@id\":\"https://hevninc.mintlify.app/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts#webpage\"},\"dateModified\":\"2026-10-23T10:43:04.651Z\",\"publisher\":{\"@id\":\"https://hevninc.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://hevninc.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"HEVN\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"HEVN\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts.md","siteName":"HEVN","nav":{"global":null,"tabs":[{"tab":"General","pages":[{"title":"General","href":"/general/what-is-hevn"}]},{"tab":"Remote Transfers","pages":[{"title":"Remote Transfers","href":"/remote-transfers/overview"}]},{"tab":"Whitelabel","pages":[{"title":"Whitelabel","href":"/whitelabel/overview"}]},{"tab":"REST API","groups":[{"group":"Overview","pages":[{"title":"REST API overview","href":"/api-reference/overview"},{"title":"API authentication","href":"/api-reference/authentication"}]},{"group":"Authentication","pages":[{"title":"Start a developer-key login and receive the payload to sign","deprecated":null,"version":null,"openapi":"/openapi.json post /auth/challenge","href":"/api-reference/auth/start-a-developer-key-login-and-receive-the-payload-to-sign"},{"title":"Exchange a signed login challenge for a session","deprecated":null,"version":null,"openapi":"/openapi.json post /auth/token","href":"/api-reference/auth/exchange-a-signed-login-challenge-for-a-session"},{"title":"Exchange a refresh token for a session, optionally acting for an account","deprecated":null,"version":null,"openapi":"/openapi.json post /auth/refresh","href":"/api-reference/auth/exchange-a-refresh-token-for-a-session-optionally-acting-for-an-account"}]},{"group":"Clients","pages":[{"title":"Create a sign-in window session","deprecated":null,"version":null,"openapi":"/openapi.json post /connect/sessions","href":"/api-reference/accounts/create-a-sign-in-window-session"},{"title":"Connect an existing account","deprecated":null,"version":null,"openapi":"/openapi.json post /clients/link","href":"/api-reference/accounts/connect-an-existing-account"},{"title":"List clients","deprecated":null,"version":null,"openapi":"/openapi.json get /clients","href":"/api-reference/accounts/list-clients"},{"title":"Retrieve one account","deprecated":null,"version":null,"openapi":"/openapi.json get /client","href":"/api-reference/accounts/retrieve-one-account"},{"title":"Update a client profile","deprecated":null,"version":null,"openapi":"/openapi.json patch /client","href":"/api-reference/accounts/update-a-client-profile"},{"title":"Read a client's balances","deprecated":null,"version":null,"openapi":"/openapi.json get /client/balance","href":"/api-reference/accounts/read-a-clients-balances"}]},{"group":"Verification","pages":[{"title":"Provide applicant information","deprecated":null,"version":null,"openapi":"/openapi.json put /client/kyb","href":"/api-reference/verification/provide-applicant-information"},{"title":"Retrieve the verification submission","deprecated":null,"version":null,"openapi":"/openapi.json get /client/kyb","href":"/api-reference/verification/retrieve-the-verification-submission"},{"title":"Complete the verification submission","deprecated":null,"version":null,"openapi":"/openapi.json post /client/kyb/complete","href":"/api-reference/verification/complete-the-verification-submission"},{"title":"Upload a document","deprecated":null,"version":null,"openapi":"/openapi.json post /documents","href":"/api-reference/documents/upload-a-document"},{"title":"Fill the typed fields read off a document","deprecated":null,"version":null,"openapi":"/openapi.json put /documents/{documentId}/content","href":"/api-reference/documents/fill-the-typed-fields-read-off-a-document"}]},{"group":"Virtual accounts","pages":[{"title":"List virtual accounts and available payment methods","deprecated":null,"version":null,"openapi":"/openapi.json get /banks","href":"/api-reference/virtual-accounts/list-virtual-accounts-and-available-payment-methods"},{"title":"Request a receiving account for a product","deprecated":null,"version":null,"openapi":"/openapi.json post /banks","href":"/api-reference/virtual-accounts/request-a-receiving-account-for-a-product"},{"title":"Retrieve one virtual account","deprecated":null,"version":null,"openapi":"/openapi.json get /banks/{product}","href":"/api-reference/virtual-accounts/retrieve-one-virtual-account"},{"title":"Retrieve the receiving conversion rate","deprecated":null,"version":null,"openapi":"/openapi.json get /banks/{product}/rate","href":"/api-reference/virtual-accounts/retrieve-the-receiving-conversion-rate"}]},{"group":"Money in","pages":[{"title":"Create an incoming transfer quote","deprecated":null,"version":null,"openapi":"/openapi.json post /payins","href":"/api-reference/transfers/create-an-incoming-transfer-quote"},{"title":"Open the incoming transfer and retrieve funding instructions","deprecated":null,"version":null,"openapi":"/openapi.json post /payins/{payinId}/instructions","href":"/api-reference/transfers/open-the-incoming-transfer-and-retrieve-funding-instructions"},{"title":"Retrieve an incoming transfer","deprecated":null,"version":null,"openapi":"/openapi.json get /payins/{payinId}","href":"/api-reference/transfers/retrieve-an-incoming-transfer"}]},{"group":"Money out","pages":[{"title":"Create an outgoing transfer","deprecated":null,"version":null,"openapi":"/openapi.json post /payouts","href":"/api-reference/transfers/create-an-outgoing-transfer"},{"title":"Create an outgoing transfer quote","deprecated":null,"version":null,"openapi":"/openapi.json post /payouts/preview","href":"/api-reference/transfers/create-an-outgoing-transfer-quote"},{"title":"Authorize an outgoing transfer","deprecated":null,"version":null,"openapi":"/openapi.json post /payouts/{payoutId}/confirm","href":"/api-reference/transfers/authorize-an-outgoing-transfer"},{"title":"Retrieve an outgoing transfer","deprecated":null,"version":null,"openapi":"/openapi.json get /payouts/{payoutId}","href":"/api-reference/transfers/retrieve-an-outgoing-transfer"}]},{"group":"Swaps","pages":[{"title":"Create a transfer between the client's own accounts","deprecated":null,"version":null,"openapi":"/openapi.json post /swaps","href":"/api-reference/transfers/create-a-transfer-between-the-clients-own-accounts"},{"title":"Price a transfer between the client's own accounts","description":"Compare every route that can serve this pair of accounts and return the best price. Nothing is booked with a provider and nothing is signed.","deprecated":null,"version":null,"openapi":"/openapi.json post /swaps/preview","href":"/api-reference/transfers/price-a-transfer-between-the-clients-own-accounts"},{"title":"Authorize a transfer between the client's own accounts","deprecated":null,"version":null,"openapi":"/openapi.json post /swaps/{swapId}/confirm","href":"/api-reference/transfers/authorize-a-transfer-between-the-clients-own-accounts"},{"title":"Retrieve a transfer between the client's own accounts","description":"Retrieve the current lifecycle of a swap, the quote it was fixed at and any actionable failure.","deprecated":null,"version":null,"openapi":"/openapi.json get /swaps/{swapId}","href":"/api-reference/transfers/retrieve-a-transfer-between-the-clients-own-accounts"}]},{"group":"Contacts","pages":[{"title":"Create a contact","deprecated":null,"version":null,"openapi":"/openapi.json post /contacts","href":"/api-reference/contacts/create-a-contact"},{"title":"List saved contacts","deprecated":null,"version":null,"openapi":"/openapi.json get /contacts","href":"/api-reference/contacts/list-saved-contacts"},{"title":"Retrieve one contact","deprecated":null,"version":null,"openapi":"/openapi.json get /contacts/{contactId}","href":"/api-reference/contacts/retrieve-one-contact"},{"title":"Update a contact","deprecated":null,"version":null,"openapi":"/openapi.json patch /contacts/{contactId}","href":"/api-reference/contacts/update-a-contact"},{"title":"Delete a contact","deprecated":null,"version":null,"openapi":"/openapi.json delete /contacts/{contactId}","href":"/api-reference/contacts/delete-a-contact"},{"title":"Retrieve contact channels","deprecated":null,"version":null,"openapi":"/openapi.json get /contacts/{contactId}/capabilities","href":"/api-reference/contacts/retrieve-contact-channels"}]},{"group":"Transactions","pages":[{"title":"List transactions, newest first","deprecated":null,"version":null,"openapi":"/openapi.json get /transactions","href":"/api-reference/transactions/list-transactions-newest-first"},{"title":"Retrieve one transaction","deprecated":null,"version":null,"openapi":"/openapi.json get /transactions/{transactionId}","href":"/api-reference/transactions/retrieve-one-transaction"},{"title":"Inflow and outflow totals for the same filters","deprecated":null,"version":null,"openapi":"/openapi.json get /transactions/summary","href":"/api-reference/transactions/inflow-and-outflow-totals-for-the-same-filters"},{"title":"Export transactions, a statement, a confirmation or a receipt","deprecated":null,"version":null,"openapi":"/openapi.json get /transactions/export","href":"/api-reference/transactions/export-transactions-a-statement-a-confirmation-or-a-receipt"}]},{"group":"Escrow","pages":[{"title":"Open an escrow and return the payer's approval","deprecated":null,"version":null,"openapi":"/openapi.json post /escrow","href":"/api-reference/escrow/open-an-escrow-and-return-the-payers-approval"},{"title":"List the escrows this account operates","deprecated":null,"version":null,"openapi":"/openapi.json get /escrow","href":"/api-reference/escrow/list-the-escrows-this-account-operates"},{"title":"Read one escrow","deprecated":null,"version":null,"openapi":"/openapi.json get /escrow/{escrowId}","href":"/api-reference/escrow/read-one-escrow"},{"title":"Prepare an escrow action and return the payload to sign","deprecated":null,"version":null,"openapi":"/openapi.json post /escrow/{escrowId}/actions","href":"/api-reference/escrow/prepare-an-escrow-action-and-return-the-payload-to-sign"},{"title":"Submit the signature for a prepared escrow action","deprecated":null,"version":null,"openapi":"/openapi.json post /escrow/{escrowId}/actions/{idempotencyKey}/confirm","href":"/api-reference/escrow/submit-the-signature-for-a-prepared-escrow-action"},{"title":"Reconcile one escrow with the chain","deprecated":null,"version":null,"openapi":"/openapi.json post /escrow/{escrowId}/sync","href":"/api-reference/escrow/reconcile-one-escrow-with-the-chain"}]},{"group":"Sandbox","pages":[{"title":"Read the sandbox treasury that funds emulated credits","deprecated":null,"version":null,"openapi":"/openapi.json get /sandbox/treasury","href":"/api-reference/sandbox/read-the-sandbox-treasury-that-funds-emulated-credits"},{"title":"Emulate an incoming deposit: an account transfer with bankId, a token transfer without","deprecated":null,"version":null,"openapi":"/openapi.json post /sandbox/deposits","href":"/api-reference/sandbox/emulate-an-incoming-deposit:-an-account-transfer-with-bankid-a-token-transfer-without"},{"title":"Emulate the arrival of the funds a pay-in is waiting for","deprecated":null,"version":null,"openapi":"/openapi.json post /sandbox/payins/{payinId}/complete","href":"/api-reference/sandbox/emulate-the-arrival-of-the-funds-a-pay-in-is-waiting-for"},{"title":"Move an emulated outgoing transfer to its next reported status","deprecated":null,"version":null,"openapi":"/openapi.json post /sandbox/payouts/{payoutId}/status","href":"/api-reference/sandbox/move-an-emulated-outgoing-transfer-to-its-next-reported-status"}]}]}]},"basePath":"","title":"Authorize a transfer between the client's own accounts - HEVN","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DDP9JXtj.js","utils-8yQyvEtx.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CBCFR8Sn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-rQaXkUHa.js","snippetPresets-J5KpBTgV.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BVxVH4Cj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BxdQ2vIi.js","shallow-BjV2tFiD.js","getApiPlaygroundDisplay-C_55tL4O.js","CodeSnippet-C0JpiCOC.js","CodeSnippets-w9Ps7djG.js","Page-DTNSD-0M.js","getPastedJson-BDfB-H8d.js","icon-g-kUkkO9.js","MethodPill-v4l6fq0h.js","DuplicateIcon-CvLo-CfU.js","createIcon-165clrrV.js","DynamicMarkdown-D3RQ-fEj.js","SectionHeading-vvo-3yLf.js","axios-vUo_bRtp.js","Markdown-CMT1uFWQ.js","clsx-C8f2yC9R.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CI2D8R2Y.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-k78Wrw_e.js"]}