{"componentChunkName":"component---src-templates-article-template-tsx","path":"/co/en/apm/overview","result":{"data":{"article":{"title":"How do APM payments work?","subtitle":"We explain how alternative payment methods (APM) and the multiprocessor flow work in Kushki","fullWidth":null,"hero":null,"heroTextColor":null,"heroImg":null,"content":[{"body":{"childMdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {};\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\nvar Aside = makeShortcode(\"Aside\");\nvar NextStep = makeShortcode(\"NextStep\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(Aside, {\n    type: \"danger\",\n    title: \"\\uD83D\\uDEA7 Early Release \\u2014 Beta\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"This product is in early access\"), \". Parameters, response structures and behaviors may change without prior notice. \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Do not\"), \" use this version in production without first coordinating with the Kushki integrations team.\")), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"We explain how alternative payment methods (APM) and the multiprocessor flow work in Kushki\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Alternative payment methods (APM)\"), \" let your customers pay without a card, using real-time payment rails. In Colombia you can now accept payments with \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Bre-B\"), \": the customer scans a QR code from their banking app and authorizes the payment instantly.\"), mdx(\"p\", null, \"APM work with a \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"multiprocessor flow\"), \": a single integration with the Kushki API, in which \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"the processor you use in each transaction defines how you integrate and how your customer pays\"), \". Your merchant can have one or several processors enabled, and as more are enabled your integration does not change: you just query which processors you have and build the token according to each one.\"), mdx(Aside, {\n    type: \"info\",\n    title: \"Looking for ACH payments?\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"ACH is the traditional bank transfer integration and does not change. See \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://docs.kushki.com/co/transfer-payments/accept-a-payment\"\n  }, \"Receive bank transfers\"), \".\")), mdx(Aside, {\n    type: \"warning\",\n    title: \"Available only for 100% API integrations\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"The multiprocessor flow applies to direct API integrations: \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"the token is requested from your backend\"), \". Kajita and Kushki.js do not support the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"processor\"), \" object yet.\")), mdx(\"h2\", {\n    \"id\": \"the-model-check-your-processors\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#the-model-check-your-processors\",\n    \"aria-label\": \"the model check your processors permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"The model: check your processors\"), mdx(\"p\", null, \"Every APM integration starts with the same question: \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"which processors does my merchant have?\"), \" The answer lives in one place:\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"GET /transfer/v1/config\"), \" (with your public credential) \\u2192 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"processors[]\")), mdx(\"p\", null, \"Each entry in the response tells you how to continue:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"The chosen entry\\u2026\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Is a processor of\\u2026\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"The token is built\\u2026\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"With\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"supportedFlows\"), \" (Bre-B)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"APM payment flows\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"With\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"processor: { name, flowType }\"), \", copied \", mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"exactly\"), \" from the response; only \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"amount\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"currency\"), \" remain required.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Without\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"supportedFlows\"), \" (ACH)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Bank redirection (traditional)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Without\"), \" the \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"processor\"), \" object. Follow the \", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://docs.kushki.com/co/transfer-payments/accept-a-payment\"\n  }, \"bank transfer guide\"), \".\")))), mdx(\"p\", null, \"If your merchant has several processors, use each entry\\u2019s \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"supportedFlows\"), \" to know how to build the token with each one. If it has only one you can skip the query, but integrate it from the start: it is the product rule as more processors and flows are enabled.\"), mdx(\"h2\", {\n    \"id\": \"the-flow-end-to-end\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#the-flow-end-to-end\",\n    \"aria-label\": \"the flow end to end permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"The flow, end to end\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The merchant calls \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"GET /transfer/v1/config\"), \" and receives \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"processors[]\"), \", with the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"supportedFlows\"), \" of each entry.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"It chooses the processor and the flow.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"It requests the token with \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"POST /transfer/v1/tokens\"), \", sending \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"processor: { name, flowType }\"), \", and receives \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"201 { token }\"), \".\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"It initializes the transaction with \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"POST /transfer/v1/init { token, amount }\"), \" and receives the response according to the flow (Bre-B: \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"qr\"), \" in base64).\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"It shows the QR code to the customer, who scans it and authorizes the payment from their banking app.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Kushki reports the final status by webhook or through Get Status.\")), mdx(\"h2\", {\n    \"id\": \"available-processors\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#available-processors\",\n    \"aria-label\": \"available processors permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Available processors\"), mdx(\"h3\", {\n    \"id\": \"bre-b--real-time-qr-code-payment\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#bre-b--real-time-qr-code-payment\",\n    \"aria-label\": \"bre b  real time qr code payment permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Bre-B \\u2014 real-time QR code payment\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"You query your processors and choose the Bre-B entry \\u2014 you do not need the bank list.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"You request the token \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"with\"), \" the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"processor\"), \" object and then initialize the transaction.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Kushki responds with a \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"QR code\"), \" (base64) that you show to your customer.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Your customer scans it from their banking app and authorizes the payment in real time. The QR expires in \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"10 minutes\"), \" and you can cancel the transaction while it has no final status.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"You receive the final status by webhook or by querying it with Get Status.\")), mdx(\"p\", null, \"The full guide is in \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://docs.kushki.com/co/apm/bre-b-payments\"\n  }, \"Accept Bre-B payments\"), \".\"), mdx(\"h2\", {\n    \"id\": \"build-the-token-according-to-the-processor\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#build-the-token-according-to-the-processor\",\n    \"aria-label\": \"build the token according to the processor permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Build the token according to the processor\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Case\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"th\"\n  }, \"processor\")), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Required\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Notes\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Bre-B QR\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"{ \\\"name\\\": \\\"Bre-B Credibanco Processor\\\", \\\"flowType\\\": \\\"QR\\\" }\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"amount\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"currency\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"processor\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"bankId\"), \" \", mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"does not apply\"), \"; the other fields are optional.\")))), mdx(\"p\", null, \"The \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"processor\"), \" object does not allow additional properties (it returns \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"400\"), \") and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"flowType\"), \" \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"has no default value\"), \": its values are copied from the processor query, without aliases.\"), mdx(\"h3\", {\n    \"id\": \"conditional-rules-for-cop\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#conditional-rules-for-cop\",\n    \"aria-label\": \"conditional rules for cop permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Conditional rules for COP\"), mdx(\"p\", null, \"They always apply when you send these optional fields:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Condition\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Rule\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"userType: \\\"1\\\"\"), \" (legal entity)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"documentType\"), \" must be \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"\\\"NIT\\\"\"), \".\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"userType: \\\"0\\\"\"), \" (natural person)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"documentType\"), \" cannot be \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"\\\"NIT\\\"\"), \".\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"documentType: \\\"PP\\\"\"), \" (passport)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"documentNumber\"), \" alphanumeric, minimum 6 (\", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"^[0-9a-zA-Z]{6,}$\"), \").\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Any other \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"documentType\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"documentNumber\"), \" digits only, minimum 6 (\", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"^[0-9]{6,}$\"), \").\")))), mdx(\"h2\", {\n    \"id\": \"token--processor-compatibility\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#token--processor-compatibility\",\n    \"aria-label\": \"token  processor compatibility permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Token \\u2194 processor compatibility\"), mdx(\"p\", null, \"The token is \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"bound to the processor\"), \" it was generated with; \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"POST /transfer/v1/init\"), \" validates it:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Generated token\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Merchant\\u2019s processor\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Result\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"With Bre-B \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"processor\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Bre-B\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Continues (the response includes \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"qr\"), \").\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"With \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"processor\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Another processor\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"422 E046\"), \".\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Without \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"processor\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Bre-B\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"422 E046\"), \".\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"With Bre-B \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"processor\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Bre-B without keys configured\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"404 E049\"), \".\")))), mdx(\"p\", null, \"If you receive \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"E046\"), \", check the processor query and regenerate the token with the correct processor. The errors for each case are in the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"API errors\"), \" section of the guide \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://docs.kushki.com/co/apm/bre-b-payments\"\n  }, \"Accept Bre-B payments\"), \".\"), mdx(\"h2\", {\n    \"id\": \"integrate-each-processor\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#integrate-each-processor\",\n    \"aria-label\": \"integrate each processor permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Integrate each processor\"), mdx(NextStep, {\n    title: \"Accept Bre-B payments\",\n    link: \"/apm/bre-b-payments\",\n    side: \"left\",\n    type: \"recommended\",\n    mdxType: \"NextStep\"\n  }, mdx(\"p\", null, \"Real-time QR code payment integration\")));\n}\n;\nMDXContent.isMDXComponent = true;","excerpt":"This product is in early access . Parameters, response structures and behaviors may change without prior notice.  Do not  use this version…","timeToRead":2,"tableOfContents":{"items":[{"url":"#the-model-check-your-processors","title":"The model: check your processors"},{"url":"#the-flow-end-to-end","title":"The flow, end to end"},{"url":"#available-processors","title":"Available processors","items":[{"url":"#bre-b--real-time-qr-code-payment","title":"Bre-B — real-time QR code payment"}]},{"url":"#build-the-token-according-to-the-processor","title":"Build the token according to the processor","items":[{"url":"#conditional-rules-for-cop","title":"Conditional rules for COP"}]},{"url":"#token--processor-compatibility","title":"Token ↔ processor compatibility"},{"url":"#integrate-each-processor","title":"Integrate each processor"}]}}},"updatedAt":"October 16, 2026","tabTitle":null}]}},"pageContext":{"country":"co","id":"7f8b67d4-7e1f-54d4-8f6b-daaf9bad12fe","locale":"en","localeDateFormat":"MMMM DD, YYYY"}},"staticQueryHashes":["1632712422","2408418099","63159454"]}