---
title: "Create forecasted transaction batch"
method: POST
path: "/analytics/v2beta/forecasted-transaction-batches"
tags: ["Forecasted Transactions"]
---

# Create forecasted transaction batch

`POST /analytics/v2beta/forecasted-transaction-batches`

## Request

- Base URL: `https://api.atlar.com`
- URL: `https://api.atlar.com/analytics/v2beta/forecasted-transaction-batches`
- Auth: HTTP basic
- TypeScript: <https://skmtc.dev/atlar/apis/atlar-api-v2/docs/analytics/v2beta/forecasted-transaction-batches/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a batch of forecasted transactions. A batch may contain at most 15000 records; requests exceeding this limit are rejected.

## Request body

- CreateForecastedTransactionBatchRequest
  - `requests` CreateForecastedTransactionRequest[], required
    - `parent` union, required
      - ForecastedTransactionAccountRef
        - `id` string, required: Unique resource identifier.
        - `type` 'ACCOUNT' | 'ENTITY', required
      - ForecastedTransactionEntityRef
        - `id` string, required: Unique resource identifier.
        - `type` 'ACCOUNT' | 'ENTITY', required
    - `amount` union, required
      - AmountIntegerValueInput
        - `currency` string, required: Three-letter ISO 4217 currency code.
        - `value` integer, required: The amount value as an integer (int64) represented in currency minor units (e.g. 15.02 EUR is represented as the value 1502).
      - AmountStringValueInput
        - `currency` string, required: Three-letter ISO 4217 currency code.
        - `stringValue` string, required: A string representation of the amount value, which will be a decimal number if the currency has decimals. The number is not formatted for display purposes (e.g. with thousand separator) and always contains the dot `.` character as decimal separator.
    - `date` string, date, required: `full-date` notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), for example, `2017-07-21`.
    - `description` string, required
    - `origin` ForecastedTransactionOrigin: The origin of this forecasted transaction, e.g. manual user input or AP/AR data.
      - `id` string, required: Unique resource identifier.
      - `type` 'USER' | 'ACCOUNTS_RECEIVABLE' | 'ACCOUNTS_PAYABLE' | 'GENERATED' | 'ACCOUNTING_DOCUMENT', required
    - `counterparty` CounterpartyDetails
      - `partyType` 'INDIVIDUAL' | 'COMPANY': The legal type of the counterparty.
      - `name` string: Name of the counterparty.
      - `nationalIdentifier` NationalIdentifier
        - `type` 'CIVIC' | 'COMPANY', required: Type of the national identifier.
        - `market` string, required: Two-letter ISO 3166-1 alpha2 country code.
        - `number` string, required: The identifier itself.
      - `address` object: Address details of the counterparty.
        - `country` string: Two-letter ISO 3166-1 alpha2 country code.
        - `countrySubdivision` string: Country subdivision code (second part of the ISO 3166-2 code). E.g. state code `CA` for the state of California in the USA, `ON` for the province of Ontario in Canada, `NSW` for the state of New South Wales in Australia. ISO 3166-2 codes can be found on the ISO website, for example, for the USA: https://www.iso.org/obp/ui/#iso:code:3166:US. In the USA the state code is required for domestic payments, in Canada the province code is required for domestic payments.
        - `city` string
        - `postalCode` string
        - `streetName` string
        - `streetNumber` string
        - `rawAddressLines` string[]: International unstructured address lines, as they might appear on a mailing label.
      - `account` CounterpartyAccount: Account information about the counterparty in the transaction.
        - `market` string: Two-letter ISO 3166-1 alpha2 country code.
        - `identifiers` AccountIdentifier[], required
          - `type` 'IBAN' | 'NUMBER' | 'ADYEN' | 'AU_BPAY_BILLER_CODE' | 'DK_FIK' | 'INVESTMENT_NUMBER' | 'MY_JOMPAY_BILLER_CODE' | 'NATIONAL_ID_NUMBER' | 'PAYPAL' | 'PROPRIETARY' | 'SE_BANKGIRO' | 'SE_PLUSGIRO' | 'SOLDO' | 'WALLET_ADYEN_BALANCE_PLATFORM' | 'WALLET_AIRWALLEX' | 'WALLET_AIRWALLEX_NUMBER' | 'WALLET_CURRENCYCLOUD' | 'WALLET_FLASH_PAYMENTS' | 'WALLET_FREEMARKET' | 'WALLET_HYPERWALLET' | 'WALLET_INPAY' | 'WALLET_LEAD' | 'WALLET_MERCURY' | 'WALLET_MONEYCORP' | 'WALLET_PAYHAWK' | 'WALLET_REVOLUT' | 'WALLET_SKRILL' | 'WALLET_STRIPE' | 'WALLET_SWISSQUOTE' | 'WALLET_UNIT', required: Account Identifier type. Choose among: <ul> <li><code>IBAN</code> — IBAN</li> <li><code>NUMBER</code> — Account number</li> <li><code>ADYEN</code> — Adyen identifier</li> <li><code>AU_BPAY_BILLER_CODE</code> — Australian BPAY Biller Code</li> <li><code>DK_FIK</code> — FIK creditor number</li> <li><code>INVESTMENT_NUMBER</code> — Investment number</li> <li><code>MY_JOMPAY_BILLER_CODE</code> — Malaysian JomPAY Biller Code</li> <li><code>NATIONAL_ID_NUMBER</code> — National Identification Number</li> <li><code>PAYPAL</code> — PayPal wallet identifier</li> <li><code>PROPRIETARY</code> — Proprietary identifier</li> <li><code>SE_BANKGIRO</code> — <a href="https://www.bankgirot.se/en/">Bankgiro number</a></li> <li><code>SE_PLUSGIRO</code> — <a href="https://www.nordea.se/foretag/produkter/betala/plusgirot.html">Plusgiro number</a></li> <li><code>SOLDO</code> — Soldo entity identifier</li> <li><code>WALLET_ADYEN_BALANCE_PLATFORM</code> — Adyen balance platform wallet identifier</li> <li><code>WALLET_AIRWALLEX</code> — Airwallex wallet identifier</li> <li><code>WALLET_AIRWALLEX_NUMBER</code> — Airwallex account number</li> <li><code>WALLET_CURRENCYCLOUD</code> — Currencycloud wallet identifier</li> <li><code>WALLET_FLASH_PAYMENTS</code> — Flash Payments wallet identifier</li> <li><code>WALLET_FREEMARKET</code> — Freemarket wallet identifier</li> <li><code>WALLET_HYPERWALLET</code> — Hyperwallet wallet identifier</li> <li><code>WALLET_INPAY</code> — Inpay account identifier</li> <li><code>WALLET_LEAD</code> — Lead wallet identifier</li> <li><code>WALLET_MERCURY</code> — Mercury wallet identifier</li> <li><code>WALLET_MONEYCORP</code> — Moneycorp wallet identifier</li> <li><code>WALLET_PAYHAWK</code> — Payhawk wallet identifier</li> <li><code>WALLET_REVOLUT</code> — Revolut wallet identifier</li> <li><code>WALLET_SKRILL</code> — Skrill wallet identifier</li> <li><code>WALLET_STRIPE</code> — Stripe wallet identifier</li> <li><code>WALLET_SWISSQUOTE</code> — Swissquote wallet identifier</li> <li><code>WALLET_UNIT</code> — Unit wallet identifier</li> </ul> For further information please refer to <a href="https://docs.atlar.com/v2.0/docs/payment-details#account-identifiers">Account Identifiers</a>
          - `market` string, required: Two-letter ISO 3166-1 alpha2 country code.
          - `number` string, required: The unformatted identifier itself. For type `NUMBER` the structure of the account number is country-specific.
          - `invalid` boolean: Will be `true` if the account identifier is invalid according to Atlar account identifier validation rules.
        - `routing` RoutingIdentifier[]
          - `type` 'BIC' | 'AT_BLZ' | 'AU_BSB' | 'BD_BRN' | 'BR_BRANCH' | 'BR_COMPE' | 'BR_ISP' | 'CA_CPA' | 'CH_BCC' | 'CH_SIC' | 'CL_SBIF' | 'CN_APS' | 'CZ_NBC' | 'DE_BLZ' | 'ES_NCC' | 'GB_DSC' | 'GR_BIC' | 'HK_NCC' | 'IE_NCC' | 'IL_NCC' | 'IN_FSC' | 'IT_NCC' | 'JP_ZGN' | 'KR_BOK' | 'KR_KFTC' | 'MX_ABM' | 'MY_NCC' | 'NZ_NCC' | 'PH_BRSTN' | 'PL_KNR' | 'PT_NCC' | 'RU_CBC' | 'SE_SBA' | 'SG_IBG' | 'TH_CBC' | 'TW_NCC' | 'US_ABA' | 'US_PID' | 'VN_CITAD' | 'ZA_NCC', required: A routing identifier of type `BIC` must be provided to support cross-border/SWIFT payments.
          - `number` string, required: The form of the routing number depends on `type`. E.g. for `BIC` the value should be an 8 or 11 character BIC/SWIFT code. For `GB_DSC` (UK domestic routing) the value should be a six digit sort code.
          - `invalid` boolean: Will be `true` if the routing identifier is invalid according to Atlar validation rules.
          - `constraints` RoutingConstraints: Constraints on a `RoutingIdentifier`.
            - `accountNumberType` 'IBAN' | 'NUMBER' | 'ADYEN' | 'AU_BPAY_BILLER_CODE' | 'DK_FIK' | 'INVESTMENT_NUMBER' | 'MY_JOMPAY_BILLER_CODE' | 'NATIONAL_ID_NUMBER' | 'PAYPAL' | 'PROPRIETARY' | 'SE_BANKGIRO' | 'SE_PLUSGIRO' | 'SOLDO' | 'WALLET_ADYEN_BALANCE_PLATFORM' | 'WALLET_AIRWALLEX' | 'WALLET_AIRWALLEX_NUMBER' | 'WALLET_CURRENCYCLOUD' | 'WALLET_FLASH_PAYMENTS' | 'WALLET_FREEMARKET' | 'WALLET_HYPERWALLET' | 'WALLET_INPAY' | 'WALLET_LEAD' | 'WALLET_MERCURY' | 'WALLET_MONEYCORP' | 'WALLET_PAYHAWK' | 'WALLET_REVOLUT' | 'WALLET_SKRILL' | 'WALLET_STRIPE' | 'WALLET_SWISSQUOTE' | 'WALLET_UNIT': Account Identifier type. Choose among: <ul> <li><code>IBAN</code> — IBAN</li> <li><code>NUMBER</code> — Account number</li> <li><code>ADYEN</code> — Adyen identifier</li> <li><code>AU_BPAY_BILLER_CODE</code> — Australian BPAY Biller Code</li> <li><code>DK_FIK</code> — FIK creditor number</li> <li><code>INVESTMENT_NUMBER</code> — Investment number</li> <li><code>MY_JOMPAY_BILLER_CODE</code> — Malaysian JomPAY Biller Code</li> <li><code>NATIONAL_ID_NUMBER</code> — National Identification Number</li> <li><code>PAYPAL</code> — PayPal wallet identifier</li> <li><code>PROPRIETARY</code> — Proprietary identifier</li> <li><code>SE_BANKGIRO</code> — <a href="https://www.bankgirot.se/en/">Bankgiro number</a></li> <li><code>SE_PLUSGIRO</code> — <a href="https://www.nordea.se/foretag/produkter/betala/plusgirot.html">Plusgiro number</a></li> <li><code>SOLDO</code> — Soldo entity identifier</li> <li><code>WALLET_ADYEN_BALANCE_PLATFORM</code> — Adyen balance platform wallet identifier</li> <li><code>WALLET_AIRWALLEX</code> — Airwallex wallet identifier</li> <li><code>WALLET_AIRWALLEX_NUMBER</code> — Airwallex account number</li> <li><code>WALLET_CURRENCYCLOUD</code> — Currencycloud wallet identifier</li> <li><code>WALLET_FLASH_PAYMENTS</code> — Flash Payments wallet identifier</li> <li><code>WALLET_FREEMARKET</code> — Freemarket wallet identifier</li> <li><code>WALLET_HYPERWALLET</code> — Hyperwallet wallet identifier</li> <li><code>WALLET_INPAY</code> — Inpay account identifier</li> <li><code>WALLET_LEAD</code> — Lead wallet identifier</li> <li><code>WALLET_MERCURY</code> — Mercury wallet identifier</li> <li><code>WALLET_MONEYCORP</code> — Moneycorp wallet identifier</li> <li><code>WALLET_PAYHAWK</code> — Payhawk wallet identifier</li> <li><code>WALLET_REVOLUT</code> — Revolut wallet identifier</li> <li><code>WALLET_SKRILL</code> — Skrill wallet identifier</li> <li><code>WALLET_STRIPE</code> — Stripe wallet identifier</li> <li><code>WALLET_SWISSQUOTE</code> — Swissquote wallet identifier</li> <li><code>WALLET_UNIT</code> — Unit wallet identifier</li> </ul> For further information please refer to <a href="https://docs.atlar.com/v2.0/docs/payment-details#account-identifiers">Account Identifiers</a>
            - `scheme` string
        - `rawIdentifier` string, required
    - `metadata` Metadata, nullable: Metadata is a `string-string` key-value container that can be used to store information known at the time of resource creation. This can be retrieved later on, for instance when a payment or expected transaction is reconciled with the booked transaction on the bank statement. Metadata can have at most 20 entries. Keys may have a maximum length of 64 chars and values a maximum length of 512 chars. By default, this field is optional. It is possible to make it required in the Atlar Dashboard by visiting the [Metadata keys page](https://app.atlar.com/metadata-keys). Requirement rules can be specified per API resource. Both the Dashboard and the API will then enforce these rules and give validation errors when the required fields are not set.
    - `externalId` string: External ID is optional to use, but if used, the Atlar platform will persist it, index it, as well as require it to be unique across all resources. It is possible to retrieve a resource using the external ID using the prefix `external:`.
  - `externalId` string: External ID is optional to use, but if used, the Atlar platform will persist it, index it, as well as require it to be unique across all resources. It is possible to retrieve a resource using the external ID using the prefix `external:`.
  - `metadata` Metadata, nullable: Metadata is a `string-string` key-value container that can be used to store information known at the time of resource creation. This can be retrieved later on, for instance when a payment or expected transaction is reconciled with the booked transaction on the bank statement. Metadata can have at most 20 entries. Keys may have a maximum length of 64 chars and values a maximum length of 512 chars. By default, this field is optional. It is possible to make it required in the Atlar Dashboard by visiting the [Metadata keys page](https://app.atlar.com/metadata-keys). Requirement rules can be specified per API resource. Both the Dashboard and the API will then enforce these rules and give validation errors when the required fields are not set.

## Response `201`

The created forecasted transaction batch.

- ForecastedTransactionBatch
  - `id` string, required: Unique resource identifier.
  - `organizationId` string, required: Unique resource identifier for an Organization.
  - `inputContent` BatchInputContent, required: Metadata describing the input contents that was used to create this batch.
    - `contentType` string, required
    - `recordCount` integer, required: Total count of input records (resources) in the input batch.
    - `size` integer, required: The size of the input content in bytes. If the batch was created by uploading a file using `multipart/form-data` the `contentSize` will be the file size. If the batch was created with JSON input this will be the raw JSON size.
    - `checksum` string, required: A checksum of the batch input contents. The checksum digest value will be prefixed by an identifier of the hash algorithm used, e.g. `sha256`. A colon `:` is used as separator between the algorithm identifier and the digest value.
    - `filename` string: The name of the file that was used as input to create the batch. Filename will only available if the batch input was provided using `multipart/form-data`.
  - `inputDetails` ForecastedTransactionBatchDetails, required: Details summarizing the contents of the batch.
    - `sums` Amount[], required: The total amount sum per each currency of resources in this batch. Note that batch amount sums reported on the batch input metadata refer to the total amount sums of the input records (resources) while the batch amount sums reported on the batch result refer to the total amount sums of the successfully processed records (resources). This means that there may be a difference in the total sum for the input vs the result, due to skipped records (resources).
      - `currency` string, required: Three-letter ISO 4217 currency code.
      - `stringValue` string, required: A string representation of the amount value. This will be a decimal number if the currency has decimals. The number is not formatted for display purposes (e.g. with locale specific thousand separator) and always contains the dot `.` character as decimal separator.
      - `value` integer, required: The amount value as an integer (int64) represented in currency minor units (e.g. 15.02 EUR is represented as the value 1502).
  - `resultSummary` BatchResultSummary: Aggregate summary of batch processing results.
    - `total` integer, required: Number of input records that were attempted to be processed.
    - `succeeded` integer, required: Number of input records that resulted in a successfully created resource.
    - `failed` integer, required: Number of failed records.
    - `skipped` integer, required: Number of input records that were skipped.
  - `resultDetails` ForecastedTransactionBatchDetails: Details summarizing the contents of the batch.
    - `sums` Amount[], required: The total amount sum per each currency of resources in this batch. Note that batch amount sums reported on the batch input metadata refer to the total amount sums of the input records (resources) while the batch amount sums reported on the batch result refer to the total amount sums of the successfully processed records (resources). This means that there may be a difference in the total sum for the input vs the result, due to skipped records (resources).
      - `currency` string, required: Three-letter ISO 4217 currency code.
      - `stringValue` string, required: A string representation of the amount value. This will be a decimal number if the currency has decimals. The number is not formatted for display purposes (e.g. with locale specific thousand separator) and always contains the dot `.` character as decimal separator.
      - `value` integer, required: The amount value as an integer (int64) represented in currency minor units (e.g. 15.02 EUR is represented as the value 1502).
  - `status` 'CREATED' | 'PROCESSING_STARTED' | 'COMPLETED', required: The status of this batch. The status only refers to the processing of the input, not the processing or success of the resources themselves. `COMPLETED` is the only end-state. Failure is indicated by a non-empty list of `errors`.
  - `errors` ErrorDetails[]: A list of error details if the batch failed. Only populated once the batch has reached status `COMPLETED`. Only the first 255 errors (if any) will be present in this list. If there are more errors, the complete list can be retrieved using the results endpoint for the batch.
    - `code` string: An error code for this error. Not always present.
    - `error` string: A description of this specific error.
    - `field` string: The field which has an error. This only set if the error has to do with a specific field, such as for validation errors. Nested fields are concatenated with `.`, as well as indexed fields in lists.
    - `metadata` object: Optional machine-readable data about the error. What it contains typically depends on `code`. At most 16 entries and 1 KiB in total (keys and values), keys up to 64 chars and values up to 256.
  - `externalId` string: External ID is optional to use, but if used, the Atlar platform will persist it, index it, as well as require it to be unique across all resources. It is possible to retrieve a resource using the external ID using the prefix `external:`.
  - `metadata` Metadata, nullable: Metadata is a `string-string` key-value container that can be used to store information known at the time of resource creation. This can be retrieved later on, for instance when a payment or expected transaction is reconciled with the booked transaction on the bank statement. Metadata can have at most 20 entries. Keys may have a maximum length of 64 chars and values a maximum length of 512 chars. By default, this field is optional. It is possible to make it required in the Atlar Dashboard by visiting the [Metadata keys page](https://app.atlar.com/metadata-keys). Requirement rules can be specified per API resource. Both the Dashboard and the API will then enforce these rules and give validation errors when the required fields are not set.
  - `creatorUserId` string, required: Unique resource identifier.
  - `creatorRoleId` string, required: Unique resource identifier.
  - `etag` string, required: [ETag](https://en.wikipedia.org/wiki/HTTP_ETag) based on the resource version. This can be passed along in `If-Match` HTTP header when updating a resource to perform a conditional update.
  - `version` integer, required: Resource version. Starts at value `1` when the resource is created and increases by one for each successive update.
  - `created` string, date-time, required: Time at which the resource was created.
  - `updated` string, date-time, required: Time at which the resource was last updated.

## Other responses

- `400`: Bad request.

## Changes

- **2026-11-03** `b49df1e4b3e9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/atlar/apis/atlar-api-v2/changes/analytics/v2beta/forecasted-transaction-batches/post.md)

---

[API](https://skmtc.dev/atlar/apis/atlar-api-v2.md) - [All operations](https://skmtc.dev/atlar/apis/atlar-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/atlar/apis/atlar-api-v2/revisions/b49df1e4b3e9?raw)
