Creates an off-ramp transaction on behalf of a verified user. This converts crypto to fiat and initiates a withdrawal to the user’s registered bank account.
Retry safely without creating duplicate transactions: pass an optional Idempotency-Key header (UUIDv4). A retry with the same key and body replays the original response. See the Idempotency Guide for the full contract.
User must be KYC-verified before creating transactions.
Mexico bank verification: First-time bank accounts trigger a penny test to verify the KYC’d user is the account owner. If verification fails, the transaction is cancelled.
CLABE validation (Mexico): Must match ^\d{18}$. Consider using clabe-validator.
Amount limits: Fiat and crypto amounts must fall within the min/max thresholds defined in your partner agreement.
Destination wallet: The response includes a unique destinationWalletAddress — the user must send crypto to this address.
Optional. Unique key (UUIDv4 recommended) to safely retry this request without creating a duplicate transaction. A retry with the same key and body replays the original response. See /docs/idempotency.
Identifier for the blockchain to token from which the conversion will be made.
Required when quoteId is not provided.
BSC is only available for transactions over 50,000 MXN.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Capa.fi","colors":{"primary":"#191f14","light":"#fff","dark":"#191f14"},"logo":{"light":"https://mintcdn.com/capa/sdievWamxx2n0U65/logo/logo.svg?fit=max\u0026auto=format\u0026n=sdievWamxx2n0U65\u0026q=85\u0026s=cd1c9b9fcff02ef9bd460d71d7823292","dark":"https://mintcdn.com/capa/sdievWamxx2n0U65/logo/logo.svg?fit=max\u0026auto=format\u0026n=sdievWamxx2n0U65\u0026q=85\u0026s=cd1c9b9fcff02ef9bd460d71d7823292"},"favicon":"https://mintcdn.com/capa/sdievWamxx2n0U65/favicon.svg?fit=max\u0026auto=format\u0026n=sdievWamxx2n0U65\u0026q=85\u0026s=154093ec8e5f8f060d360b5932060b3b","navbar":{"links":[{"href":"https://status.capa.fi","label":"Status"}]},"fonts":{"heading":{"family":"Space Grotesk"},"body":{"family":"Space Grotesk"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"capa","hasAudioNarration":false,"actualSubdomain":"capa","customDomains":["docs.capa.fi"],"gitSource":{"type":"github","owner":"capalabs","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ac5225c9bd168f34f06f5ea","collectionId":"2b6582ed-be5e-4405-90f4-5ccd38247ae9","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac5225c9bd168f34f06f5ea"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ac5225c9bd168f34f06f5ea","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"API Reference","count":34},{"language":"default","tag":"Capa Partner API - V2","count":34},{"language":"default","tag":"Guides","count":20},{"language":"default","tag":"Documentation","count":20},{"language":"default","tag":"📣 Webhooks","count":5},{"language":"default","tag":"Users","count":5},{"language":"default","tag":"Wallets","count":4},{"language":"default","tag":"Cross-Ramp","count":3},{"language":"default","tag":"Webhooks · Notifications","count":3},{"language":"default","tag":"Transactions","count":3}]},"assistantConfig":{"deflection":{"enabled":true,"email":"developers@capa.fi","showHelpButton":true}},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":".table td,.table th{text-align:left}ol ol{list-style-type:lower-alpha}ol ol ol{list-style-type:lower-roman}"}],"page":{"pagePath":"reference/offramppartnerv2controller_createpartnerofframp","slug":"/reference/offramppartnerv2controller_createpartnerofframp","pageMetadata":{"title":"Create Off-Ramp","openapi":"reference/openapi/OffRampPartnerV2Controller_createPartnerOffRamp.json POST /api/partner/v2/off-ramp","description":null,"href":"/reference/offramppartnerv2controller_createpartnerofframp"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Step,Steps,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Creates an off-ramp transaction on behalf of a `,_jsx(_components.strong,{children:`verified`}),` user. This converts crypto to fiat and initiates a withdrawal to the user’s registered bank account.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`For sandbox transaction testing, use the `,_jsx(_components.a,{href:`/reference/transactionpartnerv2controller_getmocktestingguide`,children:`Mock Testing Guide`}),`.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`idempotency`,children:`Idempotency`}),`\n`,_jsxs(_components.p,{children:[`Retry safely without creating duplicate transactions: pass an optional `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`Idempotency-Key`})}),` header (UUIDv4). A retry with the same key and body replays the original response. See the `,_jsx(_components.a,{href:`/docs/idempotency`,children:`Idempotency Guide`}),` for the full contract.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.sandbox.capa.fi/api/partner/v2/off-ramp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'partner-api-key: \u003cpartner-api-key>'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '...'`})]}),`\n`]})})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`field-relationships`,children:`Field Relationships`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Provide `,_jsx(_components.code,{children:`quoteId`}),` `,_jsx(_components.strong,{children:`OR`}),` (`,_jsx(_components.code,{children:`fiatCurrency`}),` + `,_jsx(_components.code,{children:`blockchainSymbol`}),` + `,_jsx(_components.code,{children:`tokenSymbol`}),`). When a quote is used, currency/token fields are inherited from the quote.`]}),`\n`,_jsxs(_components.li,{children:[`Provide either `,_jsx(_components.code,{children:`fiatAmount`}),` or `,_jsx(_components.code,{children:`cryptoAmount`}),`, not both.`]}),`\n`,_jsxs(_components.li,{children:[`Provide either `,_jsx(_components.code,{children:`userBankInformation`}),` (inline bank details) or `,_jsx(_components.code,{children:`userBankInformationId`}),` (reference to a saved bank account).`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`bank-account-requirements-by-country`,children:`Bank Account Requirements by Country`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Country`}),_jsx(_components.th,{children:`Required Fields`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`MX`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`accountIdentifier`}),` (18-digit CLABE)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`DO`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`accountIdentifier`}),`, `,_jsx(_components.code,{children:`bankName`}),`, `,_jsx(_components.code,{children:`accountType`}),`, `,_jsx(_components.code,{children:`documentIdentifier`}),`, `,_jsx(_components.code,{children:`documentType`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`US`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`accountIdentifier`}),`, `,_jsx(_components.code,{children:`bankName`}),`, `,_jsx(_components.code,{children:`routingNumber`}),`, `,_jsx(_components.code,{children:`accountHolder`}),`, `,_jsx(_components.code,{children:`address`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SEPA`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`iban`}),`, `,_jsx(_components.code,{children:`bic`}),`, `,_jsx(_components.code,{children:`bankName`}),`, `,_jsx(_components.code,{children:`accountHolder`})]})]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`integration-flow`,children:`Integration Flow`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Create a user`,children:_jsx(_components.p,{children:_jsx(_components.a,{href:`/reference/userpartnercontrollerv2_createuser`,children:`POST /api/partner/v2/users`})})}),_jsx(Step,{title:`Complete KYC verification`,children:_jsx(_components.p,{children:_jsxs(_components.a,{href:`/reference/userpartnercontrollerv2_createverificationlink`,children:[`POST /api/partner/v2/users/`,`/kyc/verification-link`]})})}),_jsx(Step,{title:`Get a quote (optional)`,children:_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/reference/quotepartnerv2controller_createpartnerquote`,children:`POST /api/partner/v2/quotes`}),` — locks the exchange rate`]})}),_jsx(Step,{title:`Create off-ramp transaction`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`POST /api/partner/v2/off-ramp`}),` (this endpoint) — returns a `,_jsx(_components.code,{children:`destinationWalletAddress`})]})}),_jsx(Step,{title:`User sends crypto`,children:_jsxs(_components.p,{children:[`The user sends crypto to the `,_jsx(_components.code,{children:`destinationWalletAddress`}),` from the response.`]})}),_jsx(Step,{title:`Execute the off-ramp`,children:_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/reference/offramppartnerv2controller_executeofframp`,children:`POST /api/partner/v2/off-ramp/execute`}),` — triggers bank payout after crypto is received`]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`important-notes`,children:`Important Notes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`User must be KYC-verified`}),` before creating transactions.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Mexico bank verification`}),`: First-time bank accounts trigger a penny test to verify the KYC’d user is the account owner. If verification fails, the transaction is cancelled.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CLABE validation (Mexico)`}),`: Must match `,_jsx(_components.code,{children:`^\\\\d{18}$`}),`. Consider using `,_jsx(_components.a,{href:`https://www.npmjs.com/package/clabe-validator`,children:`clabe-validator`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Amount limits`}),`: Fiat and crypto amounts must fall within the min/max thresholds defined in your partner agreement.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Destination wallet`}),`: The response includes a unique `,_jsx(_components.code,{children:`destinationWalletAddress`}),` — the user must send crypto to this address.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`use-cases`,children:`Use Cases`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`User Payout`}),`: Convert crypto to fiat and withdraw to a verified bank account.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`B2C Integration`}),`: Let individual users off-ramp from within your app.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`error-codes`,children:`Error Codes`}),`\n`,_jsx(Heading,{level:`3`,id:`common-errors`,children:`Common Errors`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`HTTP Status`}),_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`Message`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`401`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`UNAUTHORIZED`})}),_jsx(_components.td,{children:`”API Key is missing”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`401`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`UNAUTHORIZED`})}),_jsx(_components.td,{children:`”Invalid API Key format”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`401`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`UNAUTHORIZED`})}),_jsx(_components.td,{children:`”Invalid API Key”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`403`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_PARTNER_FLOW`})}),_jsx(_components.td,{children:`”The partner has an invalid flow.”`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`verified-user-errors`,children:`Verified User Errors`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`HTTP Status`}),_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`Message`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`REQUIRED_USER_ID_ERROR`})}),_jsx(_components.td,{children:`”This endpoint requires a user id to be provided”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`403`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`USER_NOT_VERIFIED_ERROR`})}),_jsx(_components.td,{children:`”User is not allowed to perform the operations because has not completed the KYC verification.”`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`endpoint-specific-errors`,children:`Endpoint-Specific Errors`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`HTTP Status`}),_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`Message`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_USER_INPUT_ERROR`})}),_jsx(_components.td,{children:`”Invalid User Input”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`BAD_REQUEST`})}),_jsx(_components.td,{children:`”Either quoteId or fiatCurrency, blockchainSymbol, tokenSymbol, and at least one of fiatAmount or cryptoAmount must be provided”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`BAD_REQUEST`})}),_jsx(_components.td,{children:`”Fiat currency is disabled or does not exist”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`BAD_REQUEST`})}),_jsx(_components.td,{children:`”This blockchain and token combination is disabled or does not exist”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`QUOTE_EXPIRED`})}),_jsx(_components.td,{children:`”Quote has expired”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`BAD_REQUEST`})}),_jsx(_components.td,{children:`”Quote is not valid for OFF_RAMP”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_TOKEN_OPERATION_ERROR`})}),_jsxs(_components.td,{children:[`”Token `,` cannot be operated as OTC, only stable coins are allowed”`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`BAD_REQUEST`})}),_jsx(_components.td,{children:`”Either userBankInformationId or userBankInformation must be provided”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_FIAT_AMOUNT_ERROR`})}),_jsxs(_components.td,{children:[`”Fiat amount `,` is outside of the allowed range for OFF_RAMP. Should be between `,` and `,`“`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`INVALID_TOKEN_AMOUNT_ERROR`})}),_jsxs(_components.td,{children:[`”Token amount `,` is outside of the allowed range for OFF_RAMP. Should be between `,` and `,`“`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`403`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`USER_BANK_INFO_ACCESS_DENIED`})}),_jsx(_components.td,{children:`”The bank information does not belong to the specified user.”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`403`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`USER_BANK_INFO_ACCESS_DENIED`})}),_jsx(_components.td,{children:`”The bank information belongs to a different partner.”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`404`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`USER_BANK_INFO_NOT_FOUND`})}),_jsx(_components.td,{children:`”User bank information not found.”`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create Off-Ramp","openapi":"reference/openapi/OffRampPartnerV2Controller_createPartnerOffRamp.json POST /api/partner/v2/off-ramp","description":null,"href":"/reference/offramppartnerv2controller_createpartnerofframp"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Idempotency","slug":"idempotency","depth":2,"children":[]},{"title":"Field Relationships","slug":"field-relationships","depth":2,"children":[]},{"title":"Bank Account Requirements by Country","slug":"bank-account-requirements-by-country","depth":2,"children":[]},{"title":"Integration Flow","slug":"integration-flow","depth":2,"children":[]},{"title":"Important Notes","slug":"important-notes","depth":2,"children":[]},{"title":"Use Cases","slug":"use-cases","depth":2,"children":[]},{"title":"Error Codes","slug":"error-codes","depth":2,"children":[{"title":"Common Errors","slug":"common-errors","depth":3,"children":[]},{"title":"Verified User Errors","slug":"verified-user-errors","depth":3,"children":[]},{"title":"Endpoint-Specific Errors","slug":"endpoint-specific-errors","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"OffRampPartnerV2Controller_createPartnerOffRamp","parameters":["d9282ec2-824a-44c0-8243-c575d045c040"],"requestBody":"3439b541-11f4-413f-97b5-4a281975916d","responses":{"201":"2705a8e9-21c3-4183-b72f-55afbb1d0ddf","400":"6db5e0ed-3d8b-490f-9ad5-f518fe523fc1","401":"e22a9ac7-fc53-4063-8c6d-bf217e916b92","403":"487a5058-9d7d-4bf9-ade9-ff6675b41dc4","404":"81c1fa0b-907e-4c93-8a36-2f76e23da63a","409":"a36a4166-0e30-4f66-959e-0881dc11e628","422":"0c04a34f-1a50-4938-a5f6-33c78a45238e","500":"6b8175b2-b084-4ed8-800d-2503f37a9137"},"tags":["off-ramp"],"security":["9633cf2e-bad1-4b28-8ffe-778fbe640335"],"method":"post","type":"path","servers":["c9d9fa62-e47c-45bb-b1bb-798396449e73","5b47b916-88e4-4fc1-8715-dbbc8341381b"],"path":"/api/partner/v2/off-ramp","baseUrlOptions":["https://api.sandbox.capa.fi","https://api.capa.fi"],"title":"","description":"","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"d9282ec2-824a-44c0-8243-c575d045c040":{"name":"Idempotency-Key","in":"header","description":"Optional. Unique key (UUIDv4 recommended) to safely retry this request without creating a duplicate transaction. A retry with the same key and body replays the original response. See /docs/idempotency.","required":false,"schema":{"type":"string","minLength":16,"maxLength":128,"example":"550e8400-e29b-41d4-a716-446655440000","isRequired":false,"description":"Optional. Unique key (UUIDv4 recommended) to safely retry this request without creating a duplicate transaction. A retry with the same key and body replays the original response. See /docs/idempotency.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"Identifier for the user who's submitting the off-ramp order","example":"8374f327-38bd-4b0b-b8a7-2524599eb903","isRequired":true,"uniqueKey":"userId","typeLabel":"string"},"userBankInformation":{"type":"object","description":"Inline bank account details for the off-ramp.","properties":{"accountIdentifier":{"type":"string","description":"Unique identifier for bank account. CLABE if country=MX.","uniqueKey":"userBankInformation.accountIdentifier","typeLabel":"string"},"country":{"type":"string","description":"Required. Determines validation rules","enum":["MX","DO","US","AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","IS","LI","NO","CH","GB","MC","SM","AD","VA"],"uniqueKey":"userBankInformation.country","typeLabel":"enum\u003cstring>"},"accountType":{"type":"string","description":"Required for DO","enum":["SAVINGS","CHECKING"],"uniqueKey":"userBankInformation.accountType","typeLabel":"enum\u003cstring>"},"bankName":{"type":"string","description":"Required for DO / US / SEPA. Not allowed for MX.","uniqueKey":"userBankInformation.bankName","typeLabel":"string"},"documentIdentifier":{"type":"string","description":"Required only for DO","uniqueKey":"userBankInformation.documentIdentifier","typeLabel":"string"},"documentType":{"type":"string","description":"Required only for DO","uniqueKey":"userBankInformation.documentType","typeLabel":"string"},"routingNumber":{"type":"string","description":"Required only for US (9-digit ABA).","uniqueKey":"userBankInformation.routingNumber","typeLabel":"string"},"address":{"type":"object","description":"Required only for US (account address).","properties":{"streetLine1":{"type":"string","description":"Street address line 1. Required.","example":"123 Main St","isRequired":true,"uniqueKey":"userBankInformation.address.streetLine1","typeLabel":"string"},"city":{"type":"string","description":"City. Required.","example":"New York","isRequired":true,"uniqueKey":"userBankInformation.address.city","typeLabel":"string"},"postalCode":{"type":"string","description":"Postal/ZIP code. Required.","example":"10001","isRequired":true,"uniqueKey":"userBankInformation.address.postalCode","typeLabel":"string"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code. Required. Must be US.","enum":["US"],"example":"US","isRequired":true,"uniqueKey":"userBankInformation.address.country","typeLabel":"enum\u003cstring>"},"streetLine2":{"type":"string","description":"Street address line 2. Optional.","uniqueKey":"userBankInformation.address.streetLine2","typeLabel":"string"},"state":{"type":"string","description":"State/Province. Optional.","uniqueKey":"userBankInformation.address.state","typeLabel":"string"}},"required":["streetLine1","city","postalCode","country"],"uniqueKey":"userBankInformation.address","typeLabel":"object"},"bic":{"type":"string","description":"Required only for SEPA (EU).","uniqueKey":"userBankInformation.bic","typeLabel":"string"},"iban":{"type":"string","description":"Required only for SEPA (EU).","uniqueKey":"userBankInformation.iban","typeLabel":"string"},"accountHolder":{"type":"object","description":"Required for US \u0026 SEPA (INDIVIDUAL | BUSINESS).","properties":{"type":{"type":"string","enum":["INDIVIDUAL","BUSINESS"],"description":"Type of account holder. Required.","example":"INDIVIDUAL","isRequired":true,"uniqueKey":"userBankInformation.accountHolder.type","typeLabel":"enum\u003cstring>"},"firstName":{"type":"string","description":"First name. Required when type=INDIVIDUAL.","uniqueKey":"userBankInformation.accountHolder.firstName","typeLabel":"string"},"lastName":{"type":"string","description":"Last name. Required when type=INDIVIDUAL.","uniqueKey":"userBankInformation.accountHolder.lastName","typeLabel":"string"},"businessName":{"type":"string","description":"Business name. Required when type=BUSINESS.","uniqueKey":"userBankInformation.accountHolder.businessName","typeLabel":"string"}},"required":["type"],"uniqueKey":"userBankInformation.accountHolder","typeLabel":"object"}},"uniqueKey":"userBankInformation","typeLabel":"object"},"quoteId":{"type":"string","description":"Identifier for the quote to be used for the transaction.","uniqueKey":"quoteId","typeLabel":"string"},"fiatAmount":{"type":"number","description":"Amount of fiat currency to be received in conversion.","uniqueKey":"fiatAmount","typeLabel":"number"},"cryptoAmount":{"type":"number","description":"Amount of crypto currency to be converted to fiat currency.","uniqueKey":"cryptoAmount","typeLabel":"number"},"fiatCurrency":{"description":"Identifier for the fiat currency which the user will rec.\nRequired when quoteId is not provided.","enum":["MXN","DOP","USD","EUR"],"type":"string","uniqueKey":"fiatCurrency","typeLabel":"enum\u003cstring>"},"blockchainSymbol":{"description":"Identifier for the blockchain to token from which the conversion will be made.\nRequired when quoteId is not provided.\nBSC is only available for transactions over 50,000 MXN.","enum":["POL","SOL","ETH","BSC"],"type":"string","uniqueKey":"blockchainSymbol","typeLabel":"enum\u003cstring>"},"tokenSymbol":{"description":"Identifier for the token from which the conversion will be made.\nRequired when quoteId is not provided.","enum":["USDC","USDT"],"type":"string","uniqueKey":"tokenSymbol","typeLabel":"enum\u003cstring>"},"premiumSpread":{"type":"number","description":"Spread percentage to be applied to the exchange rate","uniqueKey":"premiumSpread","typeLabel":"number"}},"required":["userId"],"x-readme-ref-name":"CreatePartnerOffRampTransactionV2RequestBody","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"userId":"8374f327-38bd-4b0b-b8a7-2524599eb903","userBankInformation":{"accountIdentifier":"\u003cstring>","bankName":"\u003cstring>","documentIdentifier":"\u003cstring>","documentType":"\u003cstring>","routingNumber":"\u003cstring>","bic":"\u003cstring>","iban":"\u003cstring>"},"quoteId":"\u003cstring>","fiatAmount":123,"cryptoAmount":123,"premiumSpread":123}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"2705a8e9-21c3-4183-b72f-55afbb1d0ddf":{"description":"Off-ramp transaction created successfully. Returns the transaction details, including its id and current status.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true,"uniqueKey":"success","typeLabel":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string","description":"Transaction identifier","example":"63f51f11-6869-47b0-a109-ddb50ef20efb","isRequired":true,"uniqueKey":"data.id","typeLabel":"string"},"userId":{"type":"string","description":"User identifier","example":"8374f327-38bd-4b0b-b8a7-2524599eb903","isRequired":true,"uniqueKey":"data.userId","typeLabel":"string"},"status":{"type":"string","description":"Transaction status","example":"PENDING_PAYMENT","isRequired":true,"uniqueKey":"data.status","typeLabel":"string"},"cryptoAmount":{"type":"number","description":"Amount of crypto currency involved in the transaction","example":2500,"isRequired":true,"uniqueKey":"data.cryptoAmount","typeLabel":"number"},"fiatAmount":{"type":"number","description":"Amount of fiat currency involved in the transaction","example":50000,"isRequired":true,"uniqueKey":"data.fiatAmount","typeLabel":"number"},"exchangeRate":{"type":"number","description":"Exchange rate used for the transaction","example":19.53964594161554,"isRequired":true,"uniqueKey":"data.exchangeRate","typeLabel":"number"},"tokenSymbol":{"description":"Token symbol","example":"USDC","enum":["USDC","USDT"],"type":"string","isRequired":true,"uniqueKey":"data.tokenSymbol","typeLabel":"enum\u003cstring>"},"blockchainSymbol":{"description":"Blockchain symbol","example":"POL","enum":["POL","SOL","ETH","BSC"],"type":"string","isRequired":true,"uniqueKey":"data.blockchainSymbol","typeLabel":"enum\u003cstring>"},"fiatCurrency":{"description":"Fiat currency symbol","example":"MXN","enum":["MXN","DOP","USD","EUR"],"type":"string","isRequired":true,"uniqueKey":"data.fiatCurrency","typeLabel":"enum\u003cstring>"},"createdAt":{"type":"string","description":"Transaction creation date","example":"2025-05-14T10:00:00Z","isRequired":true,"uniqueKey":"data.createdAt","typeLabel":"string"},"completedAt":{"oneOf":[{"type":"string","description":"Transaction completion date (null if not completed)","isRequired":true,"uniqueKey":"data.completedAt.oneOf.0","typeLabel":"string"},{"type":"null","description":"Transaction completion date (null if not completed)","isRequired":true,"uniqueKey":"data.completedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.completedAt","typeLabel":"string | null"},"destinationWalletAddress":{"type":"string","description":"Destination wallet address for the transaction","example":"0x7796d4f304bd84171ee6730ad0f69c07a47e786d","isRequired":true,"uniqueKey":"data.destinationWalletAddress","typeLabel":"string"},"bankAccount":{"type":"object","description":"Bank account information","required":["country","accountIdentifier","isVerified"],"x-readme-ref-name":"BankAccountResponse","properties":{"country":{"type":"string","description":"The country of the bank account","example":"MX","isRequired":true,"uniqueKey":"data.bankAccount.country","typeLabel":"string"},"accountIdentifier":{"type":"string","description":"The account identifier for the bank account (CLABE in MX, account number elsewhere)","example":"014680260346007120","isRequired":true,"uniqueKey":"data.bankAccount.accountIdentifier","typeLabel":"string"},"isVerified":{"type":"boolean","description":"Whether the account is verified","example":true,"isRequired":true,"uniqueKey":"data.bankAccount.isVerified","typeLabel":"boolean"},"bankName":{"type":"string","description":"The name of the bank","example":"Santander","uniqueKey":"data.bankAccount.bankName","typeLabel":"string"},"accountType":{"type":"string","description":"The type of the account","example":"SAVINGS","uniqueKey":"data.bankAccount.accountType","typeLabel":"string"},"documentIdentifier":{"type":"string","description":"The document identifier used for verification (e.g. national tax / ID number)","example":"123abc","uniqueKey":"data.bankAccount.documentIdentifier","typeLabel":"string"},"documentType":{"type":"string","description":"Type of the document bound to the account (country specific)","example":"RNC","uniqueKey":"data.bankAccount.documentType","typeLabel":"string"},"iban":{"type":"string","description":"International Bank Account Number (SEPA / EU accounts)","example":"DE89370400440532013000","uniqueKey":"data.bankAccount.iban","typeLabel":"string"},"bic":{"type":"string","description":"Bank Identifier Code (SWIFT BIC) for SEPA / EU accounts","example":"DEUTDEFF","uniqueKey":"data.bankAccount.bic","typeLabel":"string"},"routingNumber":{"type":"string","description":"ABA routing number (US only, 9 digits)","example":"021000021","uniqueKey":"data.bankAccount.routingNumber","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.bankAccount","typeLabel":"object"},"crossFiatAmount":{"type":"number","uniqueKey":"data.crossFiatAmount","typeLabel":"number"},"premiumSpread":{"type":"number","description":"Premium spread applied to the transaction (0 if not provided)","example":0.01,"uniqueKey":"data.premiumSpread","typeLabel":"number"},"forwardingDays":{"type":"number","description":"Number of T+N forwarding days for settlement (0-4). Only for MXN OTC transactions.","example":2,"uniqueKey":"data.forwardingDays","typeLabel":"number"},"effectiveForwardingDays":{"type":"number","description":"Effective forwarding days for settlement (may differ from requested due to holidays/weekends).","example":4,"uniqueKey":"data.effectiveForwardingDays","typeLabel":"number"},"forwardingSettlementDate":{"format":"date-time","type":"string","description":"Calculated settlement date based on effective forwarding days offset.","example":"2026-03-14T03:25:27.495Z","uniqueKey":"data.forwardingSettlementDate","typeLabel":"string\u003cdate-time>"}},"required":["id","userId","status","cryptoAmount","fiatAmount","exchangeRate","tokenSymbol","blockchainSymbol","fiatCurrency","createdAt","completedAt","destinationWalletAddress","bankAccount"],"x-readme-ref-name":"OffRampPartnerV2Response","uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"success":true,"data":{"id":"63f51f11-6869-47b0-a109-ddb50ef20efb","userId":"8374f327-38bd-4b0b-b8a7-2524599eb903","status":"PENDING_PAYMENT","cryptoAmount":2500,"fiatAmount":50000,"crossFiatAmount":0,"exchangeRate":19.53964594161554,"tokenSymbol":"USDC","blockchainSymbol":"POL","fiatCurrency":"MXN","premiumSpread":0.01,"forwardingDays":2,"effectiveForwardingDays":4,"forwardingSettlementDate":"2026-03-14T03:25:27.495Z","createdAt":"2025-05-14T10:00:00Z","completedAt":null,"destinationWalletAddress":"0x7796d4f304bd84171ee6730ad0f69c07a47e786d","bankAccount":{"country":"MX","accountIdentifier":"014680260346007120","bankName":"Santander","isVerified":true}}},"examples":{"Example":{"title":"Example","value":{"success":true,"data":{"id":"63f51f11-6869-47b0-a109-ddb50ef20efb","userId":"8374f327-38bd-4b0b-b8a7-2524599eb903","status":"PENDING_PAYMENT","cryptoAmount":2500,"fiatAmount":50000,"crossFiatAmount":0,"exchangeRate":19.53964594161554,"tokenSymbol":"USDC","blockchainSymbol":"POL","fiatCurrency":"MXN","premiumSpread":0.01,"forwardingDays":2,"effectiveForwardingDays":4,"forwardingSettlementDate":"2026-03-14T03:25:27.495Z","createdAt":"2025-05-14T10:00:00Z","completedAt":null,"destinationWalletAddress":"0x7796d4f304bd84171ee6730ad0f69c07a47e786d","bankAccount":{"country":"MX","accountIdentifier":"014680260346007120","bankName":"Santander","isVerified":true}}}}},"exampleType":"examples"}},"exampleType":"examples"},"6db5e0ed-3d8b-490f-9ad5-f518fe523fc1":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false,"isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"code":{"type":"string","description":"Machine-readable error code.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"Optional per-field validation details.","items":{"type":"object","properties":{"field":{"type":"string","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["success","code","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"REQUIRED_USER_ID_ERROR":{"title":"REQUIRED_USER_ID_ERROR","value":{"success":false,"code":"REQUIRED_USER_ID_ERROR","message":"This endpoint requires a user id to be provided"}},"INVALID_USER_INPUT_ERROR":{"title":"INVALID_USER_INPUT_ERROR","value":{"success":false,"code":"INVALID_USER_INPUT_ERROR","message":"Invalid User Input"}},"BAD_REQUEST":{"title":"BAD_REQUEST","value":{"success":false,"code":"BAD_REQUEST","message":"Either quoteId or fiatCurrency, blockchainSymbol, tokenSymbol, and at least one of fiatAmount or cryptoAmount must be provided"}},"BAD_REQUEST_2":{"title":"BAD_REQUEST_2","value":{"success":false,"code":"BAD_REQUEST","message":"Fiat currency is disabled or does not exist"}},"BAD_REQUEST_3":{"title":"BAD_REQUEST_3","value":{"success":false,"code":"BAD_REQUEST","message":"This blockchain and token combination is disabled or does not exist"}},"BAD_REQUEST_4":{"title":"BAD_REQUEST_4","value":{"success":false,"code":"BAD_REQUEST","message":"Quote is not valid for OFF_RAMP"}},"QUOTE_EXPIRED":{"title":"QUOTE_EXPIRED","value":{"success":false,"code":"QUOTE_EXPIRED","message":"Quote has expired"}},"INVALID_FIAT_AMOUNT_ERROR":{"title":"INVALID_FIAT_AMOUNT_ERROR","value":{"success":false,"code":"INVALID_FIAT_AMOUNT_ERROR","message":"Fiat amount {amount} is outside of the allowed range for OFF_RAMP. Should be between {min} and {max}"}},"INVALID_TOKEN_AMOUNT_ERROR":{"title":"INVALID_TOKEN_AMOUNT_ERROR","value":{"success":false,"code":"INVALID_TOKEN_AMOUNT_ERROR","message":"Token amount {amount} is outside of the allowed range for OFF_RAMP. Should be between {min} and {max}"}},"INVALID_TOKEN_OPERATION_ERROR":{"title":"INVALID_TOKEN_OPERATION_ERROR","value":{"success":false,"code":"INVALID_TOKEN_OPERATION_ERROR","message":"Token {symbol} cannot be operated as OTC, only stable coins are allowed"}},"BAD_REQUEST_5":{"title":"BAD_REQUEST_5","value":{"success":false,"code":"BAD_REQUEST","message":"Either userBankInformationId or userBankInformation must be provided"}},"BAD_REQUEST_6":{"title":"BAD_REQUEST_6","value":{"success":false,"code":"BAD_REQUEST","message":"forwardingDays can only be specified for partners with manual off-ramp enabled"}},"INVALID_USER_INPUT_ERROR_2":{"title":"INVALID_USER_INPUT_ERROR_2","value":{"success":false,"code":"INVALID_USER_INPUT_ERROR","message":"The bank \"{bankName}\" is not supported for {country}. Allowed banks: {list}"}},"UNSUPPORTED_BANK":{"title":"UNSUPPORTED_BANK","value":{"success":false,"code":"UNSUPPORTED_BANK","message":"The provided bank: {bankName} is not currently supported for this transaction."}}},"exampleType":"examples"}},"exampleType":"examples"},"e22a9ac7-fc53-4063-8c6d-bf217e916b92":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false,"isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"code":{"type":"string","description":"Machine-readable error code.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"Optional per-field validation details.","items":{"type":"object","properties":{"field":{"type":"string","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["success","code","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"UNAUTHORIZED":{"title":"UNAUTHORIZED","value":{"success":false,"code":"UNAUTHORIZED","message":"API Key is missing"}},"UNAUTHORIZED_2":{"title":"UNAUTHORIZED_2","value":{"success":false,"code":"UNAUTHORIZED","message":"Invalid API Key format"}},"UNAUTHORIZED_3":{"title":"UNAUTHORIZED_3","value":{"success":false,"code":"UNAUTHORIZED","message":"Invalid API Key"}}},"exampleType":"examples"}},"exampleType":"examples"},"487a5058-9d7d-4bf9-ade9-ff6675b41dc4":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false,"isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"code":{"type":"string","description":"Machine-readable error code.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"Optional per-field validation details.","items":{"type":"object","properties":{"field":{"type":"string","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["success","code","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"USER_NOT_VERIFIED_ERROR":{"title":"USER_NOT_VERIFIED_ERROR","value":{"success":false,"code":"USER_NOT_VERIFIED_ERROR","message":"User is not allowed to perform the operations because has not completed the KYC verification."}},"USER_BANK_INFO_ACCESS_DENIED":{"title":"USER_BANK_INFO_ACCESS_DENIED","value":{"success":false,"code":"USER_BANK_INFO_ACCESS_DENIED","message":"The bank information does not belong to the specified user."}}},"exampleType":"examples"}},"exampleType":"examples"},"81c1fa0b-907e-4c93-8a36-2f76e23da63a":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false,"isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"code":{"type":"string","description":"Machine-readable error code.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"Optional per-field validation details.","items":{"type":"object","properties":{"field":{"type":"string","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["success","code","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"USER_BANK_INFO_NOT_FOUND":{"title":"USER_BANK_INFO_NOT_FOUND","value":{"success":false,"code":"USER_BANK_INFO_NOT_FOUND","message":"User bank information not found."}},"NOT_FOUND_ERROR":{"title":"NOT_FOUND_ERROR","value":{"success":false,"code":"NOT_FOUND_ERROR","message":"Requested resource was not found"}}},"exampleType":"examples"}},"exampleType":"examples"},"a36a4166-0e30-4f66-959e-0881dc11e628":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false,"isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"code":{"type":"string","description":"Machine-readable error code.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"Optional per-field validation details.","items":{"type":"object","properties":{"field":{"type":"string","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["success","code","message"],"uniqueKey":"","typeLabel":"object"},"example":{"success":false,"code":"CONFLICT","message":"A request with this idempotency key is currently being processed"},"examples":{"Example":{"title":"Example","value":{"success":false,"code":"CONFLICT","message":"A request with this idempotency key is currently being processed"}}},"exampleType":"examples"}},"exampleType":"examples"},"0c04a34f-1a50-4938-a5f6-33c78a45238e":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false,"isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"code":{"type":"string","description":"Machine-readable error code.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"Optional per-field validation details.","items":{"type":"object","properties":{"field":{"type":"string","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["success","code","message"],"uniqueKey":"","typeLabel":"object"},"example":{"success":false,"code":"INVALID_USER_INPUT_ERROR","message":"Idempotency-Key was already used with a different request body"},"examples":{"Example":{"title":"Example","value":{"success":false,"code":"INVALID_USER_INPUT_ERROR","message":"Idempotency-Key was already used with a different request body"}}},"exampleType":"examples"}},"exampleType":"examples"},"6b8175b2-b084-4ed8-800d-2503f37a9137":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false,"isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"code":{"type":"string","description":"Machine-readable error code.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"Optional per-field validation details.","items":{"type":"object","properties":{"field":{"type":"string","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["success","code","message"],"uniqueKey":"","typeLabel":"object"},"example":{"success":false,"code":"INTERNAL_SERVER_ERROR","message":"Internal server error"},"examples":{"Example":{"title":"Example","value":{"success":false,"code":"INTERNAL_SERVER_ERROR","message":"Internal server error"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"9633cf2e-bad1-4b28-8ffe-778fbe640335":{"PartnerApiKey":{"type":"apiKey","in":"header","name":"partner-api-key","description":"API key for the affiliated partner performing the request.","scopes":[]}}},"servers":{"c9d9fa62-e47c-45bb-b1bb-798396449e73":{"url":"https://api.sandbox.capa.fi"},"5b47b916-88e4-4fc1-8715-dbbc8341381b":{"url":"https://api.capa.fi"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"partner-api-key","description":"API key for the affiliated partner performing the request.","scopes":[]},"schema":{"title":"partner-api-key","type":"string","description":"API key for the affiliated partner performing the request.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"PartnerApiKey","name":"partner-api-key"}],"title":"PartnerApiKey"}]},"originalFileLocation":"reference/openapi/OffRampPartnerV2Controller_createPartnerOffRamp.json"},"subdomain":"capa","siteName":"Capa.fi","title":"Create Off-Ramp - Capa.fi","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-06T16:31:38.631Z","originalFileLocation":"reference/offramppartnerv2controller_createpartnerofframp.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=\"application-name\" content=\"Capa.fi\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/capa/Gj5tlmaKVowjgoAW/_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/capa/Gj5tlmaKVowjgoAW/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/capa/Gj5tlmaKVowjgoAW/_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/capa/Gj5tlmaKVowjgoAW/_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/capa/Gj5tlmaKVowjgoAW/_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/capa/Gj5tlmaKVowjgoAW/_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/capa/Gj5tlmaKVowjgoAW/_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/capa/Gj5tlmaKVowjgoAW/_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/capa/Gj5tlmaKVowjgoAW/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create Off-Ramp - Capa.fi\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Capa.fi\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.capa.fi/reference/offramppartnerv2controller_createpartnerofframp\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://capa.mintlify.app/_mintlify/api/og/v2?division=Off-Ramp\u0026amp;title=Create+Off-Ramp\u0026amp;theme=8042dca758d2679cfe40adac\u0026amp;signature=3c4c36345df71453d3e0c7ca33d260d3b8cc425b94efda7c58b371dc3184e8f8\">\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=\"Create Off-Ramp - Capa.fi\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://capa.mintlify.app/_mintlify/api/og/v2?division=Off-Ramp\u0026amp;title=Create+Off-Ramp\u0026amp;theme=8042dca758d2679cfe40adac\u0026amp;signature=3c4c36345df71453d3e0c7ca33d260d3b8cc425b94efda7c58b371dc3184e8f8\">\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/capa/Gj5tlmaKVowjgoAW/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Capa.fi\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#191f14\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.capa.fi/reference/offramppartnerv2controller_createpartnerofframp\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/reference/offramppartnerv2controller_createpartnerofframp.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.capa.fi/#organization\",\"name\":\"Capa.fi\",\"url\":\"https://docs.capa.fi\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/capa/sdievWamxx2n0U65/logo/logo.svg?fit=max\u0026auto=format\u0026n=sdievWamxx2n0U65\u0026q=85\u0026s=cd1c9b9fcff02ef9bd460d71d7823292\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.capa.fi#website\",\"name\":\"Capa.fi\",\"url\":\"https://docs.capa.fi\",\"publisher\":{\"@id\":\"https://docs.capa.fi/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.capa.fi/reference/offramppartnerv2controller_createpartnerofframp#webpage\",\"url\":\"https://docs.capa.fi/reference/offramppartnerv2controller_createpartnerofframp\",\"name\":\"Create Off-Ramp\",\"dateModified\":\"2026-10-06T16:31:38.631Z\",\"isPartOf\":{\"@id\":\"https://docs.capa.fi#website\"},\"breadcrumb\":{\"@id\":\"https://docs.capa.fi/reference/offramppartnerv2controller_createpartnerofframp#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.capa.fi/reference/offramppartnerv2controller_createpartnerofframp#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Capa Partner API - V2\",\"item\":\"https://docs.capa.fi/reference/userpartnercontrollerv2_createuser\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create Off-Ramp\",\"item\":\"https://docs.capa.fi/reference/offramppartnerv2controller_createpartnerofframp\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.capa.fi/reference/offramppartnerv2controller_createpartnerofframp#apireference\",\"headline\":\"Create Off-Ramp\",\"name\":\"Create Off-Ramp\",\"url\":\"https://docs.capa.fi/reference/offramppartnerv2controller_createpartnerofframp\",\"mainEntityOfPage\":{\"@id\":\"https://docs.capa.fi/reference/offramppartnerv2controller_createpartnerofframp#webpage\"},\"dateModified\":\"2026-10-06T16:31:38.631Z\",\"publisher\":{\"@id\":\"https://docs.capa.fi/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.capa.fi#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Capa.fi\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Capa.fi","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"book-open","pages":[{"title":"Guides","href":"/docs/getting-started"}]},{"tab":"API Reference","icon":"Code","pages":[{"group":"Capa Partner API - V2","pages":[{"group":"Users","pages":[{"title":"Create User","openapi":"reference/openapi/UserPartnerControllerV2_createUser.json POST /api/partner/v2/users","href":"/reference/userpartnercontrollerv2_createuser"},{"title":"Start KYC","openapi":"reference/openapi/UserPartnerControllerV2_createUserKYC.json POST /api/partner/v2/users/{userId}/kyc","href":"/reference/userpartnercontrollerv2_createuserkyc"},{"title":"Create KYC Link","openapi":"reference/openapi/UserPartnerControllerV2_createVerificationLink.json POST /api/partner/v2/users/{userId}/kyc/verification-link","href":"/reference/userpartnercontrollerv2_createverificationlink"},{"title":"Create KYB Link","openapi":"reference/openapi/UserPartnerControllerV2_generateKYBVerificationLink.json POST /api/partner/v2/users/{userId}/kyb/verification-link","href":"/reference/userpartnercontrollerv2_generatekybverificationlink"},{"title":"Request Signature","openapi":"reference/openapi/UserPartnerControllerV2_requestDocumentSignature.json POST /api/partner/v2/users/{userId}/documents/sign","href":"/reference/userpartnercontrollerv2_requestdocumentsignature"}]},{"group":"KYC","pages":[{"title":"Get KYC Details","openapi":"reference/openapi/KYCPartnerControllerV2_getUserVerificationDetails.json GET /api/partner/v2/kyc/details","href":"/reference/kycpartnercontrollerv2_getuserverificationdetails"}]},{"group":"KYB","pages":[{"title":"Submit Business Profile","openapi":"reference/openapi/KYBPartnerControllerV2_submitBusinessProfile.json POST /api/partner/v2/kyb","href":"/reference/kybpartnercontrollerv2_submitbusinessprofile"},{"title":"Get KYB Details","openapi":"reference/openapi/KYBPartnerControllerV2_getUserKYBDetails.json GET /api/partner/v2/kyb/details","href":"/reference/kybpartnercontrollerv2_getuserkybdetails"}]},{"group":"Quotes","pages":[{"title":"Create Quote","openapi":"reference/openapi/QuotePartnerV2Controller_createPartnerQuote.json POST /api/partner/v2/quotes","href":"/reference/quotepartnerv2controller_createpartnerquote"},{"title":"Get Quote Rate","openapi":"reference/openapi/QuotePartnerV2Controller_getPartnerQuoteRate.json GET /api/partner/v2/quotes","href":"/reference/quotepartnerv2controller_getpartnerquoterate"}]},{"group":"On-Ramp","pages":[{"title":"Create On-Ramp","openapi":"reference/openapi/OnRampPartnerV2Controller_createPartnerOnRamp.json POST /api/partner/v2/on-ramp","description":null,"href":"/reference/onramppartnerv2controller_createpartneronramp"}]},{"group":"Off-Ramp","pages":[{"title":"Create Off-Ramp","openapi":"reference/openapi/OffRampPartnerV2Controller_createPartnerOffRamp.json POST /api/partner/v2/off-ramp","href":"/reference/offramppartnerv2controller_createpartnerofframp"},{"title":"Execute Off-Ramp","openapi":"reference/openapi/OffRampPartnerV2Controller_executeOffRamp.json POST /api/partner/v2/off-ramp/execute","description":"Executes a previously created off-ramp transaction. This endpoint triggers the actual processing of the off-ramp transaction after crypto funds have been received.","href":"/reference/offramppartnerv2controller_executeofframp"}]},{"group":"Cross-Ramp","pages":[{"title":"Create Cross-Ramp","openapi":"reference/openapi/CrossRampPartnerV2Controller_createPartnerCrossRamp.json POST /api/partner/v2/cross-ramp","href":"/reference/crossramppartnerv2controller_createpartnercrossramp"},{"title":"Create Cross-Ramp Quote","openapi":"reference/openapi/CrossRampPartnerV2Controller_createPartnerCrossRampQuote.json POST /api/partner/v2/cross-ramp/quotes","href":"/reference/crossramppartnerv2controller_createpartnercrossrampquote"},{"title":"Get Cross-Ramp Rate","openapi":"reference/openapi/CrossRampPartnerV2Controller_getPartnerCrossRampQuoteRate.json GET /api/partner/v2/cross-ramp/quotes","href":"/reference/crossramppartnerv2controller_getpartnercrossrampquoterate"}]},{"group":"Associated Person Signatures","pages":[{"title":"Request Beneficial Owner Signatures","openapi":"reference/openapi/AssociatedPersonPartnerControllerV2_requestUboFormSignatures.json POST /api/partner/v2/users/{userId}/associated-persons/signatures","href":"/reference/associatedpersonpartnercontrollerv2_requestuboformsignatures"},{"title":"Get Beneficial Owner Signature Status","openapi":"reference/openapi/AssociatedPersonPartnerControllerV2_listUboFormSignatures.json GET /api/partner/v2/users/{userId}/associated-persons/signatures","href":"/reference/associatedpersonpartnercontrollerv2_listuboformsignatures"}]},{"group":"Transactions","pages":[{"title":"Cancel Transaction","openapi":"reference/openapi/TransactionPartnerV2Controller_cancelPartnerTransaction.json PUT /api/partner/v2/transactions/{id}/cancel","href":"/reference/transactionpartnerv2controller_cancelpartnertransaction"},{"title":"List Transactions","openapi":"reference/openapi/TransactionPartnerV2Controller_listPartnerUserTransactions.json GET /api/partner/v2/transactions","href":"/reference/transactionpartnerv2controller_listpartnerusertransactions"},{"title":"Mock Testing Guide","openapi":"reference/openapi/TransactionPartnerV2Controller_getMockTestingGuide.json GET /api/partner/v2/transactions/mock-testing-guide","href":"/reference/transactionpartnerv2controller_getmocktestingguide"}]},{"group":"Bank Accounts","pages":[{"title":"List Bank Accounts (User)","openapi":"reference/openapi/UserBankInfoPartnerV2Controller_getUserBankInfosByUserId.json GET /api/partner/v2/banks/users/{userId}/accounts","href":"/reference/userbankinfopartnerv2controller_getuserbankinfosbyuserid"},{"title":"Add Bank Account (User)","openapi":"reference/openapi/UserBankInfoPartnerV2Controller_createUserBankInfoByUserId.json POST /api/partner/v2/banks/users/{userId}/accounts","href":"/reference/userbankinfopartnerv2controller_createuserbankinfobyuserid"},{"title":"Delete Bank Account (User)","openapi":"reference/openapi/UserBankInfoPartnerV2Controller_deleteUserBankInfoByUserId.json DELETE /api/partner/v2/banks/users/{userId}/accounts/{userBankInfoId}","href":"/reference/userbankinfopartnerv2controller_deleteuserbankinfobyuserid"}]},{"group":"Virtual Accounts","pages":[{"title":"Get Virtual Account Status (User)","openapi":"reference/openapi/BankingOnboardingPartnerV2Controller_getOnboardingStatus.json GET /api/partner/v2/banks/users/{userId}/banking-onboarding","href":"/reference/bankingonboardingpartnerv2controller_getonboardingstatus"},{"title":"Request Virtual Account (User)","openapi":"reference/openapi/BankingOnboardingPartnerV2Controller_requestOnboarding.json POST /api/partner/v2/banks/users/{userId}/banking-onboarding","href":"/reference/bankingonboardingpartnerv2controller_requestonboarding"}]},{"group":"Wallets","pages":[{"title":"List Wallets","openapi":"reference/openapi/WalletAddressPartnerV2Controller_listUserWallets.json GET /api/partner/v2/users/{userId}/wallets","href":"/reference/walletaddresspartnerv2controller_listuserwallets"},{"title":"Create Wallet","openapi":"reference/openapi/WalletAddressPartnerV2Controller_createUserWallet.json POST /api/partner/v2/users/{userId}/wallets","href":"/reference/walletaddresspartnerv2controller_createuserwallet"},{"title":"Delete Wallet","openapi":"reference/openapi/WalletAddressPartnerV2Controller_deleteUserWallet.json DELETE /api/partner/v2/users/{userId}/wallets/{walletId}","href":"/reference/walletaddresspartnerv2controller_deleteuserwallet"},{"title":"Get Wallet Balances","openapi":"reference/openapi/UserBalancePartnerV2Controller_getUserWalletBalances.json GET /api/partner/v2/users/{userId}/wallets/balance","href":"/reference/userbalancepartnerv2controller_getuserwalletbalances"}]},{"group":"Webhooks · Settings","pages":[{"title":"Update Webhook Settings","openapi":"reference/openapi/PartnerWebhookSettingsV2Controller_update.json PUT /api/partner/v2/webhook-settings","href":"/reference/partnerwebhooksettingsv2controller_update"}]},{"group":"Webhooks · Notifications","pages":[{"title":"List Webhooks","openapi":"reference/openapi/PartnerWebhookNotificationV2Controller_listWebhookNotifications.json GET /api/partner/v2/webhook-notifications","href":"/reference/partnerwebhooknotificationv2controller_listwebhooknotifications"},{"title":"Get Webhook","openapi":"reference/openapi/PartnerWebhookNotificationV2Controller_getWebhookNotificationDetail.json GET /api/partner/v2/webhook-notifications/{id}","href":"/reference/partnerwebhooknotificationv2controller_getwebhooknotificationdetail"},{"title":"Retry Webhook","openapi":"reference/openapi/PartnerWebhookNotificationV2Controller_retry.json POST /api/partner/v2/webhook-notifications/{id}/retry","href":"/reference/partnerwebhooknotificationv2controller_retry"}]}]}]},{"tab":"Changelog","icon":"megaphone","pages":[{"title":"Changelog","href":"/changelog"}]}]},"title":"Create Off-Ramp - Capa.fi","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DKJwRUt2.js","utils-CWD_VS3u.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-oFjciODD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C76WsxC3.js","snippetPresets-DvPMxpX_.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CuNQfndH.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BVFpVUoF.js","shallow-t59Jg5Kr.js","getApiPlaygroundDisplay-C_JZ4amX.js","CodeSnippet-CLRDnx_h.js","CodeSnippets-C2myU4kc.js","Page-7TwLLapg.js","getPastedJson-B-JaVXw7.js","icon-BA-iDhH3.js","MethodPill-D4qZABFp.js","DuplicateIcon-THIDKO1O.js","createIcon-CYYJwgFd.js","DynamicMarkdown-UGQuxDKp.js","SectionHeading-jYELb23h.js","axios-vUo_bRtp.js","Markdown-DKsLa3wy.js","clsx-CefdjKz2.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BaREnp3o.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-sgx_0XzF.js"]}