{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/fincore/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Fincore's API Documentation v1.2","siteUrl":"https://docs.monato.com","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"fincores-api-documentation-v12","__idx":0},"children":["Fincore's API Documentation v1.2"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["First time here?"]}," Start with ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["What is Fincore?"]}," and follow the guide in order. Each section assumes you've read the one before it."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Looking for something specific?"]}," Use the table of contents below."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"table-of-contents","__idx":1},"children":["Table of contents"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["What is Fincore?"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["How it works: the data model"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Authentication"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Your first transfer (Quickstart)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Receiving money (Money In)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Sending money (Money Out)"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["6.1 Send to a CLABE"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["6.2 Send to a debit card"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["6.3 Instrument whitelist for high-value transactions"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Internal transfers (book-to-book) - deprecated"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Validating a bank account (Penny Validation)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Private accounts"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Business Units (sub-accounts)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Idempotency: how to retry safely"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Reports"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Error catalog"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1-what-is-fincore","__idx":2},"children":["1. What is Fincore?"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Fincore is Monato's API for processing payments in Mexico. With it you can:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Receive money"]}," via SPEI from any bank in the Mexican financial system."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Send money"]}," to CLABE accounts or debit cards, with a whitelist for high-value payments without friction."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Move funds internally"]}," between accounts within Monato (no SPEI, near real-time)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Validate bank accounts"]}," before sending money to them."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create sub-accounts"]}," for your own customers or business units."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Download reports"]}," of transactions and account statements."," ","Fincore is not a bank. It's the layer that connects your system to SPEI and the Mexican financial system, using Finco Pay's infrastructure."]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Ready to try it?"]}," Write to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:support@monato.com"},"children":["support@monato.com"]}," to get your staging API Key. That's all you need to get started."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2-how-it-works-the-data-model","__idx":3},"children":["2. How it works: the data model"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before making your first API call, it's worth understanding three concepts. Once you have them clear, everything else makes sense."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"centralizing-account","__idx":4},"children":["Centralizing Account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is your main account at Monato. It acts as the hub for all your operations: it can send and receive money. Monato creates it for you when you activate your account - you don't need to create it yourself."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Think of it as your company's central vault: all money coming in or going out passes through here, unless you've created private accounts (see below)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"private-account","__idx":5},"children":["Private Account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A private account is an independent CLABE you can assign to one of your customers or business units. By default, private accounts ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["only receive money"]}," - they can't send it. When someone deposits into a private account, the funds arrive and are automatically swept into your Centralizing Account."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Think of it as a collection inbox: your customer deposits there, the money lands in your central vault."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Can a private account send money (Money Out)?"]}," Yes, but only if explicitly enabled at creation time, by sending ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"sender_receiver_type\": true"]}," in the creation request (see section 9.1). This setting ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["cannot be changed after"]}," the account is created - decide the correct behavior before creating it."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"instrument","__idx":6},"children":["Instrument"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["An instrument is a reference to a bank account - either yours or a payment recipient's. Before sending money to someone, you need to register their account as an instrument."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Think of it as an entry in your payment contacts list: you save the account details once and then reference it by ID in every transaction."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There are two instrument types based on direction:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RECEIVER"]}," - only receives funds (e.g. a beneficiary's debit card)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SENDER_RECEIVER"]}," - can send and receive (your Centralizing Account has this type, and a private account can also have it if configured that way at creation)."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"visual-summary","__idx":7},"children":["Visual summary"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Your company\n    │\n    ▼\nCentralizing Account (SENDER_RECEIVER)\n    │                        ▲\n    │ sends money            │ receives money from private accounts\n    ▼                        │\nDestination                Private Accounts of your customers\nInstrument                   (RECEIVER by default; SENDER_RECEIVER\n(CLABE or card)               if configured that way at creation)\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"customer-business-unit","__idx":8},"children":["Customer (Business Unit)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you need each sub-account to appear as a distinct legal entity on payment receipts (CEP), you can model it as a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Customer"]},". Each Customer has its own RFC, CLABE, and independent balance. More detail in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Business Units"]}," section."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3-authentication","__idx":9},"children":["3. Authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Fincore uses a two-step scheme: first you obtain a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_secret"]},", then exchange it for an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["access_token"]}," that you use in every request."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Before you start:"]}," you need a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientId"]}," and an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-api-key"]},". Write to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:support@monato.com"},"children":["support@monato.com"]}," if you don't have them yet."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-1---get-the-client_secret","__idx":10},"children":["Step 1 - Get the client_secret"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /v1/clients/{clientId}/credentials/\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Headers:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"x-api-key: {your-api-key}\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response (200 OK):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": [\n    {\n      \"id\": \"e981c6d8-4d49-45f2-a7ee-f956dca15500\",\n      \"client_id\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n      \"client_secret\": \"Ui9gx7AX...MLQ29SbsvsXI1...\",\n      \"environment\": \"staging\",\n      \"status\": \"ACTIVE\"\n    }\n  ]\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Save the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_secret"]}," value. You'll need it in the next step."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-2---generate-an-access-token","__idx":11},"children":["Step 2 - Generate an access token"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/clients/{clientId}/auth/credential-tokens\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Headers:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"x-api-key: {your-api-key}\nContent-Type: application/json\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Body:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"client_id\": \"c2d1d1e3-3340-4170-980e-e9269bbbc551\",\n  \"client_secret\": \"Ui9gx7AX...MLQ29SbsvsXI1...\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response (200 OK):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"status\": \"ACTIVE\",\n  \"expires_at\": \"2025-03-06 11:16:59.491631\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-3---use-the-token","__idx":12},"children":["Step 3 - Use the token"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Authorization: Bearer {token}\n"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," Tokens expire. If you receive a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401 Unauthorized"]}," error, generate a new token by repeating Step 2."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"4-your-first-transfer-quickstart","__idx":13},"children":["4. Your first transfer (Quickstart)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This section takes you from zero to your first outbound transfer in as few steps as possible. It assumes you already have your authentication token."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"what-youll-do","__idx":14},"children":["What you'll do"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"[Retrieve your account]  ->  [Register the recipient]  ->  [Send money]\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-1---retrieve-your-centralizing-account","__idx":15},"children":["Step 1 - Retrieve your Centralizing Account"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /v1/clients/{clientId}/accounts\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Headers:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Authorization: Bearer {token}\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response:"]}," look for the object where ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accountType = \"CENTRALIZING_ACCOUNT\""]}," and note:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"24a726ac-...\",\n  \"instrumentId\": \"709448c3-...\",\n  \"bankId\": \"9d84b03a-...\",\n  \"clientBankAdapterId\": \"5b3a-...\",\n  \"clabeNumber\": \"734180000001000004\",\n  \"availableBalance\": \"0.00\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["(",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," -> your accountId · ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["instrumentId"]}," -> use as source · ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bankId"]}," -> your bankId · ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientBankAdapterId"]}," -> needed to create private accounts)"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-2---register-the-recipient-as-an-instrument","__idx":16},"children":["Step 2 - Register the recipient as an Instrument"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/clients/{clientId}/instruments\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Body (transfer to a CLABE):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"source_bank_id\": \"{your bankId}\",\n  \"client_id\": \"{your clientId}\",\n  \"type\": \"SENDER_RECEIVER\",\n  \"rfc\": \"XAXX010101000\",\n  \"alias\": \"Supplier ABC\",\n  \"virtual_clabe\": {\n    \"account_number\": \"064871131141\",\n    \"clabe_number\": \"021180064871131141\",\n    \"holder_name\": \"Beneficiary Full Name\",\n    \"destination_bank_id\": \"{bankId of the destination bank}\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["How do I find the"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["destination_bank_id"]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["?"]}," Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/banks"]}," and search by name. For example, Banamex has ID ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["3114d179-8a10-40b9-b040-20ff464b50e0"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Don't have the RFC?"]}," You can send ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"ND\""]}," in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rfc"]}," field."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["holder_name"]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["has a maximum of 40 characters."]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response (200 OK):"]}," save the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," of the created instrument. This is your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["destination_instrument_id"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"d3fdb481-2058-46c8-807d-4eaf866ae1ec\",\n  \"alias\": \"Supplier ABC\",\n  \"type\": \"SENDER_RECEIVER\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-3---send-money","__idx":17},"children":["Step 3 - Send money"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You now have everything you need: your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source_instrument_id"]}," (from your centralizing account) and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["destination_instrument_id"]}," (from the recipient). The endpoint, the full body, and the field constraints are documented in detail in section ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["6.1 - Send to a CLABE"]}," - it's exactly the same flow, so we don't repeat it here."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Expected response (200 OK):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"16811ee8-...\",\n  \"trackingId\": \"20250306FINCHVLIKQ5SKUM\",\n  \"transactionStatus\": \"INITIALIZED\",\n  \"amount\": \"1500.00\",\n  \"currency\": \"MXN\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["What does"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INITIALIZED"]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["mean?"]}," The transaction was accepted by Fincore and is being sent to SPEI. It does not mean the funds have arrived at the recipient yet. Final statuses are ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LIQUIDATED"]}," (successful), ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FAILED"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REFUNDED"]}," (if the payment was accepted and later refunded - see section 5.5)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Want to send to a debit card instead of a CLABE?"]}," Go to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["Send to a debit card"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Is the recipient also on Finco Pay?"]}," The API detects it automatically and routes the transaction as an internal transfer (no SPEI, near real-time). No extra configuration needed."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"5-receiving-money-money-in","__idx":18},"children":["5. Receiving money (Money In)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When someone sends you money - whether via SPEI from another bank or from another account within Monato - Fincore notifies you through a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["webhook"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["msg_name = \"MONEY_IN\""]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"51-register-your-endpoint-for-notifications","__idx":19},"children":["5.1 Register your endpoint for notifications"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/clients/{client_id}/webhooks\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Body:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"client_id\": \"{your clientId}\",\n  \"url\": \"https://your-server.com/money-in-webhook\",\n  \"token\": \"your-secret-token\",\n  \"webhook_type\": \"MONEY_IN\",\n  \"auth_type\": \"AUTH\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["What is"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token"]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["for?"]}," Fincore includes it in every notification it sends you, so you can verify the request is genuinely from us and not from a third party."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["How do I generate a good"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token"]},{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["?"]}," We recommend a random secret of at least 32 bytes - for example, a UUID v4, or a SHA-256 hash of a secure random source. Avoid predictable values (your company name, dates, etc.) and store it securely in your backend, just as you would any other authentication secret."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response (200 OK):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"0c2d358f-...\",\n  \"webhookType\": \"MONEY_IN\",\n  \"webhookStatus\": \"ACTIVE\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note on format:"]}," the request body uses ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["snake_case"]}," (e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["webhook_type"]},") but the response uses ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camelCase"]}," (e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["webhookType"]},"). This is consistent throughout the API."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"52-managing-your-webhooks","__idx":20},"children":["5.2 Managing your webhooks"]},{"$$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":"Action"},"children":["Action"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Method"},"children":["Method"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Endpoint"},"children":["Endpoint"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["List all"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["GET"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v1/clients/{client_id}/webhooks"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Get one"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["GET"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v1/clients/{client_id}/webhooks/{id}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["POST"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v1/clients/{client_id}/webhooks"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Update"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PATCH"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v1/clients/{client_id}/webhooks/{id}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Delete"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["DELETE"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v1/clients/{client_id}/webhooks/{id}"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"53-what-a-money-in-notification-looks-like","__idx":21},"children":["5.3 What a Money In notification looks like"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id_msg\": \"a7a126e8-fa74-411c-ad2b-b000f277bb0d\",\n  \"msg_name\": \"MONEY_IN\",\n  \"msg_date\": \"2025-04-02\",\n  \"body\": { }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"example-incoming-money-via-spei-from-another-bank","__idx":22},"children":["Example: incoming money via SPEI (from another bank)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id_msg\": \"a7a126e8-...\",\n  \"msg_name\": \"MONEY_IN\",\n  \"msg_date\": \"2025-04-02\",\n  \"body\": {\n    \"id\": \"0196da9a-...\",\n    \"beneficiary_account\": \"734180123045603216\",\n    \"beneficiary_name\": \"John Smith\",\n    \"payer_account\": \"137180210044008609\",\n    \"payer_name\": \"Juan Perez\",\n    \"payer_institution\": \"40002\",\n    \"amount\": \"123.00\",\n    \"transaction_date\": \"2025-04-02 10:14:05\",\n    \"tracking_key\": \"50118609TBRNZ00I07219647\",\n    \"payment_concept\": \"Payment for invoice 4567\",\n    \"sub_category\": \"SPEI_CREDIT\",\n    \"owner_id\": \"24f1e5d5-...\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"example-internal-incoming-money-between-monato-accounts","__idx":23},"children":["Example: internal incoming money (between Monato accounts)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"body\": {\n    \"payer_institution\": \"90734\",\n    \"sub_category\": \"INT_CREDIT\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"how-to-tell-spei-apart-from-internal","__idx":24},"children":["How to tell SPEI apart from internal"]},{"$$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":"sub_category"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sub_category"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"payer_institution"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payer_institution"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Origin"},"children":["Origin"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SPEI_CREDIT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Banxico bank code (e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["40002"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["External - SPEI"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INT_CREDIT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["90734"]}," (Monato internal code)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Internal - book-to-book"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"body-fields","__idx":25},"children":["Body fields"]},{"$$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":"Field"},"children":["Field"]},{"$$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":["Monato's internal transaction ID"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["beneficiary_account"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Beneficiary CLABE"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payer_account"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payer CLABE"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payer_name"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payer's name"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payer_rfc"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payer's RFC (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"ND\""]}," if not provided)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payer_institution"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payer's bank code (Banxico) or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["90734"]}," for internal"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Amount credited as a string with 2 decimal places"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tracking_key"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SPEI tracking key or internal tracking ID"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sub_category"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SPEI_CREDIT"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INT_CREDIT"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["owner_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["ID of the owner of the destination instrument"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"54-accepting-or-rejecting-a-money-in","__idx":26},"children":["5.4 Accepting or rejecting a Money In"]},{"$$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":"Your response"},"children":["Your response"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Effect"},"children":["Effect"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HTTP 201 Created"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["You accept the deposit. Funds stay in your account."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HTTP 422 Unprocessable Entity"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["You reject the deposit. It is automatically refunded to the payer."]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"refundReason\": \"Unexpected amount\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Internal Money In:"]}," if ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sub_category = \"INT_CREDIT\""]},", the funds have already moved by the time you receive the webhook. Your HTTP response has no effect. If you need to reverse it, create a new internal transaction in the opposite direction (see section 7)."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"55-refunding-an-already-accepted-money-in","__idx":27},"children":["5.5 Refunding an already accepted Money In"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/clients/{clientId}/transactions/{transactionId}/refund\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"description\": \"Refund due to incorrect amount\",\n  \"amount\": \"123.00\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"e43171ad-...\",\n  \"transactionStatus\": \"LIQUIDATED\",\n  \"originalTransactionId\": \"a1392ef1-...\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After the refund you'll have ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["two transactions"]},":"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The original with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionStatus = \"REFUNDED\""]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The refund transaction with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionStatus = \"LIQUIDATED\""]},"."]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["SPEI only."]}," Internals have no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/refund"]}," endpoint."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"56-retrieve-a-transaction-by-id","__idx":28},"children":["5.6 Retrieve a transaction by ID"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /v1/clients/{clientId}/transactions/{transactionId}\n"},"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":{"data-label":"Parameter"},"children":["Parameter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Example"},"children":["Example"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transaction_status"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Filter by status"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LIQUIDATED"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tracking_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Filter by SPEI tracking key"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["20250520FINCHARNJK5NHQG"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transaction_category"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Filter by category"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DEBIT_TRANS"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bank_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Filter by bank"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1953a92c-..."]}]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"6-sending-money-money-out","__idx":29},"children":["6. Sending money (Money Out)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Money Out is the endpoint for moving funds from your Centralizing Account (or from a private account configured as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SENDER_RECEIVER"]},", see section 2) outward. It works for two destination types:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["CLABE"]}," - a standard bank account at any bank in the system."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Debit card"]}," - when you only have the 16-digit card number."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"61-send-to-a-clabe","__idx":30},"children":["6.1 Send to a CLABE"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["What is a CLABE?"]}," The Clave Bancaria Estandarizada (CLABE) is the 18-digit identifier used by the Mexican financial system to route SPEI transfers to a specific bank account - it's the Mexican equivalent of an IBAN."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is the standard flow, including from the Quickstart (section 4)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Register instrument:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/clients/{clientId}/instruments\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"source_bank_id\": \"{your bankId}\",\n  \"client_id\": \"{your clientId}\",\n  \"type\": \"SENDER_RECEIVER\",\n  \"rfc\": \"XAXX010101000\",\n  \"alias\": \"Supplier ABC\",\n  \"virtual_clabe\": {\n    \"account_number\": \"064871131141\",\n    \"clabe_number\": \"021180064871131141\",\n    \"holder_name\": \"Beneficiary Name\",\n    \"destination_bank_id\": \"{bankId of the destination bank}\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Execute the transaction:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/transactions/money_out\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Headers:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Authorization: Bearer {token}\nContent-Type: application/json\nIdempotency-Key: {uuid-v5}   <- optional but strongly recommended (see section 11)\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"client_id\": \"{your clientId}\",\n  \"source_instrument_id\": \"{your centralizing account instrumentId}\",\n  \"destination_instrument_id\": \"{destination instrumentId}\",\n  \"transaction_request\": {\n    \"external_reference\": \"1234567\",\n    \"description\": \"Supplier payment\",\n    \"amount\": \"5000.00\",\n    \"currency\": \"MXN\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Body field constraints:"]}]},{"$$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":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Constraint"},"children":["Constraint"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Numeric string with exactly 2 decimal places. Greater than 0."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["currency"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Only ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"MXN\""]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maximum 40 characters"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["external_reference"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Numeric only, maximum 7 digits"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response (200 OK):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"16811ee8-...\",\n  \"trackingId\": \"20250306FINCHVLIKQ5SKUM\",\n  \"transactionStatus\": \"INITIALIZED\",\n  \"amount\": \"1500.00\",\n  \"currency\": \"MXN\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Possible statuses:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INITIALIZED"]}," (transient, being sent to SPEI) -> ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LIQUIDATED"]}," (successful), ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FAILED"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REFUNDED"]}," (if accepted and later refunded - see section 5.5)."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"62-send-to-a-debit-card","__idx":31},"children":["6.2 Send to a debit card"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/clients/{clientId}/instruments\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"source_bank_id\": \"{your bankId}\",\n  \"client_id\": \"{your clientId}\",\n  \"type\": \"RECEIVER\",\n  \"rfc\": \"XAXX010101000\",\n  \"alias\": \"Pedro's card\",\n  \"debit_card\": {\n    \"destination_bank_id\": \"{bankId of the issuing bank}\",\n    \"card_number\": \"5579072268574100\",\n    \"holder_name\": \"Pedro Navajas\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Key difference:"]}," debit cards are ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RECEIVER"]}," only - they can receive money but not send it."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once the instrument is created, the Money Out transaction uses exactly the same endpoint and body as for a CLABE."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"63-instrument-whitelist-for-high-value-transactions","__idx":32},"children":["6.3 Instrument whitelist for high-value transactions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By default, Money Out transactions above ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["$500,000 MXN"]}," go through a manual review before being executed."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you have recurring, trusted recipients, you can add them to a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["whitelist"]},". Instruments on the whitelist bypass manual review."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Important:"]}," every bypass transaction is logged internally with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["reason: WHITELIST_BYPASS"]}," for traceability. Monato also receives an internal notification for every bypass."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["The limit of 10 is at the client level, not per instrument."]}," The maximum of 10 whitelisted instruments is counted across the total instruments of your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_id"]}," - not 10 \"per instrument,\" but 10 total across all your instruments."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"requirements-to-add-an-instrument-to-the-whitelist","__idx":33},"children":["Requirements to add an instrument to the whitelist"]},{"$$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":"#"},"children":["#"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Condition"},"children":["Condition"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Detail"},"children":["Detail"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Valid UUID"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["instrument_id"]}," must be a well-formed UUID"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Belongs to the client"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The instrument must be registered under your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_id"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["3"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Limit not exceeded"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maximum of ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["10 active instruments"]}," on the whitelist ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["per client"]}," (not per instrument)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["4"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Minimum age"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The instrument must be at least ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["72 hours"]}," old since creation"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["5"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Minimum transaction history"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The instrument must have at least ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["3 previous successful transactions"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"endpoint","__idx":34},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /api/v1/{client_id}/instruments/{instrument_id}/whitelist\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Headers:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Authorization: Bearer {token}\nContent-Type: application/json\n"},"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":{"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":["client_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["UUID"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your client identifier"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["instrument_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["UUID"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The instrument you want to add to the whitelist"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Body:"]}," no body required."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  \"https://api.fincopay.com/api/v1/{client_id}/instruments/{instrument_id}/whitelist\" \\\n  -H \"Authorization: Bearer {your_token}\" \\\n  -H \"Content-Type: application/json\"\n","lang":"shell"},"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":{"data-label":"Scenario"},"children":["Scenario"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"HTTP Status"},"children":["HTTP Status"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["First time adding the instrument"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["201 Created"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Instrument was already whitelisted (retry)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["200 OK"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["The response body schema is pending confirmation."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"this-endpoint-is-idempotent","__idx":35},"children":["This endpoint is idempotent"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sending the same request twice with the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_id"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["instrument_id"]}," will not create duplicate records."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"possible-errors","__idx":36},"children":["Possible 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"},"children":["HTTP"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]}]}]},{"$$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 Bad Request"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["instrument_id"]}," is not a valid UUID"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404 Not Found"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Instrument doesn't exist or doesn't belong to your client"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["422 Unprocessable Entity"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Limit of 10 whitelisted instruments already reached (client-level)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["422 Unprocessable Entity"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Instrument is less than 72 hours old"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["422 Unprocessable Entity"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Instrument doesn't have 3 previous successful transactions"]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"HTTP/1.1 422 Unprocessable Entity\n{\n  \"error\": {\n    \"code\": \"WHITELIST_LIMIT_EXCEEDED\",\n    \"message\": \"Instrument whitelist exceeds the limit of 10 active records.\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"limits-and-constraints","__idx":37},"children":["Limits and constraints"]},{"$$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":"Constraint"},"children":["Constraint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Max whitelisted instruments per client"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["10"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Minimum instrument age"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["72 hours since creation"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Minimum prior successful transactions"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["3"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transaction amount threshold for bypass"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["$500,000 MXN"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"64-idempotency-in-money-out","__idx":38},"children":["6.4 Idempotency in Money Out"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Money Out supports the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Idempotency-Key"]}," header. ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Always use it in production."]}," See section ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#"},"children":["11 - Idempotency"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"7-internal-transfers-book-to-book---deprecated","__idx":39},"children":["7. Internal transfers (book-to-book) - deprecated"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["⚠️ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["This dedicated endpoint is deprecated for new integrations."]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/transactions/money_out"]}," automatically detects when the destination is also a Finco Pay account and routes it as an internal transfer, with no added friction. Use Money Out for all new cases; this section is kept only for compatibility with existing integrations that already use this endpoint."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Internal transfers move funds between two accounts within Monato ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["without going through SPEI"]},". They settle instantly and do not generate a CEP."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"endpoint-1","__idx":40},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/transactions/internal_transaction\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"client_id\": \"{your clientId}\",\n  \"source_instrument_id\": \"{origin instrumentId}\",\n  \"destination_instrument_id\": \"{destination instrumentId}\",\n  \"transaction_request\": {\n    \"amount\": \"1.90\",\n    \"currency\": \"MXN\",\n    \"description\": \"Movement between BUs\",\n    \"external_reference\": \"1238766\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"09c9caac-...\",\n  \"trackingId\": \"20250925FINCHCUCHFGMRLZ\",\n  \"transactionStatus\": \"LIQUIDATED\",\n  \"category\": \"INTER_TRANS\",\n  \"subCategory\": \"INT_DEBIT\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"validations","__idx":41},"children":["Validations"]},{"$$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":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Rule"},"children":["Rule"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["String with 2 decimal places, greater than 0"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["currency"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Only ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"MXN\""]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Less than 40 characters"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["external_reference"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Numeric only, maximum 7 digits"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Source instrument"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Must exist, be active, and have sufficient funds"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Destination instrument"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Must be internal to Monato"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"when-do-you-receive-a-money-in-webhook","__idx":42},"children":["When do you receive a Money In webhook?"]},{"$$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":"Situation"},"children":["Situation"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Webhook?"},"children":["Webhook?"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Destination belongs to a different ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["owner_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes - ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MONEY_IN"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sub_category = \"INT_CREDIT\""]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Destination belongs to the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["owner_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No - the POST response is the source of truth"]}]}]}]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Known bug:"]}," the dashboard shows a \"resend webhook\" option for same-owner internal transfers, but since no event is created, there is nothing to resend."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"how-to-reverse-an-internal-transfer","__idx":43},"children":["How to reverse an internal transfer"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["No ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/refund"]}," endpoint exists. Create a new internal transaction in the opposite direction."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"8-validating-a-bank-account-penny-validation","__idx":44},"children":["8. Validating a bank account (Penny Validation)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["How it works:"]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You send $0.01 MXN to the account you want to verify."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Banxico generates a CEP with the account holder's verified details."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Fincore delivers that CEP to you via webhook."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"prerequisites","__idx":45},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Have your Centralizing Account active."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Have already registered the account to validate as an Instrument."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Have registered a webhook of type ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CEP"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"execute-the-validation","__idx":46},"children":["Execute the validation"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/transactions/penny_validation\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"client_id\": \"{your clientId}\",\n  \"source_instrument_id\": \"{your centralizing account instrumentId}\",\n  \"destination_instrument_id\": \"{instrumentId of the account to validate}\",\n  \"description\": \"Account validation\",\n  \"external_reference\": \"1234567\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"1eb4b5ac-...\",\n  \"transactionStatus\": \"INITIALIZED\",\n  \"metadata\": {\n    \"dataCep\": {\n      \"status\": \"PENDING\",\n      \"cepUrl\": \"https://www.banxico.org/...\",\n      \"validationId\": \"f4ebe9af-...\"\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"cep-statuses","__idx":47},"children":["CEP 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":"What it means"},"children":["What it means"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INITIALIZED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transient initial state. Treat the same as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PENDING"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PENDING"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Waiting for the beneficiary's bank to respond."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELAYED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Taking longer than expected, retries continue."]}]},{"$$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":["CEP available and validated."]}]},{"$$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":["CEP could not be obtained after all retries."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"cep-webhook-retry-policy","__idx":48},"children":["CEP webhook retry policy"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your server doesn't respond, Fincore retries up to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["37 times"]}," over a total window of ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["7h 20min"]},"."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Important - the scraper runs in parallel:"]}," the process that polls the CEP status runs ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["in parallel"]}," to Penny Validation - it is not a sequential phase that starts afterward. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PENDING"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELAYED"]}," statuses are ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["emulated by Monato"]}," between polls; the scraper only reports terminal states."]}]},{"$$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":"Attempt"},"children":["Attempt"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Frequency"},"children":["Frequency"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Elapsed time"},"children":["Elapsed time"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INITIALIZED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["0:00:00"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2 - 5"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PENDING"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Every 1 min"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["0:01:00 - 0:04:00"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["6"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELAYED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Every 1 min"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["0:05:00"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["7 - 9"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELAYED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Every 5 min"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["0:10:00 - 0:20:00"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["10 - 37"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELAYED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Every 15 min"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["0:35:00 - 7:20:00"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If by attempt 37 there is still no CEP confirmation -> status is set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FAILED"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"9-private-accounts","__idx":49},"children":["9. Private accounts"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Private accounts are CLABEs you can assign to your customers so they can deposit to you - unless configured as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SENDER_RECEIVER"]}," (see below), in which case they can also send money."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"91-create-a-private-account","__idx":50},"children":["9.1 Create a private account"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/clients/{clientId}/private_accounts\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"bank_id\": \"{your bankId}\",\n  \"owner_id\": \"{your clientId}\",\n  \"client_bank_adapter_id\": \"{your clientBankAdapterId}\",\n  \"client_id\": \"{your clientId}\",\n  \"account_id\": \"{your centralizing account accountId}\",\n  \"sender_receiver_type\": false\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["What does"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sender_receiver_type"]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["do?"]}," If sent as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},", the private account is enabled to send money (Money Out), in addition to receiving. If omitted or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}," (default), the account can only receive. ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["This decision is permanent"]}," - it cannot be changed after the account is created."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"8d3e1f2a-...\",\n  \"clabeNumber\": \"734180000700000004\",\n  \"accountType\": \"PRIVATE_ACCOUNT\",\n  \"accountStatus\": \"ACTIVE\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"92-private-account-lifecycle","__idx":51},"children":["9.2 Private account lifecycle"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"ACTIVE ---- block ---- BLOCKED\n  │                       │\n  │                    activate\n  │                       │\n  │<----------------------┘\n  │\n  └---- cancel ---- CANCELLED (permanent)\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Common errors when cancelling:"]}]},{"$$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":"Error"},"children":["Error"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]}]}]},{"$$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"]}," - Account is already cancelled"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Already cancelled"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]}," - Only Private Accounts can be cancelled"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Tried to cancel the Centralizing Account"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]}," - Invalid account balance"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Balance is not zero"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403"]}," - Account does not belong to the specified client"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientId"]}," mismatch"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"10-business-units-sub-accounts","__idx":52},"children":["10. Business Units (sub-accounts)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Business Units let you create sub-accounts that appear as ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["independent legal entities"]}," on payment receipts, modeled in the API as ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Customers"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"101-create-an-account-for-a-business-unit","__idx":53},"children":["10.1 Create an account for a Business Unit"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/clients/{clientId}/customers/{customersId}/private_accounts\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"client_id\": \"{your clientId}\",\n  \"client_bank_adapter_id\": \"{your clientBankAdapterId}\",\n  \"bank_id\": \"{your bankId}\",\n  \"owner_id\": \"{customerId of the Business Unit}\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"102-list-your-business-units","__idx":54},"children":["10.2 List your Business Units"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /v1/clients/{clientId}/customers\n"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Important:"]}," only use Customers with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customerValidationStatus = \"VALIDATED\""]}," in production."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"11-idempotency-how-to-retry-safely","__idx":55},"children":["11. Idempotency: how to retry safely"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Idempotency-Key: 66c0b04f-97d6-592d-8396-199819064afa\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["TTL:"]}," 24 hours."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"body_hash = SHA-256(canonical JSON of body with keys sorted alphabetically)\nname = client_id + \"money_out\" + body_hash\nIdempotency-Key = UUIDv5(NAMESPACE, name)\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Python:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"import json, hashlib, uuid\n \nNAMESPACE = uuid.UUID(\"086fc9ec-d591-4045-bde4-3f9439506b08\")  # staging\n \ndef generate_key(client_id: str, body: dict) -> str:\n    canonical = json.dumps(body, sort_keys=True, separators=(',', ':'))\n    body_hash = hashlib.sha256(canonical.encode()).hexdigest()\n    return str(uuid.uuid5(NAMESPACE, client_id + \"money_out\" + body_hash))\n","lang":"python"},"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":{"data-label":"Scenario"},"children":["Scenario"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Response"},"children":["Response"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Idempotency-Key"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Normal flow, no protection"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid key format"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400 Bad Request"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Same key, same body"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["200 OK"]}," - cached response"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Same key, different body"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["409 Conflict"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Two simultaneous requests, same key"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Second returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["409"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"12-reports","__idx":56},"children":["12. Reports"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Daily"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Monthly"]}," transaction reports and account statements."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/reports/clients/{client_id}/report/download\n"},"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":{"data-label":"report_type"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["report_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":["DAILY"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Day's transactions"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MONTHLY"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Month's transactions"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DAILY_ACCOUNT_STATEMENT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Daily account statement"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MONTHLY_ACCOUNT_STATEMENT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Monthly account statement"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"13-error-catalog","__idx":57},"children":["13. Error catalog"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"error-structure","__idx":58},"children":["Error structure"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"code\": 9,\n  \"message\": \"API Error\",\n  \"details\": [\n    {\n      \"reason\": \"FAILED_PRECONDITION\",\n      \"domain\": \"CORE\",\n      \"metadata\": {\n        \"error_detail\": \"The account does not have sufficient funds.\",\n        \"http_code\": \"400\",\n        \"error_code\": \"10-E4120\"\n      }\n    }\n  ]\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Only ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["domain: \"CORE\""]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_code: \"10-E4120\""]}," is confirmed, for insufficient funds."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"authentication","__idx":59},"children":["Authentication"]},{"$$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"},"children":["HTTP"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Solution"},"children":["Solution"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401 Unauthorized"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Token expired or invalid"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Generate a new token"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"money-out","__idx":60},"children":["Money Out"]},{"$$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":"error_detail"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_detail"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"HTTP"},"children":["HTTP"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Solution"},"children":["Solution"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["The account does not have sufficient funds."]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Insufficient balance"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Check ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["availableBalance"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["The account is not currently active."]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Account blocked"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Check account status"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Transaction Amount must be higher than 0."]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Amount 0 or negative"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Validate amount"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Transaction currency unsupported."]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Only ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"MXN\""]}," accepted"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"MXN\""]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Transaction description must have less than 40 characters length."]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Exceeds 40 characters"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Truncate description"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["External reference should be numeric and have a maximum length of 7 digits."]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Non-numeric or >7 digits"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use digits only"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["destination_not_found"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["404"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Instrument doesn't exist"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Verify ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["instrument_id"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"internal-transfers-deprecated","__idx":61},"children":["Internal transfers (deprecated)"]},{"$$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":"error_detail"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_detail"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"HTTP"},"children":["HTTP"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["external_transfer_not_allowed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["409"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Internal to external SPEI account"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"idempotency","__idx":62},"children":["Idempotency"]},{"$$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":"error_detail"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_detail"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"HTTP"},"children":["HTTP"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Idempotency key does not match the request payload"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["409"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Same key, different body"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Operation money_out in progress"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["409"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Duplicate request in flight"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid key format"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Not a valid UUID v5"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"private-accounts---cancellation","__idx":63},"children":["Private accounts - cancellation"]},{"$$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":"error_detail"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_detail"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"HTTP"},"children":["HTTP"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Account is already cancelled"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Already cancelled"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Only Private Accounts can be cancelled"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Tried to cancel Centralizing Account"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Invalid account balance, account balance must be equal to 0"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Balance not zero"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Account does not belong to the specified client"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["403"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientId"]}," mismatch"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"instrument-whitelist","__idx":64},"children":["Instrument whitelist"]},{"$$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":"Cause"},"children":["Cause"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"HTTP"},"children":["HTTP"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["instrument_id"]}," not a valid UUID"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Instrument doesn't exist or doesn't belong to client"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["404"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Limit of 10 (client-level) reached"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["422"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Less than 72 hours old"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["422"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No 3 previous successful transactions"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["422"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"penny-validation--cep","__idx":65},"children":["Penny Validation / CEP"]},{"$$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":"Situation"},"children":["Situation"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FAILED"]}," after attempt 37"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No confirmation within 7h 20min"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELAYED"]}," for a long time"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Destination bank slow; retries continue"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"questions-or-issues","__idx":66},"children":["Questions or issues?"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Technical support:"]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:support@monato.com"},"children":["support@monato.com"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["OpenAPI reference:"]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.monato.com/products/fincore/fincore-openapi"},"children":["docs.monato.com/products/fincore/fincore-openapi"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]}]},"headings":[{"value":"Fincore's API Documentation v1.2","id":"fincores-api-documentation-v12","depth":1},{"value":"Table of contents","id":"table-of-contents","depth":2},{"value":"1. What is Fincore?","id":"1-what-is-fincore","depth":2},{"value":"2. How it works: the data model","id":"2-how-it-works-the-data-model","depth":2},{"value":"Centralizing Account","id":"centralizing-account","depth":3},{"value":"Private Account","id":"private-account","depth":3},{"value":"Instrument","id":"instrument","depth":3},{"value":"Visual summary","id":"visual-summary","depth":3},{"value":"Customer (Business Unit)","id":"customer-business-unit","depth":3},{"value":"3. Authentication","id":"3-authentication","depth":2},{"value":"Step 1 - Get the client_secret","id":"step-1---get-the-client_secret","depth":3},{"value":"Step 2 - Generate an access token","id":"step-2---generate-an-access-token","depth":3},{"value":"Step 3 - Use the token","id":"step-3---use-the-token","depth":3},{"value":"4. Your first transfer (Quickstart)","id":"4-your-first-transfer-quickstart","depth":2},{"value":"What you'll do","id":"what-youll-do","depth":3},{"value":"Step 1 - Retrieve your Centralizing Account","id":"step-1---retrieve-your-centralizing-account","depth":3},{"value":"Step 2 - Register the recipient as an Instrument","id":"step-2---register-the-recipient-as-an-instrument","depth":3},{"value":"Step 3 - Send money","id":"step-3---send-money","depth":3},{"value":"5. Receiving money (Money In)","id":"5-receiving-money-money-in","depth":2},{"value":"5.1 Register your endpoint for notifications","id":"51-register-your-endpoint-for-notifications","depth":3},{"value":"5.2 Managing your webhooks","id":"52-managing-your-webhooks","depth":3},{"value":"5.3 What a Money In notification looks like","id":"53-what-a-money-in-notification-looks-like","depth":3},{"value":"Example: incoming money via SPEI (from another bank)","id":"example-incoming-money-via-spei-from-another-bank","depth":4},{"value":"Example: internal incoming money (between Monato accounts)","id":"example-internal-incoming-money-between-monato-accounts","depth":4},{"value":"How to tell SPEI apart from internal","id":"how-to-tell-spei-apart-from-internal","depth":4},{"value":"Body fields","id":"body-fields","depth":4},{"value":"5.4 Accepting or rejecting a Money In","id":"54-accepting-or-rejecting-a-money-in","depth":3},{"value":"5.5 Refunding an already accepted Money In","id":"55-refunding-an-already-accepted-money-in","depth":3},{"value":"5.6 Retrieve a transaction by ID","id":"56-retrieve-a-transaction-by-id","depth":3},{"value":"6. Sending money (Money Out)","id":"6-sending-money-money-out","depth":2},{"value":"6.1 Send to a CLABE","id":"61-send-to-a-clabe","depth":3},{"value":"6.2 Send to a debit card","id":"62-send-to-a-debit-card","depth":3},{"value":"6.3 Instrument whitelist for high-value transactions","id":"63-instrument-whitelist-for-high-value-transactions","depth":3},{"value":"Requirements to add an instrument to the whitelist","id":"requirements-to-add-an-instrument-to-the-whitelist","depth":4},{"value":"Endpoint","id":"endpoint","depth":4},{"value":"This endpoint is idempotent","id":"this-endpoint-is-idempotent","depth":4},{"value":"Possible errors","id":"possible-errors","depth":4},{"value":"Limits and constraints","id":"limits-and-constraints","depth":4},{"value":"6.4 Idempotency in Money Out","id":"64-idempotency-in-money-out","depth":3},{"value":"7. Internal transfers (book-to-book) - deprecated","id":"7-internal-transfers-book-to-book---deprecated","depth":2},{"value":"Endpoint","id":"endpoint-1","depth":3},{"value":"Validations","id":"validations","depth":3},{"value":"When do you receive a Money In webhook?","id":"when-do-you-receive-a-money-in-webhook","depth":3},{"value":"How to reverse an internal transfer","id":"how-to-reverse-an-internal-transfer","depth":3},{"value":"8. Validating a bank account (Penny Validation)","id":"8-validating-a-bank-account-penny-validation","depth":2},{"value":"Prerequisites","id":"prerequisites","depth":3},{"value":"Execute the validation","id":"execute-the-validation","depth":3},{"value":"CEP statuses","id":"cep-statuses","depth":3},{"value":"CEP webhook retry policy","id":"cep-webhook-retry-policy","depth":3},{"value":"9. Private accounts","id":"9-private-accounts","depth":2},{"value":"9.1 Create a private account","id":"91-create-a-private-account","depth":3},{"value":"9.2 Private account lifecycle","id":"92-private-account-lifecycle","depth":3},{"value":"10. Business Units (sub-accounts)","id":"10-business-units-sub-accounts","depth":2},{"value":"10.1 Create an account for a Business Unit","id":"101-create-an-account-for-a-business-unit","depth":3},{"value":"10.2 List your Business Units","id":"102-list-your-business-units","depth":3},{"value":"11. Idempotency: how to retry safely","id":"11-idempotency-how-to-retry-safely","depth":2},{"value":"12. Reports","id":"12-reports","depth":2},{"value":"13. Error catalog","id":"13-error-catalog","depth":2},{"value":"Error structure","id":"error-structure","depth":3},{"value":"Authentication","id":"authentication","depth":3},{"value":"Money Out","id":"money-out","depth":3},{"value":"Internal transfers (deprecated)","id":"internal-transfers-deprecated","depth":3},{"value":"Idempotency","id":"idempotency","depth":3},{"value":"Private accounts - cancellation","id":"private-accounts---cancellation","depth":3},{"value":"Instrument whitelist","id":"instrument-whitelist","depth":3},{"value":"Penny Validation / CEP","id":"penny-validation--cep","depth":3},{"value":"Questions or issues?","id":"questions-or-issues","depth":2}],"frontmatter":{"seo":{"title":"Fincore's API Documentation v1.2"}},"lastModified":"2026-08-04T20:51:56.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/fincore/fincore-developer-guide","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}