{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/payments_mexico/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition","tabs","tab","split","img"]},"type":"markdown"},"seo":{"title":"Collect consent with consent links","description":"Belvo provides open finance products for Latin America that allow you to securely access and aggregate financial data as well as accept and issue bank-to-bank payments","siteUrl":"https://developers.belvo.com/","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"collect-consent-with-consent-links","__idx":0},"children":["Collect consent with consent links"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A consent link lets you collect a direct debit authorization without building your own UI. You create the link with one API call and send the URL to your customer. Your customer opens it in their browser, enters their CLABE, reviews and accepts the direct debit authorization, and signs it electronically with a code that Belvo deposits into their account."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When your customer finishes, Belvo has created a payment method and a confirmed consent for them. They are the same resources that you would otherwise create yourself with the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments_mexico/direct-debit-direct-api-setup","target":"_blank"},"children":["Direct Debit API"]},", so you can send payment requests right away."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In this guide, you will:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create a consent link for an existing customer, with the payment terms that they must authorize."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Share the link with your customer and see what they do in the consent link widget."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Handle the redirect back to your application."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Listen for webhooks and confirm the result."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Consent links replace two API steps"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A consent link replaces the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create a payment method"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create a consent"]}," steps of the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments_mexico/direct-debit-direct-api-setup","target":"_blank"},"children":["Direct Debit Payments via API"]}," guide. You still create the customer with the API, and you still create payment requests with the API."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":1},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before you begin, make sure you:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments_mexico/direct-debit-authentication-and-environments#api-keys-and-authentication","target":"_blank"},"children":["Generate your API keys."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer_resources/resources-webhooks-payments-mexico","target":"_blank"},"children":["Set up a webhook to listen to events."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments_mexico/direct-debit-idempotency-and-whitelisting","target":"_blank"},"children":["Set up IP Whitelisting."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ask your Belvo representative to enable consent links for your account. Consent links use penny validation to deliver the signature code, so penny validation consent must be active for your account."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments_mexico/direct-debit-direct-api-setup#create-a-customer","target":"_blank"},"children":["Create a customer"]}," for the person you want to debit. The widget shows the customer's name and a masked RFC or CURP from this record, so make sure that the data is correct."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"data-flow-overview","__idx":2},"children":["Data flow overview"]},{"$$mdtype":"Tag","name":"Mermaid","attributes":{"data-language":"mermaid","diagramSource":"sequenceDiagram\n    participant App as Your application\n    participant Customer as Customer\n    participant Widget as Consent link widget\n    participant Belvo as Belvo\n    participant Bank as Customer's bank\n\n    Note over App,Bank: 1. Create the consent link\n    App->>Belvo: POST /consents/links\n    Belvo-->>App: 201 - Created + id + consentLinkUrl\n\n    Note over App,Bank: 2. Share the link\n    App->>Customer: Send consentLinkUrl (SMS, email, WhatsApp, or redirect)\n    Customer->>Widget: Open consentLinkUrl\n\n    Note over App,Bank: 3. Customer completes the widget\n    Widget->>Belvo: Submit CLABE\n    Belvo->>Bank: Send a $0.01 MXN deposit with a code\n    Widget->>Belvo: Accept the authorization\n    Customer->>Widget: Enter the code from the deposit\n    Widget->>Belvo: Verify the code (electronic signature)\n    Belvo-->>Widget: Link completed\n\n    Note over App,Bank: 4. Confirm the result\n    Belvo->>App: WEBHOOK consent_confirmed (consentId, paymentMethodId)\n    Widget->>App: Redirect to callbackUrl?status=completed\n    App->>Belvo: GET /consents/links/{id}\n    Belvo-->>App: 200 + status completed\n","diagramHtml":"<div class=\"mermaid\" data-processed=\"true\"><svg id=\"mermaid-1790773753513\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"max-width: 1745px;\" viewBox=\"-50 -10 1745 1135\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><g><rect x=\"1495\" y=\"1049\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Bank\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"1570\" y=\"1081.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"1570\" dy=\"0\">Customer's bank</tspan></text></g><g><rect x=\"1141\" y=\"1049\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Belvo\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"1216\" y=\"1081.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"1216\" dy=\"0\">Belvo</tspan></text></g><g><rect x=\"790\" y=\"1049\" fill=\"#eaeaea\" stroke=\"#666\" width=\"166\" height=\"65\" name=\"Widget\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"873\" y=\"1081.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"873\" dy=\"0\">Consent link widget</tspan></text></g><g><rect x=\"490\" y=\"1049\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Customer\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"565\" y=\"1081.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"565\" dy=\"0\">Customer</tspan></text></g><g><rect x=\"0\" y=\"1049\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"App\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"75\" y=\"1081.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"75\" dy=\"0\">Your application</tspan></text></g><g><line id=\"actor4\" x1=\"1570\" y1=\"65\" x2=\"1570\" y2=\"1049\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Bank\"></line><g id=\"root-4\"><rect x=\"1495\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Bank\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"1570\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"1570\" dy=\"0\">Customer's bank</tspan></text></g></g><g><line id=\"actor3\" x1=\"1216\" y1=\"65\" x2=\"1216\" y2=\"1049\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Belvo\"></line><g id=\"root-3\"><rect x=\"1141\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Belvo\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"1216\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"1216\" dy=\"0\">Belvo</tspan></text></g></g><g><line id=\"actor2\" x1=\"873\" y1=\"65\" x2=\"873\" y2=\"1049\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Widget\"></line><g id=\"root-2\"><rect x=\"790\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"166\" height=\"65\" name=\"Widget\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"873\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"873\" dy=\"0\">Consent link widget</tspan></text></g></g><g><line id=\"actor1\" x1=\"565\" y1=\"65\" x2=\"565\" y2=\"1049\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Customer\"></line><g id=\"root-1\"><rect x=\"490\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Customer\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"565\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"565\" dy=\"0\">Customer</tspan></text></g></g><g><line id=\"actor0\" x1=\"75\" y1=\"65\" x2=\"75\" y2=\"1049\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"App\"></line><g id=\"root-0\"><rect x=\"0\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"App\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"75\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"75\" dy=\"0\">Your application</tspan></text></g></g><style>#mermaid-1790773753513{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-1790773753513 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-1790773753513 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-1790773753513 .error-icon{fill:#552222;}#mermaid-1790773753513 .error-text{fill:#552222;stroke:#552222;}#mermaid-1790773753513 .edge-thickness-normal{stroke-width:1px;}#mermaid-1790773753513 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1790773753513 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1790773753513 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-1790773753513 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1790773753513 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1790773753513 .marker{fill:#333333;stroke:#333333;}#mermaid-1790773753513 .marker.cross{stroke:#333333;}#mermaid-1790773753513 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-1790773753513 p{margin:0;}#mermaid-1790773753513 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1790773753513 text.actor&gt;tspan{fill:black;stroke:none;}#mermaid-1790773753513 .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-1790773753513 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-1790773753513 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-1790773753513 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-1790773753513 #arrowhead path{fill:#333;stroke:#333;}#mermaid-1790773753513 .sequenceNumber{fill:white;}#mermaid-1790773753513 #sequencenumber{fill:#333;}#mermaid-1790773753513 #crosshead path{fill:#333;stroke:#333;}#mermaid-1790773753513 .messageText{fill:#333;stroke:none;}#mermaid-1790773753513 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1790773753513 .labelText,#mermaid-1790773753513 .labelText&gt;tspan{fill:black;stroke:none;}#mermaid-1790773753513 .loopText,#mermaid-1790773753513 .loopText&gt;tspan{fill:black;stroke:none;}#mermaid-1790773753513 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-1790773753513 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-1790773753513 .noteText,#mermaid-1790773753513 .noteText&gt;tspan{fill:black;stroke:none;}#mermaid-1790773753513 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-1790773753513 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-1790773753513 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-1790773753513 .actorPopupMenu{position:absolute;}#mermaid-1790773753513 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-1790773753513 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1790773753513 .actor-man circle,#mermaid-1790773753513 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-1790773753513 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}</style><g></g><defs><symbol id=\"computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><g><rect x=\"50\" y=\"75\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"1545\" height=\"42\" class=\"note\"></rect><text x=\"823\" y=\"80\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"823\">1. Create the consent link</tspan></text></g><g><rect x=\"50\" y=\"235\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"1545\" height=\"42\" class=\"note\"></rect><text x=\"823\" y=\"240\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"823\">2. Share the link</tspan></text></g><g><rect x=\"50\" y=\"395\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"1545\" height=\"42\" class=\"note\"></rect><text x=\"823\" y=\"400\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"823\">3. Customer completes the widget</tspan></text></g><g><rect x=\"50\" y=\"771\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"1545\" height=\"42\" class=\"note\"></rect><text x=\"823\" y=\"776\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"823\">4. Confirm the result</tspan></text></g><text x=\"644\" y=\"132\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">POST /consents/links</text><line x1=\"76\" y1=\"171\" x2=\"1212\" y2=\"171\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"647\" y=\"186\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">201 - Created + id + consentLinkUrl</text><line x1=\"1215\" y1=\"225\" x2=\"79\" y2=\"225\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"319\" y=\"292\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Send consentLinkUrl (SMS, email, WhatsApp, or redirect)</text><line x1=\"76\" y1=\"331\" x2=\"561\" y2=\"331\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"718\" y=\"346\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Open consentLinkUrl</text><line x1=\"566\" y1=\"385\" x2=\"869\" y2=\"385\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"1043\" y=\"452\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Submit CLABE</text><line x1=\"874\" y1=\"491\" x2=\"1212\" y2=\"491\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"1392\" y=\"506\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Send a $0.01 MXN deposit with a code</text><line x1=\"1217\" y1=\"545\" x2=\"1566\" y2=\"545\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"1043\" y=\"560\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Accept the authorization</text><line x1=\"874\" y1=\"599\" x2=\"1212\" y2=\"599\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"718\" y=\"614\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Enter the code from the deposit</text><line x1=\"566\" y1=\"653\" x2=\"869\" y2=\"653\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"1043\" y=\"668\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Verify the code (electronic signature)</text><line x1=\"874\" y1=\"707\" x2=\"1212\" y2=\"707\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"1046\" y=\"722\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Link completed</text><line x1=\"1215\" y1=\"761\" x2=\"877\" y2=\"761\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"647\" y=\"828\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">WEBHOOK consent_confirmed (consentId, paymentMethodId)</text><line x1=\"1215\" y1=\"867\" x2=\"79\" y2=\"867\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"476\" y=\"882\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Redirect to callbackUrl?status=completed</text><line x1=\"872\" y1=\"921\" x2=\"79\" y2=\"921\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"644\" y=\"936\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">GET /consents/links/{id}</text><line x1=\"76\" y1=\"975\" x2=\"1212\" y2=\"975\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"647\" y=\"990\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">200 + status completed</text><line x1=\"1215\" y1=\"1029\" x2=\"79\" y2=\"1029\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line></svg></div>"},"children":["sequenceDiagram\n    participant App as Your application\n    participant Customer as Customer\n    participant Widget as Consent link widget\n    participant Belvo as Belvo\n    participant Bank as Customer's bank\n\n    Note over App,Bank: 1. Create the consent link\n    App->>Belvo: POST /consents/links\n    Belvo-->>App: 201 - Created + id + consentLinkUrl\n\n    Note over App,Bank: 2. Share the link\n    App->>Customer: Send consentLinkUrl (SMS, email, WhatsApp, or redirect)\n    Customer->>Widget: Open consentLinkUrl\n\n    Note over App,Bank: 3. Customer completes the widget\n    Widget->>Belvo: Submit CLABE\n    Belvo->>Bank: Send a $0.01 MXN deposit with a code\n    Widget->>Belvo: Accept the authorization\n    Customer->>Widget: Enter the code from the deposit\n    Widget->>Belvo: Verify the code (electronic signature)\n    Belvo-->>Widget: Link completed\n\n    Note over App,Bank: 4. Confirm the result\n    Belvo->>App: WEBHOOK consent_confirmed (consentId, paymentMethodId)\n    Widget->>App: Redirect to callbackUrl?status=completed\n    App->>Belvo: GET /consents/links/{id}\n    Belvo-->>App: 200 + status completed\n"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-a-consent-link","__idx":3},"children":["Create a consent link"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To create a consent link, make a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /consents/links"]}," call with the ID of the customer and the payment terms that they must authorize."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Sandbox","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","data-title":"Create a Consent Link Request (Sandbox)","header":{"title":"Create a Consent Link Request (Sandbox)","controls":{"copy":{}}},"source":"curl -i -X POST \\\n  'https://api.sandbox.directdebit.belvo.com/consents/links' \\\n  -H 'Content-Type: application/json' \\\n  -H 'api-key-id: YOUR_API_KEY_ID' \\\n  -H 'api-key-secret: YOUR_API_KEY_SECRET' \\\n  -d '{\n    \"customerId\": \"0d1a377b-b4c5-4a94-9e2e-83e59d1f6a9c\",\n    \"expiresIn\": 72,\n    \"callbackUrl\": \"https://www.your-app.com/direct-debit/return\",\n    \"terms\": {\n      \"chargeType\": \"RECURRING\",\n      \"chargeAmount\": 420.00,\n      \"paymentFrequency\": \"MONTHLY\",\n      \"serviceOrCreditDescription\": \"Préstamo personal\",\n      \"termDescription\": \"12 meses\",\n      \"interestRate\": \"1,0% mensual\",\n      \"numberOfCharges\": 12,\n      \"firstChargeDate\": \"2026-11-10\",\n      \"isPayrollLinked\": false\n    }\n  }'\n","lang":"curl"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Production","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","data-title":"Create a Consent Link Request (Production)","header":{"title":"Create a Consent Link Request (Production)","controls":{"copy":{}}},"source":"curl -i -X POST \\\n  'https://api.directdebit.belvo.com/consents/links' \\\n  -H 'Content-Type: application/json' \\\n  -H 'api-key-id: YOUR_API_KEY_ID' \\\n  -H 'api-key-secret: YOUR_API_KEY_SECRET' \\\n  -d '{\n    \"customerId\": \"0d1a377b-b4c5-4a94-9e2e-83e59d1f6a9c\",\n    \"expiresIn\": 72,\n    \"callbackUrl\": \"https://www.your-app.com/direct-debit/return\",\n    \"terms\": {\n      \"chargeType\": \"RECURRING\",\n      \"chargeAmount\": 420.00,\n      \"paymentFrequency\": \"MONTHLY\",\n      \"serviceOrCreditDescription\": \"Préstamo personal\",\n      \"termDescription\": \"12 meses\",\n      \"interestRate\": \"1,0% mensual\",\n      \"numberOfCharges\": 12,\n      \"firstChargeDate\": \"2026-11-10\",\n      \"isPayrollLinked\": false\n    }\n  }'\n","lang":"curl"},"children":[]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"20%","data-label":"Parameter"},"children":["Parameter "]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required"},"children":["Required"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customerId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string (UUID)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["true"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customerId"]}," of the customer who must authorize the direct debit. The customer must belong to your account."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["terms"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["object"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["false"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The payment terms that your customer reviews and authorizes in the widget. For details, see the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"#terms-object"},"children":["Terms object"]}," table below."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expiresIn"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["integer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["false"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The number of hours until the link expires. Minimum ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]},", maximum ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["720"]}," (30 days). Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["72"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["callbackUrl"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["false"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The URL that the widget sends your customer back to when they finish or leave the flow. Belvo adds the outcome as query parameters. The URL must use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https"]},", must not contain credentials, and can have at most 2048 characters. You can only set it when you create the link. For details, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"#handle-the-redirect-to-your-callback-url"},"children":["Handle the redirect to your callback URL"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"terms-object","__idx":4},"children":["Terms object"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All terms are optional. The widget only shows the terms that you send, so send every term that applies to the agreement with your customer."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Send raw values, not formatted text"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Send ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["chargeAmount"]}," as a JSON number (for example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["420.00"]},"), not as a string. Belvo rejects pre-formatted values such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"$420.00 MXN\""]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"420.00\""]},". The amount is always in Mexican pesos (MXN), and Belvo formats it for your customer."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Send ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["chargeType"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentFrequency"]}," in uppercase (for example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RECURRING"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MONTHLY"]},"). Belvo rejects lowercase values."]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"22%","data-label":"Parameter"},"children":["Parameter "]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["chargeType"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["string (enum)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The type of charge that your customer authorizes. Can be one of:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RECURRING"]},": Charges that repeat on a schedule, such as loan installments or subscriptions."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SINGLE"]},": A single charge."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SINGLE"]},", the widget labels the amount and date as a single charge (\"Monto de cargo (cargo único)\" and \"Fecha del cargo\")."]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["chargeAmount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["number"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The amount of each charge, in MXN. Must be at least ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]},". Belvo rounds it to two decimals. For example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1234.5"]}," is shown to your customer as \"$1,234.50 MXN\"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentFrequency"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string (enum)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["How often you charge your customer. Can be one of: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MONTHLY"]}," (shown as \"Mensual\"), ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BIWEEKLY"]}," (shown as \"Quincenal\"), or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WEEKLY"]}," (shown as \"Semanal\")."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["serviceOrCreditDescription"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A description of the service or credit, in Spanish. For example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Préstamo personal"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["termDescription"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A description of the term of the agreement, in Spanish. For example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["12 meses"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["interestRate"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The interest rate, formatted as you want your customer to read it. For example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1,0% mensual"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["numberOfCharges"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["integer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The total number of charges. Must be at least ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["firstChargeDate"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The date of the first charge, in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["YYYY-MM-DD"]}," format. For example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2026-11-10"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isPayrollLinked"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["boolean"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Indicates whether the credit is linked to your customer's payroll."]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Let your customer review the full contract"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your customer can only open the full direct debit contract (",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Revisar contrato de domiciliación"]},") when the link has a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["chargeAmount"]},", and also a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentFrequency"]}," for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RECURRING"]}," charges. Make sure to send these terms."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You will receive the following response from our API. Make sure to save the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," to check the status of the link later, and send the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consentLinkUrl"]}," to your customer."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"Create a Consent Link Response Body","header":{"title":"Create a Consent Link Response Body","controls":{"copy":{}}},"source":"{\n  \"id\": \"b8e1c2f4-5a6d-4e7f-8a9b-0c1d2e3f4a5b\", // [!code highlight]\n  \"consentLinkUrl\": \"https://portal.sandbox.directdebit.belvo.com/consent.html?token=aB3dE6fG9hJ2kL5mN8pQ1rS4\", // [!code highlight]\n  \"status\": \"active\",\n  \"step\": \"bank_account\",\n  \"customerId\": \"0d1a377b-b4c5-4a94-9e2e-83e59d1f6a9c\",\n  \"terms\": {\n    \"chargeType\": \"RECURRING\",\n    \"chargeAmount\": 420,\n    \"paymentFrequency\": \"MONTHLY\",\n    \"serviceOrCreditDescription\": \"Préstamo personal\",\n    \"termDescription\": \"12 meses\",\n    \"interestRate\": \"1,0% mensual\",\n    \"numberOfCharges\": 12,\n    \"firstChargeDate\": \"2026-11-10\",\n    \"isPayrollLinked\": false\n  },\n  \"expiresAt\": \"2026-10-03T15:00:00.000Z\",\n  \"callbackUrl\": \"https://www.your-app.com/direct-debit/return\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"20%","data-label":"Parameter"},"children":["Parameter "]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string (UUID)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The Belvo ID of the consent link."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consentLinkUrl"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The URL that you send to your customer."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The status of the link. For the possible values, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"#consent-link-statuses"},"children":["Consent link statuses"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["step"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The screen your customer is on while the link is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]},". For the possible values, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"#consent-link-steps"},"children":["Consent link steps"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customerId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string (UUID)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customerId"]}," that the link belongs to."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["terms"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["object"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The terms, exactly as you sent them."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expiresAt"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The ISO-8601 timestamp when the link expires."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completedAt"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The ISO-8601 timestamp when your customer completed the link. Only present for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completed"]}," links."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["callbackUrl"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The callback URL, if you set one."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"share-the-link-with-your-customer","__idx":5},"children":["Share the link with your customer"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Send the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consentLinkUrl"]}," to your customer by SMS, email, or WhatsApp, or redirect them to it from your application. The widget works in any mobile or desktop browser, is in Spanish, and doesn't require your customer to log in."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Treat the link as a secret"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Anyone with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consentLinkUrl"]}," can open the widget for your customer. Only send it to your customer, and don't log it or add it to analytics tools. If you think that a link was shared with the wrong person, revoke it and create a new one. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"#manage-consent-links"},"children":["Manage consent links"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-your-customer-sees","__idx":6},"children":["What your customer sees"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your customer goes through the following screens. The widget saves their progress, so if they close the page and open the link again before it expires, they continue on the same screen."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"1-welcome","__idx":7},"children":["1. Welcome"]},{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The welcome screen explains how the process works:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your customer confirms and reviews the direct debit."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Belvo deposits $0.01 MXN into their account, with a code."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your customer enters the code to authorize the direct debit."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To continue, your customer must accept Belvo's Terms and Conditions and Privacy Notice."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you set a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["callbackUrl"]},", a back arrow lets your customer leave the flow. Belvo redirects them to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["callbackUrl"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status=cancelled&error=user_cancelled"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/mx-pay-dd-consent-link-welcome.a498caa25266e37c64e65d0fc0d10dab1806499c37b62529baab42104292239e.9c1bb791.png","alt":"Consent link welcome screen","withLightbox":false,"width":"75%"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"2-confirm-personal-data-and-clabe","__idx":8},"children":["2. Confirm personal data and CLABE"]},{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The widget shows your customer's full name and masked RFC or CURP from the customer record. Your customer can't edit these values."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your customer enters their 18-digit CLABE. The widget checks that the CLABE is valid, and Belvo identifies the bank from it. The account must be in your customer's name. Consent links only accept CLABE accounts, not debit cards."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When your customer taps ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Continuar"]},", Belvo creates the payment method and immediately sends the $0.01 MXN deposit with the code."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the name or ID is wrong, your customer can tap ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No soy yo"]}," and then ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Salir sin autorizar"]},". Belvo redirects them to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["callbackUrl"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status=cancelled&error=customer_data_mismatch"]},". Correct the customer data and create a new link."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/mx-pay-dd-consent-link-bank-account.f030a3f117d425f25a7c9cbdc5c3e215b50aa5413a6afad8074a233063da2caa.9c1bb791.png","alt":"Consent link personal data and CLABE screen","withLightbox":false,"width":"75%"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"3-review-and-accept-the-authorization","__idx":9},"children":["3. Review and accept the authorization"]},{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The widget shows a summary of the terms that you sent, together with the masked account number, the bank, and your business name as the beneficiary. It also tells your customer that nothing is charged today."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RECURRING"]}," charges, the title reads \"Revisa y autoriza tus cargos recurrentes\". For ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SINGLE"]}," charges, it reads \"Revisa y autoriza tu cargo único\". The summary only has a row for each term that you sent."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When your customer taps ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Continuar"]},", they accept the authorization. Belvo seals the authorization document and stores it as the consent's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contract"]}," file."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/mx-pay-dd-consent-link-authorization-recurring.2053a4ae05b067b9f5ee136cfa6b83f9d4c44ff8ba6e61a15d9a2753b960ef18.9c1bb791.png","alt":"Authorization summary for recurring charges","withLightbox":false,"width":"75%"},"children":[]}]},{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Single charge"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This example link has ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"chargeType\": \"SINGLE\""]}," and only sends ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["chargeAmount"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["firstChargeDate"]},", so the summary shows the amount, the date of the charge, the account, and the beneficiary."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/mx-pay-dd-consent-link-authorization-single.71112f12c40d26d7998ff190e161585d6d0551ee40ffb1c5af5a6a481cb7b849.9c1bb791.png","alt":"Authorization summary for a single charge","withLightbox":false,"width":"75%"},"children":[]}]},{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Contract review"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["With ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Revisar contrato de domiciliación"]},", your customer reads the full direct debit contract, filled in with their data and your terms, and can download a PDF copy before they accept."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/mx-pay-dd-consent-link-authorization-contract.d6d6369567ac112285d1c03dc6f9a761beabf2d7a58b457ade0fa4e3a59b12fb.9c1bb791.png","alt":"Direct debit contract review","withLightbox":false,"width":"75%"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"4-wait-for-the-deposit","__idx":10},"children":["4. Wait for the deposit"]},{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the deposit hasn't arrived yet, the widget tells your customer to look for a $0.01 MXN deposit in their banking app. The code is in the description of the transaction."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The widget checks for the deposit automatically and moves to the next screen when it arrives. If the deposit already arrived while your customer was reviewing the authorization, the widget skips this screen."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/mx-pay-dd-consent-link-awaiting-deposit.1d5b2164768bee49048c5f07335b66b44d28f585eb6d1b63fa7341229c23e237.9c1bb791.png","alt":"Waiting for the verification deposit","withLightbox":false,"width":"75%"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"5-enter-the-code-and-authorize","__idx":11},"children":["5. Enter the code and authorize"]},{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your customer enters the 6-digit code from the description of the deposit and taps ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Autorizar"]},". Entering the code is your customer's electronic signature of the authorization."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your customer has 3 attempts to enter the correct code. If they can't find the deposit, ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No recibí el depósito"]}," explains where to find the code. If your customer entered the wrong CLABE, the deposit never arrives. They can end the flow from the same dialog, and you need to create a new link for them."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/mx-pay-dd-consent-link-verification.b2d6c3fe5b2551a194cda1ce1ccb3be493fdad267090a6effce172ffaf92dbde.9c1bb791.png","alt":"Verification code screen","withLightbox":false,"width":"75%"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"6-authorization-confirmed","__idx":12},"children":["6. Authorization confirmed"]},{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the code is correct, the consent is confirmed and the link is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completed"]},". The widget shows a summary of the authorized terms."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When your customer taps ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Cerrar"]},", Belvo redirects them to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["callbackUrl"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status=completed"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/mx-pay-dd-consent-link-success.2a425bda7fb9eb6cbb2ccfdf38d3494538e05b52e7150c435aaaf023ffe8e649.9c1bb791.png","alt":"Authorization confirmed screen","withLightbox":false,"width":"75%"},"children":[]}]},{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signed contract"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["With ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Contrato de domiciliación"]},", your customer sees the evidence of the electronic signature: the signature date and time (Mexico City time), the signature folio, the device, a masked IP address, and the details of the verification deposit. They can also download the signed contract as a PDF."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/mx-pay-dd-consent-link-signed-contract.462c6902f898a68d9a0d1b28ebd5ddac8e3c2a66b351b6ce5c67e1a4a125cec1.9c1bb791.png","alt":"Signed contract with electronic signature details","withLightbox":false,"width":"75%"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"error-screens","__idx":13},"children":["Error screens"]},{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Link unavailable"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The widget shows this screen when the link is expired, revoked, already completed, failed, or invalid. For security reasons, the widget shows the same message in every case. Your customer is asked to request a new link from you."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/mx-pay-dd-consent-link-unavailable.496bac1d344d298a9ad21c88e71adcdf690cd640b086f1ddba9e9f7c7e0a484e.9c1bb791.png","alt":"Link unavailable screen","withLightbox":false,"width":"75%"},"children":[]}]},{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authorization failed"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The widget shows this screen when Belvo can't complete an action while your customer is in the flow, for example, when the account validation failed after they submitted their CLABE. The screen includes an ID that your customer can share with Belvo support at cobros@belvo.com."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/mx-pay-dd-consent-link-failure.c26eeb35840d9f15d1c383fb5bd882c2053243c3b1842261f23103fbf047a5e6.9c1bb791.png","alt":"Authorization failed screen","withLightbox":false,"width":"75%"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"handle-the-redirect-to-your-callback-url","__idx":14},"children":["Handle the redirect to your callback URL"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you set a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["callbackUrl"]},", Belvo redirects your customer to it when they finish or leave the flow. Belvo keeps any query parameters that your URL already has, and adds the following:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"status"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"error"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When"},"children":["When"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Not present"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your customer authorized the direct debit and tapped ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Cerrar"]}," on the confirmation screen."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cancelled"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_cancelled"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your customer left from the welcome screen."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cancelled"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer_data_mismatch"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your customer said that the name or ID in the widget is not theirs."]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","data-title":"Example redirect","header":{"title":"Example redirect","controls":{"copy":{}}},"source":"https://www.your-app.com/direct-debit/return?status=completed\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The redirect never includes the link token or any customer data."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Don't rely on the redirect alone"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the redirect to update your UI, but always confirm the result with the API or webhooks before you create payment requests. Anyone can open your callback URL with any parameters, and your customer can close the page without being redirected. Also, ignore any parameter values that you don't recognize, as we may add new ones."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"listen-for-webhooks-and-confirm-the-result","__idx":15},"children":["Listen for webhooks and confirm the result"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A consent link creates a regular payment method and consent, so you receive the same webhooks as in the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments_mexico/direct-debit-direct-api-setup","target":"_blank"},"children":["Direct Debit Payments via API"]}," flow:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consent_update"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consent_confirmed"]},": Your customer entered the correct code and the consent is confirmed. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.id"]}," field is the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consentId"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.paymentMethodId"]}," is the payment method that the link created."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_method_update"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_method_registration_successful"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment_method_registration_failed"]},": The result of the account validation. Payment methods created by a consent link have ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ConsentLink"]}," as their ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["reference"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For complete webhook payloads, see our ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer_resources/resources-webhooks-payments-mexico","target":"_blank"},"children":["Payment Webhooks (Mexico)"]}," documentation."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To check the status of the link at any time, make a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /consents/links/{id}"]}," call. A ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completed"]}," status means that your customer finished the flow."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Sandbox","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","data-title":"Get a Consent Link Request (Sandbox)","header":{"title":"Get a Consent Link Request (Sandbox)","controls":{"copy":{}}},"source":"curl -i -X GET \\\n  'https://api.sandbox.directdebit.belvo.com/consents/links/{id}' \\\n  -H 'api-key-id: YOUR_API_KEY_ID' \\\n  -H 'api-key-secret: YOUR_API_KEY_SECRET'\n","lang":"curl"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Production","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","data-title":"Get a Consent Link Request (Production)","header":{"title":"Get a Consent Link Request (Production)","controls":{"copy":{}}},"source":"curl -i -X GET \\\n  'https://api.directdebit.belvo.com/consents/links/{id}' \\\n  -H 'api-key-id: YOUR_API_KEY_ID' \\\n  -H 'api-key-secret: YOUR_API_KEY_SECRET'\n","lang":"curl"},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To identify the payment method that the link created, use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.paymentMethodId"]}," value from the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consent_confirmed"]}," webhook. Don't look it up by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer_id"]}," alone, as your customer can have more than one payment method. To confirm which customer the payment method belongs to, make a ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/apis/belvopaymentsmexico/payment-methods-(direct-debit-mexico)/detaildirectdebitpaymentmethod","target":"_blank"},"children":["GET Get a payment method's details"]}," call and compare its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer"]}," with the link's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customerId"]},". This only confirms the customer: if you created more than one consent link for the same customer, it doesn't tell you which link created the payment method."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"success","name":"Done!"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your customer has authorized the direct debit, and you have a payment method with a confirmed consent. You can now ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments_mexico/direct-debit-direct-api-setup#create-a-payment-request","target":"_blank"},"children":["create payment requests"]}," for this customer."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"test-consent-links-in-sandbox","__idx":16},"children":["Test consent links in Sandbox"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In Sandbox, Belvo doesn't send a real $0.01 MXN deposit, so you can't read a code from a bank statement. Instead, you control the result of the flow with the CLABE and the code that your tester enters in the widget. Use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consentLinkUrl"]}," that you get from the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/payments_mexico/direct-debit-authentication-and-environments#sandbox","target":"_blank"},"children":["Sandbox"]}," API."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"choose-the-account-validation-result","__idx":17},"children":["Choose the account validation result"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enter one of the following CLABEs on the personal data and CLABE screen:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"25%","data-label":"CLABE"},"children":["CLABE "]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Result"},"children":["Result"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["012180000000000015"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The account validation fails. The payment method is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]},", the link status changes to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]},", and the widget shows an error screen. For details, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"#error-screens"},"children":["Error screens"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["012180000000000028"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The deposit never arrives. The payment method stays in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending_validation"]},", and the link stays in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["awaiting_deposit"]}," step until it expires. Use it to test the waiting screen."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Any other valid CLABE"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The deposit arrives immediately. The link moves to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["verification"]}," step as soon as your tester accepts the authorization, and the widget skips the waiting screen."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Payment methods that you create with these CLABEs use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," as their ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["reference"]}," instead of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ConsentLink"]},". The magic CLABEs only work in Sandbox. In Production, Belvo treats them as any other CLABE."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"enter-the-verification-code","__idx":18},"children":["Enter the verification code"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In Sandbox, the verification code is always ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["123456"]},". Enter any other code to test the wrong code message. Your tester has 3 attempts to enter the correct code."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"test-other-link-statuses","__idx":19},"children":["Test other link statuses"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Expired:"]}," create a link with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"expiresIn\": 1"]}," and open it after an hour."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Revoked:"]}," make a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /consents/links/{id}/revoke"]}," call, and then open the link."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"consent-link-reference","__idx":20},"children":["Consent link reference"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"consent-link-statuses","__idx":21},"children":["Consent link statuses"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The link can be used. Check ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["step"]}," to see which screen your customer is on."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your customer authorized the direct debit. The consent is confirmed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expired"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The link reached its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expiresAt"]}," date before your customer completed it."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["revoked"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["You revoked the link."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The account validation failed, for example, because the account holder doesn't match the customer. Create a new link so that your customer can try again with a different account."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Only ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}," links can be opened. For any other status, the widget shows the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Link unavailable"]}," screen."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"consent-link-steps","__idx":22},"children":["Consent link steps"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Step"},"children":["Step"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bank_account"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your customer hasn't submitted their CLABE yet."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["authorization"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your customer submitted their CLABE and is reviewing the authorization."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["awaiting_deposit"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your customer accepted the authorization and is waiting for the $0.01 MXN deposit."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["verification"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The deposit arrived and your customer must enter the code."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a link is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completed"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["step"]}," keeps the last step your customer was on. Always check ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}," first."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"manage-consent-links","__idx":23},"children":["Manage consent links"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Request"},"children":["Request"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /consents/links"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Lists your consent links, paginated. Supports the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["page"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limit"]}," query parameters."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /consents/links/{id}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Gets the details of a consent link."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /consents/links/{id}/revoke"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Revokes a consent link. The link can no longer be opened. Revoking a link doesn't change a payment method or consent that the link already created."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"errors","__idx":24},"children":["Errors"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"HTTP status"},"children":["HTTP status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The request body is invalid. For example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["chargeAmount"]}," is a string or less than ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["chargeType"]}," is in lowercase, or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["callbackUrl"]}," doesn't use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The customer or consent link doesn't exist or doesn't belong to your account."]}]}]}]}]}]},"headings":[{"value":"Collect consent with consent links","id":"collect-consent-with-consent-links","depth":1},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Data flow overview","id":"data-flow-overview","depth":2},{"value":"Create a consent link","id":"create-a-consent-link","depth":2},{"value":"Terms object","id":"terms-object","depth":3},{"value":"Share the link with your customer","id":"share-the-link-with-your-customer","depth":2},{"value":"What your customer sees","id":"what-your-customer-sees","depth":2},{"value":"1. Welcome","id":"1-welcome","depth":3},{"value":"2. Confirm personal data and CLABE","id":"2-confirm-personal-data-and-clabe","depth":3},{"value":"3. Review and accept the authorization","id":"3-review-and-accept-the-authorization","depth":3},{"value":"4. Wait for the deposit","id":"4-wait-for-the-deposit","depth":3},{"value":"5. Enter the code and authorize","id":"5-enter-the-code-and-authorize","depth":3},{"value":"6. Authorization confirmed","id":"6-authorization-confirmed","depth":3},{"value":"Error screens","id":"error-screens","depth":3},{"value":"Handle the redirect to your callback URL","id":"handle-the-redirect-to-your-callback-url","depth":2},{"value":"Listen for webhooks and confirm the result","id":"listen-for-webhooks-and-confirm-the-result","depth":2},{"value":"Test consent links in Sandbox","id":"test-consent-links-in-sandbox","depth":2},{"value":"Choose the account validation result","id":"choose-the-account-validation-result","depth":3},{"value":"Enter the verification code","id":"enter-the-verification-code","depth":3},{"value":"Test other link statuses","id":"test-other-link-statuses","depth":3},{"value":"Consent link reference","id":"consent-link-reference","depth":2},{"value":"Consent link statuses","id":"consent-link-statuses","depth":3},{"value":"Consent link steps","id":"consent-link-steps","depth":3},{"value":"Manage consent links","id":"manage-consent-links","depth":3},{"value":"Errors","id":"errors","depth":3}],"frontmatter":{"seo":{"title":"Collect consent with consent links"}},"lastModified":"2026-10-06T20:09:10.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/payments_mexico/direct-debit-consent-links","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}