Create multiple transactions in a single atomic operation.
Criação em lote é atômica: ou todos os N itens são criados, ou nenhum.
Cada item segue as validações da rota POST /transactions unitária e valida a própria origem (conta ou cartão).
Os lançamentos nascem não pagos; o status é derivado do vencimento como no POST unitário (a vencer, vence hoje ou vencido).
Limite: 1..100 itens. Cota consumida apenas pelo que foi criado.
idempotency_key (1..64 caracteres) permite replay: mesma chave e mesmo conteúdo devolve 201 com replayed: true e o resultado original, sem efeito novo.
Mesma chave com conteúdo diferente devolve 409 idempotency_payload_mismatch.
Segunda request com a mesma chave ainda em voo devolve 409 concurrent_operation.
Item com payment_date é rejeitado (payment_date_not_allowed). Item com installments > 1 é rejeitado (installments_not_allowed).
422 com item inválido (invalid_items): devolve BatchResponseDTO com results completo, na ordem enviada; o item inválido traz code/http_status/message do erro da rota unitária e cada item válido traz status = error, code = not_created, http_status = 422 (série atômica, nada foi criado).
422 com envelope inválido (lista vazia, acima de 100 itens, idempotency_key fora de 1..64) devolve ErrorResponseDTO com error = invalid_envelope.
402 limit_exceeded quando a cota mensal não comporta os N itens (o campo error traz a métrica transactions_per_month). Nada é criado.
POST
/
companies
/
transactions
/
batch
Create multiple transactions in a single atomic operation.
Chave de idempotência da série (1..64 caracteres).
Escopo: por empresa. Permite detecção de divergência e replay.
swagger:example "batch-invoices-2026-10-01"
Indica se a resposta é um replay de uma request anterior (idempotência).
True: mesma chave de idempotência foi processada antes, nenhum efeito novo.
False: request foi processada normalmente.
Omitido em PATCH e DELETE.
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Documentação: Extat Plataforma","colors":{"primary":"#0042FF","light":"#0042FF"},"logo":{"light":"https://mintcdn.com/cernedigital-a8d2bb7b/zTLylPyKA_0uFGJA/logo/logo.svg?fit=max\u0026auto=format\u0026n=zTLylPyKA_0uFGJA\u0026q=85\u0026s=799a46f951443428d125941a4b0046e7","dark":"https://mintcdn.com/cernedigital-a8d2bb7b/zTLylPyKA_0uFGJA/logo/logo.svg?fit=max\u0026auto=format\u0026n=zTLylPyKA_0uFGJA\u0026q=85\u0026s=799a46f951443428d125941a4b0046e7"},"favicon":"https://mintcdn.com/cernedigital-a8d2bb7b/IcrVhN2CFsxqdMhm/favicon.svg?fit=max\u0026auto=format\u0026n=IcrVhN2CFsxqdMhm\u0026q=85\u0026s=0f7eb4210fe122e4d09729c43c6af8f6","api":{"openapi":"openapi/extat-openapi.json","playground":{"display":"interactive"}},"appearance":{"strict":true},"navbar":{"links":[{"href":"mailto:suporte@extat.com.br","label":"Suporte"}],"primary":{"type":"button","label":"Acessar Plataforma","href":"https://www.extat.com.br"}},"search":{"prompt":"Pergunte a AI"},"fonts":{"family":"Rubik"},"styling":{"eyebrows":"section","latex":true},"contextual":{"options":["copy","view"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cernedigital-a8d2bb7b","hasAudioNarration":false,"actualSubdomain":"cernedigital-a8d2bb7b","customDomains":["docs.extat.com.br"],"gitSource":{"type":"github","owner":"extat-tech","repo":"extat-plataform-frontend","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad4b59224802b93755135d1","collectionId":"317be867-0393-4406-85a8-3cf857140ac9","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad4b59224802b93755135d1"},"entitlements":{},"buildId":"6ad4b59224802b93755135d1","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Referência da API","count":109},{"language":"default","tag":"Operações","count":108},{"language":"default","tag":"Empresa","count":48},{"language":"default","tag":"Plataforma","count":22},{"language":"default","tag":"Plano e Assinaturas","count":19},{"language":"default","tag":"Transações","count":7},{"language":"default","tag":"Autenticação","count":7},{"language":"default","tag":"Bancos","count":5},{"language":"default","tag":"Centros de Custo","count":5},{"language":"default","tag":"Contas Bancárias","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation","slug":"/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation","pageMetadata":{"title":"Create multiple transactions in a single atomic operation.","description":"Criação em lote é **atômica**: ou todos os N itens são criados, ou nenhum.\nCada item segue as validações da rota POST /transactions unitária e valida a própria origem (conta ou cartão).\nOs lançamentos nascem não pagos; o status é derivado do vencimento como no POST unitário (a vencer, vence hoje ou vencido).\nLimite: 1..100 itens. Cota consumida apenas pelo que foi criado.\n`idempotency_key` (1..64 caracteres) permite replay: mesma chave e mesmo conteúdo devolve 201 com `replayed: true` e o resultado original, sem efeito novo.\nMesma chave com conteúdo diferente devolve 409 `idempotency_payload_mismatch`.\nSegunda request com a mesma chave ainda em voo devolve 409 `concurrent_operation`.\nItem com `payment_date` é rejeitado (`payment_date_not_allowed`). Item com `installments > 1` é rejeitado (`installments_not_allowed`).\n422 com item inválido (`invalid_items`): devolve `BatchResponseDTO` com `results` completo, na ordem enviada; o item inválido traz `code`/`http_status`/`message` do erro da rota unitária e cada item válido traz `status = error`, `code = not_created`, `http_status = 422` (série atômica, nada foi criado).\n422 com envelope inválido (lista vazia, acima de 100 itens, `idempotency_key` fora de 1..64) devolve `ErrorResponseDTO` com `error = invalid_envelope`.\n402 `limit_exceeded` quando a cota mensal não comporta os N itens (o campo `error` traz a métrica `transactions_per_month`). Nada é criado.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/transactions/batch","href":"/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Criação em lote é \", _jsx(_components.strong, {\n children: \"atômica\"\n }), \": ou todos os N itens são criados, ou nenhum.\\nCada item segue as validações da rota POST /transactions unitária e valida a própria origem (conta ou cartão).\\nOs lançamentos nascem não pagos; o status é derivado do vencimento como no POST unitário (a vencer, vence hoje ou vencido).\\nLimite: 1..100 itens. Cota consumida apenas pelo que foi criado.\\n\", _jsx(_components.code, {\n children: \"idempotency_key\"\n }), \" (1..64 caracteres) permite replay: mesma chave e mesmo conteúdo devolve 201 com \", _jsx(_components.code, {\n children: \"replayed: true\"\n }), \" e o resultado original, sem efeito novo.\\nMesma chave com conteúdo diferente devolve 409 \", _jsx(_components.code, {\n children: \"idempotency_payload_mismatch\"\n }), \".\\nSegunda request com a mesma chave ainda em voo devolve 409 \", _jsx(_components.code, {\n children: \"concurrent_operation\"\n }), \".\\nItem com \", _jsx(_components.code, {\n children: \"payment_date\"\n }), \" é rejeitado (\", _jsx(_components.code, {\n children: \"payment_date_not_allowed\"\n }), \"). Item com \", _jsx(_components.code, {\n children: \"installments > 1\"\n }), \" é rejeitado (\", _jsx(_components.code, {\n children: \"installments_not_allowed\"\n }), \").\\n422 com item inválido (\", _jsx(_components.code, {\n children: \"invalid_items\"\n }), \"): devolve \", _jsx(_components.code, {\n children: \"BatchResponseDTO\"\n }), \" com \", _jsx(_components.code, {\n children: \"results\"\n }), \" completo, na ordem enviada; o item inválido traz \", _jsx(_components.code, {\n children: \"code\"\n }), \"/\", _jsx(_components.code, {\n children: \"http_status\"\n }), \"/\", _jsx(_components.code, {\n children: \"message\"\n }), \" do erro da rota unitária e cada item válido traz \", _jsx(_components.code, {\n children: \"status = error\"\n }), \", \", _jsx(_components.code, {\n children: \"code = not_created\"\n }), \", \", _jsx(_components.code, {\n children: \"http_status = 422\"\n }), \" (série atômica, nada foi criado).\\n422 com envelope inválido (lista vazia, acima de 100 itens, \", _jsx(_components.code, {\n children: \"idempotency_key\"\n }), \" fora de 1..64) devolve \", _jsx(_components.code, {\n children: \"ErrorResponseDTO\"\n }), \" com \", _jsx(_components.code, {\n children: \"error = invalid_envelope\"\n }), \".\\n402 \", _jsx(_components.code, {\n children: \"limit_exceeded\"\n }), \" quando a cota mensal não comporta os N itens (o campo \", _jsx(_components.code, {\n children: \"error\"\n }), \" traz a métrica \", _jsx(_components.code, {\n children: \"transactions_per_month\"\n }), \"). Nada é criado.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create multiple transactions in a single atomic operation.","description":"Criação em lote é **atômica**: ou todos os N itens são criados, ou nenhum.\nCada item segue as validações da rota POST /transactions unitária e valida a própria origem (conta ou cartão).\nOs lançamentos nascem não pagos; o status é derivado do vencimento como no POST unitário (a vencer, vence hoje ou vencido).\nLimite: 1..100 itens. Cota consumida apenas pelo que foi criado.\n`idempotency_key` (1..64 caracteres) permite replay: mesma chave e mesmo conteúdo devolve 201 com `replayed: true` e o resultado original, sem efeito novo.\nMesma chave com conteúdo diferente devolve 409 `idempotency_payload_mismatch`.\nSegunda request com a mesma chave ainda em voo devolve 409 `concurrent_operation`.\nItem com `payment_date` é rejeitado (`payment_date_not_allowed`). Item com `installments > 1` é rejeitado (`installments_not_allowed`).\n422 com item inválido (`invalid_items`): devolve `BatchResponseDTO` com `results` completo, na ordem enviada; o item inválido traz `code`/`http_status`/`message` do erro da rota unitária e cada item válido traz `status = error`, `code = not_created`, `http_status = 422` (série atômica, nada foi criado).\n422 com envelope inválido (lista vazia, acima de 100 itens, `idempotency_key` fora de 1..64) devolve `ErrorResponseDTO` com `error = invalid_envelope`.\n402 `limit_exceeded` quando a cota mensal não comporta os N itens (o campo `error` traz a métrica `transactions_per_month`). Nada é criado.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/transactions/batch","href":"/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Criação em lote é **atômica**: ou todos os N itens são criados, ou nenhum.\nCada item segue as validações da rota POST /transactions unitária e valida a própria origem (conta ou cartão).\nOs lançamentos nascem não pagos; o status é derivado do vencimento como no POST unitário (a vencer, vence hoje ou vencido).\nLimite: 1..100 itens. Cota consumida apenas pelo que foi criado.\n`idempotency_key` (1..64 caracteres) permite replay: mesma chave e mesmo conteúdo devolve 201 com `replayed: true` e o resultado original, sem efeito novo.\nMesma chave com conteúdo diferente devolve 409 `idempotency_payload_mismatch`.\nSegunda request com a mesma chave ainda em voo devolve 409 `concurrent_operation`.\nItem com `payment_date` é rejeitado (`payment_date_not_allowed`). Item com `installments > 1` é rejeitado (`installments_not_allowed`).\n422 com item inválido (`invalid_items`): devolve `BatchResponseDTO` com `results` completo, na ordem enviada; o item inválido traz `code`/`http_status`/`message` do erro da rota unitária e cada item válido traz `status = error`, `code = not_created`, `http_status = 422` (série atômica, nada foi criado).\n422 com envelope inválido (lista vazia, acima de 100 itens, `idempotency_key` fora de 1..64) devolve `ErrorResponseDTO` com `error = invalid_envelope`.\n402 `limit_exceeded` quando a cota mensal não comporta os N itens (o campo `error` traz a métrica `transactions_per_month`). Nada é criado.","parameters":["58238d6d-c353-4c2d-bd6d-f4a08603ba4e"],"requestBody":"8aa3008f-ba9f-4486-a098-9180e467464d","responses":{"201":"bc1419f5-4bf4-42ab-9c66-54a42b77bf0e","400":"3e6b8025-0c77-49fa-9840-c1142223aa0a","401":"855c3c09-4b2a-46e4-b4bd-e0da8e1cb4c1","402":"bfa0ee13-38cc-4e56-bc83-3ccbc7b80ebd","403":"90c62f29-a477-440d-985e-1f27e4bffbfb","409":"475ce273-cc4b-4844-b4bf-b22cf2d776e2","422":"9afb6c7c-8b34-4ceb-85f1-2942e97f00ba","500":"40f4211a-8763-4599-96c9-b76bd9d1f504"},"security":["635e550c-5e0e-42d8-aba8-49b1139bd563"],"summary":"Create multiple transactions in a single atomic operation.","tags":["Empresa"],"method":"post","type":"path","servers":["c6271b44-38f9-487d-b1f4-c8f48e06e24e"],"path":"/companies/transactions/batch","baseUrlOptions":["https://golang-api-vgnqx.ondigitalocean.app/v1"],"title":"Create multiple transactions in a single atomic operation.","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"58238d6d-c353-4c2d-bd6d-f4a08603ba4e":{"description":"Company ID (UUID)","in":"header","name":"x-company-id","required":true,"schema":{"type":"string","isRequired":true,"description":"Company ID (UUID)","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"properties":{"idempotency_key":{"description":"Chave de idempotência da série (1..64 caracteres).\nEscopo: por empresa. Permite detecção de divergência e replay.\nswagger:example \"batch-invoices-2026-10-01\"","maxLength":64,"minLength":1,"type":"string","isRequired":true,"uniqueKey":"idempotency_key","typeLabel":"string"},"items":{"description":"Lista de itens a criar. Limite: 1..100.\nCada item segue as validações do POST /transactions unitário.","items":{"properties":{"amount":{"type":"number","uniqueKey":"\\items.items.[INDEX].amount","typeLabel":"number"},"bank_account_id":{"type":"string","uniqueKey":"\\items.items.[INDEX].bank_account_id","typeLabel":"string"},"coa_id":{"type":"integer","uniqueKey":"\\items.items.[INDEX].coa_id","typeLabel":"integer"},"competence":{"format":"date","type":"string","uniqueKey":"\\items.items.[INDEX].competence","typeLabel":"string\u003cdate>"},"contact":{"type":"string","uniqueKey":"\\items.items.[INDEX].contact","typeLabel":"string"},"cost_center_id":{"description":"CostCenterID e BankAccountID seguem string (e não ponteiro): o corpo\natual continua válido byte a byte, e ausência de conta deixou de ser erro\npor si só — passou a depender de haver, ou não, cartão no lugar dela.","type":"string","uniqueKey":"\\items.items.[INDEX].cost_center_id","typeLabel":"string"},"credit_card_account_id":{"description":"CreditCardAccountID é a SEGUNDA origem possível (Decisão B). Aditivo:\nausente, tudo se comporta exatamente como antes desta feature.","type":"string","uniqueKey":"\\items.items.[INDEX].credit_card_account_id","typeLabel":"string"},"due_date":{"description":"DueDate, Competence e PaymentDate são DateOnly (não time.Time): aceitam\n\"AAAA-MM-DD\" (Swagger) e RFC3339 (frontend web) — ver date_only.go.","format":"date","type":"string","uniqueKey":"\\items.items.[INDEX].due_date","typeLabel":"string\u003cdate>"},"installments":{"description":"Installments é PONTEIRO para distinguir \"ausente\" de \"1\". Os dois\nsignificam à vista, mas só o ponteiro permite recusar `installments`\nenviado junto com conta bancária — silenciar levaria o usuário a crer que\nparcelou algo que não foi parcelado (mesma regra que a coluna `Parcelas`\ndo CSV tem na spec).\n\nO TETO (24, decisão Q2) NÃO é validado aqui: quem o decide é\ncreditcardrepo.validatePurchaseRequest, via ErrInstallmentsOutOfRange, e\nduplicar o número neste arquivo criaria duas fontes para o mesmo limite.","type":"integer","uniqueKey":"\\items.items.[INDEX].installments","typeLabel":"integer"},"more_infos":{"type":"string","uniqueKey":"\\items.items.[INDEX].more_infos","typeLabel":"string"},"payment_date":{"format":"date","type":"string","uniqueKey":"\\items.items.[INDEX].payment_date","typeLabel":"string\u003cdate>"},"reason":{"description":"Reason é lido SÓ pelo PUT de lançamento de conta bancária\n(paid-transaction-reversal / T7): obrigatório quando a edição move\ndinheiro (valor, conta ou tipo de lançamento pago — RN7), ignorado\nquando não move. O POST de criação o ignora.","type":"string","uniqueKey":"\\items.items.[INDEX].reason","typeLabel":"string"},"reference":{"type":"string","uniqueKey":"\\items.items.[INDEX].reference","typeLabel":"string"},"supplier_id":{"type":"string","uniqueKey":"\\items.items.[INDEX].supplier_id","typeLabel":"string"},"tags":{"items":{"type":"string","uniqueKey":"\\items.items.[INDEX].tags.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"\\items.items.[INDEX].tags","typeLabel":"string[]"},"type":{"type":"string","uniqueKey":"\\items.items.[INDEX].type","typeLabel":"string"},"url":{"type":"string","uniqueKey":"\\items.items.[INDEX].url","typeLabel":"string"}},"type":"object","uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"maxItems":100,"minItems":1,"type":"array","isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"}},"required":["idempotency_key","items"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"idempotency_key":"\u003cstring>","items":[{"amount":123,"bank_account_id":"\u003cstring>","coa_id":123,"competence":"2023-12-25","contact":"\u003cstring>","cost_center_id":"\u003cstring>","credit_card_account_id":"\u003cstring>","due_date":"2023-12-25","installments":123,"more_infos":"\u003cstring>","payment_date":"2023-12-25","reason":"\u003cstring>","reference":"\u003cstring>","supplier_id":"\u003cstring>","tags":["\u003cstring>"],"type":"\u003cstring>","url":"\u003cstring>"}]}}},"exampleType":"generated"}},"description":"Batch creation request","required":true,"exampleType":"generated"},"responses":{"bc1419f5-4bf4-42ab-9c66-54a42b77bf0e":{"content":{"application/json":{"schema":{"properties":{"replayed":{"description":"Indica se a resposta é um replay de uma request anterior (idempotência).\nTrue: mesma chave de idempotência foi processada antes, nenhum efeito novo.\nFalse: request foi processada normalmente.\nOmitido em PATCH e DELETE.","type":"boolean","uniqueKey":"replayed","typeLabel":"boolean"},"results":{"description":"Resultados por item, na ordem da request original.","items":{"properties":{"code":{"description":"Código do erro (ex.: \"invalid_request\", \"not_found\", \"reason_required\").\nOmitido quando status é \"ok\".","type":"string","uniqueKey":"results.items.[INDEX].code","typeLabel":"string"},"http_status":{"description":"Status HTTP que seria retornado isoladamente (ex.: 400, 404, 422, 409).\nOmitido quando status é \"ok\".","type":"integer","uniqueKey":"results.items.[INDEX].http_status","typeLabel":"integer"},"id":{"description":"Identificador da transação criada, alterada ou excluída (ou a solicitada).\nOmitido em caso de erro de validação antes da criação.","type":"string","uniqueKey":"results.items.[INDEX].id","typeLabel":"string"},"index":{"description":"Posição do item na request original (base zero).","type":"integer","uniqueKey":"results.items.[INDEX].index","typeLabel":"integer"},"message":{"description":"Mensagem de erro em português.\nOmitida quando status é \"ok\".","type":"string","uniqueKey":"results.items.[INDEX].message","typeLabel":"string"},"status":{"description":"Status do processamento: \"ok\" ou \"error\".\nswagger:enum \"ok\",\"error\"","type":"string","uniqueKey":"results.items.[INDEX].status","typeLabel":"string"}},"type":"object","uniqueKey":"results.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"results","typeLabel":"object[]"},"series_id":{"description":"Identificador da série criada (somente em POST /batch com status 201).\nOmitido em caso de erro no nível da request.","type":"string","uniqueKey":"series_id","typeLabel":"string"},"summary":{"type":"object","description":"Resumo agregado dos resultados.","properties":{"failed":{"description":"Itens que falharam.","type":"integer","uniqueKey":"summary.failed","typeLabel":"integer"},"succeeded":{"description":"Itens processados com sucesso.","type":"integer","uniqueKey":"summary.succeeded","typeLabel":"integer"},"total":{"description":"Total de itens processados.","type":"integer","uniqueKey":"summary.total","typeLabel":"integer"}},"uniqueKey":"summary","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"replayed":true,"results":[{"code":"\u003cstring>","http_status":123,"id":"\u003cstring>","index":123,"message":"\u003cstring>","status":"\u003cstring>"}],"series_id":"\u003cstring>","summary":{"failed":123,"succeeded":123,"total":123}}}},"exampleType":"generated"}},"description":"Série criada, ou replay (`replayed = true`). `results` traz o `id` de cada lançamento, na ordem enviada.","exampleType":"generated"},"3e6b8025-0c77-49fa-9840-c1142223aa0a":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"JSON malformado, `x-company-id` ausente ou inválido, ou outro erro no nível da request.","exampleType":"generated"},"855c3c09-4b2a-46e4-b4bd-e0da8e1cb4c1":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"JWT ausente ou inválido.","exampleType":"generated"},"bfa0ee13-38cc-4e56-bc83-3ccbc7b80ebd":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Cota mensal não comporta N novos itens (`limit_exceeded`). Nada é criado.","exampleType":"generated"},"90c62f29-a477-440d-985e-1f27e4bffbfb":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Usuário não é membro ativo da empresa do header.","exampleType":"generated"},"475ce273-cc4b-4844-b4bf-b22cf2d776e2":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"`idempotency_key` já usada com conteúdo diferente (`idempotency_payload_mismatch`) ou disputa de lock (`concurrent_operation`). Nada é criado.","exampleType":"generated"},"9afb6c7c-8b34-4ceb-85f1-2942e97f00ba":{"content":{"application/json":{"schema":{"properties":{"replayed":{"description":"Indica se a resposta é um replay de uma request anterior (idempotência).\nTrue: mesma chave de idempotência foi processada antes, nenhum efeito novo.\nFalse: request foi processada normalmente.\nOmitido em PATCH e DELETE.","type":"boolean","uniqueKey":"replayed","typeLabel":"boolean"},"results":{"description":"Resultados por item, na ordem da request original.","items":{"properties":{"code":{"description":"Código do erro (ex.: \"invalid_request\", \"not_found\", \"reason_required\").\nOmitido quando status é \"ok\".","type":"string","uniqueKey":"results.items.[INDEX].code","typeLabel":"string"},"http_status":{"description":"Status HTTP que seria retornado isoladamente (ex.: 400, 404, 422, 409).\nOmitido quando status é \"ok\".","type":"integer","uniqueKey":"results.items.[INDEX].http_status","typeLabel":"integer"},"id":{"description":"Identificador da transação criada, alterada ou excluída (ou a solicitada).\nOmitido em caso de erro de validação antes da criação.","type":"string","uniqueKey":"results.items.[INDEX].id","typeLabel":"string"},"index":{"description":"Posição do item na request original (base zero).","type":"integer","uniqueKey":"results.items.[INDEX].index","typeLabel":"integer"},"message":{"description":"Mensagem de erro em português.\nOmitida quando status é \"ok\".","type":"string","uniqueKey":"results.items.[INDEX].message","typeLabel":"string"},"status":{"description":"Status do processamento: \"ok\" ou \"error\".\nswagger:enum \"ok\",\"error\"","type":"string","uniqueKey":"results.items.[INDEX].status","typeLabel":"string"}},"type":"object","uniqueKey":"results.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"results","typeLabel":"object[]"},"series_id":{"description":"Identificador da série criada (somente em POST /batch com status 201).\nOmitido em caso de erro no nível da request.","type":"string","uniqueKey":"series_id","typeLabel":"string"},"summary":{"type":"object","description":"Resumo agregado dos resultados.","properties":{"failed":{"description":"Itens que falharam.","type":"integer","uniqueKey":"summary.failed","typeLabel":"integer"},"succeeded":{"description":"Itens processados com sucesso.","type":"integer","uniqueKey":"summary.succeeded","typeLabel":"integer"},"total":{"description":"Total de itens processados.","type":"integer","uniqueKey":"summary.total","typeLabel":"integer"}},"uniqueKey":"summary","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"replayed":true,"results":[{"code":"\u003cstring>","http_status":123,"id":"\u003cstring>","index":123,"message":"\u003cstring>","status":"\u003cstring>"}],"series_id":"\u003cstring>","summary":{"failed":123,"succeeded":123,"total":123}}}},"exampleType":"generated"}},"description":"Item inválido (`invalid_items`): `results` completo, itens válidos com `not_created`. Envelope inválido devolve `ErrorResponseDTO` (`invalid_envelope`).","exampleType":"generated"},"40f4211a-8763-4599-96c9-b76bd9d1f504":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","uniqueKey":"message","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Erro interno do servidor.","exampleType":"generated"}},"security":{"635e550c-5e0e-42d8-aba8-49b1139bd563":{"ApiKeyAuth":{"description":"Token da sessão no cabeçalho Authorization, no formato Bearer (mesmo esquema ApiKeyAuth do contrato).","in":"header","name":"Authorization","type":"apiKey","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"c6271b44-38f9-487d-b1f4-c8f48e06e24e":{"url":"https://golang-api-vgnqx.ondigitalocean.app/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"description":"Token da sessão no cabeçalho Authorization, no formato Bearer (mesmo esquema ApiKeyAuth do contrato).","in":"header","name":"Authorization","type":"apiKey","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"Authorization","type":"string","description":"Token da sessão no cabeçalho Authorization, no formato Bearer (mesmo esquema ApiKeyAuth do contrato).","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"Authorization"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi/extat-openapi.json"},"subdomain":"cernedigital-a8d2bb7b","siteName":"Documentação: Extat Plataforma","title":"Create multiple transactions in a single atomic operation. - Documentação: Extat Plataforma","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-15T00:54:16.097Z","originalFileLocation":"api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Criação em lote é atômica: ou todos os N itens são criados, ou nenhum. Cada item segue as validações da rota POST /transactions unitária e valida a própria origem (conta ou cartão). Os lançamentos nascem não pagos; o status é derivado do vencimento como no POST unitário (a vencer, vence hoje ou vencido). Limite: 1..100 itens. Cota consumida apenas pelo que foi criado. idempotency_key (1..64 caracteres) permite replay: mesma chave e mesmo conteúdo devolve 201 com replayed: true e o resultado original, sem efeito novo. Mesma chave com conteúdo diferente devolve 409 idempotency_payload_mismatch. Segunda request com a mesma chave ainda em voo devolve 409 concurrent_operation. Item com payment_date é rejeitado (payment_date_not_allowed). Item com installments \u0026gt; 1 é rejeitado (installments_not_allowed). 422 com item inválido (invalid_items): devolve BatchResponseDTO com results completo, na ordem enviada; o item inválido traz code/http_status/message do erro da rota unitária e cada item válido traz status = error, code = not_created, http_status = 422 (série atômica, nada foi criado). 422 com envelope inválido (lista vazia, acima de 100 itens, idempotency_key fora de 1..64) devolve ErrorResponseDTO com error = invalid_envelope. 402 limit_exceeded quando a cota mensal não comporta os N itens (o campo error traz a métrica transactions_per_month). Nada é criado.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Documentação: Extat Plataforma\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cernedigital-a8d2bb7b/Ssaks_NL8zZiTQxQ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/cernedigital-a8d2bb7b/Ssaks_NL8zZiTQxQ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cernedigital-a8d2bb7b/Ssaks_NL8zZiTQxQ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cernedigital-a8d2bb7b/Ssaks_NL8zZiTQxQ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cernedigital-a8d2bb7b/Ssaks_NL8zZiTQxQ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cernedigital-a8d2bb7b/Ssaks_NL8zZiTQxQ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cernedigital-a8d2bb7b/Ssaks_NL8zZiTQxQ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cernedigital-a8d2bb7b/Ssaks_NL8zZiTQxQ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cernedigital-a8d2bb7b/Ssaks_NL8zZiTQxQ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create multiple transactions in a single atomic operation. - Documentação: Extat Plataforma\">\u003cmeta data-mint-head property=\"og:description\" content=\"Criação em lote é atômica: ou todos os N itens são criados, ou nenhum. Cada item segue as validações da rota POST /transactions unitária e valida a própria origem (conta ou cartão). Os lançamentos nascem não pagos; o status é derivado do vencimento como no POST unitário (a vencer, vence hoje ou vencido). Limite: 1..100 itens. Cota consumida apenas pelo que foi criado. idempotency_key (1..64 caracteres) permite replay: mesma chave e mesmo conteúdo devolve 201 com replayed: true e o resultado original, sem efeito novo. Mesma chave com conteúdo diferente devolve 409 idempotency_payload_mismatch. Segunda request com a mesma chave ainda em voo devolve 409 concurrent_operation. Item com payment_date é rejeitado (payment_date_not_allowed). Item com installments \u0026gt; 1 é rejeitado (installments_not_allowed). 422 com item inválido (invalid_items): devolve BatchResponseDTO com results completo, na ordem enviada; o item inválido traz code/http_status/message do erro da rota unitária e cada item válido traz status = error, code = not_created, http_status = 422 (série atômica, nada foi criado). 422 com envelope inválido (lista vazia, acima de 100 itens, idempotency_key fora de 1..64) devolve ErrorResponseDTO com error = invalid_envelope. 402 limit_exceeded quando a cota mensal não comporta os N itens (o campo error traz a métrica transactions_per_month). Nada é criado.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Documentação: Extat Plataforma\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.extat.com.br/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cernedigital-a8d2bb7b.mintlify.app/_mintlify/api/og/v2?division=Empresa\u0026amp;title=Create+multiple+transactions+in+a+single+atomic+operation.\u0026amp;description=Cria%C3%A7%C3%A3o+em+lote+%C3%A9+**at%C3%B4mica**%3A+ou+todos+os+N+itens+s%C3%A3o+criados%2C+ou+nenhum.%0ACada+item+segue+as+valida%C3%A7%C3%B5es+da+rota+POST+%2Ftransactions+unit%C3%A1ria+e+valida+a+pr%C3%B3pria+\u0026amp;theme=7f89d7de78580ebf411d3f87\u0026amp;signature=a71059b0e68b2c1883fb536713bcdbaf6e987009276daf1e8252f15b996c67a3\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create multiple transactions in a single atomic operation. - Documentação: Extat Plataforma\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Criação em lote é atômica: ou todos os N itens são criados, ou nenhum. Cada item segue as validações da rota POST /transactions unitária e valida a própria origem (conta ou cartão). Os lançamentos nascem não pagos; o status é derivado do vencimento como no POST unitário (a vencer, vence hoje ou vencido). Limite: 1..100 itens. Cota consumida apenas pelo que foi criado. idempotency_key (1..64 caracteres) permite replay: mesma chave e mesmo conteúdo devolve 201 com replayed: true e o resultado original, sem efeito novo. Mesma chave com conteúdo diferente devolve 409 idempotency_payload_mismatch. Segunda request com a mesma chave ainda em voo devolve 409 concurrent_operation. Item com payment_date é rejeitado (payment_date_not_allowed). Item com installments \u0026gt; 1 é rejeitado (installments_not_allowed). 422 com item inválido (invalid_items): devolve BatchResponseDTO com results completo, na ordem enviada; o item inválido traz code/http_status/message do erro da rota unitária e cada item válido traz status = error, code = not_created, http_status = 422 (série atômica, nada foi criado). 422 com envelope inválido (lista vazia, acima de 100 itens, idempotency_key fora de 1..64) devolve ErrorResponseDTO com error = invalid_envelope. 402 limit_exceeded quando a cota mensal não comporta os N itens (o campo error traz a métrica transactions_per_month). Nada é criado.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cernedigital-a8d2bb7b.mintlify.app/_mintlify/api/og/v2?division=Empresa\u0026amp;title=Create+multiple+transactions+in+a+single+atomic+operation.\u0026amp;description=Cria%C3%A7%C3%A3o+em+lote+%C3%A9+**at%C3%B4mica**%3A+ou+todos+os+N+itens+s%C3%A3o+criados%2C+ou+nenhum.%0ACada+item+segue+as+valida%C3%A7%C3%B5es+da+rota+POST+%2Ftransactions+unit%C3%A1ria+e+valida+a+pr%C3%B3pria+\u0026amp;theme=7f89d7de78580ebf411d3f87\u0026amp;signature=a71059b0e68b2c1883fb536713bcdbaf6e987009276daf1e8252f15b996c67a3\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/cernedigital-a8d2bb7b/Ssaks_NL8zZiTQxQ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Documentação: Extat Plataforma\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0042FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.extat.com.br/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.extat.com.br/#organization\",\"name\":\"Documentação: Extat Plataforma\",\"url\":\"https://docs.extat.com.br\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cernedigital-a8d2bb7b/zTLylPyKA_0uFGJA/logo/logo.svg?fit=max\u0026auto=format\u0026n=zTLylPyKA_0uFGJA\u0026q=85\u0026s=799a46f951443428d125941a4b0046e7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.extat.com.br#website\",\"name\":\"Documentação: Extat Plataforma\",\"url\":\"https://docs.extat.com.br\",\"publisher\":{\"@id\":\"https://docs.extat.com.br/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.extat.com.br/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation#webpage\",\"url\":\"https://docs.extat.com.br/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation\",\"name\":\"Create multiple transactions in a single atomic operation.\",\"description\":\"Criação em lote é atômica: ou todos os N itens são criados, ou nenhum. Cada item segue as validações da rota POST /transactions unitária e valida a própria origem (conta ou cartão). Os lançamentos nascem não pagos; o status é derivado do vencimento como no POST unitário (a vencer, vence hoje ou vencido). Limite: 1..100 itens. Cota consumida apenas pelo que foi criado. idempotency_key (1..64 caracteres) permite replay: mesma chave e mesmo conteúdo devolve 201 com replayed: true e o resultado original, sem efeito novo. Mesma chave com conteúdo diferente devolve 409 idempotency_payload_mismatch. Segunda request com a mesma chave ainda em voo devolve 409 concurrent_operation. Item com payment_date é rejeitado (payment_date_not_allowed). Item com installments > 1 é rejeitado (installments_not_allowed). 422 com item inválido (invalid_items): devolve BatchResponseDTO com results completo, na ordem enviada; o item inválido traz code/http_status/message do erro da rota unitária e cada item válido traz status = error, code = not_created, http_status = 422 (série atômica, nada foi criado). 422 com envelope inválido (lista vazia, acima de 100 itens, idempotency_key fora de 1..64) devolve ErrorResponseDTO com error = invalid_envelope. 402 limit_exceeded quando a cota mensal não comporta os N itens (o campo error traz a métrica transactions_per_month). Nada é criado.\",\"dateModified\":\"2026-10-15T00:54:16.097Z\",\"isPartOf\":{\"@id\":\"https://docs.extat.com.br#website\"},\"breadcrumb\":{\"@id\":\"https://docs.extat.com.br/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.extat.com.br/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Operações\",\"item\":\"https://docs.extat.com.br/api-reference/autentica%C3%A7%C3%A3o/confirma-a-valida%C3%A7%C3%A3o-de-e-mail-com-o-pin\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Empresa\",\"item\":\"https://docs.extat.com.br/api-reference/empresa/get-companies-list\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create multiple transactions in a single atomic operation.\",\"item\":\"https://docs.extat.com.br/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.extat.com.br/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation#apireference\",\"headline\":\"Create multiple transactions in a single atomic operation.\",\"name\":\"Create multiple transactions in a single atomic operation.\",\"description\":\"Criação em lote é atômica: ou todos os N itens são criados, ou nenhum. Cada item segue as validações da rota POST /transactions unitária e valida a própria origem (conta ou cartão). Os lançamentos nascem não pagos; o status é derivado do vencimento como no POST unitário (a vencer, vence hoje ou vencido). Limite: 1..100 itens. Cota consumida apenas pelo que foi criado. idempotency_key (1..64 caracteres) permite replay: mesma chave e mesmo conteúdo devolve 201 com replayed: true e o resultado original, sem efeito novo. Mesma chave com conteúdo diferente devolve 409 idempotency_payload_mismatch. Segunda request com a mesma chave ainda em voo devolve 409 concurrent_operation. Item com payment_date é rejeitado (payment_date_not_allowed). Item com installments > 1 é rejeitado (installments_not_allowed). 422 com item inválido (invalid_items): devolve BatchResponseDTO com results completo, na ordem enviada; o item inválido traz code/http_status/message do erro da rota unitária e cada item válido traz status = error, code = not_created, http_status = 422 (série atômica, nada foi criado). 422 com envelope inválido (lista vazia, acima de 100 itens, idempotency_key fora de 1..64) devolve ErrorResponseDTO com error = invalid_envelope. 402 limit_exceeded quando a cota mensal não comporta os N itens (o campo error traz a métrica transactions_per_month). Nada é criado.\",\"url\":\"https://docs.extat.com.br/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation\",\"mainEntityOfPage\":{\"@id\":\"https://docs.extat.com.br/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation#webpage\"},\"dateModified\":\"2026-10-15T00:54:16.097Z\",\"publisher\":{\"@id\":\"https://docs.extat.com.br/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.extat.com.br#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Documentação: Extat Plataforma\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Documentação: Extat Plataforma","nav":{"global":null,"tabs":[{"tab":"Plataforma","pages":[{"title":"Plataforma","href":""}]},{"tab":"Referência da API","groups":[{"group":"Começar","pages":[{"title":"Introdução à API","href":"/api/introduction"}]},{"group":"Operações","pages":[{"group":"Autenticação","pages":[{"title":"Confirma a validação de e-mail com o PIN","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /auth/email/confirmation","href":"/api-reference/autenticação/confirma-a-validação-de-e-mail-com-o-pin"},{"title":"Verifica se o e-mail já está registrado e envia PIN para validação","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /auth/email/validate","href":"/api-reference/autenticação/verifica-se-o-e-mail-já-está-registrado-e-envia-pin-para-validação"},{"title":"Criar link com token para redefinir senha","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /auth/reset-password","href":"/api-reference/autenticação/criar-link-com-token-para-redefinir-senha"},{"title":"Atualiza a senha do usuário com o novo valor","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /auth/reset-password/{id}","href":"/api-reference/autenticação/atualiza-a-senha-do-usuário-com-o-novo-valor"},{"title":"Gerar credenciais de acesso por e-mail e senha","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /auth/sign-in","href":"/api-reference/autenticação/gerar-credenciais-de-acesso-por-e-mail-e-senha"},{"title":"Validar credenciais de autenticação do Google","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /auth/sign-in/google","href":"/api-reference/autenticação/validar-credenciais-de-autenticação-do-google"},{"title":"Registrar novo cliente com dados pessoais e da empresa","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /auth/sign-up","href":"/api-reference/autenticação/registrar-novo-cliente-com-dados-pessoais-e-da-empresa"}]},{"group":"Contas Bancárias","pages":[{"title":"Get bank accounts list","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /bank-accounts","href":"/api-reference/contas-bancárias/get-bank-accounts-list"},{"title":"Create a new bank account in platform","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /bank-accounts","href":"/api-reference/contas-bancárias/create-a-new-bank-account-in-platform"},{"title":"Get bank account info","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /bank-accounts/{id}","href":"/api-reference/contas-bancárias/get-bank-account-info"},{"title":"Update a bank account data","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json put /bank-accounts/{id}","href":"/api-reference/contas-bancárias/update-a-bank-account-data"},{"title":"Delete a bank account register","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /bank-accounts/{id}","href":"/api-reference/contas-bancárias/delete-a-bank-account-register"}]},{"group":"Bancos","pages":[{"title":"Get bank list","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /banks","href":"/api-reference/bancos/get-bank-list"},{"title":"Create a new bank in platform","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /banks","href":"/api-reference/bancos/create-a-new-bank-in-platform"},{"title":"Get bank info","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /banks/{id}","href":"/api-reference/bancos/get-bank-info"},{"title":"Update a bank data","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json put /banks/{id}","href":"/api-reference/bancos/update-a-bank-data"},{"title":"Delete a bank register","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /banks/{id}","href":"/api-reference/bancos/delete-a-bank-register"}]},{"group":"Plano e Assinaturas","pages":[{"title":"Aplica crédito de goodwill no customer Stripe (admin)","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /billing/admin/goodwill-credit","href":"/api-reference/plano-e-assinaturas/aplica-crédito-de-goodwill-no-customer-stripe-admin"},{"title":"Histórico de faturas do usuário","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /billing/invoices","href":"/api-reference/plano-e-assinaturas/histórico-de-faturas-do-usuário"},{"title":"Lista planos ativos disponíveis para o usuário autenticado","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /billing/plans","href":"/api-reference/plano-e-assinaturas/lista-planos-ativos-disponíveis-para-o-usuário-autenticado"},{"title":"Cria um novo plano (admin de plataforma)","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /billing/plans","href":"/api-reference/plano-e-assinaturas/cria-um-novo-plano-admin-de-plataforma"},{"title":"Detalha um plano pelo ID","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /billing/plans/{id}","href":"/api-reference/plano-e-assinaturas/detalha-um-plano-pelo-id"},{"title":"Atualiza dados básicos de um plano (admin)","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json put /billing/plans/{id}","href":"/api-reference/plano-e-assinaturas/atualiza-dados-básicos-de-um-plano-admin"},{"title":"Desativa (soft delete) um plano (admin)","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /billing/plans/{id}","href":"/api-reference/plano-e-assinaturas/desativa-soft-delete-um-plano-admin"},{"title":"Adiciona opção de cobrança a um plano (admin)","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /billing/plans/{id}/prices","href":"/api-reference/plano-e-assinaturas/adiciona-opção-de-cobrança-a-um-plano-admin"},{"title":"Desativa uma opção de cobrança (admin)","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /billing/plans/{id}/prices/{priceId}","href":"/api-reference/plano-e-assinaturas/desativa-uma-opção-de-cobrança-admin"},{"title":"Solicita cancelamento da assinatura","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /billing/subscriptions/cancel","href":"/api-reference/plano-e-assinaturas/solicita-cancelamento-da-assinatura"},{"title":"Reverte cancelamento agendado (antes da efetivação)","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /billing/subscriptions/cancel","href":"/api-reference/plano-e-assinaturas/reverte-cancelamento-agendado-antes-da-efetivação"},{"title":"Inicia checkout do Stripe para um plano pago","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /billing/subscriptions/checkout","href":"/api-reference/plano-e-assinaturas/inicia-checkout-do-stripe-para-um-plano-pago"},{"title":"Agenda downgrade para o fim do ciclo atual","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /billing/subscriptions/downgrade","href":"/api-reference/plano-e-assinaturas/agenda-downgrade-para-o-fim-do-ciclo-atual"},{"title":"Cancela um downgrade previamente agendado","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /billing/subscriptions/downgrade","href":"/api-reference/plano-e-assinaturas/cancela-um-downgrade-previamente-agendado"},{"title":"Retorna a assinatura do usuário autenticado","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /billing/subscriptions/me","href":"/api-reference/plano-e-assinaturas/retorna-a-assinatura-do-usuário-autenticado"},{"title":"Gera URL de acesso ao Billing Portal do Stripe","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /billing/subscriptions/portal","href":"/api-reference/plano-e-assinaturas/gera-url-de-acesso-ao-billing-portal-do-stripe"},{"title":"Realiza upgrade imediato do plano com proration","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /billing/subscriptions/upgrade","href":"/api-reference/plano-e-assinaturas/realiza-upgrade-imediato-do-plano-com-proration"},{"title":"Retorna o consumo atual do usuário autenticado","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /billing/usage","href":"/api-reference/plano-e-assinaturas/retorna-o-consumo-atual-do-usuário-autenticado"},{"title":"Recebe e processa eventos do Stripe","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /billing/webhooks/stripe","href":"/api-reference/plano-e-assinaturas/recebe-e-processa-eventos-do-stripe"}]},{"group":"Empresa","pages":[{"title":"Get companies list","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies","href":"/api-reference/empresa/get-companies-list"},{"title":"Create a new company in platform","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies","href":"/api-reference/empresa/create-a-new-company-in-platform"},{"title":"Get company info","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/{id}","href":"/api-reference/empresa/get-company-info"},{"title":"Update a company data","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json put /companies/{id}","href":"/api-reference/empresa/update-a-company-data"},{"title":"Upload a company avatar","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/{id}/avatar","href":"/api-reference/empresa/upload-a-company-avatar"},{"title":"Create a new account in chart of accounts.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/coa","href":"/api-reference/empresa/create-a-new-account-in-chart-of-accounts"},{"title":"Show a chart of accounts by id.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/coa/{id}","href":"/api-reference/empresa/show-a-chart-of-accounts-by-id"},{"title":"Update account in chart of accounts.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json put /companies/coa/{id}","href":"/api-reference/empresa/update-account-in-chart-of-accounts"},{"title":"Delete chart of account.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /companies/coa/{id}","href":"/api-reference/empresa/delete-chart-of-account"},{"title":"List accounts by type.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/coa/{type}","href":"/api-reference/empresa/list-accounts-by-type"},{"title":"List accounts by type to select field.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/coa/list/{type}","href":"/api-reference/empresa/list-accounts-by-type-to-select-field"},{"title":"Lista cartões de crédito da empresa, paginados, com os KPIs de cada um.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/credit-card-accounts","href":"/api-reference/empresa/lista-cartões-de-crédito-da-empresa-paginados-com-os-kpis-de-cada-um"},{"title":"Cadastra um cartão de crédito, opcionalmente com dívida legada.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/credit-card-accounts","href":"/api-reference/empresa/cadastra-um-cartão-de-crédito-opcionalmente-com-dívida-legada"},{"title":"Detalha um cartão de crédito, com os três KPIs.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/credit-card-accounts/{id}","href":"/api-reference/empresa/detalha-um-cartão-de-crédito-com-os-três-kpis"},{"title":"Atualiza o cadastro de um cartão de crédito (substituição total).","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json put /companies/credit-card-accounts/{id}","href":"/api-reference/empresa/atualiza-o-cadastro-de-um-cartão-de-crédito-substituição-total"},{"title":"Inativa um cartão de crédito (soft delete).","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /companies/credit-card-accounts/{id}","href":"/api-reference/empresa/inativa-um-cartão-de-crédito-soft-delete"},{"title":"Lista as faturas de um cartão, da mais recente para a mais antiga.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/credit-card-accounts/{id}/invoices","href":"/api-reference/empresa/lista-as-faturas-de-um-cartão-da-mais-recente-para-a-mais-antiga"},{"title":"Detalha uma fatura de cartão de crédito com seus lançamentos.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/credit-card-invoices/{id}","href":"/api-reference/empresa/detalha-uma-fatura-de-cartão-de-crédito-com-seus-lançamentos"},{"title":"Paga uma fatura de cartão de crédito, total ou parcialmente.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/credit-card-invoices/{id}/pay","href":"/api-reference/empresa/paga-uma-fatura-de-cartão-de-crédito-total-ou-parcialmente"},{"title":"Desfaz um pagamento de fatura de cartão de crédito.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /companies/credit-card-invoices/{id}/payments/{paymentId}","href":"/api-reference/empresa/desfaz-um-pagamento-de-fatura-de-cartão-de-crédito"},{"title":"Get a paginated transactions list.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/transactions","href":"/api-reference/empresa/get-a-paginated-transactions-list"},{"title":"Create a new transaction.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/transactions","href":"/api-reference/empresa/create-a-new-transaction"},{"title":"Get a transaction by ID.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/transactions/{id}","href":"/api-reference/empresa/get-a-transaction-by-id"},{"title":"Update a transaction by ID.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json put /companies/transactions/{id}","href":"/api-reference/empresa/update-a-transaction-by-id"},{"title":"Delete a transaction by ID.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /companies/transactions/{id}","href":"/api-reference/empresa/delete-a-transaction-by-id"},{"title":"List the attachments of a transaction.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/transactions/{id}/attachments","href":"/api-reference/empresa/list-the-attachments-of-a-transaction"},{"title":"Upload an attachment to a transaction.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/transactions/{id}/attachments","href":"/api-reference/empresa/upload-an-attachment-to-a-transaction"},{"title":"Delete an attachment from a transaction.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /companies/transactions/{id}/attachments/{attachmentId}","href":"/api-reference/empresa/delete-an-attachment-from-a-transaction"},{"title":"Generate a temporary download URL for an attachment.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/transactions/{id}/attachments/{attachmentId}/url","href":"/api-reference/empresa/generate-a-temporary-download-url-for-an-attachment"},{"title":"Histórico de auditoria de um lançamento.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/transactions/{id}/audit-logs","href":"/api-reference/empresa/histórico-de-auditoria-de-um-lançamento"},{"title":"Pay a transaction by ID.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/transactions/{id}/pay","href":"/api-reference/empresa/pay-a-transaction-by-id"},{"title":"Estorna um pagamento de lançamento de conta bancária.","description":"F1: grava a operação inversa no extrato da conta QUE RECEBEU o pagamento (não a conta atual do lançamento), com data de hoje, e devolve o saldo dessa conta ao valor anterior. O pagamento não é apagado: ganha uma linha `kind=reversal` que o referencia, e o restante dele vai a 0. Estorna o restante (o pagamento inteiro, ou o que sobrou depois de uma redução de valor). O status é recalculado (pago parcial, ou pelo vencimento). `reason` é obrigatório e fica na auditoria. Operação atômica.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/transactions/{id}/payments/{paymentId}/reverse","href":"/api-reference/empresa/estorna-um-pagamento-de-lançamento-de-conta-bancária"},{"title":"Create multiple transactions in a single atomic operation.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/transactions/batch","href":"/api-reference/empresa/create-multiple-transactions-in-a-single-atomic-operation"},{"title":"Apply changes to multiple transactions independently.","description":"Edição em lote é **parcial**: cada item é processado independentemente e o mesmo conjunto de alterações é aplicado a todos os ids.\nA resposta é sempre 200 quando o envelope é válido; o resultado é reportado por item em `results`.\nSomente campos não-nil em `changes` são alterados. Não permite alterar `status` (derivado) nem `payment_date` (pagamento é por /pay).\nItem com efeito financeiro (valor, conta ou tipo em lançamento pago) exige `reason`; sem ele o item falha com `reason_required` e permanece intacto.\nItem de outra empresa falha com 404 naquele item sem expor dados.\nItem não tentado por prazo do lote esgotado ou cancelamento falha com `not_processed` (503).\nEnvelope inválido devolve 422 `ErrorResponseDTO` sem processar nada: `invalid_envelope` (ids vazio, acima de 100, ou `changes` sem nenhum campo), `invalid_id` (UUID inválido) ou `duplicate_ids` (ids repetidos). Limite: 1..100 ids.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json patch /companies/transactions/batch","href":"/api-reference/empresa/apply-changes-to-multiple-transactions-independently"},{"title":"Delete multiple transactions independently.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/transactions/batch-delete","href":"/api-reference/empresa/delete-multiple-transactions-independently"},{"title":"Import a processed csv with list of transactions.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/transactions/import/{key}","href":"/api-reference/empresa/import-a-processed-csv-with-list-of-transactions"},{"title":"Process a csv with list of transactions.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/transactions/process","href":"/api-reference/empresa/process-a-csv-with-list-of-transactions"},{"title":"List account transfers of the company, paginated.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/transfers","href":"/api-reference/empresa/list-account-transfers-of-the-company-paginated"},{"title":"Create a transfer between two bank accounts of the same company.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/transfers","href":"/api-reference/empresa/create-a-transfer-between-two-bank-accounts-of-the-same-company"},{"title":"Get an account transfer by ID.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /companies/transfers/{id}","href":"/api-reference/empresa/get-an-account-transfer-by-id"},{"title":"Reverse and delete an account transfer.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /companies/transfers/{id}","href":"/api-reference/empresa/reverse-and-delete-an-account-transfer"},{"title":"Update the reference/more_infos of an account transfer.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json patch /companies/transfers/{id}","href":"/api-reference/empresa/update-the-referencemore_infos-of-an-account-transfer"}]},{"group":"Painel","pages":[{"title":"Generate cash flow data","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/dashboards/cash-flow","href":"/api-reference/painel/generate-cash-flow-data"},{"title":"Indicador de dívida de cartão de crédito para o dashboard.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/dashboards/credit-card-debt","href":"/api-reference/painel/indicador-de-dívida-de-cartão-de-crédito-para-o-dashboard"},{"title":"Generate Insights data","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/dashboards/insights","href":"/api-reference/painel/generate-insights-data"}]},{"group":"Demonstrativos","pages":[{"title":"Gera Demonstração de Fluxo de Caixa (DFC)","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/demonstrative/dfc","href":"/api-reference/demonstrativos/gera-demonstração-de-fluxo-de-caixa-dfc"},{"title":"Gera Demonstração do Resultado do Exercício (DRE)","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /companies/demonstrative/dre","href":"/api-reference/demonstrativos/gera-demonstração-do-resultado-do-exercício-dre"}]},{"group":"Centros de Custo","pages":[{"title":"Get cost centers list","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /cost-centers","href":"/api-reference/centros-de-custo/get-cost-centers-list"},{"title":"Create a new cost center","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /cost-centers","href":"/api-reference/centros-de-custo/create-a-new-cost-center"},{"title":"Get cost center info","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /cost-centers/{id}","href":"/api-reference/centros-de-custo/get-cost-center-info"},{"title":"Update a cost center data","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json put /cost-centers/{id}","href":"/api-reference/centros-de-custo/update-a-cost-center-data"},{"title":"Delete a cost center register","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /cost-centers/{id}","href":"/api-reference/centros-de-custo/delete-a-cost-center-register"}]},{"group":"DangerZone","pages":[{"title":"Estado da Zona crítica","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /danger-zone","href":"/api-reference/dangerzone/estado-da-zona-crítica"},{"title":"Apagar todas as transações da empresa","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /danger-zone/transactions/wipe","href":"/api-reference/dangerzone/apagar-todas-as-transações-da-empresa"}]},{"group":"Saúde","pages":[{"title":"Show the status of server.","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /health","href":"/api-reference/saúde/show-the-status-of-server"}]},{"group":"Convites","pages":[{"title":"Criar convite para membro da empresa","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /invitations","href":"/api-reference/convites/criar-convite-para-membro-da-empresa"},{"title":"Validar token de convite","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /invitations/{token}","href":"/api-reference/convites/validar-token-de-convite"},{"title":"Aceitar convite de membro","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /invitations/accept","href":"/api-reference/convites/aceitar-convite-de-membro"}]},{"group":"Membros","pages":[{"title":"Listar membros da empresa","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /members","href":"/api-reference/membros/listar-membros-da-empresa"},{"title":"Obter dados de um membro","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /members/{id}","href":"/api-reference/membros/obter-dados-de-um-membro"},{"title":"Excluir vínculo de membro com a empresa","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /members/{id}","href":"/api-reference/membros/excluir-vínculo-de-membro-com-a-empresa"},{"title":"Atualizar dados de um membro","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json put /members/{user_id}","href":"/api-reference/membros/atualizar-dados-de-um-membro"}]},{"group":"Fornecedores","pages":[{"title":"Get suppliers list","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /suppliers","href":"/api-reference/fornecedores/get-suppliers-list"},{"title":"Create a new supplier in platform","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /suppliers","href":"/api-reference/fornecedores/create-a-new-supplier-in-platform"},{"title":"Get supplier info","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /suppliers/{id}","href":"/api-reference/fornecedores/get-supplier-info"},{"title":"Update a supplier data","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json put /suppliers/{id}","href":"/api-reference/fornecedores/update-a-supplier-data"},{"title":"Delete a supplier register","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json delete /suppliers/{id}","href":"/api-reference/fornecedores/delete-a-supplier-register"}]},{"group":"Onboarding","pages":[{"title":"Get user onboarding progress","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /users/onboarding","href":"/api-reference/onboarding/get-user-onboarding-progress"},{"title":"Register a user onboarding step as completed","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /users/onboarding","href":"/api-reference/onboarding/register-a-user-onboarding-step-as-completed"}]},{"group":"Usuário","pages":[{"title":"Get current user info","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json get /users/profile","href":"/api-reference/usuário/get-current-user-info"},{"title":"Update a profile infos data","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json put /users/profile","href":"/api-reference/usuário/update-a-profile-infos-data"},{"title":"Upload a user avatar","deprecated":null,"version":null,"openapi":"/openapi/extat-openapi.json post /users/profile/avatar","href":"/api-reference/usuário/upload-a-user-avatar"}]}]}]}]},"basePath":"","title":"Create multiple transactions in a single atomic operation. - Documentação: Extat Plataforma","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-Bevw23-4.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}