{
"detail": {
"code": "card_declined",
"message": "The card was declined.",
"payment_intent_id": "7f3c1b2a-9d84-4e15-8c26-0b7a5d3e1f90",
"failure_reason": "card_security_check_failed",
"last4": "2420",
"brand": "Visa"
}
}
Charge a Saved Card into a Card-Acquiring Merchant
Charge a saved card and park the payment for review. The card is identified by payment_method_id and the receiving card-acquiring account by card_acquiring_id. The payment lands at pending_review for a Finogate admin to approve or reject.
By default the funds land in the card-acquiring account owner’s primary wallet for the currency. Send destination_wallet_id to credit one specific wallet instead — any wallet under your tenant, primary or not, whose currency matches currency (which defaults to USD). The resolved wallet comes back as destination_wallet_id on the response. A 409 means the wallet cannot take the credit (closed, suspended or frozen), or that the card-acquiring account settles to an external bank account and so has no wallet leg to redirect; a 422 means the wallet belongs to another tenant or holds a different currency.
Send splits to credit several wallets from this one charge — for example the end user’s share and your own fee. Each leg names a wallet (same rules as destination_wallet_id) and an amount, and the amounts must add up exactly to amount. Every leg shows in its wallet’s pending balance while the payment awaits review, and all legs become spendable together on approval; a rejection, void or refund claws every leg back or none. Mutually exclusive with destination_wallet_id. The resolved legs come back as splits on the response and ride on this payment’s webhooks.
How the card is billed depends on its configured charge mode, returned as charge_mode on the response. auth_capture authorizes (holds) the card now and screens AVS/CVV, then captures on approval — a rejection voids the hold. sale places no hold: nothing reaches the card until an admin approves, and then it is charged once.
A card whose manual review is still open (verification_status of awaiting_documents or pending) can be charged here, unlike on any other saved-card surface: this payment parks for an operator anyway, so that approval covers the open card review too. The payment comes back with needs_review: true. Its AVS/CVV rules stay strict, and a card an admin has rejected is still refused with a 409.
A 201 always means a live payment was recorded. The two outcomes that collect nothing are errors, keyed by detail.code:
422 card_declined — the issuer declined, or the card failed the AVS/CVV policy (any held authorization is voided).
400 card_processor_error — the charge could not be attempted at all: the processor was unreachable, misconfigured, or answered something unusable. Nothing was established about the card, so this is a retry rather than a reason to ask the cardholder for another one.
Both carry the same body: the payment record exists at failed, its id is on the error as payment_intent_id, the collapsed cause as failure_reason, and message is the processor’s own wording for what happened. The key is consumed, so a replay returns this same error.
Supply a unique idempotency_key — a replay returns the same record.
POST
/
v1
/
platform
/
payments
/
card-to-merchant
Charge a saved card into a card-acquiring merchant
The access token received from the authorization server in the OAuth 2.0 flow.
Body
application/json
Request body for POST /v1/platform/payments/card-to-merchant.
The card is identified by payment_method_id (a card already vaulted
for a user under the tenant). card_acquiring_id selects the NMI
merchant (MID) the funds deposit into; it must match the merchant the
card was vaulted under (vault tokens are MID-namespaced). Omit it to use
the tenant's first approved card-acquiring account.
Optional. The payment category code to tag this payment with, recording what the payment was for. Omit it and the payment is created exactly as before, untagged. If you do send one it must be a code your platform can currently use, otherwise the request is rejected and no money moves. Fetch the codes from GET /v1/platform/catalog/payment-categories. Codes are issued separately in test and live, so read the list in each mode — the same number does not mean the same category across them.
Public id of the card-acquiring merchant to deposit into. Optional — when omitted the tenant's first approved (oldest created) card-acquiring account is used. When supplied it is always honoured; there is no fallback, and a card vaulted under a different account is refused.
Public id of the exact wallet to credit. Optional — when omitted the funds land in the card-acquiring account owner's primary wallet for the currency. The wallet must belong to this tenant and its currency must match currency; it does not have to be a primary wallet. Not accepted when the card-acquiring account settles to an external bank account.
Credit more than one wallet from this single charge. Between 1 and 10 legs; the leg amounts must add up exactly to amount; each wallet may appear at most once. Mutually exclusive with destination_wallet_id, and refused when the card-acquiring account settles to an external bank. Omit for the ordinary single-destination charge. Every leg lands in its wallet's pending balance while the payment awaits review and becomes spendable together on approval.
Required array length: 1 - 10 elements
Show child attributes
Response
Successful Response
Standard response wrapper for single-object responses and errors.
Generic over the payload type. A route that declares
CommonResponse[SomeModel] gets the real data schema rendered in
OpenAPI/Swagger; a bare CommonResponse leaves data untyped.
UTC timestamp (milliseconds since epoch) when response was generated.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Finogates API Documentation","colors":{"primary":"#0161EF","light":"#005FC8","dark":"#0161EF"},"logo":{"light":"https://mintcdn.com/finogates/XLUrxtJNLX8DNeIV/assets/logo/app-logo-dark.png?fit=max\u0026auto=format\u0026n=XLUrxtJNLX8DNeIV\u0026q=85\u0026s=e00390491535714f472eb3e4ec1edc84","dark":"https://mintcdn.com/finogates/XLUrxtJNLX8DNeIV/assets/logo/app-logo-light.png?fit=max\u0026auto=format\u0026n=XLUrxtJNLX8DNeIV\u0026q=85\u0026s=d3498e69f2963f42bbc431b5152a7906"},"favicon":"https://mintcdn.com/finogates/XLUrxtJNLX8DNeIV/favicon.ico?fit=max\u0026auto=format\u0026n=XLUrxtJNLX8DNeIV\u0026q=85\u0026s=5b975369622b0e780220864a3af0bd91","api":{"openapi":{"source":"https://api-sandbox.fg.wintpay.com/openapi-v1-platform.json","directory":"api-reference"}},"navbar":{"links":[{"href":"mailto:support@finogates.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.finogates.com"}},"seo":{"indexing":"all"},"fonts":{"family":"Inter","weight":400},"styling":{"eyebrows":"breadcrumbs","latex":false},"interaction":{"drilldown":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"finogates","hasAudioNarration":false,"actualSubdomain":"finogates","customDomains":["developer.finogates.com"],"gitSource":{"type":"github","owner":"paywint-developer","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6acdb33161144972c6aff215","collectionId":"071256f1-4b56-436f-b45e-c00a7f1caceb","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6acdb33161144972c6aff215"},"entitlements":{},"buildId":"6acdb33161144972c6aff215","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":172},{"language":"default","tag":"Payees","count":18},{"language":"default","tag":"Phone Numbers","count":18},{"language":"default","tag":"Webhooks","count":16},{"language":"default","tag":"Card Processing","count":15},{"language":"default","tag":"Wallets","count":14},{"language":"default","tag":"Bank Accounts","count":13},{"language":"default","tag":"Verification","count":13},{"language":"default","tag":"Digital Assets","count":9},{"language":"default","tag":"International","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","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":"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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","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},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/payments/card-to-merchant-payment","slug":"/api-reference/payments/card-to-merchant-payment","pageMetadata":{"title":"Charge a Saved Card into a Card-Acquiring Merchant","openapi":"POST /v1/platform/payments/card-to-merchant","tag":"LEGACY","description":"Charge a saved card and park the payment for review. The card is identified by ``payment_method_id`` and the receiving card-acquiring account by ``card_acquiring_id``. The payment lands at ``pending_review`` for a Finogate admin to approve or reject.\n\nBy default the funds land in the card-acquiring account owner's primary wallet for the currency. Send ``destination_wallet_id`` to credit one specific wallet instead — any wallet under your tenant, primary or not, whose currency matches ``currency`` (which defaults to ``USD``). The resolved wallet comes back as ``destination_wallet_id`` on the response. A ``409`` means the wallet cannot take the credit (closed, suspended or frozen), or that the card-acquiring account settles to an external bank account and so has no wallet leg to redirect; a ``422`` means the wallet belongs to another tenant or holds a different currency.\n\nSend ``splits`` to credit **several** wallets from this one charge — for example the end user's share and your own fee. Each leg names a wallet (same rules as ``destination_wallet_id``) and an amount, and the amounts must add up exactly to ``amount``. Every leg shows in its wallet's pending balance while the payment awaits review, and all legs become spendable together on approval; a rejection, void or refund claws every leg back or none. Mutually exclusive with ``destination_wallet_id``. The resolved legs come back as ``splits`` on the response and ride on this payment's webhooks.\n\nHow the card is billed depends on its configured charge mode, returned as ``charge_mode`` on the response. ``auth_capture`` authorizes (holds) the card now and screens AVS/CVV, then captures on approval — a rejection voids the hold. ``sale`` places no hold: nothing reaches the card until an admin approves, and then it is charged once.\n\nA card whose manual review is still open (``verification_status`` of ``awaiting_documents`` or ``pending``) **can** be charged here, unlike on any other saved-card surface: this payment parks for an operator anyway, so that approval covers the open card review too. The payment comes back with ``needs_review: true``. Its AVS/CVV rules stay strict, and a card an admin has **rejected** is still refused with a ``409``.\n\nA ``201`` always means a live payment was recorded. The two outcomes that collect nothing are errors, keyed by ``detail.code``:\n\n* ``422 card_declined`` — the issuer declined, or the card failed the AVS/CVV policy (any held authorization is voided).\n\n* ``400 card_processor_error`` — the charge could not be attempted at all: the processor was unreachable, misconfigured, or answered something unusable. Nothing was established about the card, so this is a retry rather than a reason to ask the cardholder for another one.\n\nBoth carry the same body: the payment record exists at ``failed``, its id is on the error as ``payment_intent_id``, the collapsed cause as ``failure_reason``, and ``message`` is the processor's own wording for what happened. The key **is** consumed, so a replay returns this same error.\n\nSupply a unique ``idempotency_key`` — a replay returns the same record.","href":"/api-reference/payments/card-to-merchant-payment"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Charge a saved card and park the payment for review. The card is identified by \", _jsx(_components.code, {\n children: \"payment_method_id\"\n }), \" and the receiving card-acquiring account by \", _jsx(_components.code, {\n children: \"card_acquiring_id\"\n }), \". The payment lands at \", _jsx(_components.code, {\n children: \"pending_review\"\n }), \" for a Finogate admin to approve or reject.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"By default the funds land in the card-acquiring account owner’s primary wallet for the currency. Send \", _jsx(_components.code, {\n children: \"destination_wallet_id\"\n }), \" to credit one specific wallet instead — any wallet under your tenant, primary or not, whose currency matches \", _jsx(_components.code, {\n children: \"currency\"\n }), \" (which defaults to \", _jsx(_components.code, {\n children: \"USD\"\n }), \"). The resolved wallet comes back as \", _jsx(_components.code, {\n children: \"destination_wallet_id\"\n }), \" on the response. A \", _jsx(_components.code, {\n children: \"409\"\n }), \" means the wallet cannot take the credit (closed, suspended or frozen), or that the card-acquiring account settles to an external bank account and so has no wallet leg to redirect; a \", _jsx(_components.code, {\n children: \"422\"\n }), \" means the wallet belongs to another tenant or holds a different currency.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Send \", _jsx(_components.code, {\n children: \"splits\"\n }), \" to credit \", _jsx(_components.strong, {\n children: \"several\"\n }), \" wallets from this one charge — for example the end user’s share and your own fee. Each leg names a wallet (same rules as \", _jsx(_components.code, {\n children: \"destination_wallet_id\"\n }), \") and an amount, and the amounts must add up exactly to \", _jsx(_components.code, {\n children: \"amount\"\n }), \". Every leg shows in its wallet’s pending balance while the payment awaits review, and all legs become spendable together on approval; a rejection, void or refund claws every leg back or none. Mutually exclusive with \", _jsx(_components.code, {\n children: \"destination_wallet_id\"\n }), \". The resolved legs come back as \", _jsx(_components.code, {\n children: \"splits\"\n }), \" on the response and ride on this payment’s webhooks.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"How the card is billed depends on its configured charge mode, returned as \", _jsx(_components.code, {\n children: \"charge_mode\"\n }), \" on the response. \", _jsx(_components.code, {\n children: \"auth_capture\"\n }), \" authorizes (holds) the card now and screens AVS/CVV, then captures on approval — a rejection voids the hold. \", _jsx(_components.code, {\n children: \"sale\"\n }), \" places no hold: nothing reaches the card until an admin approves, and then it is charged once.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A card whose manual review is still open (\", _jsx(_components.code, {\n children: \"verification_status\"\n }), \" of \", _jsx(_components.code, {\n children: \"awaiting_documents\"\n }), \" or \", _jsx(_components.code, {\n children: \"pending\"\n }), \") \", _jsx(_components.strong, {\n children: \"can\"\n }), \" be charged here, unlike on any other saved-card surface: this payment parks for an operator anyway, so that approval covers the open card review too. The payment comes back with \", _jsx(_components.code, {\n children: \"needs_review: true\"\n }), \". Its AVS/CVV rules stay strict, and a card an admin has \", _jsx(_components.strong, {\n children: \"rejected\"\n }), \" is still refused with a \", _jsx(_components.code, {\n children: \"409\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A \", _jsx(_components.code, {\n children: \"201\"\n }), \" always means a live payment was recorded. The two outcomes that collect nothing are errors, keyed by \", _jsx(_components.code, {\n children: \"detail.code\"\n }), \":\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"422 card_declined\"\n }), \" — the issuer declined, or the card failed the AVS/CVV policy (any held authorization is voided).\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"400 card_processor_error\"\n }), \" — the charge could not be attempted at all: the processor was unreachable, misconfigured, or answered something unusable. Nothing was established about the card, so this is a retry rather than a reason to ask the cardholder for another one.\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Both carry the same body: the payment record exists at \", _jsx(_components.code, {\n children: \"failed\"\n }), \", its id is on the error as \", _jsx(_components.code, {\n children: \"payment_intent_id\"\n }), \", the collapsed cause as \", _jsx(_components.code, {\n children: \"failure_reason\"\n }), \", and \", _jsx(_components.code, {\n children: \"message\"\n }), \" is the processor’s own wording for what happened. The key \", _jsx(_components.strong, {\n children: \"is\"\n }), \" consumed, so a replay returns this same error.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Supply a unique \", _jsx(_components.code, {\n children: \"idempotency_key\"\n }), \" — a replay returns the same record.\"]\n })]\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":"Charge a Saved Card into a Card-Acquiring Merchant","openapi":"POST /v1/platform/payments/card-to-merchant","tag":"LEGACY","description":"Charge a saved card and park the payment for review. The card is identified by ``payment_method_id`` and the receiving card-acquiring account by ``card_acquiring_id``. The payment lands at ``pending_review`` for a Finogate admin to approve or reject.\n\nBy default the funds land in the card-acquiring account owner's primary wallet for the currency. Send ``destination_wallet_id`` to credit one specific wallet instead — any wallet under your tenant, primary or not, whose currency matches ``currency`` (which defaults to ``USD``). The resolved wallet comes back as ``destination_wallet_id`` on the response. A ``409`` means the wallet cannot take the credit (closed, suspended or frozen), or that the card-acquiring account settles to an external bank account and so has no wallet leg to redirect; a ``422`` means the wallet belongs to another tenant or holds a different currency.\n\nSend ``splits`` to credit **several** wallets from this one charge — for example the end user's share and your own fee. Each leg names a wallet (same rules as ``destination_wallet_id``) and an amount, and the amounts must add up exactly to ``amount``. Every leg shows in its wallet's pending balance while the payment awaits review, and all legs become spendable together on approval; a rejection, void or refund claws every leg back or none. Mutually exclusive with ``destination_wallet_id``. The resolved legs come back as ``splits`` on the response and ride on this payment's webhooks.\n\nHow the card is billed depends on its configured charge mode, returned as ``charge_mode`` on the response. ``auth_capture`` authorizes (holds) the card now and screens AVS/CVV, then captures on approval — a rejection voids the hold. ``sale`` places no hold: nothing reaches the card until an admin approves, and then it is charged once.\n\nA card whose manual review is still open (``verification_status`` of ``awaiting_documents`` or ``pending``) **can** be charged here, unlike on any other saved-card surface: this payment parks for an operator anyway, so that approval covers the open card review too. The payment comes back with ``needs_review: true``. Its AVS/CVV rules stay strict, and a card an admin has **rejected** is still refused with a ``409``.\n\nA ``201`` always means a live payment was recorded. The two outcomes that collect nothing are errors, keyed by ``detail.code``:\n\n* ``422 card_declined`` — the issuer declined, or the card failed the AVS/CVV policy (any held authorization is voided).\n\n* ``400 card_processor_error`` — the charge could not be attempted at all: the processor was unreachable, misconfigured, or answered something unusable. Nothing was established about the card, so this is a retry rather than a reason to ask the cardholder for another one.\n\nBoth carry the same body: the payment record exists at ``failed``, its id is on the error as ``payment_intent_id``, the collapsed cause as ``failure_reason``, and ``message`` is the processor's own wording for what happened. The key **is** consumed, so a replay returns this same error.\n\nSupply a unique ``idempotency_key`` — a replay returns the same record.","href":"/api-reference/payments/card-to-merchant-payment"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["payments"],"summary":"Charge a saved card into a card-acquiring merchant","description":"Charge a saved card and park the payment for review. The card is identified by ``payment_method_id`` and the receiving card-acquiring account by ``card_acquiring_id``. The payment lands at ``pending_review`` for a Finogate admin to approve or reject.\n\nBy default the funds land in the card-acquiring account owner's primary wallet for the currency. Send ``destination_wallet_id`` to credit one specific wallet instead — any wallet under your tenant, primary or not, whose currency matches ``currency`` (which defaults to ``USD``). The resolved wallet comes back as ``destination_wallet_id`` on the response. A ``409`` means the wallet cannot take the credit (closed, suspended or frozen), or that the card-acquiring account settles to an external bank account and so has no wallet leg to redirect; a ``422`` means the wallet belongs to another tenant or holds a different currency.\n\nSend ``splits`` to credit **several** wallets from this one charge — for example the end user's share and your own fee. Each leg names a wallet (same rules as ``destination_wallet_id``) and an amount, and the amounts must add up exactly to ``amount``. Every leg shows in its wallet's pending balance while the payment awaits review, and all legs become spendable together on approval; a rejection, void or refund claws every leg back or none. Mutually exclusive with ``destination_wallet_id``. The resolved legs come back as ``splits`` on the response and ride on this payment's webhooks.\n\nHow the card is billed depends on its configured charge mode, returned as ``charge_mode`` on the response. ``auth_capture`` authorizes (holds) the card now and screens AVS/CVV, then captures on approval — a rejection voids the hold. ``sale`` places no hold: nothing reaches the card until an admin approves, and then it is charged once.\n\nA card whose manual review is still open (``verification_status`` of ``awaiting_documents`` or ``pending``) **can** be charged here, unlike on any other saved-card surface: this payment parks for an operator anyway, so that approval covers the open card review too. The payment comes back with ``needs_review: true``. Its AVS/CVV rules stay strict, and a card an admin has **rejected** is still refused with a ``409``.\n\nA ``201`` always means a live payment was recorded. The two outcomes that collect nothing are errors, keyed by ``detail.code``:\n\n* ``422 card_declined`` — the issuer declined, or the card failed the AVS/CVV policy (any held authorization is voided).\n\n* ``400 card_processor_error`` — the charge could not be attempted at all: the processor was unreachable, misconfigured, or answered something unusable. Nothing was established about the card, so this is a retry rather than a reason to ask the cardholder for another one.\n\nBoth carry the same body: the payment record exists at ``failed``, its id is on the error as ``payment_intent_id``, the collapsed cause as ``failure_reason``, and ``message`` is the processor's own wording for what happened. The key **is** consumed, so a replay returns this same error.\n\nSupply a unique ``idempotency_key`` — a replay returns the same record.","operationId":"create_card_to_merchant_payment_v1_platform_payments_card_to_merchant_post","requestBody":"3a3ecf30-9937-4abf-980a-0c44ac8673b3","responses":{"201":"a06a6480-9df5-42c0-b9e5-8edbde5d52c5","400":"74f7a580-f8e3-4838-8864-8bcd4206e11a","422":"5a5cb29a-c45b-40f9-9966-165d39802fe4"},"security":["8c105c37-39f5-4d26-babb-f75ae562fe15"],"method":"post","type":"path","servers":["e8e3d206-dddf-4b3a-8686-a8bb8fdad22b","63fefe2c-7a97-42af-996c-e46a872cdae6"],"path":"/v1/platform/payments/card-to-merchant","baseUrlOptions":["https://api-sandbox.finogates.com","https://api.finogates.com"],"title":"Charge a saved card into a card-acquiring merchant","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"properties":{"payment_method_id":{"type":"string","format":"uuid","title":"Payment Method Id","description":"Public id of the saved card to charge.","isRequired":true,"uniqueKey":"payment_method_id","typeLabel":"string\u003cuuid>"},"payer_user_id":{"type":"string","format":"uuid","title":"Payer User Id","description":"Public id of the payer (cardholder) user being charged.","isRequired":true,"uniqueKey":"payer_user_id","typeLabel":"string\u003cuuid>"},"amount":{"oneOf":[{"type":"number","title":"Amount","description":"Amount to hold, major units.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"amount.oneOf.0","typeLabel":"number"},{"type":"string","title":"Amount","description":"Amount to hold, major units.","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","isRequired":true,"uniqueKey":"amount.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"amount","typeLabel":"number | string"},"idempotency_key":{"type":"string","maxLength":120,"minLength":1,"title":"Idempotency Key","description":"Caller-chosen unique key; a replay returns the same record.","isRequired":true,"uniqueKey":"idempotency_key","typeLabel":"string"},"payment_category":{"oneOf":[{"type":"integer","title":"Payment Category","description":"Optional. The payment category `code` to tag this payment with, recording what the payment was for. Omit it and the payment is created exactly as before, untagged. If you do send one it must be a code your platform can currently use, otherwise the request is rejected and no money moves. Fetch the codes from `GET /v1/platform/catalog/payment-categories`. Codes are issued separately in test and live, so read the list in each mode — the same number does not mean the same category across them.","minimum":0,"example":1,"exclusiveMinimum":true,"uniqueKey":"payment_category.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Payment Category","description":"Optional. The payment category `code` to tag this payment with, recording what the payment was for. Omit it and the payment is created exactly as before, untagged. If you do send one it must be a code your platform can currently use, otherwise the request is rejected and no money moves. Fetch the codes from `GET /v1/platform/catalog/payment-categories`. Codes are issued separately in test and live, so read the list in each mode — the same number does not mean the same category across them.","example":1,"uniqueKey":"payment_category.oneOf.1","typeLabel":"null"}],"uniqueKey":"payment_category","typeLabel":"integer | null"},"card_acquiring_id":{"oneOf":[{"type":"string","title":"Card Acquiring Id","description":"Public id of the card-acquiring merchant to deposit into. Optional — when omitted the tenant's first approved (oldest created) card-acquiring account is used. When supplied it is always honoured; there is no fallback, and a card vaulted under a different account is refused.","format":"uuid","uniqueKey":"card_acquiring_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","title":"Card Acquiring Id","description":"Public id of the card-acquiring merchant to deposit into. Optional — when omitted the tenant's first approved (oldest created) card-acquiring account is used. When supplied it is always honoured; there is no fallback, and a card vaulted under a different account is refused.","uniqueKey":"card_acquiring_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"card_acquiring_id","typeLabel":"string\u003cuuid> | null"},"destination_wallet_id":{"oneOf":[{"type":"string","title":"Destination Wallet Id","description":"Public id of the exact wallet to credit. Optional — when omitted the funds land in the card-acquiring account owner's primary wallet for the currency. The wallet must belong to this tenant and its currency must match ``currency``; it does not have to be a primary wallet. Not accepted when the card-acquiring account settles to an external bank account.","format":"uuid","uniqueKey":"destination_wallet_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","title":"Destination Wallet Id","description":"Public id of the exact wallet to credit. Optional — when omitted the funds land in the card-acquiring account owner's primary wallet for the currency. The wallet must belong to this tenant and its currency must match ``currency``; it does not have to be a primary wallet. Not accepted when the card-acquiring account settles to an external bank account.","uniqueKey":"destination_wallet_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"destination_wallet_id","typeLabel":"string\u003cuuid> | null"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","default":"USD","uniqueKey":"currency","typeLabel":"string"},"metadata":{"oneOf":[{"type":"object","title":"Metadata","description":"Optional caller metadata stored on the record.","additionalProperties":true,"uniqueKey":"metadata.oneOf.0","typeLabel":"Metadata · object"},{"type":"null","title":"Metadata","description":"Optional caller metadata stored on the record.","uniqueKey":"metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"metadata","typeLabel":"Metadata · object | null"},"splits":{"oneOf":[{"type":"array","items":{"properties":{"wallet_id":{"type":"string","format":"uuid","title":"Wallet Id","description":"Public id of the wallet this leg credits. Any wallet under your tenant whose currency matches the charge ``currency`` — the same rule as ``destination_wallet_id``. Each wallet may appear at most once.","isRequired":true,"uniqueKey":"splits.oneOf.0.items.[INDEX].wallet_id","typeLabel":"string\u003cuuid>"},"amount":{"oneOf":[{"type":"number","title":"Amount","description":"Amount this wallet receives, major units, at most 2 decimal places. All leg amounts must add up exactly to ``amount`` on the charge.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"splits.oneOf.0.items.[INDEX].amount.oneOf.0","typeLabel":"number"},{"type":"string","title":"Amount","description":"Amount this wallet receives, major units, at most 2 decimal places. All leg amounts must add up exactly to ``amount`` on the charge.","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","isRequired":true,"uniqueKey":"splits.oneOf.0.items.[INDEX].amount.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"splits.oneOf.0.items.[INDEX].amount","typeLabel":"number | string"},"role":{"type":"string","enum":["beneficiary","fee"],"title":"Role","description":"Display label for reporting — ``beneficiary`` (default) or ``fee`` (your own margin). The money moves identically either way.","default":"beneficiary","uniqueKey":"splits.oneOf.0.items.[INDEX].role","typeLabel":"enum\u003cstring>"}},"type":"object","required":["wallet_id","amount"],"title":"CardToMerchantSplitCreate","description":"One credit destination of a split charge.\n\nThe legs are credited, released and reversed **together** — a held charge\nshows every leg in its wallet's pending balance, an approval makes every\nleg spendable, and a reversal claws every leg back or none at all.","uniqueKey":"splits.oneOf.0.items.[INDEX]","typeLabel":"CardToMerchantSplitCreate · object"},"title":"Splits","description":"Credit more than one wallet from this single charge. Between 1 and 10 legs; the leg amounts must add up exactly to ``amount``; each wallet may appear at most once. Mutually exclusive with ``destination_wallet_id``, and refused when the card-acquiring account settles to an external bank. Omit for the ordinary single-destination charge. Every leg lands in its wallet's pending balance while the payment awaits review and becomes spendable together on approval.","maxItems":10,"minItems":1,"uniqueKey":"splits.oneOf.0","typeLabel":"CardToMerchantSplitCreate · object[]"},{"type":"null","title":"Splits","description":"Credit more than one wallet from this single charge. Between 1 and 10 legs; the leg amounts must add up exactly to ``amount``; each wallet may appear at most once. Mutually exclusive with ``destination_wallet_id``, and refused when the card-acquiring account settles to an external bank. Omit for the ordinary single-destination charge. Every leg lands in its wallet's pending balance while the payment awaits review and becomes spendable together on approval.","uniqueKey":"splits.oneOf.1","typeLabel":"null"}],"uniqueKey":"splits","typeLabel":"CardToMerchantSplitCreate · object[] | null"}},"type":"object","required":["payment_method_id","payer_user_id","amount","idempotency_key"],"title":"PlatformCardToMerchantCreate","description":"Request body for ``POST /v1/platform/payments/card-to-merchant``.\n\nThe card is identified by ``payment_method_id`` (a card already vaulted\nfor a user under the tenant). ``card_acquiring_id`` selects the NMI\nmerchant (MID) the funds deposit into; it must match the merchant the\ncard was vaulted under (vault tokens are MID-namespaced). Omit it to use\nthe tenant's first approved card-acquiring account.","uniqueKey":"","typeLabel":"PlatformCardToMerchantCreate · object"},"examples":{"Example":{"title":"Example","value":{"payment_method_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","payer_user_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","amount":1,"idempotency_key":"\u003cstring>","payment_category":1,"card_acquiring_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","destination_wallet_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","currency":"USD","metadata":{},"splits":[{"wallet_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","amount":1,"role":"beneficiary"}]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"a06a6480-9df5-42c0-b9e5-8edbde5d52c5":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"status_code":{"type":"integer","title":"Status Code","description":"HTTP status code for the response.","isRequired":true,"uniqueKey":"status_code","typeLabel":"integer"},"data":{"title":"Data","description":"Payload or error details.","isRequired":true,"uniqueKey":"data","typeLabel":"any"},"query_generated_time":{"type":"integer","title":"Query Generated Time","description":"UTC timestamp (milliseconds since epoch) when response was generated.","isRequired":true,"uniqueKey":"query_generated_time","typeLabel":"integer"}},"type":"object","required":["status_code","data","query_generated_time"],"title":"CommonResponse","description":"Standard response wrapper for single-object responses and errors.\n\nGeneric over the payload type. A route that declares\n``CommonResponse[SomeModel]`` gets the real ``data`` schema rendered in\nOpenAPI/Swagger; a bare ``CommonResponse`` leaves ``data`` untyped.","uniqueKey":"","typeLabel":"CommonResponse · object"},"examples":{"Example":{"title":"Example","value":{"status_code":123,"data":"\u003cunknown>","query_generated_time":123}}},"exampleType":"generated"}},"exampleType":"generated"},"74f7a580-f8e3-4838-8864-8bcd4206e11a":{"description":"The charge could not be attempted. Nothing was established about the card, so this is a retry.","content":{"application/json":{"examples":{"card_processor_error":{"title":"card_processor_error","value":{"detail":{"code":"card_processor_error","message":"Transaction cannot be processed. Contact support.","payment_intent_id":"7f3c1b2a-9d84-4e15-8c26-0b7a5d3e1f90","failure_reason":"gateway_error","last4":"2420","brand":"Visa"}}}},"exampleType":"examples"}},"exampleType":"examples"},"5a5cb29a-c45b-40f9-9966-165d39802fe4":{"description":"The card was refused: the issuer declined it, or it failed the AVS/CVV policy.","content":{"application/json":{"examples":{"card_declined":{"title":"card_declined","value":{"detail":{"code":"card_declined","message":"The card was declined.","payment_intent_id":"7f3c1b2a-9d84-4e15-8c26-0b7a5d3e1f90","failure_reason":"card_security_check_failed","last4":"2420","brand":"Visa"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"8c105c37-39f5-4d26-babb-f75ae562fe15":{"_AuthenticatedBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/v1/platform/auth/token"}},"scopes":[]}}},"servers":{"e8e3d206-dddf-4b3a-8686-a8bb8fdad22b":{"url":"https://api-sandbox.finogates.com","description":"Sandbox"},"63fefe2c-7a97-42af-996c-e46a872cdae6":{"url":"https://api.finogates.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/v1/platform/auth/token"}},"scopes":[]},"schema":{"title":"OAuth2 Auth","type":"string","isRequired":true,"description":"The access token received from the authorization server in the OAuth 2.0 flow.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"_AuthenticatedBearer","name":"Authorization"}],"title":"_AuthenticatedBearer"}]},"originalFileLocation":"open-api-collection-test.json"},"subdomain":"finogates","siteName":"Finogates API Documentation","title":"Charge a Saved Card into a Card-Acquiring Merchant - Finogates API Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-05T09:36:19.593Z","originalFileLocation":"api-reference/payments/card-to-merchant-payment.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=\"Charge a saved card and park the payment for review. The card is identified by payment_method_id and the receiving card-acquiring account by card_acquiring_id. The payment lands at pending_review for a Finogate admin to approve or reject. By default the funds land in the card-acquiring account owner\u0026#x27;s primary wallet for the currency. Send destination_wallet_id to credit one specific wallet instead — any wallet under your tenant, primary or not, whose currency matches currency (which defaults to USD). The resolved wallet comes back as destination_wallet_id on the response. A 409 means the wallet cannot take the credit (closed, suspended or frozen), or that the card-acquiring account settles to an external bank account and so has no wallet leg to redirect; a 422 means the wallet belongs to another tenant or holds a different currency. Send splits to credit several wallets from this one charge — for example the end user\u0026#x27;s share and your own fee. Each leg names a wallet (same rules as destination_wallet_id) and an amount, and the amounts must add up exactly to amount. Every leg shows in its wallet\u0026#x27;s pending balance while the payment awaits review, and all legs become spendable together on approval; a rejection, void or refund claws every leg back or none. Mutually exclusive with destination_wallet_id. The resolved legs come back as splits on the response and ride on this payment\u0026#x27;s webhooks. How the card is billed depends on its configured charge mode, returned as charge_mode on the response. auth_capture authorizes (holds) the card now and screens AVS/CVV, then captures on approval — a rejection voids the hold. sale places no hold: nothing reaches the card until an admin approves, and then it is charged once. A card whose manual review is still open (verification_status of awaiting_documents or pending) can be charged here, unlike on any other saved-card surface: this payment parks for an operator anyway, so that approval covers the open card review too. The payment comes back with needs_review: true. Its AVS/CVV rules stay strict, and a card an admin has rejected is still refused with a 409. A 201 always means a live payment was recorded. The two outcomes that collect nothing are errors, keyed by detail.code: 422 card_declined — the issuer declined, or the card failed the AVS/CVV policy (any held authorization is voided). 400 card_processor_error — the charge could not be attempted at all: the processor was unreachable, misconfigured, or answered something unusable. Nothing was established about the card, so this is a retry rather than a reason to ask the cardholder for another one. Both carry the same body: the payment record exists at failed, its id is on the error as payment_intent_id, the collapsed cause as failure_reason, and message is the processor\u0026#x27;s own wording for what happened. The key is consumed, so a replay returns this same error. Supply a unique idempotency_key — a replay returns the same record.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Finogates API Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/finogates/7bjhnGVQOX1B_t94/_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/finogates/7bjhnGVQOX1B_t94/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/finogates/7bjhnGVQOX1B_t94/_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/finogates/7bjhnGVQOX1B_t94/_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/finogates/7bjhnGVQOX1B_t94/_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/finogates/7bjhnGVQOX1B_t94/_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/finogates/7bjhnGVQOX1B_t94/_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/finogates/7bjhnGVQOX1B_t94/_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/finogates/7bjhnGVQOX1B_t94/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Charge a Saved Card into a Card-Acquiring Merchant - Finogates API Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Charge a saved card and park the payment for review. The card is identified by payment_method_id and the receiving card-acquiring account by card_acquiring_id. The payment lands at pending_review for a Finogate admin to approve or reject. By default the funds land in the card-acquiring account owner\u0026#x27;s primary wallet for the currency. Send destination_wallet_id to credit one specific wallet instead — any wallet under your tenant, primary or not, whose currency matches currency (which defaults to USD). The resolved wallet comes back as destination_wallet_id on the response. A 409 means the wallet cannot take the credit (closed, suspended or frozen), or that the card-acquiring account settles to an external bank account and so has no wallet leg to redirect; a 422 means the wallet belongs to another tenant or holds a different currency. Send splits to credit several wallets from this one charge — for example the end user\u0026#x27;s share and your own fee. Each leg names a wallet (same rules as destination_wallet_id) and an amount, and the amounts must add up exactly to amount. Every leg shows in its wallet\u0026#x27;s pending balance while the payment awaits review, and all legs become spendable together on approval; a rejection, void or refund claws every leg back or none. Mutually exclusive with destination_wallet_id. The resolved legs come back as splits on the response and ride on this payment\u0026#x27;s webhooks. How the card is billed depends on its configured charge mode, returned as charge_mode on the response. auth_capture authorizes (holds) the card now and screens AVS/CVV, then captures on approval — a rejection voids the hold. sale places no hold: nothing reaches the card until an admin approves, and then it is charged once. A card whose manual review is still open (verification_status of awaiting_documents or pending) can be charged here, unlike on any other saved-card surface: this payment parks for an operator anyway, so that approval covers the open card review too. The payment comes back with needs_review: true. Its AVS/CVV rules stay strict, and a card an admin has rejected is still refused with a 409. A 201 always means a live payment was recorded. The two outcomes that collect nothing are errors, keyed by detail.code: 422 card_declined — the issuer declined, or the card failed the AVS/CVV policy (any held authorization is voided). 400 card_processor_error — the charge could not be attempted at all: the processor was unreachable, misconfigured, or answered something unusable. Nothing was established about the card, so this is a retry rather than a reason to ask the cardholder for another one. Both carry the same body: the payment record exists at failed, its id is on the error as payment_intent_id, the collapsed cause as failure_reason, and message is the processor\u0026#x27;s own wording for what happened. The key is consumed, so a replay returns this same error. Supply a unique idempotency_key — a replay returns the same record.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Finogates API Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.finogates.com/api-reference/payments/card-to-merchant-payment\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://finogates.mintlify.app/_mintlify/api/og/v2?division=Payments+%28Legacy%29\u0026amp;title=Charge+a+Saved+Card+into+a+Card-Acquiring+Merchant\u0026amp;description=Charge+a+saved+card+and+park+the+payment+for+review.+The+card+is+identified+by+%60%60payment_method_id%60%60+and+the+receiving+card-acquiring+account+by+%60%60card_acquirin\u0026amp;theme=2379e31403c31344a7ae4b20\u0026amp;signature=dd777c060840c73e162aa7b05677457a579398852141fb9fdf8882b1477515b2\">\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=\"Charge a Saved Card into a Card-Acquiring Merchant - Finogates API Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Charge a saved card and park the payment for review. The card is identified by payment_method_id and the receiving card-acquiring account by card_acquiring_id. The payment lands at pending_review for a Finogate admin to approve or reject. By default the funds land in the card-acquiring account owner\u0026#x27;s primary wallet for the currency. Send destination_wallet_id to credit one specific wallet instead — any wallet under your tenant, primary or not, whose currency matches currency (which defaults to USD). The resolved wallet comes back as destination_wallet_id on the response. A 409 means the wallet cannot take the credit (closed, suspended or frozen), or that the card-acquiring account settles to an external bank account and so has no wallet leg to redirect; a 422 means the wallet belongs to another tenant or holds a different currency. Send splits to credit several wallets from this one charge — for example the end user\u0026#x27;s share and your own fee. Each leg names a wallet (same rules as destination_wallet_id) and an amount, and the amounts must add up exactly to amount. Every leg shows in its wallet\u0026#x27;s pending balance while the payment awaits review, and all legs become spendable together on approval; a rejection, void or refund claws every leg back or none. Mutually exclusive with destination_wallet_id. The resolved legs come back as splits on the response and ride on this payment\u0026#x27;s webhooks. How the card is billed depends on its configured charge mode, returned as charge_mode on the response. auth_capture authorizes (holds) the card now and screens AVS/CVV, then captures on approval — a rejection voids the hold. sale places no hold: nothing reaches the card until an admin approves, and then it is charged once. A card whose manual review is still open (verification_status of awaiting_documents or pending) can be charged here, unlike on any other saved-card surface: this payment parks for an operator anyway, so that approval covers the open card review too. The payment comes back with needs_review: true. Its AVS/CVV rules stay strict, and a card an admin has rejected is still refused with a 409. A 201 always means a live payment was recorded. The two outcomes that collect nothing are errors, keyed by detail.code: 422 card_declined — the issuer declined, or the card failed the AVS/CVV policy (any held authorization is voided). 400 card_processor_error — the charge could not be attempted at all: the processor was unreachable, misconfigured, or answered something unusable. Nothing was established about the card, so this is a retry rather than a reason to ask the cardholder for another one. Both carry the same body: the payment record exists at failed, its id is on the error as payment_intent_id, the collapsed cause as failure_reason, and message is the processor\u0026#x27;s own wording for what happened. The key is consumed, so a replay returns this same error. Supply a unique idempotency_key — a replay returns the same record.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://finogates.mintlify.app/_mintlify/api/og/v2?division=Payments+%28Legacy%29\u0026amp;title=Charge+a+Saved+Card+into+a+Card-Acquiring+Merchant\u0026amp;description=Charge+a+saved+card+and+park+the+payment+for+review.+The+card+is+identified+by+%60%60payment_method_id%60%60+and+the+receiving+card-acquiring+account+by+%60%60card_acquirin\u0026amp;theme=2379e31403c31344a7ae4b20\u0026amp;signature=dd777c060840c73e162aa7b05677457a579398852141fb9fdf8882b1477515b2\">\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/finogates/7bjhnGVQOX1B_t94/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Finogates API Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0161EF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.finogates.com/api-reference/payments/card-to-merchant-payment\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/payments/card-to-merchant-payment.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.finogates.com/#organization\",\"name\":\"Finogates API Documentation\",\"url\":\"https://developer.finogates.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/finogates/XLUrxtJNLX8DNeIV/assets/logo/app-logo-dark.png?fit=max\u0026auto=format\u0026n=XLUrxtJNLX8DNeIV\u0026q=85\u0026s=e00390491535714f472eb3e4ec1edc84\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.finogates.com#website\",\"name\":\"Finogates API Documentation\",\"url\":\"https://developer.finogates.com\",\"publisher\":{\"@id\":\"https://developer.finogates.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.finogates.com/api-reference/payments/card-to-merchant-payment#webpage\",\"url\":\"https://developer.finogates.com/api-reference/payments/card-to-merchant-payment\",\"name\":\"Charge a Saved Card into a Card-Acquiring Merchant\",\"description\":\"Charge a saved card and park the payment for review. The card is identified by payment_method_id and the receiving card-acquiring account by card_acquiring_id. The payment lands at pending_review for a Finogate admin to approve or reject. By default the funds land in the card-acquiring account owner's primary wallet for the currency. Send destination_wallet_id to credit one specific wallet instead — any wallet under your tenant, primary or not, whose currency matches currency (which defaults to USD). The resolved wallet comes back as destination_wallet_id on the response. A 409 means the wallet cannot take the credit (closed, suspended or frozen), or that the card-acquiring account settles to an external bank account and so has no wallet leg to redirect; a 422 means the wallet belongs to another tenant or holds a different currency. Send splits to credit several wallets from this one charge — for example the end user's share and your own fee. Each leg names a wallet (same rules as destination_wallet_id) and an amount, and the amounts must add up exactly to amount. Every leg shows in its wallet's pending balance while the payment awaits review, and all legs become spendable together on approval; a rejection, void or refund claws every leg back or none. Mutually exclusive with destination_wallet_id. The resolved legs come back as splits on the response and ride on this payment's webhooks. How the card is billed depends on its configured charge mode, returned as charge_mode on the response. auth_capture authorizes (holds) the card now and screens AVS/CVV, then captures on approval — a rejection voids the hold. sale places no hold: nothing reaches the card until an admin approves, and then it is charged once. A card whose manual review is still open (verification_status of awaiting_documents or pending) can be charged here, unlike on any other saved-card surface: this payment parks for an operator anyway, so that approval covers the open card review too. The payment comes back with needs_review: true. Its AVS/CVV rules stay strict, and a card an admin has rejected is still refused with a 409. A 201 always means a live payment was recorded. The two outcomes that collect nothing are errors, keyed by detail.code: 422 card_declined — the issuer declined, or the card failed the AVS/CVV policy (any held authorization is voided). 400 card_processor_error — the charge could not be attempted at all: the processor was unreachable, misconfigured, or answered something unusable. Nothing was established about the card, so this is a retry rather than a reason to ask the cardholder for another one. Both carry the same body: the payment record exists at failed, its id is on the error as payment_intent_id, the collapsed cause as failure_reason, and message is the processor's own wording for what happened. The key is consumed, so a replay returns this same error. Supply a unique idempotency_key — a replay returns the same record.\",\"dateModified\":\"2026-09-05T09:36:19.593Z\",\"isPartOf\":{\"@id\":\"https://developer.finogates.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.finogates.com/api-reference/payments/card-to-merchant-payment#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.finogates.com/api-reference/payments/card-to-merchant-payment#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Payments (Legacy)\",\"item\":\"https://developer.finogates.com/api-reference/payments/submit-payment\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Charge a Saved Card into a Card-Acquiring Merchant\",\"item\":\"https://developer.finogates.com/api-reference/payments/card-to-merchant-payment\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.finogates.com/api-reference/payments/card-to-merchant-payment#apireference\",\"headline\":\"Charge a Saved Card into a Card-Acquiring Merchant\",\"name\":\"Charge a Saved Card into a Card-Acquiring Merchant\",\"description\":\"Charge a saved card and park the payment for review. The card is identified by payment_method_id and the receiving card-acquiring account by card_acquiring_id. The payment lands at pending_review for a Finogate admin to approve or reject. By default the funds land in the card-acquiring account owner's primary wallet for the currency. Send destination_wallet_id to credit one specific wallet instead — any wallet under your tenant, primary or not, whose currency matches currency (which defaults to USD). The resolved wallet comes back as destination_wallet_id on the response. A 409 means the wallet cannot take the credit (closed, suspended or frozen), or that the card-acquiring account settles to an external bank account and so has no wallet leg to redirect; a 422 means the wallet belongs to another tenant or holds a different currency. Send splits to credit several wallets from this one charge — for example the end user's share and your own fee. Each leg names a wallet (same rules as destination_wallet_id) and an amount, and the amounts must add up exactly to amount. Every leg shows in its wallet's pending balance while the payment awaits review, and all legs become spendable together on approval; a rejection, void or refund claws every leg back or none. Mutually exclusive with destination_wallet_id. The resolved legs come back as splits on the response and ride on this payment's webhooks. How the card is billed depends on its configured charge mode, returned as charge_mode on the response. auth_capture authorizes (holds) the card now and screens AVS/CVV, then captures on approval — a rejection voids the hold. sale places no hold: nothing reaches the card until an admin approves, and then it is charged once. A card whose manual review is still open (verification_status of awaiting_documents or pending) can be charged here, unlike on any other saved-card surface: this payment parks for an operator anyway, so that approval covers the open card review too. The payment comes back with needs_review: true. Its AVS/CVV rules stay strict, and a card an admin has rejected is still refused with a 409. A 201 always means a live payment was recorded. The two outcomes that collect nothing are errors, keyed by detail.code: 422 card_declined — the issuer declined, or the card failed the AVS/CVV policy (any held authorization is voided). 400 card_processor_error — the charge could not be attempted at all: the processor was unreachable, misconfigured, or answered something unusable. Nothing was established about the card, so this is a retry rather than a reason to ask the cardholder for another one. Both carry the same body: the payment record exists at failed, its id is on the error as payment_intent_id, the collapsed cause as failure_reason, and message is the processor's own wording for what happened. The key is consumed, so a replay returns this same error. Supply a unique idempotency_key — a replay returns the same record.\",\"url\":\"https://developer.finogates.com/api-reference/payments/card-to-merchant-payment\",\"mainEntityOfPage\":{\"@id\":\"https://developer.finogates.com/api-reference/payments/card-to-merchant-payment#webpage\"},\"dateModified\":\"2026-09-05T09:36:19.593Z\",\"publisher\":{\"@id\":\"https://developer.finogates.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.finogates.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Finogates API Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Finogates API Documentation","nav":{"global":null,"tabs":[{"tab":"Get Started","icon":"rocket","pages":[{"title":"Get Started","href":"/get-started/overview"}]},{"tab":"API Reference","icon":"square-terminal","groups":[{"group":"Auth","expanded":false,"pages":[{"title":"Exchange Client Token","openapi":"POST /v1/platform/auth/token","href":"/api-reference/auth/exchange-client-token"}]},{"group":"Users","expanded":false,"pages":[{"title":"Create User","openapi":"POST /v1/platform/users","href":"/api-reference/users/create-user"},{"title":"List Users","openapi":"GET /v1/platform/users","href":"/api-reference/users/list-users"},{"title":"Get User","openapi":"GET /v1/platform/users/{user_id}","href":"/api-reference/users/get-user"},{"title":"Activate or Deactivate a User","openapi":"PATCH /v1/platform/users/{user_id}","href":"/api-reference/users/activate-or-deactivate-user"},{"title":"Delete a User","openapi":"DELETE /v1/platform/users/{user_id}","href":"/api-reference/users/deactivate-user"},{"title":"Update a User's Details","openapi":"PATCH /v1/platform/users/{user_id}/details","href":"/api-reference/users/update-user-details"},{"title":"Set a User's Mailing Address","openapi":"PATCH /v1/platform/users/{user_id}/mailing-address","href":"/api-reference/users/set-user-mailing-address"}]},{"group":"Payees","expanded":false,"pages":[{"title":"Create Payee","openapi":"POST /v1/platform/payees","href":"/api-reference/payees/create-payee"},{"title":"List Payees","openapi":"GET /v1/platform/payees","href":"/api-reference/payees/list-payees"},{"title":"Get Payee","openapi":"GET /v1/platform/payees/{payee_id}","href":"/api-reference/payees/get-payee"},{"title":"Update Payee","openapi":"PATCH /v1/platform/payees/{payee_id}","href":"/api-reference/payees/update-payee"},{"title":"Archive Payee","openapi":"DELETE /v1/platform/payees/{payee_id}","href":"/api-reference/payees/archive-payee"},{"title":"Add a Bank Account to a Payee","openapi":"POST /v1/platform/payees/bank-accounts/{payee_id}","href":"/api-reference/payees/create-destination"},{"title":"List a Payee's Bank Accounts","openapi":"GET /v1/platform/payees/bank-accounts/{payee_id}","href":"/api-reference/payees/list-destinations"},{"title":"Delete a Payee's Bank Account","openapi":"DELETE /v1/platform/payees/bank-accounts/{payee_id}/{bank_account_id}","href":"/api-reference/payees/revoke-destination"},{"title":"Set Up a Bank for ACH Payouts (removed)","openapi":"POST /v1/platform/payees/destinations/ach-push","href":"/api-reference/payees/set-up-a-bank-for-ach-payouts-removed"},{"title":"Get ACH push status","openapi":"GET /v1/platform/payees/destinations/ach-push","href":"/api-reference/payees/get-ach-push-status"},{"title":"Disable ACH push","openapi":"DELETE /v1/platform/payees/destinations/ach-push","href":"/api-reference/payees/disable-ach-push"},{"title":"Update a Payee's Bank Account","openapi":"PATCH /v1/platform/payees/bank-accounts/{payee_id}/{bank_account_id}","href":"/api-reference/payees/update-payee-bank-account"},{"title":"Reveal a Payee Bank Account's Full Numbers","openapi":"GET /v1/platform/payees/bank-accounts/{payee_id}/{bank_account_id}/reveal","href":"/api-reference/payees/reveal-payee-bank-account"},{"title":"Add an Address to a Payee","openapi":"POST /v1/platform/payees/addresses/{payee_id}","href":"/api-reference/payees/create-payee-address"},{"title":"List a Payee's Addresses","openapi":"GET /v1/platform/payees/addresses/{payee_id}","href":"/api-reference/payees/list-payee-addresses"},{"title":"Get One of a Payee's Addresses","openapi":"GET /v1/platform/payees/addresses/{payee_id}/{address_id}","href":"/api-reference/payees/get-payee-address"},{"title":"Update a Payee's Address","openapi":"PATCH /v1/platform/payees/addresses/{payee_id}/{address_id}","href":"/api-reference/payees/update-payee-address"},{"title":"Delete a Payee's Address","openapi":"DELETE /v1/platform/payees/addresses/{payee_id}/{address_id}","href":"/api-reference/payees/delete-payee-address"}]},{"group":"Verification","expanded":false,"pages":[{"title":"Get Platform Verification","openapi":"GET /v1/platform/me/verification","href":"/api-reference/verification/get-platform-verification"},{"title":"List KYC Records","openapi":"GET /v1/platform/kyc-records","href":"/api-reference/verification/list-kyc-records"},{"title":"List KYB Records","openapi":"GET /v1/platform/kyb-records","href":"/api-reference/verification/list-kyb-records"},{"title":"Get Platform Verification (status only)","openapi":"GET /v1/platform/verification","href":"/api-reference/verification/get-platform-verification-status-only"},{"title":"Get User Verification Summary","openapi":"GET /v1/platform/users/verification-summary/{user_id}","href":"/api-reference/verification/get-user-verification-summary"},{"title":"Get User Verification","openapi":"GET /v1/platform/users/verification/{user_id}","href":"/api-reference/verification/get-user-verification"},{"title":"List User KYB Records","openapi":"GET /v1/platform/users/kyb-records/{user_id}","href":"/api-reference/verification/list-user-kyb-records"},{"title":"Start User KYC","openapi":"POST /v1/platform/users/kyc/start/{user_id}","href":"/api-reference/verification/start-user-kyc"},{"title":"Sync User KYC","openapi":"POST /v1/platform/users/kyc/sync/{user_id}","href":"/api-reference/verification/sync-user-kyc"},{"title":"Create User KYB Record","openapi":"POST /v1/platform/users/kyb/start/{user_id}","href":"/api-reference/verification/create-user-kyb-record"},{"title":"List Verification Document Requests","openapi":"GET /v1/platform/compliance/document-requests","href":"/api-reference/verification/list-document-requests"},{"title":"Get One Check's Document Requests","openapi":"GET /v1/platform/compliance/checks/{check_id}/document-requests","href":"/api-reference/verification/get-check-document-requests"},{"title":"Send Requested Verification Documents","openapi":"POST /v1/platform/compliance/checks/{check_id}/document-requests/{request_id}/submit","href":"/api-reference/verification/submit-document-request-response"}]},{"group":"Screening","expanded":false,"pages":[{"title":"Screen a Subject","openapi":"POST /v1/platform/screening/checks","href":"/api-reference/screening/create-screening-check"},{"title":"List Your Screening Checks","openapi":"GET /v1/platform/screening/checks","href":"/api-reference/screening/list-screening-checks"},{"title":"Get a Screening Check","openapi":"GET /v1/platform/screening/checks/{check_id}","href":"/api-reference/screening/get-screening-check"}]},{"group":"Bank Accounts","expanded":false,"pages":[{"title":"Add Bank Account","openapi":"POST /v1/platform/bank/add-bank-manually","href":"/api-reference/bank-accounts/add-bank-account"},{"title":"List Bank Accounts","openapi":"GET /v1/platform/bank-accounts/{user_id}","href":"/api-reference/bank-accounts/list-bank-accounts"},{"title":"Add account Instantly","openapi":"GET /v1/platform/bank/add-account-instantly/{user_id}","href":"/api-reference/bank-accounts/add-account-instantly"},{"title":"Add a Bank Account From an Existing Connection","openapi":"POST /v1/platform/bank/add-account-connected","href":"/api-reference/bank-accounts/add-account-from-connection"},{"title":"Get a Manual Bank Account's Details to Edit","openapi":"GET /v1/platform/bank/update/{bank_account_id}","href":"/api-reference/bank-accounts/get-manual-bank-account-for-edit"},{"title":"Edit a Manually Added Bank Account","openapi":"PATCH /v1/platform/bank/update/{bank_account_id}","href":"/api-reference/bank-accounts/edit-manual-bank-account"},{"title":"Remove Bank Account","openapi":"DELETE /v1/platform/bank/delete/{bank_account_id}","href":"/api-reference/bank-accounts/remove-bank-account"},{"title":"Apply for Virtual Bank Account","openapi":"POST /v1/platform/virtual-bank-accounts","href":"/api-reference/bank-accounts/apply-for-virtual-bank-account"},{"title":"List Virtual Bank Accounts","openapi":"GET /v1/platform/virtual-bank-accounts","href":"/api-reference/bank-accounts/list-virtual-bank-accounts"},{"title":"Refresh Virtual Bank Account Balance","openapi":"POST /v1/platform/virtual-bank-accounts/{account_id}/refresh-balance","href":"/api-reference/bank-accounts/refresh-virtual-bank-account-balance"},{"title":"Get Virtual Bank Account","openapi":"GET /v1/platform/virtual-bank-accounts/{account_id}","href":"/api-reference/bank-accounts/get-virtual-bank-account"},{"title":"List All Bank Accounts","openapi":"GET /v1/platform/bank-accounts","href":"/api-reference/bank-accounts/list-all-bank-accounts"},{"title":"Get a Bank Account Relink Link","openapi":"GET /v1/platform/bank/relink/{bank_account_id}","href":"/api-reference/bank-accounts/get-bank-account-relink-link"}]},{"group":"Card Processing","expanded":false,"pages":[{"title":"List Cards","openapi":"GET /v1/platform/card/cards/{user_id}","href":"/api-reference/card-processing/list-cards"},{"title":"Get One Card's Details","openapi":"GET /v1/platform/card/cards/{user_id}/{payment_method_id}","href":"/api-reference/card-processing/get-one-card-details"},{"title":"Add Card","openapi":"POST /v1/platform/card/add-card","href":"/api-reference/card-processing/add-card"},{"title":"Remove Card","openapi":"DELETE /v1/platform/card/delete/{card_id}","href":"/api-reference/card-processing/remove-card"},{"title":"Apply for Card Processing","openapi":"POST /v1/platform/card-processing","href":"/api-reference/card-processing/create-card-processing-application"},{"title":"Get a Link for the User to Pay by Card","openapi":"POST /v1/platform/card/payment-link","href":"/api-reference/card-processing/get-card-payment-link"},{"title":"Get Card Processing Record(s)","openapi":"GET /v1/platform/card-processing/users/{user_id}","href":"/api-reference/card-processing/get-card-processing-record-s"},{"title":"List All Cards","openapi":"GET /v1/platform/card/cards","href":"/api-reference/card-processing/list-all-cards"},{"title":"Verify an Already-Added Card","openapi":"GET /v1/platform/card/verify-card/{payment_method_id}","href":"/api-reference/card-processing/verify-card"},{"title":"Verify a Saved Card","openapi":"POST /v1/platform/card/verify-token/{payment_method_id}","href":"/api-reference/card-processing/verify-saved-card"},{"title":"Get Card Processing by KYB","openapi":"GET /v1/platform/card-processing/kybs/{kyb_id}","href":"/api-reference/card-processing/get-card-processing-by-kyb"},{"title":"Get Card Processing MID Config","openapi":"GET /v1/platform/card-processing/mid","href":"/api-reference/card-processing/get-card-processing-mid-config"},{"title":"Get a Card Processing Application","openapi":"GET /v1/platform/card-processing/{application_id}","href":"/api-reference/card-processing/get-card-processing-application"},{"title":"Get Card Processing Supporting Documents","openapi":"GET /v1/platform/card-processing/merchants/{card_acquiring_id}/merchant-info","href":"/api-reference/card-processing/get-card-processing-merchant-info"},{"title":"Submit Card Processing Supporting Documents","openapi":"PUT /v1/platform/card-processing/merchants/{card_acquiring_id}/merchant-info","href":"/api-reference/card-processing/submit-card-processing-merchant-info"}]},{"group":"Merchant Onboarding","expanded":false,"pages":[{"title":"Onboard a Merchant for Card Processing","openapi":"POST /v1/platform/merchant-onboarding","href":"/api-reference/merchant-onboarding/onboard-merchant"},{"title":"Update a Pending Card Processing Application","openapi":"PUT /v1/platform/merchant-onboarding","href":"/api-reference/merchant-onboarding/update-merchant-onboarding"}]},{"group":"Card Transfers","expanded":false,"pages":[{"title":"Card Transfers Overview","href":"/api-reference/card-transfers/overview"},{"title":"Enable a Card Transfer Direction","openapi":"POST /v1/platform/card-transfers/enable","href":"/api-reference/card-transfers/enable-card-transfer"},{"title":"Card Transfer Direction Status","openapi":"GET /v1/platform/card-transfers/enable","href":"/api-reference/card-transfers/get-card-transfer-status"},{"title":"Add a Card","openapi":"POST /v1/platform/card-transfers/cards","href":"/api-reference/card-transfers/add-transfer-card"},{"title":"Get a Card","openapi":"GET /v1/platform/card-transfers/cards/{card_id}","href":"/api-reference/card-transfers/get-transfer-card"},{"title":"List Cards","openapi":"GET /v1/platform/card-transfers/cards","href":"/api-reference/card-transfers/list-transfer-cards"}]},{"group":"Digital Assets","expanded":false,"pages":[{"title":"List Digital Asset Catalog","openapi":"GET /v1/platform/digital-assets/assets","href":"/api-reference/digital-assets/list-digital-asset-catalog"},{"title":"List Digital Asset Wallets","openapi":"GET /v1/platform/digital-assets/wallets","href":"/api-reference/digital-assets/list-digital-asset-wallets"},{"title":"Create Digital Asset Wallet","openapi":"POST /v1/platform/digital-assets/wallets","href":"/api-reference/digital-assets/create-digital-asset-wallet"},{"title":"List Digital Asset Balances","openapi":"GET /v1/platform/digital-assets/balances","href":"/api-reference/digital-assets/list-digital-asset-balances"},{"title":"Get Digital Asset Wallet","openapi":"GET /v1/platform/digital-assets/wallets/{wallet_id}","href":"/api-reference/digital-assets/get-digital-asset-wallet"},{"title":"Get Digital Asset Wallet Balance","openapi":"GET /v1/platform/digital-assets/wallets/{wallet_id}/balance","href":"/api-reference/digital-assets/get-digital-asset-wallet-balance"},{"title":"List Digital Asset Transactions","openapi":"GET /v1/platform/digital-assets/transactions","href":"/api-reference/digital-assets/list-digital-asset-transactions"},{"title":"List Digital Asset Vault Requests","openapi":"GET /v1/platform/digital-assets/vault-requests","href":"/api-reference/digital-assets/list-digital-asset-vault-requests"},{"title":"Get Digital Asset Vault Request","openapi":"GET /v1/platform/digital-assets/vault-requests/{request_id}","href":"/api-reference/digital-assets/get-digital-asset-vault-request"}]},{"group":"International","expanded":false,"pages":[{"title":"List Reference Data","openapi":"GET /v1/platform/international/catalogues","href":"/api-reference/international/list-reference-data"},{"title":"Payers","openapi":"GET /v1/platform/international/payers","href":"/api-reference/international/payers"},{"title":"Payer Rules","openapi":"GET /v1/platform/international/payer-rules","href":"/api-reference/international/payer-rules"},{"title":"Branches","openapi":"GET /v1/platform/international/branches","href":"/api-reference/international/branches"},{"title":"Rates","openapi":"GET /v1/platform/international/rates","href":"/api-reference/international/rates"},{"title":"Send an International Payout","openapi":"POST /v1/platform/international/payouts","href":"/api-reference/international/create-an-international-payout"},{"title":"Retry a Failed Payout","openapi":"POST /v1/platform/international/payouts/{intent_id}/retry","href":"/api-reference/international/platform-retry-payout"},{"title":"Platform Payout Status","openapi":"GET /v1/platform/international/payouts/status","href":"/api-reference/international/platform-payout-status"},{"title":"Send an International Payout (Full Payload)","openapi":"POST /v1/platform/international/payouts/global","href":"/api-reference/international/send-an-international-payout-full-payload"}]},{"group":"Pending Applications","expanded":false,"pages":[{"title":"List pending applications","openapi":"GET /v1/platform/pending-applications","href":"/api-reference/pending-applications/list-pending-applications"},{"title":"Get pending application","openapi":"GET /v1/platform/pending-applications/{application_id}","href":"/api-reference/pending-applications/get-pending-application"}]},{"group":"Wallets","expanded":false,"pages":[{"title":"List All Wallets","openapi":"GET /v1/platform/wallets","href":"/api-reference/wallets/list-all-wallets"},{"title":"Create a Wallet","openapi":"POST /v1/platform/wallets","href":"/api-reference/wallets/create-a-wallet"},{"title":"Get the Master Wallet","openapi":"GET /v1/platform/wallets/master","href":"/api-reference/wallets/get-the-master-wallet"},{"title":"List a User's Wallets","openapi":"GET /v1/platform/wallets/by-user/{user_id}","href":"/api-reference/wallets/list-user-wallets"},{"title":"Get a Wallet by ID","openapi":"GET /v1/platform/wallets/by-id/{wallet_id}","href":"/api-reference/wallets/get-wallet-by-id"},{"title":"Get a Wallet's Activity by ID","openapi":"GET /v1/platform/wallets/by-id/{wallet_id}/activity","href":"/api-reference/wallets/get-wallet-activity-by-id"},{"title":"List a Wallet's Incoming-Pending Transfers","openapi":"GET /v1/platform/wallets/by-id/{wallet_id}/pending-incoming","href":"/api-reference/wallets/list-wallet-pending-incoming-transfers"},{"title":"Rename or Promote a Wallet","openapi":"PATCH /v1/platform/wallets/{wallet_id}","href":"/api-reference/wallets/rename-or-promote-wallet"},{"title":"Close a Wallet","openapi":"DELETE /v1/platform/wallets/{wallet_id}","href":"/api-reference/wallets/close-wallet"},{"title":"Get a User's Wallet","openapi":"GET /v1/platform/wallets/{user_id}","href":"/api-reference/wallets/get-wallet"},{"title":"Get a User's Wallet Activity","openapi":"GET /v1/platform/wallets/{user_id}/activity","href":"/api-reference/wallets/get-wallet-activity"},{"title":"Freeze Funds in a Wallet","openapi":"POST /v1/platform/wallets/by-id/{wallet_id}/holds","href":"/api-reference/wallets/create-wallet-hold"},{"title":"List Wallet Holds","openapi":"GET /v1/platform/wallets/by-id/{wallet_id}/holds","href":"/api-reference/wallets/list-wallet-holds"},{"title":"Unfreeze Funds in a Wallet","openapi":"POST /v1/platform/wallets/by-id/{wallet_id}/holds/release","href":"/api-reference/wallets/release-wallet-hold"}]},{"group":"Payments","expanded":false,"pages":[{"title":"Request a Payment Payload","openapi":"POST /v1/platform/payments/request-payload","href":"/api-reference/payments/request-payment-payload"},{"title":"Get a Payment Request","openapi":"GET /v1/platform/payments/request-payload/{reference}","href":"/api-reference/payments/get-payment-request"},{"title":"Create a Payment from a Request","openapi":"POST /v1/platform/payments/create-transaction","href":"/api-reference/payments/create-payment-from-request"},{"title":"List Payments","openapi":"GET /v1/platform/payments","href":"/api-reference/payments/list-payments"},{"title":"Get Payment","openapi":"GET /v1/platform/payments/{payment_id}","href":"/api-reference/payments/get-payment"},{"title":"Cancel a Payment","openapi":"POST /v1/platform/payments/{payment_id}/cancel","href":"/api-reference/payments/cancel-payment"},{"title":"Get Payment Delivery Windows","openapi":"GET /v1/platform/payments/delivery-windows","href":"/api-reference/payments/get-payment-delivery-windows"},{"title":"Get Banking Calendar","openapi":"GET /v1/platform/payments/banking-calendar","href":"/api-reference/payments/get-banking-calendar"},{"title":"Get a Parked Payer-Authentication Attempt","openapi":"GET /v1/platform/payments/charge-attempts/{charge_attempt_id}","href":"/api-reference/payments/get-charge-attempt"}]},{"group":"Payments (Legacy)","expanded":false,"pages":[{"title":"Wallet to Bank (Payout)","openapi":"POST /v1/platform/payments/wallet-to-bank","tag":"LEGACY","href":"/api-reference/payments/submit-payment"},{"title":"Wallet to Wallet (Internal Transfer)","openapi":"POST /v1/platform/payments/wallet-to-wallet","tag":"LEGACY","description":"Move money from one wallet to another on your platform. A `transfer`\npayment — no external rail or provider.\n\nAddress the destination one of two ways (send exactly one):\n\n- `destination_wallet_id` — a wallet UUID you already know. The server\n resolves the owning user from the wallet.\n- `destination_payee_id` — a **payee addressed by email**. Funds route to\n the matching user's wallet, or to a held inbound-only wallet (a ghost\n recipient is provisioned) until that person is added — see\n `recipient_status` in the response (`existing` vs `pending_claim`).","href":"/api-reference/payments/wallet-to-wallet-internal-transfer"},{"title":"Charge a Saved Card into a Card-Acquiring Merchant","openapi":"POST /v1/platform/payments/card-to-merchant","tag":"LEGACY","href":"/api-reference/payments/card-to-merchant-payment"}]},{"group":"Document Mailing","expanded":false,"pages":[{"title":"Mail a Document to a Saved Payee","openapi":"POST /v1/platform/payments/document-mailing","description":"**Legacy.** Mail through `POST /v1/platform/check-payments` with a document mailing (`type` 11) instead: the same mailing, product and rail, in the check-payments request shape. This route keeps working for existing integrations.\n\nMail a document **you supply** to a payee you registered earlier. Name the recipient with `payee_id` and we look the address up, so you do not re-send it on every mailing; `address_id` picks between several. Not a payment: no wallet is named or debited. Your own document backs the face value and only the mailing fee is billed, on your monthly invoice.\n\nThis is a `multipart/form-data` request: `document` (and optional `attachments`) are file parts, and `payload` is this JSON, encoded as a string, alongside them.\n\nSample `payload`:\n```json\n{\n \"user_id\": \"b3a9b622-cc63-4d3c-aad6-2d8e29e6f9d4\",\n \"payee_id\": \"c4b5a6d7-e8f9-0123-4567-890abcdef012\",\n \"address_id\": \"d5c6b7e8-f9a0-1234-5678-9abcdef01234\",\n \"mail_type\": \"usps_ground_advantage\",\n \"currency\": \"USD\",\n \"description\": \"Q3 invoice packet\",\n \"invoice_number\": \"INV-10432\",\n \"idempotency_key\": \"doc-mail-2026-08-24-001\"\n}\n```","href":"/api-reference/document-mailing/ship-document"},{"title":"List Mailed Documents","openapi":"GET /v1/platform/payments/document-mailing","href":"/api-reference/document-mailing/list-shipped-documents"},{"title":"Mail a Document (Full Payload)","openapi":"POST /v1/platform/payments/document-mailing/global","href":"/api-reference/document-mailing/ship-document-full-payload"},{"title":"List Document Mailing Services","openapi":"GET /v1/platform/payments/document-mailing/methods","href":"/api-reference/document-mailing/list-document-mailing-methods"},{"title":"Get a Mailed Document","openapi":"GET /v1/platform/payments/document-mailing/{payment_id}","href":"/api-reference/document-mailing/get-shipped-document"},{"title":"Track a Mailed Document","openapi":"GET /v1/platform/payments/document-mailing/{payment_id}/tracking","href":"/api-reference/document-mailing/track-shipped-document"},{"title":"Refresh a Mailed Document's Tracking","openapi":"POST /v1/platform/payments/document-mailing/{payment_id}/tracking/refresh","href":"/api-reference/document-mailing/refresh-shipped-document-tracking"},{"title":"Void a Mailed Document","openapi":"POST /v1/platform/payments/document-mailing/{payment_id}/void","href":"/api-reference/document-mailing/void-shipped-document"}]},{"group":"Fees","expanded":false,"pages":[{"title":"List Your Fee Schedule","openapi":"GET /v1/platform/fees/catalog","href":"/api-reference/fees/list-fee-catalog"},{"title":"Get One Fee by Code","openapi":"GET /v1/platform/fees/catalog/{fee_code}","href":"/api-reference/fees/get-fee-catalog-entry"},{"title":"Quote a Fee for an Amount","openapi":"POST /v1/platform/fees/quote","href":"/api-reference/fees/quote-fee"}]},{"group":"Catalog","expanded":false,"pages":[{"title":"List Products","openapi":"GET /v1/platform/catalog/products","href":"/api-reference/catalog/list-products"},{"title":"Get Product","openapi":"GET /v1/platform/catalog/products/{product_id}","href":"/api-reference/catalog/get-product"},{"title":"List Product Catalog","openapi":"GET /v1/platform/onboarding/products/catalog","href":"/api-reference/catalog/list-product-catalog"},{"title":"List Payment Categories","openapi":"GET /v1/platform/catalog/payment-categories","href":"/api-reference/catalog/list-payment-categories"}]},{"group":"Webhooks","expanded":false,"pages":[{"title":"List Webhook Event Types","openapi":"GET /v1/platform/webhooks/event-types","href":"/api-reference/webhooks/list-webhook-event-types"},{"title":"Create Webhook","openapi":"POST /v1/platform/webhooks","href":"/api-reference/webhooks/create-webhook"},{"title":"List Webhooks","openapi":"GET /v1/platform/webhooks","href":"/api-reference/webhooks/list-webhooks"},{"title":"Delete Webhook","openapi":"DELETE /v1/platform/webhooks/{webhook_id}","href":"/api-reference/webhooks/delete-webhook"},{"title":"Replay Failed Webhook Deliveries","openapi":"POST /v1/platform/webhooks/deliveries/replay-failed","href":"/api-reference/webhooks/replay-failed-webhook-deliveries"}]},{"group":"Phone Numbers","expanded":false,"pages":[{"title":"List All Phone Numbers","openapi":"GET /v1/platform/phone-numbers","href":"/api-reference/phone-numbers/list-all-phone-numbers"},{"title":"Issue Voice Access Token","openapi":"GET /v1/platform/phone-numbers/access-token","href":"/api-reference/phone-numbers/issue-voice-access-token"},{"title":"List Available Numbers","openapi":"GET /v1/platform/phone-numbers/available","href":"/api-reference/phone-numbers/list-available-numbers"},{"title":"Get User Phone Numbers","openapi":"GET /v1/platform/phone-numbers/users/{user_id}","href":"/api-reference/phone-numbers/get-user-phone-numbers"},{"title":"List a User's Devices","openapi":"GET /v1/platform/phone-numbers/users/{user_id}/devices","href":"/api-reference/phone-numbers/list-user-devices"},{"title":"Register a Device for Notifications","openapi":"POST /v1/platform/phone-numbers/users/{user_id}/devices","href":"/api-reference/phone-numbers/register-device-for-notifications"},{"title":"Remove a Device","openapi":"DELETE /v1/platform/phone-numbers/users/{user_id}/devices","href":"/api-reference/phone-numbers/remove-device"},{"title":"Request Phone Number For User","openapi":"POST /v1/platform/phone-numbers/users/{user_id}","href":"/api-reference/phone-numbers/request-phone-number-for-user"},{"title":"Issue Voice Access Token For User","openapi":"GET /v1/platform/phone-numbers/users/{user_id}/access-token","href":"/api-reference/phone-numbers/issue-voice-access-token-for-user"},{"title":"Get Call Status","openapi":"GET /v1/platform/phone-numbers/calls/{call_id}/status","href":"/api-reference/phone-numbers/get-call-status"},{"title":"Update Phone Number Status","openapi":"PUT /v1/platform/phone-numbers/users/{user_id}/{phone_number_id}","href":"/api-reference/phone-numbers/update-phone-number-status"},{"title":"Delete Phone Number","openapi":"DELETE /v1/platform/phone-numbers/users/{user_id}/{phone_number_id}","href":"/api-reference/phone-numbers/delete-phone-number"},{"title":"Turn a Device's Notifications On or Off","openapi":"PATCH /v1/platform/phone-numbers/devices/{device_id}","href":"/api-reference/phone-numbers/update-device-notifications"},{"title":"List Available Messaging Services","openapi":"GET /v1/platform/phone-numbers/messaging-services","href":"/api-reference/phone-numbers/list-messaging-services"},{"title":"List a Phone Number's Messaging Services","openapi":"GET /v1/platform/phone-numbers/{phone_number_id}/messaging-services","href":"/api-reference/phone-numbers/list-phone-number-messaging-services"},{"title":"Link a Phone Number to a Messaging Service","openapi":"POST /v1/platform/phone-numbers/{phone_number_id}/messaging-services","href":"/api-reference/phone-numbers/link-messaging-service"},{"title":"Request Removal of a Messaging Service","openapi":"POST /v1/platform/phone-numbers/{phone_number_id}/messaging-services/{link_id}/removal","href":"/api-reference/phone-numbers/request-messaging-service-removal"},{"title":"Switch a Phone Number's Messaging Service","openapi":"POST /v1/platform/phone-numbers/{phone_number_id}/messaging-services/{link_id}/update","href":"/api-reference/phone-numbers/update-messaging-service"}]},{"group":"Sms","expanded":false,"pages":[{"title":"Send SMS to Number","openapi":"POST /v1/platform/phone-numbers/sms/send-to-number","href":"/api-reference/sms/send-sms-to-number"},{"title":"List SMS Messages","openapi":"GET /v1/platform/phone-numbers/sms/messages","href":"/api-reference/sms/list-phone-sms-messages"},{"title":"List SMS Conversations","openapi":"GET /v1/platform/phone-numbers/sms/messages/conversations","href":"/api-reference/sms/list-sms-conversations"},{"title":"List SMS Thread","openapi":"GET /v1/platform/phone-numbers/sms/messages/thread","href":"/api-reference/sms/list-sms-thread"}]},{"group":"Calls","expanded":false,"pages":[{"title":"List Phone Calls","openapi":"GET /v1/platform/phone-numbers/calls","href":"/api-reference/calls/list-phone-calls"}]},{"group":"Listings","expanded":false,"pages":[{"title":"List Model","openapi":"POST /v1/platform/listings/{model_key}","href":"/api-reference/listings/list-model"}]},{"group":"Embed Tokens","expanded":false,"pages":[{"title":"Mint Embed Token","openapi":"POST /v1/platform/embed-tokens","href":"/api-reference/embed-tokens/mint-embed-token"}]},{"group":"File Scanning","expanded":false,"pages":[{"title":"Submit Files for Scanning","openapi":"POST /v1/platform/file-scans","href":"/api-reference/file-scans/submit-files-for-scanning"},{"title":"List Submitted Files","openapi":"GET /v1/platform/file-scans","href":"/api-reference/file-scans/list-submitted-files"},{"title":"Get a Submitted File","openapi":"GET /v1/platform/file-scans/{file_id}","href":"/api-reference/file-scans/get-submitted-file"}]}]},{"tab":"Webhooks","icon":"webhook","pages":[{"title":"Webhooks","href":"/webhooks/overview"}]},{"tab":"Guidelines","icon":"list-check","pages":[{"title":"Guidelines","href":"/guidelines/url-standards/overview"}]}]},"basePath":"","title":"Charge a Saved Card into a Card-Acquiring Merchant - Finogates API Documentation","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}