{
"status": 400,
"code": "wrong_provider",
"message": "Provider 'unknown_provider' does not exist for country 'CI' and method 'mobile_money'.",
"request_id": "<string>"
}
{
"status": 401,
"error": {
"type": "authorization_error",
"code": "wrong_credentials",
"message": "L'ID marchand et/ou la clé d'API sont incorrects."
}
}
{
"httpStatus": 409,
"type": "invalid_request",
"code": "unsupported_action",
"message": "This action is not supported"
}
{
"status": 429,
"error": "ThrottlerException: Too Many Requests"
}
{
"status": 503,
"code": "merchant_group_unavailable",
"message": "Your merchant group could not be verified. Please retry in a few moments.",
"request_id": "<string>"
}
Subscriptions
Enroll a customer in card-on-file recurring debits
Starts a card-on-file enrollment and returns the enrollment payment with the action the customer must complete. Poll its outcome with GET /subscription-intents//status.
POST
/
subscription-intents
Enroll a customer in card-on-file recurring debits
{
"status": 400,
"code": "wrong_provider",
"message": "Provider 'unknown_provider' does not exist for country 'CI' and method 'mobile_money'.",
"request_id": "<string>"
}
{
"status": 401,
"error": {
"type": "authorization_error",
"code": "wrong_credentials",
"message": "L'ID marchand et/ou la clé d'API sont incorrects."
}
}
{
"httpStatus": 409,
"type": "invalid_request",
"code": "unsupported_action",
"message": "This action is not supported"
}
{
"status": 429,
"error": "ThrottlerException: Too Many Requests"
}
{
"status": 503,
"code": "merchant_group_unavailable",
"message": "Your merchant group could not be verified. Please retry in a few moments.",
"request_id": "<string>"
}
Required — per the Visa Stored Credential Framework, no card-on-file enrollment can start without an explicit, timestamped consent. Absent or invalid consent causes the enrollment to be rejected.
For a rbs_scheduled enrollment: the recurring debit amount, in the smallest currency unit (e.g. 100 cents to charge €1.00) — distinct from any amount charged at enrollment time. For merchant_initiated: not a recurring amount (ignored in live), and in sandbox it selects the simulated enrollment outcome like any enrollment amount would — omit it to simulate success.
rbs_scheduled (default) — the customer is debited automatically on frequency/startDate/amount. merchant_initiated — the card is stored for on-demand charges via POST /subscriptions/{id}/charge; frequency and startDate are not accepted, and amount is not a recurring amount.
Present when status is "action_required". Same shape as a regular payment's nextAction (see PaymentDto) — build and auto-submit a form from action.data.{url, method, data} to complete card enrollment on the hosted card page.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"HUB2 Documentation","colors":{"primary":"#0D9373","light":"#07C983","dark":"#0D9373"},"logo":{"light":"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/logo/hub2.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=18f9f70abbe4d6234bad47152927237a","dark":"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/logo/hub2.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=18f9f70abbe4d6234bad47152927237a"},"favicon":"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/favicon.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=d71426a9f8f85b6c6ccce6d36247bf39","api":{"openapi":"https://api.hub2.io/docs-json"},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/hub2","website":"https://www.hub2.io"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hub2-83","hasAudioNarration":false,"actualSubdomain":"hub2-83","customDomains":["docs.hub2.io"],"gitSource":{"type":"github","owner":"technohub2","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae16defdd9644647b4200dd","collectionId":"57fb640c-62d6-4c13-a1f8-78fc452635ea","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae16defdd9644647b4200dd"},"entitlements":{},"buildId":"6ae16defdd9644647b4200dd","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Référence de l'API","count":86},{"language":"default","tag":"Integration","count":44},{"language":"default","tag":"Intégration","count":44},{"language":"default","tag":"Payments","count":18},{"language":"default","tag":"Webhooks","count":17},{"language":"default","tag":"Documentation","count":16},{"language":"default","tag":"Transfers","count":11},{"language":"default","tag":"Compliance","count":10},{"language":"default","tag":"Payment Links","count":10},{"language":"default","tag":"Processing Only","count":10}]},"assistantConfig":{},"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":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"assets/style.css","content":"table{display:table!important}.table-scroll{overflow:scroll}table tbody tr:nth-child(odd){background:#fafafa}html.dark table tbody tr:nth-child(odd){background:#1a1a1a}"}],"page":{"pagePath":"api-reference/subscriptions/enroll-a-customer","slug":"/api-reference/subscriptions/enroll-a-customer","pageMetadata":{"openapi":"post /subscription-intents","title":"Enroll a customer in card-on-file recurring debits","description":"Starts a card-on-file enrollment and returns the enrollment payment with the action the customer must complete. Poll its outcome with GET /subscription-intents/{id}/status.","href":"/api-reference/subscriptions/enroll-a-customer"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Starts a card-on-file enrollment and returns the enrollment payment with the action the customer must complete. Poll its outcome with GET /subscription-intents/\", \"/status.\"]\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":{"openapi":"post /subscription-intents","title":"Enroll a customer in card-on-file recurring debits","description":"Starts a card-on-file enrollment and returns the enrollment payment with the action the customer must complete. Poll its outcome with GET /subscription-intents/{id}/status.","href":"/api-reference/subscriptions/enroll-a-customer"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/hub2-83/0ef60d836fa10d10/assets/mermaid.js"],"openApiReferenceData":{"operation":{"description":"Starts a card-on-file enrollment and returns the enrollment payment with the action the customer must complete. Poll its outcome with GET /subscription-intents/{id}/status.","operationId":"SubscriptionIntentsController_create","parameters":["823a3292-3570-4026-ac17-3c8c325b6cce","56ccbe6e-a73d-46ff-9af9-23743ba59832","70c135aa-389b-48a7-9823-d7dd5d4a3971"],"requestBody":"c83f391a-5345-4d63-94be-335230bfa182","responses":{"201":"211a4163-53cd-4a32-a75a-091b3e1b6021","400":"6a88d72b-c923-4e41-9e81-f41515c32bd4","401":"d1596168-f1fa-4ce7-8983-de7f3c567316","403":"6e16fa2b-c1aa-4fe1-a921-a61f47aea385","404":"ef48a84e-b570-481b-b589-99b521098a1e","409":"f43274d3-bb4c-40b0-a95d-00ef4f1ce478","429":"886d99c8-d0d7-482d-ae23-8a9d219ed901","500":"390d4f10-f63f-434b-afa5-622732b9db5a","503":"f7de93ef-651a-43fb-b26b-166c4a5bdc71"},"summary":"Enroll a customer in card-on-file recurring debits","tags":["Subscription Intents"],"method":"post","type":"path","servers":[],"security":[],"path":"/subscription-intents","baseUrlOptions":[],"title":"Enroll a customer in card-on-file recurring debits","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"823a3292-3570-4026-ac17-3c8c325b6cce":{"name":"ApiKey","in":"header","description":"Your api key. To create a key, please get into our dashboard. If you don't have access to it, please reach the Support team.","required":true,"schema":{"type":"string","isRequired":true,"description":"Your api key. To create a key, please get into our dashboard. If you don't have access to it, please reach the Support team.","uniqueKey":"","typeLabel":"string"}},"56ccbe6e-a73d-46ff-9af9-23743ba59832":{"name":"MerchantId","in":"header","description":"Your merchant ID. This information is available in our dashboard. If you don't have access to it, please reach the Support team.","required":true,"schema":{"type":"string","isRequired":true,"description":"Your merchant ID. This information is available in our dashboard. If you don't have access to it, please reach the Support team.","uniqueKey":"","typeLabel":"string"}},"70c135aa-389b-48a7-9823-d7dd5d4a3971":{"name":"Environment","in":"header","description":"Allow you to choose between the sandbox mode to perform some tests or the live mode for real world transactions.","required":true,"schema":{"type":"string","enum":["live","sandbox"],"isRequired":true,"description":"Allow you to choose between the sandbox mode to perform some tests or the live mode for real world transactions.","uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customerReference":{"type":"string","description":"Your reference for the customer being enrolled in card-on-file.","example":"cust_01924059","maxLength":255,"isRequired":true,"uniqueKey":"customerReference","typeLabel":"string"},"email":{"type":"string","description":"Customer email, to which the enrollment and recurring-debit notifications are sent.","example":"customer@example.com","isRequired":true,"uniqueKey":"email","typeLabel":"string"},"currency":{"type":"string","description":"Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html).","example":"XOF","isRequired":true,"uniqueKey":"currency","typeLabel":"string"},"consent":{"type":"object","description":"Required — per the Visa Stored Credential Framework, no card-on-file enrollment can start without an explicit, timestamped consent. Absent or invalid consent causes the enrollment to be rejected.","required":["given","timestamp","reference"],"properties":{"given":{"type":"boolean","description":"Must be true — an absent, false, or omitted consent object causes the enrollment to be rejected.","example":true,"isRequired":true,"uniqueKey":"consent.given","typeLabel":"boolean"},"timestamp":{"type":"string","description":"ISO-8601 timestamp of when the customer gave consent.","example":"2026-07-03T10:00:00.000Z","isRequired":true,"uniqueKey":"consent.timestamp","typeLabel":"string"},"reference":{"type":"string","description":"Your reference identifying this consent record on your side. Letters, digits and hyphens only, 64 characters at most — any other character is refused, because the recurring-billing provider would reject the enrollment. Must be unique within your merchant account, sub-merchants of your group included; another Hub2 merchant may use the same value. A reference already used for another customer, or already enrolled for another sub-merchant of your group, makes the enrollment fail. One already enrolled in the other mode (sandbox or live), or, for a sub-merchant, one already used by its group owner or a sibling sub-merchant, is refused with a 409 when the subscription intent is created. Reusing it to retry the same enrollment is safe.","example":"consent-01924059","maxLength":64,"isRequired":true,"uniqueKey":"consent.reference","typeLabel":"string"}},"isRequired":true,"uniqueKey":"consent","typeLabel":"object"},"amount":{"type":"number","description":"For a rbs_scheduled enrollment: the recurring debit amount, in the smallest currency unit (e.g. 100 cents to charge €1.00) — distinct from any amount charged at enrollment time. For merchant_initiated: not a recurring amount (ignored in live), and in sandbox it selects the simulated enrollment outcome like any enrollment amount would — omit it to simulate success.","example":5000,"maximum":9999999999,"uniqueKey":"amount","typeLabel":"number"},"frequency":{"type":"string","description":"Recurring debit frequency. Required for a rbs_scheduled enrollment (the default). Not accepted for a merchant_initiated enrollment.","enum":["weekly","monthly"],"example":"monthly","uniqueKey":"frequency","typeLabel":"enum\u003cstring>"},"startDate":{"type":"string","description":"ISO-8601 date of the first recurring debit. Required for a rbs_scheduled enrollment (the default). Not accepted for a merchant_initiated enrollment.","example":"2026-08-01","uniqueKey":"startDate","typeLabel":"string"},"billingMode":{"type":"string","description":"rbs_scheduled (default) — the customer is debited automatically on frequency/startDate/amount. merchant_initiated — the card is stored for on-demand charges via POST /subscriptions/{id}/charge; frequency and startDate are not accepted, and amount is not a recurring amount.","enum":["rbs_scheduled","merchant_initiated"],"default":"rbs_scheduled","example":"rbs_scheduled","uniqueKey":"billingMode","typeLabel":"enum\u003cstring>"},"onSuccessRedirectionUrl":{"type":"string","description":"The url used to redirect the user when the enrollment is successful. You must provide a fully-qualified address using https as the scheme.","maxLength":2084,"uniqueKey":"onSuccessRedirectionUrl","typeLabel":"string"},"onFailedRedirectionUrl":{"type":"string","description":"The url used to redirect the user when the enrollment fails. You must provide a fully-qualified address using https as the scheme.","maxLength":2084,"uniqueKey":"onFailedRedirectionUrl","typeLabel":"string"}},"required":["customerReference","email","currency","consent"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"customerReference":"cust_01924059","email":"customer@example.com","currency":"XOF","consent":{"given":true,"timestamp":"2026-07-03T10:00:00.000Z","reference":"consent-01924059"},"amount":5000,"frequency":"monthly","startDate":"2026-08-01","billingMode":"rbs_scheduled","onSuccessRedirectionUrl":"\u003cstring>","onFailedRedirectionUrl":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"211a4163-53cd-4a32-a75a-091b3e1b6021":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"paymentId":{"type":"string","description":"Id of the underlying enrollment payment.","isRequired":true,"uniqueKey":"paymentId","typeLabel":"string"},"status":{"type":"string","enum":["successful","failed","pending","action_required"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"action":{"type":"object","description":"Present when status is \"action_required\". Same shape as a regular payment's nextAction (see PaymentDto) — build and auto-submit a form from action.data.{url, method, data} to complete card enrollment on the hosted card page.","required":["type","message"],"properties":{"type":{"type":"string","enum":["ussd","otp","redirection"],"isRequired":true,"uniqueKey":"action.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"action.message","typeLabel":"string"},"data":{"type":"object","description":"","required":["url","urls","method"],"properties":{"url":{"type":"string","description":"A fully qualified URL where the customer must be redirected to pursue the payment.","isRequired":true,"uniqueKey":"action.data.url","typeLabel":"string"},"urls":{"type":"string","description":"An array of fully qualified URLs where the customer must be redirected to pursue the payment.","isRequired":true,"uniqueKey":"action.data.urls","typeLabel":"string"},"method":{"type":"string","description":"HTTP verb to be used to redirect the customer.","example":"post","isRequired":true,"uniqueKey":"action.data.method","typeLabel":"string"},"headers":{"type":"object","description":"","uniqueKey":"action.data.headers","typeLabel":"object"},"data":{"type":"object","description":"Data that need to be used to make the redirection. It could be parameters for a GET request or a body payload for a POST.","uniqueKey":"action.data.data","typeLabel":"object"}},"uniqueKey":"action.data","typeLabel":"object"}},"uniqueKey":"action","typeLabel":"object"}},"required":["paymentId","status"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"paymentId":"\u003cstring>","status":"successful","action":{"type":"ussd","message":"\u003cstring>","data":{"url":"\u003cstring>","urls":"\u003cstring>","method":"post","headers":{},"data":{}}}}}},"exampleType":"generated"}},"exampleType":"generated"},"6a88d72b-c923-4e41-9e81-f41515c32bd4":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","description":"HTTP status.","enum":[400],"example":400,"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cnumber>"},"code":{"type":"string","description":"The error code, e.g. `wrong_provider`, `provider_required`, `provider_not_allowed`, `invalid_url`, `invalid_sandbox_msisdn`, `credit_card_fees_not_supported`, `credit_card_provider_not_configured`, `credit_card_provider_unavailable`, `payment_method_not_supported`, `override_business_id`, `override_business_name`, `signature_error`, `merchant_not_found`, `forbidden_special_chars`, `ci.mtn.description_too_big`, `reference_required`. `Bad Request` for DTO validation failures and other uncoded 400s.","example":"wrong_provider","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"What is wrong with the request. An array of messages when the payload fails DTO validation.","example":"Provider 'unknown_provider' does not exist for country 'CI' and method 'mobile_money'.","isRequired":true,"uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"message.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"What is wrong with the request. An array of messages when the payload fails DTO validation.","example":"Provider 'unknown_provider' does not exist for country 'CI' and method 'mobile_money'.","isRequired":true,"uniqueKey":"message.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"message","typeLabel":"string | string[]"},"request_id":{"type":"string","description":"Identifier of the request, to quote when contacting the Support team.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"}},"required":["status","code","message","request_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":400,"code":"wrong_provider","message":"Provider 'unknown_provider' does not exist for country 'CI' and method 'mobile_money'.","request_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"d1596168-f1fa-4ce7-8983-de7f3c567316":{"description":"Wrong credentials","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","description":"HTTP error code.","example":401,"isRequired":true,"uniqueKey":"status","typeLabel":"number"},"error":{"type":"object","description":"HTTP error description.","required":["type","code","message"],"properties":{"type":{"type":"string","description":"The type of this error.","example":"authorization_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","description":"The internal error code describing what happened.","enum":["bad_payment_intent_token","wrong_credentials"],"example":"wrong_credentials","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Detailed error message which describe what happened.","example":"L'ID marchand et/ou la clé d'API sont incorrects.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["status","error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":401,"error":{"type":"authorization_error","code":"wrong_credentials","message":"L'ID marchand et/ou la clé d'API sont incorrects."}}}},"exampleType":"generated"}},"exampleType":"generated"},"6e16fa2b-c1aa-4fe1-a921-a61f47aea385":{"description":"Card-on-file is disabled, the merchant is not eligible (not registered in Côte d'Ivoire), the merchant is closed or suspended, or the merchant owns a merchant group.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"ef48a84e-b570-481b-b589-99b521098a1e":{"description":"The authenticated merchant could not be resolved.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"f43274d3-bb4c-40b0-a95d-00ef4f1ce478":{"description":"Invalid request. Returned with code card_on_file_consent_reference_in_use when the merchant reuses a consent reference it already enrolled in the other mode, or when a sub-merchant reuses one already used by its group owner or by a sibling sub-merchant.","content":{"application/json":{"schema":{"type":"object","properties":{"httpStatus":{"type":"number","description":"Http status","enum":[409],"example":409,"isRequired":true,"uniqueKey":"httpStatus","typeLabel":"enum\u003cnumber>"},"type":{"type":"string","description":"Error type","example":"invalid_request","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"code":{"type":"string","description":"Error code","enum":["unsupported_action"],"example":"unsupported_action","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Error message","example":"This action is not supported","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["httpStatus","type","code","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"httpStatus":409,"type":"invalid_request","code":"unsupported_action","message":"This action is not supported"}}},"exampleType":"generated"}},"exampleType":"generated"},"886d99c8-d0d7-482d-ae23-8a9d219ed901":{"description":"ThrottlerException: Too Many Requests","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","description":"status","enum":[429],"example":429,"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cnumber>"},"error":{"type":"string","description":"Error","example":"ThrottlerException: Too Many Requests","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"required":["status","error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":429,"error":"ThrottlerException: Too Many Requests"}}},"exampleType":"generated"}},"exampleType":"generated"},"390d4f10-f63f-434b-afa5-622732b9db5a":{"description":"Internal error","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"The type of this error.","example":"internal_error","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"code":{"type":"string","description":"The error code for this error.","example":["internal_error","wrong_credentials","not_granted","live_mode_not_granted"],"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"The error message describing what happens to throw this error.","example":"An error occurred on our system. Please try again later.","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["type","code","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"internal_error","code":["internal_error","wrong_credentials","not_granted","live_mode_not_granted"],"message":"An error occurred on our system. Please try again later."}}},"exampleType":"generated"}},"exampleType":"generated"},"f7de93ef-651a-43fb-b26b-166c4a5bdc71":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"number","description":"HTTP status.","enum":[502,503],"example":503,"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cnumber>"},"code":{"type":"string","description":"The error code. 503: `instant_payment_alias_rail_unavailable`, `merchant_group_unavailable` (the merchant group of the caller could not be verified, so money movement is refused). 502: `instant_payment_alias_not_recorded`, `instant_payment_alias_deletion_not_recorded`, `instant_payment_alias_divergence`.","example":"merchant_group_unavailable","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"What went wrong, and whether the call is safe to retry.","example":"Your merchant group could not be verified. Please retry in a few moments.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"request_id":{"type":"string","description":"Identifier of the request, to quote when contacting the Support team.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"}},"required":["status","code","message","request_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":503,"code":"merchant_group_unavailable","message":"Your merchant group could not be verified. Please retry in a few moments.","request_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{},"servers":{}},"originalFileLocation":"https://api.hub2.io/docs-json"},"subdomain":"hub2-83","siteName":"HUB2 Documentation","title":"Enroll a customer in card-on-file recurring debits - HUB2 Documentation","navMaps":{"firstHrefInVersion":{"English":{"href":"/api-reference/subscriptions/enroll-a-customer","matchLevel":0},"Français":{"href":"/api-reference/subscriptions/enroll-a-customer","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T03:37:34.390Z","originalFileLocation":"api-reference/subscriptions/enroll-a-customer.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=\"Starts a card-on-file enrollment and returns the enrollment payment with the action the customer must complete. Poll its outcome with GET /subscription-intents/{id}/status.\">\u003cmeta data-mint-head name=\"application-name\" content=\"HUB2 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/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_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/hub2-83/2cSAgZof76cJIDy-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Enroll a customer in card-on-file recurring debits - HUB2 Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Starts a card-on-file enrollment and returns the enrollment payment with the action the customer must complete. Poll its outcome with GET /subscription-intents/{id}/status.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"HUB2 Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hub2.io/api-reference/subscriptions/enroll-a-customer\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hub2-83.mintlify.app/_mintlify/api/og/v2?division=Subscriptions\u0026amp;title=Enroll+a+customer+in+card-on-file+recurring+debits\u0026amp;description=Starts+a+card-on-file+enrollment+and+returns+the+enrollment+payment+with+the+action+the+customer+must+complete.+Poll+its+outcome+with+GET+%2Fsubscription-intents%2F\u0026amp;theme=92cb3d561e9d2318e8ed5cd1\u0026amp;signature=c15c118c071cd320e1a827fcad694045121c77a703af670f9b280467615b3de3\">\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=\"Enroll a customer in card-on-file recurring debits - HUB2 Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Starts a card-on-file enrollment and returns the enrollment payment with the action the customer must complete. Poll its outcome with GET /subscription-intents/{id}/status.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hub2-83.mintlify.app/_mintlify/api/og/v2?division=Subscriptions\u0026amp;title=Enroll+a+customer+in+card-on-file+recurring+debits\u0026amp;description=Starts+a+card-on-file+enrollment+and+returns+the+enrollment+payment+with+the+action+the+customer+must+complete.+Poll+its+outcome+with+GET+%2Fsubscription-intents%2F\u0026amp;theme=92cb3d561e9d2318e8ed5cd1\u0026amp;signature=c15c118c071cd320e1a827fcad694045121c77a703af670f9b280467615b3de3\">\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/hub2-83/2cSAgZof76cJIDy-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"HUB2 Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D9373\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.hub2.io/api-reference/subscriptions/enroll-a-customer\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/subscriptions/enroll-a-customer.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.hub2.io/#organization\",\"name\":\"HUB2 Documentation\",\"url\":\"https://docs.hub2.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hub2-83/aPkTvmVeXN9HXpuW/assets/logo/hub2.png?fit=max\u0026auto=format\u0026n=aPkTvmVeXN9HXpuW\u0026q=85\u0026s=18f9f70abbe4d6234bad47152927237a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.hub2.io#website\",\"name\":\"HUB2 Documentation\",\"url\":\"https://docs.hub2.io\",\"publisher\":{\"@id\":\"https://docs.hub2.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.hub2.io/api-reference/subscriptions/enroll-a-customer#webpage\",\"url\":\"https://docs.hub2.io/api-reference/subscriptions/enroll-a-customer\",\"name\":\"Enroll a customer in card-on-file recurring debits\",\"description\":\"Starts a card-on-file enrollment and returns the enrollment payment with the action the customer must complete. Poll its outcome with GET /subscription-intents/{id}/status.\",\"dateModified\":\"2026-10-28T03:37:34.390Z\",\"isPartOf\":{\"@id\":\"https://docs.hub2.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hub2.io/api-reference/subscriptions/enroll-a-customer#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hub2.io/api-reference/subscriptions/enroll-a-customer#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Subscriptions\",\"item\":\"https://docs.hub2.io/api-reference/subscriptions/create-a-subscription-link\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enroll a customer in card-on-file recurring debits\",\"item\":\"https://docs.hub2.io/api-reference/subscriptions/enroll-a-customer\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.hub2.io/api-reference/subscriptions/enroll-a-customer#apireference\",\"headline\":\"Enroll a customer in card-on-file recurring debits\",\"name\":\"Enroll a customer in card-on-file recurring debits\",\"description\":\"Starts a card-on-file enrollment and returns the enrollment payment with the action the customer must complete. Poll its outcome with GET /subscription-intents/{id}/status.\",\"url\":\"https://docs.hub2.io/api-reference/subscriptions/enroll-a-customer\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hub2.io/api-reference/subscriptions/enroll-a-customer#webpage\"},\"dateModified\":\"2026-10-28T03:37:34.390Z\",\"publisher\":{\"@id\":\"https://docs.hub2.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.hub2.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"HUB2 Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"HUB2 Documentation","nav":{"global":null,"versions":[{"version":"English","tabs":[{"tab":"HUB2"},{"tab":"Integration","pages":[{"title":"Integration","href":"/integration/en/getting_started/introduction"}]},{"tab":"Documentation","pages":[{"title":"Documentation","href":"/documentation/en/glossary"}]},{"tab":"API Reference","groups":[{"group":"Data","pages":[{"openapi":"get /data/countries","title":"Get countries","href":"/api-reference/data/get-countries"},{"openapi":"get /data/providers","title":"Get providers","href":"/api-reference/data/get-providers"},{"openapi":"get /data/bank-codes","title":"Get bank codes","href":"/api-reference/data/get-bank-codes"}]},{"group":"Balance","pages":[{"openapi":"get /balance","title":"Check Merchant Balance","href":"/api-reference/balance/check-merchant-balance"}]},{"group":"Webhooks","pages":[{"openapi":"get /webhooks","title":"Get all webhooks","href":"/api-reference/webhooks/get-all-webhooks"},{"openapi":"post /webhooks","title":"Create a webhook","href":"/api-reference/webhooks/create-a-webhook"},{"openapi":"get /webhooks/{id}","title":"Get a webhook","href":"/api-reference/webhooks/get-a-webhook"},{"openapi":"delete /webhooks/{id}","title":"Remove a webhook","href":"/api-reference/webhooks/remove-a-webhook"},{"openapi":"patch /webhooks/{id}","title":"Update a webhook","href":"/api-reference/webhooks/update-a-webhook"}]},{"group":"Sms","pages":[{"openapi":"get /sms/count","title":"Retrieve number of sms sent","href":"/api-reference/sms/retrieve-number-of-sms-sent"},{"openapi":"get /sms/list","title":"Get a list of sms sent","href":"/api-reference/sms/get-a-list-of-sms-sent"},{"openapi":"post /sms","title":"Send Sms","href":"/api-reference/sms/send-sms"}]},{"group":"Payments","pages":[{"openapi":"get /payment-intents","title":"Retrieve a PaymentIntent collection","href":"/api-reference/payments/retrieve-a-paymentintent-collection"},{"openapi":"post /payment-intents","title":"Create a PaymentIntent object","href":"/api-reference/payments/create-a-paymentintent-object"},{"openapi":"get /payment-intents/{id}","title":"Retrieve a PaymentIntent object","href":"/api-reference/payments/retrieve-a-paymentintent-object"},{"openapi":"post /payment-intents/{id}/payments","title":"Attempt a payment on a PaymentIntent object","href":"/api-reference/payments/attempt-a-payment-on-a-paymentintent-object"},{"openapi":"post /payment-intents/{id}/payments/sync","title":"Synchronously attempt a payment on a payment intent","href":"/api-reference/payments/synchronously-attempt-a-payment-on-a-payment-intent"},{"openapi":"post /payment-intents/{id}/authentication","title":"Authenticate the current payment","href":"/api-reference/payments/authenticate-the-current-payment"},{"openapi":"get /payment-intents/{id}/payment-fees","title":"Retrieve fees","href":"/api-reference/payments/retrieve-fees"},{"openapi":"get /payment-intents/url/{token}","title":"Retrieve configured URLs","href":"/api-reference/payments/retrieve-configured-urls"},{"openapi":"get /payment-intents/{id}/status","title":"Retrieve a PaymentIntent status","href":"/api-reference/payments/retrieve-a-paymentintent-status"},{"openapi":"get /payments","title":"Retrieve a Payments collection","href":"/api-reference/payments/retrieve-a-payments-collection"},{"openapi":"get /payments/{id}/status","title":"Retrieve the status payment object","href":"/api-reference/payments/retrieve-the-status-payment-object"}]},{"group":"Provisioning","pages":[{"openapi":"get /provisionings","title":"Retrieve a Provisionings collection","href":"/api-reference/provisioning/retrieve-a-provisionings-collection"},{"openapi":"post /provisionings","title":"Create a Provisioning","href":"/api-reference/provisioning/create-a-provisioning"},{"openapi":"get /provisionings/{id}","title":"Retrieve a Provisioning from given id","href":"/api-reference/provisioning/retrieve-a-provisioning-from-given-id"}]},{"group":"Receipt","pages":[{"openapi":"get /receipts/{id}","title":"Retrieve a Receipt","href":"/api-reference/receipt/retrieve-a-receipt"},{"openapi":"get /receipts/html/{id}","title":"Retrieve a Receipt as an HTML representation","href":"/api-reference/receipt/retrieve-a-receipt-as-an-html-representation"}]},{"group":"Payment on Terminal","pages":[{"openapi":"post /terminal/payments","title":"Execute payment","href":"/api-reference/payment-on-terminal/execute-payment"},{"openapi":"get /terminal/payments/{id}","title":"Retrieve a payment","href":"/api-reference/payment-on-terminal/retrieve-a-payment"}]},{"group":"IRT","pages":[{"openapi":"get /irt/transfer","title":"Retrieve a IRT transfers collection","href":"/api-reference/irt/retrieve-a-irt-transfers-collection"},{"openapi":"post /irt/transfer","title":"Create IRT transfer","href":"/api-reference/irt/create-irt-transfer"},{"openapi":"post /irt/transfer/verified-recipient","title":"Create an IRT transfer to a verified recipient","href":"/api-reference/irt/create-irt-transfer-verified-recipient"}]},{"group":"Transfers","pages":[{"openapi":"get /transfers","title":"Retrieve a Transfer collection","href":"/api-reference/transfers/retrieve-a-transfer-collection"},{"openapi":"post /transfers","title":"Create Transfer","href":"/api-reference/transfers/create-transfer"},{"openapi":"get /transfers/{id}","title":"Retrieve a Transfer","href":"/api-reference/transfers/retrieve-a-transfer"},{"openapi":"get /transfers/{id}/balance","title":"Retrieve a transfer's balance","href":"/api-reference/transfers/retrieve-a-transfers-balance"},{"openapi":"get /transfers/{id}/status","title":"Retrieve a transfer's status","href":"/api-reference/transfers/retrieve-a-transfers-status"},{"openapi":"post /transfers/status","title":"Retrieve the status of several transfers","href":"/api-reference/transfers/retrieve-transfers-status"}]},{"group":"Refunds","pages":[{"title":"Retrieve refunds collection","api":"GET https://api.hub2.io/refunds","href":"/api-reference/refunds/retrieve-refunds-collection"},{"openapi":"post /refunds/refund","title":"Create Refund","href":"/api-reference/refunds/create-refund"},{"title":"Retrieve a refund","api":"GET https://api.hub2.io/refunds/{id}","href":"/api-reference/refunds/retrieve-a-refund"}]},{"group":"Payment Refunds","pages":[{"openapi":"post /payments-refund/{id}/refund","title":"Create Refund for a Payment","href":"/api-reference/payments-refunds/create-refund-for-a-payment"},{"openapi":"get /payments-refund/{refundId}/status","title":"Get the status of a Payment Refund","href":"/api-reference/payments-refunds/get-the-status-of-a-payment-refund"}]},{"group":"Deposits","pages":[{"openapi":"get /deposits","title":"List deposits","href":"/api-reference/deposits/list-deposits"},{"openapi":"post /deposits","title":"Create a deposit","href":"/api-reference/deposits/create-a-deposit"},{"openapi":"get /deposits/{id}","title":"Get a deposit","href":"/api-reference/deposits/get-a-deposit"},{"openapi":"get /deposits/proof-upload-uri","title":"Get a proof upload URL","href":"/api-reference/deposits/get-a-proof-upload-url"},{"openapi":"post /deposits/{id}/proof","title":"Submit a proof","href":"/api-reference/deposits/submit-a-proof"},{"openapi":"get /deposits/{id}/proof","title":"Get deposit proof image","href":"/api-reference/deposits/get-deposit-proof-image"}]},{"group":"Compliance","pages":[{"openapi":"get /compliance/kyb/{name}","title":"Retrieve a kyb by name","href":"/api-reference/compliance/retrieve-a-kyb-by-name"},{"openapi":"put /compliance/kyb/{name}","title":"Update a kyb","href":"/api-reference/compliance/update-a-kyb"},{"openapi":"delete /compliance/kyb/{name}","title":"Delete a kyb","href":"/api-reference/compliance/delete-a-kyb"},{"openapi":"get /compliance/kyb","title":"Fetch a kyb list","href":"/api-reference/compliance/fetch-a-kyb-list"},{"openapi":"post /compliance/kyb","title":"Create a kyb","href":"/api-reference/compliance/create-a-kyb"},{"openapi":"get /compliance/transaction","title":"Fetch a kyb transactions list","href":"/api-reference/compliance/fetch-a-kyb-transactions-list"},{"openapi":"post /compliance/transaction","title":"Create a kyb transaction","href":"/api-reference/compliance/create-a-kyb-transaction"},{"openapi":"get /compliance/transaction/{reference}","title":"Retrieve a kyb transaction by reference","href":"/api-reference/compliance/retrieve-a-kyb-transaction-by-reference"},{"openapi":"delete /compliance/transaction/{reference}","title":"Delete a kyb transaction","href":"/api-reference/compliance/delete-a-kyb-transaction"},{"openapi":"get /compliance/kyc","title":"Get kyc information","href":"/api-reference/compliance/get-kyc-information"}]},{"group":"Recipients","pages":[{"openapi":"post /recipient","title":"Create a new recipient","href":"/api-reference/recipients/create-recipient"},{"openapi":"get /recipient/{id}","title":"Get a recipient by id","href":"/api-reference/recipients/find-recipient"},{"openapi":"get /recipient","title":"Retrieve a list of recipients according to filters","href":"/api-reference/recipients/list-recipients"},{"openapi":"delete /recipient/{id}","title":"Delete a recipient by id","href":"/api-reference/recipients/delete-recipient"}]},{"group":"Processing Only","pages":[{"openapi":"post /delegated/payments","title":"Create a delegated payment","href":"/api-reference/processing-only/make-a-delegated-payment"},{"openapi":"post /delegated/payments/sync","title":"Create a delegated synchronous payment","href":"/api-reference/processing-only/make-a-synchronous-delegated-payment"},{"openapi":"post /delegated/transfers","title":"Create a delegated Transfer","href":"/api-reference/processing-only/make-a-delegated-transfer"},{"openapi":"post /delegated/transfers/irt","title":"Create a delegated IRT transfer","href":"/api-reference/processing-only/make-a-delegated-transfer-irt"}]},{"group":"Payment Links","pages":[{"title":"Create a payment link","api":"POST https://api.hub2.io/payment-links","href":"/api-reference/payment_links/create_payment_links"},{"openapi":"get /payment-links","title":"List Payment Links","href":"/api-reference/payment_links/list_payment_links"},{"openapi":"get /payment-links/{id}","title":"Get Payment Link with Attempts","href":"/api-reference/payment_links/list_payment_links_with_attempts"},{"openapi":"patch /payment-links/{id}/close","title":"Close Payment Link","href":"/api-reference/payment_links/close_payment_links"}]},{"group":"Submerchants","pages":[{"openapi":"post /submerchants","title":"Create a submerchant","href":"/api-reference/submerchants/create-a-submerchant"},{"openapi":"get /submerchants","title":"List submerchants","href":"/api-reference/submerchants/list_submerchants"},{"openapi":"patch /submerchants/{submerchantId}","title":"Update a submerchant","href":"/api-reference/submerchants/update-a-submerchant"}]},{"group":"Subscriptions","pages":[{"openapi":"post /subscription-links","title":"Create Subscription Link","description":"Create a new card-on-file subscription enrollment link","href":"/api-reference/subscriptions/create-a-subscription-link"},{"openapi":"post /subscription-intents","title":"Enroll a customer in card-on-file recurring debits","href":"/api-reference/subscriptions/enroll-a-customer"},{"openapi":"get /subscription-intents/{id}/status","description":"Find out how a card-on-file enrollment ended: abandoned by the payer, refused, or failed. Enrollments created before this endpoint was released return 404.","title":"Retrieve a card-on-file enrollment status","href":"/api-reference/subscriptions/retrieve-an-enrollment-status"},{"openapi":"get /subscriptions","title":"Retrieve a Subscription collection","href":"/api-reference/subscriptions/retrieve-a-subscription-collection"},{"openapi":"post /subscriptions/{id}/charge","title":"Charge a merchant-initiated subscription on demand","href":"/api-reference/subscriptions/charge-a-subscription"},{"openapi":"post /subscriptions/{id}/suspend","title":"Suspend a subscription","href":"/api-reference/subscriptions/suspend-a-subscription"},{"openapi":"post /subscriptions/{id}/cancel","title":"Cancel a subscription","href":"/api-reference/subscriptions/cancel-a-subscription"},{"openapi":"get /subscriptions/{id}/transactions","title":"Retrieve a subscription's charge history","href":"/api-reference/subscriptions/retrieve-a-subscription-charge-history"}]},{"group":"Instant Payment","pages":[{"openapi":"get /instant-payment/accounts/{accountType}/aliases","title":"List the instant payment aliases of an account","href":"/api-reference/instant-payment/list-aliases"},{"openapi":"post /instant-payment/accounts/{accountType}/aliases","title":"Create an instant payment alias","href":"/api-reference/instant-payment/create-an-alias"},{"openapi":"delete /instant-payment/accounts/{accountType}/aliases/{aliasKey}","title":"Delete an instant payment alias","href":"/api-reference/instant-payment/delete-an-alias"}]}]}]},{"version":"Français","tabs":[{"tab":"HUB2"},{"tab":"Intégration","pages":[{"title":"Intégration","href":"/integration/fr/getting_started/introduction"}]},{"tab":"Documentation","pages":[{"title":"Documentation","href":"/documentation/fr/glossary"}]},{"tab":"Référence de l'API","groups":[{"group":"Data","pages":[{"openapi":"get /data/countries","title":"Get countries","href":"/api-reference/data/get-countries"},{"openapi":"get /data/providers","title":"Get providers","href":"/api-reference/data/get-providers"},{"openapi":"get /data/bank-codes","title":"Get bank codes","href":"/api-reference/data/get-bank-codes"}]},{"group":"Balance","pages":[{"openapi":"get /balance","title":"Check Merchant Balance","href":"/api-reference/balance/check-merchant-balance"}]},{"group":"Webhooks","pages":[{"openapi":"get /webhooks","title":"Get all webhooks","href":"/api-reference/webhooks/get-all-webhooks"},{"openapi":"post /webhooks","title":"Create a webhook","href":"/api-reference/webhooks/create-a-webhook"},{"openapi":"get /webhooks/{id}","title":"Get a webhook","href":"/api-reference/webhooks/get-a-webhook"},{"openapi":"delete /webhooks/{id}","title":"Remove a webhook","href":"/api-reference/webhooks/remove-a-webhook"},{"openapi":"patch /webhooks/{id}","title":"Update a webhook","href":"/api-reference/webhooks/update-a-webhook"}]},{"group":"Sms","pages":[{"openapi":"get /sms/count","title":"Retrieve number of sms sent","href":"/api-reference/sms/retrieve-number-of-sms-sent"},{"openapi":"get /sms/list","title":"Get a list of sms sent","href":"/api-reference/sms/get-a-list-of-sms-sent"},{"openapi":"post /sms","title":"Send Sms","href":"/api-reference/sms/send-sms"}]},{"group":"Payments","pages":[{"openapi":"get /payment-intents","title":"Retrieve a PaymentIntent collection","href":"/api-reference/payments/retrieve-a-paymentintent-collection"},{"openapi":"post /payment-intents","title":"Create a PaymentIntent object","href":"/api-reference/payments/create-a-paymentintent-object"},{"openapi":"get /payment-intents/{id}","title":"Retrieve a PaymentIntent object","href":"/api-reference/payments/retrieve-a-paymentintent-object"},{"openapi":"post /payment-intents/{id}/payments","title":"Attempt a payment on a PaymentIntent object","href":"/api-reference/payments/attempt-a-payment-on-a-paymentintent-object"},{"openapi":"post /payment-intents/{id}/payments/sync","title":"Synchronously attempt a payment on a payment intent","href":"/api-reference/payments/synchronously-attempt-a-payment-on-a-payment-intent"},{"openapi":"post /payment-intents/{id}/authentication","title":"Authenticate the current payment","href":"/api-reference/payments/authenticate-the-current-payment"},{"openapi":"get /payment-intents/{id}/payment-fees","title":"Retrieve fees","href":"/api-reference/payments/retrieve-fees"},{"openapi":"get /payment-intents/url/{token}","title":"Retrieve configured URLs","href":"/api-reference/payments/retrieve-configured-urls"},{"openapi":"get /payment-intents/{id}/status","title":"Retrieve a PaymentIntent status","href":"/api-reference/payments/retrieve-a-paymentintent-status"},{"openapi":"get /payments","title":"Retrieve a Payments collection","href":"/api-reference/payments/retrieve-a-payments-collection"},{"openapi":"get /payments/{id}/status","title":"Retrieve the status payment object","href":"/api-reference/payments/retrieve-the-status-payment-object"}]},{"group":"Provisioning","pages":[{"openapi":"get /provisionings","title":"Retrieve a Provisionings collection","href":"/api-reference/provisioning/retrieve-a-provisionings-collection"},{"openapi":"post /provisionings","title":"Create a Provisioning","href":"/api-reference/provisioning/create-a-provisioning"},{"openapi":"get /provisionings/{id}","title":"Retrieve a Provisioning from given id","href":"/api-reference/provisioning/retrieve-a-provisioning-from-given-id"}]},{"group":"Receipt","pages":[{"openapi":"get /receipts/{id}","title":"Retrieve a Receipt","href":"/api-reference/receipt/retrieve-a-receipt"},{"openapi":"get /receipts/html/{id}","title":"Retrieve a Receipt as an HTML representation","href":"/api-reference/receipt/retrieve-a-receipt-as-an-html-representation"}]},{"group":"Payment on Terminal","pages":[{"openapi":"post /terminal/payments","title":"Execute payment","href":"/api-reference/payment-on-terminal/execute-payment"},{"openapi":"get /terminal/payments/{id}","title":"Retrieve a payment","href":"/api-reference/payment-on-terminal/retrieve-a-payment"}]},{"group":"IRT","pages":[{"openapi":"get /irt/transfer","title":"Retrieve a IRT transfers collection","href":"/api-reference/irt/retrieve-a-irt-transfers-collection"},{"openapi":"post /irt/transfer","title":"Create IRT transfer","href":"/api-reference/irt/create-irt-transfer"},{"openapi":"post /irt/transfer/verified-recipient","title":"Create an IRT transfer to a verified recipient","href":"/api-reference/irt/create-irt-transfer-verified-recipient"}]},{"group":"Transfers","pages":[{"openapi":"get /transfers","title":"Retrieve a Transfer collection","href":"/api-reference/transfers/retrieve-a-transfer-collection"},{"openapi":"post /transfers","title":"Create Transfer","href":"/api-reference/transfers/create-transfer"},{"openapi":"get /transfers/{id}","title":"Retrieve a Transfer","href":"/api-reference/transfers/retrieve-a-transfer"},{"openapi":"get /transfers/{id}/balance","title":"Retrieve a transfer's balance","href":"/api-reference/transfers/retrieve-a-transfers-balance"},{"openapi":"get /transfers/{id}/status","title":"Retrieve a transfer's status","href":"/api-reference/transfers/retrieve-a-transfers-status"},{"openapi":"post /transfers/status","title":"Retrieve the status of several transfers","href":"/api-reference/transfers/retrieve-transfers-status"}]},{"group":"Refunds","pages":[{"title":"Retrieve refunds collection","api":"GET https://api.hub2.io/refunds","href":"/api-reference/refunds/retrieve-refunds-collection"},{"openapi":"post /refunds/refund","title":"Create Refund","href":"/api-reference/refunds/create-refund"},{"title":"Retrieve a refund","api":"GET https://api.hub2.io/refunds/{id}","href":"/api-reference/refunds/retrieve-a-refund"}]},{"group":"Payment Refunds","pages":[{"openapi":"post /payments-refund/{id}/refund","title":"Create Refund for a Payment","href":"/api-reference/payments-refunds/create-refund-for-a-payment"},{"openapi":"get /payments-refund/{refundId}/status","title":"Get the status of a Payment Refund","href":"/api-reference/payments-refunds/get-the-status-of-a-payment-refund"}]},{"group":"Deposits","pages":[{"openapi":"get /deposits","title":"List deposits","href":"/api-reference/deposits/list-deposits"},{"openapi":"post /deposits","title":"Create a deposit","href":"/api-reference/deposits/create-a-deposit"},{"openapi":"get /deposits/{id}","title":"Get a deposit","href":"/api-reference/deposits/get-a-deposit"},{"openapi":"get /deposits/proof-upload-uri","title":"Get a proof upload URL","href":"/api-reference/deposits/get-a-proof-upload-url"},{"openapi":"post /deposits/{id}/proof","title":"Submit a proof","href":"/api-reference/deposits/submit-a-proof"},{"openapi":"get /deposits/{id}/proof","title":"Get deposit proof image","href":"/api-reference/deposits/get-deposit-proof-image"}]},{"group":"Compliance","pages":[{"openapi":"get /compliance/kyb/{name}","title":"Retrieve a kyb by name","href":"/api-reference/compliance/retrieve-a-kyb-by-name"},{"openapi":"put /compliance/kyb/{name}","title":"Update a kyb","href":"/api-reference/compliance/update-a-kyb"},{"openapi":"delete /compliance/kyb/{name}","title":"Delete a kyb","href":"/api-reference/compliance/delete-a-kyb"},{"openapi":"get /compliance/kyb","title":"Fetch a kyb list","href":"/api-reference/compliance/fetch-a-kyb-list"},{"openapi":"post /compliance/kyb","title":"Create a kyb","href":"/api-reference/compliance/create-a-kyb"},{"openapi":"get /compliance/transaction","title":"Fetch a kyb transactions list","href":"/api-reference/compliance/fetch-a-kyb-transactions-list"},{"openapi":"post /compliance/transaction","title":"Create a kyb transaction","href":"/api-reference/compliance/create-a-kyb-transaction"},{"openapi":"get /compliance/transaction/{reference}","title":"Retrieve a kyb transaction by reference","href":"/api-reference/compliance/retrieve-a-kyb-transaction-by-reference"},{"openapi":"delete /compliance/transaction/{reference}","title":"Delete a kyb transaction","href":"/api-reference/compliance/delete-a-kyb-transaction"},{"openapi":"get /compliance/kyc","title":"Get kyc information","href":"/api-reference/compliance/get-kyc-information"}]},{"group":"Recipients","pages":[{"openapi":"post /recipient","title":"Create a new recipient","href":"/api-reference/recipients/create-recipient"},{"openapi":"get /recipient/{id}","title":"Get a recipient by id","href":"/api-reference/recipients/find-recipient"},{"openapi":"get /recipient","title":"Retrieve a list of recipients according to filters","href":"/api-reference/recipients/list-recipients"},{"openapi":"delete /recipient/{id}","title":"Delete a recipient by id","href":"/api-reference/recipients/delete-recipient"}]},{"group":"Processing Only","pages":[{"openapi":"post /delegated/payments","title":"Create a delegated payment","href":"/api-reference/processing-only/make-a-delegated-payment"},{"openapi":"post /delegated/payments/sync","title":"Create a delegated synchronous payment","href":"/api-reference/processing-only/make-a-synchronous-delegated-payment"},{"openapi":"post /delegated/transfers","title":"Create a delegated Transfer","href":"/api-reference/processing-only/make-a-delegated-transfer"},{"openapi":"post /delegated/transfers/irt","title":"Create a delegated IRT transfer","href":"/api-reference/processing-only/make-a-delegated-transfer-irt"}]},{"group":"Payment Links","pages":[{"title":"Create a payment link","api":"POST https://api.hub2.io/payment-links","href":"/api-reference/payment_links/create_payment_links"},{"openapi":"get /payment-links","title":"List Payment Links","href":"/api-reference/payment_links/list_payment_links"},{"openapi":"get /payment-links/{id}","title":"Get Payment Link with Attempts","href":"/api-reference/payment_links/list_payment_links_with_attempts"},{"openapi":"patch /payment-links/{id}/close","title":"Close Payment Link","href":"/api-reference/payment_links/close_payment_links"}]},{"group":"Submerchants","pages":[{"openapi":"post /submerchants","title":"Create a submerchant","href":"/api-reference/submerchants/create-a-submerchant"},{"openapi":"get /submerchants","title":"List submerchants","href":"/api-reference/submerchants/list_submerchants"},{"openapi":"patch /submerchants/{submerchantId}","title":"Update a submerchant","href":"/api-reference/submerchants/update-a-submerchant"}]},{"group":"Subscriptions","pages":[{"openapi":"post /subscription-links","title":"Create Subscription Link","description":"Create a new card-on-file subscription enrollment link","href":"/api-reference/subscriptions/create-a-subscription-link"},{"openapi":"post /subscription-intents","title":"Enroll a customer in card-on-file recurring debits","href":"/api-reference/subscriptions/enroll-a-customer"},{"openapi":"get /subscription-intents/{id}/status","description":"Find out how a card-on-file enrollment ended: abandoned by the payer, refused, or failed. Enrollments created before this endpoint was released return 404.","title":"Retrieve a card-on-file enrollment status","href":"/api-reference/subscriptions/retrieve-an-enrollment-status"},{"openapi":"get /subscriptions","title":"Retrieve a Subscription collection","href":"/api-reference/subscriptions/retrieve-a-subscription-collection"},{"openapi":"post /subscriptions/{id}/charge","title":"Charge a merchant-initiated subscription on demand","href":"/api-reference/subscriptions/charge-a-subscription"},{"openapi":"post /subscriptions/{id}/suspend","title":"Suspend a subscription","href":"/api-reference/subscriptions/suspend-a-subscription"},{"openapi":"post /subscriptions/{id}/cancel","title":"Cancel a subscription","href":"/api-reference/subscriptions/cancel-a-subscription"},{"openapi":"get /subscriptions/{id}/transactions","title":"Retrieve a subscription's charge history","href":"/api-reference/subscriptions/retrieve-a-subscription-charge-history"}]},{"group":"Instant Payment","pages":[{"openapi":"get /instant-payment/accounts/{accountType}/aliases","title":"List the instant payment aliases of an account","href":"/api-reference/instant-payment/list-aliases"},{"openapi":"post /instant-payment/accounts/{accountType}/aliases","title":"Create an instant payment alias","href":"/api-reference/instant-payment/create-an-alias"},{"openapi":"delete /instant-payment/accounts/{accountType}/aliases/{aliasKey}","title":"Delete an instant payment alias","href":"/api-reference/instant-payment/delete-an-alias"}]}]}]}]},"title":"Enroll a customer in card-on-file recurring debits - HUB2 Documentation","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","Page-R3M_BF4L.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}