> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mangopay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a Transactions Report

> Generate a legacy Transactions Report

<Note>
  **Note – Report expiration date**

  A report expires after 24 hours (i.e., you can no longer download it after this period). You can still generate a new report with the same filters and information easily.
</Note>

<Note>
  **Note – `BeforeDate` value restriction**

  To ensure that data provided on each report are up-to-date, the `BeforeDate` parameter cannot be greater than the report creation date minus 5 minutes.
  If it is, `BeforeDate` will be automatically set according to this constraint.
</Note>

### Body parameters

<ParamField body="Tag" type="string">
  Max. length: 255 characters

  Custom data that you can add to this object.

  For reports, this parameter can be useful to give the report a name.
</ParamField>

<ParamField body="DownloadFormat" type="string">
  **Possible values:** `CSV`

  The format of the report file.
</ParamField>

<ParamField body="CallbackURL" type="string">
  Max. length: 255 characters

  The URL to which the notification indicating that the report is ready to be downloaded will be sent.
</ParamField>

<ParamField body="Sort" type="string">
  **Possible values:** `CreationDate:ASC`, `CreationDate:DESC`

  **Default value**: `CreationDate:ASC`

  The sort direction based on transaction creation date.
</ParamField>

<ParamField body="Preview" type="boolean">
  Whether the report is limited to the first 10 lines (and therefore quicker to generate).
</ParamField>

<ParamField body="Filters" type="object">
  The filtering parameters to optimize the report.

  <Expandable title="properties">
    <ParamField body="BeforeDate" type="Unix timestamp">
      **Allowed values:** Any date between today’s date and 36 months in the past.

      The date before which the transaction was created (based on the transaction’s `CreationDate` parameter).

      **Caution:** The time range between the `BeforeDate` and the `AfterDate` cannot exceed 6 months.
    </ParamField>

    <ParamField body="AfterDate" type="Unix timestamp">
      The date after which the transaction was created (based on the transaction’s `CreationDate` parameter).\
      Caution: The time range between the `BeforeDate` and the `AfterDate` cannot exceed 6 months.
    </ParamField>

    <ParamField body="Type" type="array">
      **Allowed values:** `PAYIN`, `TRANSFER`, `CONVERSION`, `PAYOUT`

      The transaction types to be taken into account.
    </ParamField>

    <ParamField body="ResultCode" type="array">
      The transaction result codes to be taken into account.
    </ParamField>

    <ParamField body="Status" type="array">
      The transaction statuses to be taken into account.
    </ParamField>

    <ParamField body="Nature" type="array">
      **Allowed values:** `REGULAR`, `REPUDIATION`, `REFUND`, `SETTLEMENT`

      The transaction natures to be taken into account.

      * REGULAR – Relative to most of the transactions (pay-ins, payouts, and transfers) in a usual workflow.
      * REPUDIATION – Automatic withdrawal of funds from the platform’s repudiation wallet as part of the dispute process (when the user has requested a chargeback).
      * REFUND – Reimbursement of a transaction to the user (pay-in refund), to a wallet (transfer refund), or of a payout (payout refund, only initiated by Mangopay).
      * SETTLEMENT – Transfer made to the repudiation wallet by the platform to settle a lost dispute.
    </ParamField>

    <ParamField body="WalletId" type="string">
      The unique identifier of the wallet that is to be taken into account.
    </ParamField>

    <ParamField body="AuthorId" type="string">
      The unique identifier of the user at the source of the transaction.
    </ParamField>

    <ParamField body="MinDebitedFundsAmount" type="integer">
      The debited funds amount above which the transactions are taken into account.
    </ParamField>

    <ParamField body="MinDebitedFundsCurrency" type="string">
      **Allowed values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

      The currency of the `MinDebitedFundsAmount` value.
    </ParamField>

    <ParamField body="MaxDebitedFundsAmount" type="integer">
      The debited funds amount below which the transactions are taken into account.
    </ParamField>

    <ParamField body="MaxDebitedFundsCurrency" type="string">
      **Allowed values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

      The currency of the `MaxDebitedFundsAmount` value.
    </ParamField>

    <ParamField body="MinFeesAmount" type="integer">
      The fees amount below which the transactions are taken into account.
    </ParamField>

    <ParamField body="MinFeesCurrency" type="string">
      **Allowed values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

      The currency of the `MinFeesAmount` value.
    </ParamField>

    <ParamField body="MaxFeesAmount" type="integer">
      The fees amount above which the transactions are taken into account.
    </ParamField>

    <ParamField body="MaxFeesCurrency" type="string">
      **Allowed values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

      The currency of the `MaxFeesAmount` value.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="Columns" type="array">
  **Allowed values:** The `Columns` listed in the <a href="/reports">Reports</a> article, which differ according to the report type.

  The information to be included in the report.
</ParamField>

### Responses

<AccordionGroup>
  <Accordion title="200">
    <ResponseField name="Id" type="string">
      Max length: 128 characters (see [data formats](/api-reference/overview/data-formats) for details)

      The unique identifier of the object.
    </ResponseField>

    <ResponseField name="CreationDate" type="Unix timestamp">
      The date and time at which the object was created.
    </ResponseField>

    <ResponseField name="Tag" type="string">
      Max. length: 255 characters

      Custom data that you can add to this object.

      For reports, this parameter can be useful to give the report a name.
    </ResponseField>

    <ResponseField name="ReportDate" type="Unix timestamp | null">
      The date and time at which the report was generated.
    </ResponseField>

    <ResponseField name="Status" type="string">
      **Returned values:** `PENDING`, `READY_FOR_DOWNLOAD`, `FAILED`, `EXPIRED`

      The status of the report:

      * `PENDING` – The report is being generated.
      * `READY_FOR_DOWNLOAD` – The report has been created, and can be downloaded.
      * `FAILED` – The report cannot be generated.
      * `EXPIRED` – The report was created, but is no longer available for download (it can be re-run to be downloaded again with fresh data).
    </ResponseField>

    <ResponseField name="DownloadFormat" type="string">
      **Returned values:** `CSV`

      The format in which the report is going to be downloaded.
    </ResponseField>

    <ResponseField name="DownloadURL" type="string | null">
      The URL at which the report file can be downloaded when the `Status` is `GENERATED`.
    </ResponseField>

    <ResponseField name="CallbackURL" type="string">
      Max. length: 255 characters

      The URL to which the notification indicating that the report is ready to be downloaded will be sent.
    </ResponseField>

    <ResponseField name="ReportType" type="string">
      The type of the report, indicating whether it lists transactions or wallets.
    </ResponseField>

    <ResponseField name="Sort" type="string">
      The sorting direction of the CreationDate column. By default, the generated report is sorted by ascending creation date.
    </ResponseField>

    <ResponseField name="Preview" type="boolean">
      Whether the report is limited to the first 10 lines (and therefore quicker to generate).
    </ResponseField>

    <ResponseField name="Filters" type="object">
      The filtering parameters to optimize the report.

      <Expandable title="properties">
        <ResponseField name="BeforeDate" type="Unix timestamp">
          **Returned values:** Any date between today’s date and 36 months in the past.

          The date before which the transaction was created (based on the transaction’s `CreationDate` parameter).

          **Caution:** The time range between the `BeforeDate` and the `AfterDate` cannot exceed 6 months.
        </ResponseField>

        <ResponseField name="AfterDate" type="Unix timestamp">
          The date after which the transaction was created (based on the transaction’s `CreationDate` parameter).\
          Caution: The time range between the `BeforeDate` and the `AfterDate` cannot exceed 6 months.
        </ResponseField>

        <ResponseField name="Type" type="array">
          The transaction types to be taken into account.
        </ResponseField>

        <ResponseField name="ResultCode" type="array">
          The transaction result codes to be taken into account.
        </ResponseField>

        <ResponseField name="Status" type="array">
          The transaction statuses to be taken into account.
        </ResponseField>

        <ResponseField name="Nature" type="array">
          **Returned values:** `REGULAR`, `REPUDIATION`, `REFUND`, `SETTLEMENT`

          The transaction natures to be taken into account.

          * `REGULAR` – Relative to most of the transactions (pay-ins, payouts, and transfers) in a usual workflow.
          * `REPUDIATION` – Automatic withdrawal of funds from the platform’s repudiation wallet as part of the dispute process (when the user has requested a chargeback).
          * `REFUND` – Reimbursement of a transaction to the user (pay-in refund), to a wallet (transfer refund), or of a payout (payout refund, only initiated by Mangopay).
          * `SETTLEMENT` – Transfer made to the repudiation wallet by the platform to settle a lost dispute.
        </ResponseField>

        <ResponseField name="WalletId" type="string">
          The unique identifier of the wallet that is to be taken into account.
        </ResponseField>

        <ResponseField name="AuthorId" type="string">
          The unique identifier of the user at the source of the transaction.
        </ResponseField>

        <ResponseField name="MinDebitedFundsAmount" type="integer">
          The debited funds amount above which the transactions are taken into account.
        </ResponseField>

        <ResponseField name="MinDebitedFundsCurrency" type="string">
          **Returned values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

          The currency of the `MinDebitedFundsAmount` value.
        </ResponseField>

        <ResponseField name="MaxDebitedFundsAmount" type="integer">
          The debited funds amount below which the transactions are taken into account.
        </ResponseField>

        <ResponseField name="MaxDebitedFundsCurrency" type="string">
          **Returned values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

          The currency of the `MaxDebitedFundsAmount` value.
        </ResponseField>

        <ResponseField name="MinFeesAmount" type="integer">
          The fees amount below which the transactions are taken into account.
        </ResponseField>

        <ResponseField name="MinFeesCurrency" type="string">
          **Returned values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

          The currency of the `MinFeesAmount` value.
        </ResponseField>

        <ResponseField name="MaxFeesAmount" type="integer">
          The fees amount above which the transactions are taken into account.
        </ResponseField>

        <ResponseField name="MaxFeesCurrency" type="string">
          **Returned values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

          The currency of the `MaxFeesAmount` value.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="Columns" type="array">
      **Returned values:** The `Columns` listed in the <a href="/reports">Reports</a> article, which differ according to the report type.

      The information to be included in the report.
    </ResponseField>

    <ResponseField name="ResultCode" type="string">
      The code indicating the result of the operation. This information is mostly used to <a href="/errors/codes">handle errors</a> or for filtering purposes.
    </ResponseField>

    <ResponseField name="ResultMessage" type="string">
      The explanation of the result code.
    </ResponseField>
  </Accordion>

  <Accordion title="400 - AfterDate must be within past 36 months">
    ```json theme={null}
    {
        "Message": "One or several required parameters are missing or incorrect. An incorrect resource ID also raises this kind of error.",
        "Type": "param_error",
        "Id": "3b84cf5d-1195-4753-9ae2-0922e35dbfd4",
        "Date": 1716558597.0,
        "errors": {
            "Filters.AfterDate": "This report type can only be done for the last 36 months."
        }
    }
    ```
  </Accordion>
</AccordionGroup>

<ResponseExample>
  ```json 200 theme={null}
  {
      "Id": "report_m_01JFA0JQQJ1X6W6VT6042SASTC",
      "CreationDate": 1734429204,
      "Tag": "Created using Mangopay API Postman Collection",
      "ReportDate": null,
      "Status": "PENDING",
      "DownloadFormat": "CSV",
      "DownloadURL": null,
      "CallbackURL": null,
      "ReportType": "TRANSACTIONS",
      "Sort": "CreationDate:ASC",
      "Preview": false,
      "Filters": {
          "BeforeDate": 1658317644,
          "AfterDate": 1655725644,
          "Type": [],
          "ResultCode": [],
          "Status": [],
          "Nature": [],
          "WalletId": null,
          "AuthorId": null,
          "MinDebitedFundsAmount": null,
          "MinDebitedFundsCurrency": null,
          "MaxDebitedFundsAmount": null,
          "MaxDebitedFundsCurrency": null,
          "MinFeesAmount": null,
          "MinFeesCurrency": null,
          "MaxFeesAmount": null,
          "MaxFeesCurrency": null
      },
      "Columns": [
          "Id",
          "Tag",
          "CreationDate",
          "ExecutionDate",
          "AuthorId",
          "CreditedUserId",
          "DebitedFundsAmount",
          "DebitedFundsCurrency",
          "CreditedFundsAmount",
          "CreditedFundsCurrency",
          "FeesAmount",
          "FeesCurrency",
          "Status",
          "ResultCode",
          "ResultMessage",
          "Type",
          "Nature",
          "CreditedWalletId",
          "DebitedWalletId"
      ],
      "ResultCode": null,
      "ResultMessage": null
  }
  ```
</ResponseExample>

<RequestExample>
  ```json REST theme={null}
  {
      "Tag": "Created using Mangopay API Postman Collection",
      "DownloadFormat": "CSV",
      "CallbackURL": null,
      "Sort": "CreationDate:ASC",
      "Preview": false,
      "Filters": {
          "BeforeDate": 1658317644,
          "AfterDate": 1655725644,
          "Type": [],
          "ResultCode": [],
          "Status": [],
          "Nature": [],
          "WalletId": null,
          "AuthorId": null,
          "MinDebitedFundsAmount": null,
          "MinDebitedFundsCurrency": null,
          "MaxDebitedFundsAmount": null,
          "MaxDebitedFundsCurrency": null,
          "MinFeesAmount": null,
          "MinFeesCurrency": null,
          "MaxFeesAmount": null,
          "MaxFeesCurrency": null
      },
      "Columns": [
          "Id",
          "Tag",
          "CreationDate",
          "ExecutionDate",
          "AuthorId",
          "CreditedUserId",
          "DebitedFundsAmount",
          "DebitedFundsCurrency",
          "CreditedFundsAmount",
          "CreditedFundsCurrency",
          "FeesAmount",
          "FeesCurrency",
          "Status",
          "ResultCode",
          "ResultMessage",
          "Type",
          "Nature",
          "CreditedWalletId",
          "DebitedWalletId"
      ]
  }
  ```

  ```php PHP theme={null}
  <?php 

  require_once 'vendor/autoload.php';

  use MangoPay\MangoPayApi;
  use MangoPay\Libraries\ResponseException as MGPResponseException;
  use MangoPay\Libraries\Exception as MGPException;

  $api = new MangoPayApi();

  $api->Config->ClientId = 'your-client-id';
  $api->Config->ClientPassword = 'your-api-key';
  $api->Config->TemporaryFolder = 'tmp/';

  try {
      $reportRequest = new \MangoPay\ReportRequest();
      $reportRequest->ReportType = \MangoPay\ReportType::Transactions;
      $reportRequest->CallbackURL = 'http://example.com';
      $reportRequest->Tag = 'Created using Mangopay PHP SDK';
      
      $reportRequest->Filters = [
          'BeforeDate' => 1658838931,
          'AfterDate' => 1656246931,
          'Type' => ['PAYIN', 'PAYOUT'],
          'ResultCode' => ['000000'],
          'Status' => ['SUCCEEDED'],
          'Nature' => ['REGULAR'],
          'MinDebitedFundsAmount' => null,
          'MinDebitedFundsCurrency' => 'EUR',
          'MaxDebitedFundsAmount' => null,
          'MaxDebitedFundsCurrency' => 'EUR',
          'MinFeesAmount' => 0,
          'MinFeesCurrency' => 'EUR',
          'MaxFeesAmount' => 100000,
          'MaxFeesCurrency' => 'EUR',
      ];

      $reportRequest->Columns = [
          'Id',
          'Tag',
          'CreationDate',
          'ExecutionDate',
          'AuthorId',
          'CreditedUserId',
          'DebitedFundsAmount',
          'DebitedFundsCurrency',
          'CreditedFundsAmount',
          'CreditedFundsCurrency',
          'FeesAmount',
          'FeesCurrency',
          'Status',
          'ResultCode',
          'ResultMessage',
          'Type',
          'Nature',
          'CreditedWalletId',
          'DebitedWalletId',
      ];

      $response = $api->Reports->Create($reportRequest);

      print_r($response);
  } catch(MGPResponseException $e) {
      print_r($e);
  } catch(MGPException $e) {
      print_r($e);
  }  
  ```

  ```ruby Ruby   theme={null}
  require 'mangopay'

  MangoPay.configure do |client|
      client.preproduction = true
      client.client_id = 'your-client-id'
      client.client_apiKey = 'your-api-key'
      client.log_file = File.join(Dir.pwd, 'mangopay.log')
  end

  myReport = {
      ReportType: 'transactions',
      Tag: 'Created using Mangopay Ruby SDK',
      DownloadFormat: 'CSV',
      CallbackURL: 'http://example.com',
      Sort: 'CreationDate: ASC',
      Preview: false,
      Filters: {
        BeforeDate: 1658838931,
        AfterDate: 1656246931,
        Type: ['PAYIN', 'PAYOUT'],
        ResultCode: ['000000'],
        Status: ['SUCCEEDED'],
        Nature: ['REGULAR'],
        WalletId: nil,
        AuthorId: nil,
        MinDebitedFundsAmount: nil,
        MinDebitedFundsCurrency: 'EUR',
        MaxDebitedFundsAmount: nil,
        MaxDebitedFundsCurrency: 'EUR',
        MinFeesAmount: 0,
        MinFeesCurrency: 'EUR',
        MaxFeesAmount: 100000,
        MaxFeesCurrency: 'EUR'
      },
      Columns: [
          'Id',
          'Tag',
          'CreationDate',
          'ExecutionDate',
          'AuthorId',
          'CreditedUserId',
          'DebitedFundsAmount',
          'DebitedFundsCurrency',
          'CreditedFundsAmount',
          'CreditedFundsCurrency',
          'FeesAmount',
          'FeesCurrency',
          'Status',
          'ResultCode',
          'ResultMessage',
          'Type',
          'Nature',
          'CreditedWalletId',
          'DebitedWalletId'
      ]
  }

  createTransactionsReport(myReport)  
  ```

  ```python Python   theme={null}
  from pprint import pprint
  import mangopay

  mangopay.client_id='your-client-id'
  mangopay.apikey='your-api-key'

  from mangopay.api import APIRequest
  handler = APIRequest(sandbox=True)

  from mangopay.resources import ReportTransactions
  from mangopay.utils import ReportTransactionsFilters

  transactions_report = ReportTransactions(
      tag = 'Created using Mangopay Python SDK',
      download_format  = 'CSV',
      callback_url = 'http://example.com',
      sort = 'CreationDate: ASC',
      preview = False,
      filters = ReportTransactionsFilters(
          status = ['SUCCEEDED'],
          nature = ['REGULAR'],
          wallet_id = None,
          author_id = None,
          min_debited_funds_amount = 0,
          min_debited_funds_currency = 'EUR',
          max_debited_funds_amount = 1000000,
          max_debited_funds_currency = 'EUR',
      ),
      columns = [
          'Id',
          'Tag',
          'CreationDate',
          'ExecutionDate',
          'AuthorId',
          'CreditedUserId',
          'DebitedFundsAmount',
          'DebitedFundsCurrency',
          'CreditedFundsAmount',
          'CreditedFundsCurrency',
          'FeesAmount',
          'FeesCurrency',
          'Status',
          'ResultCode',
          'ResultMessage',
          'Type',
          'Nature',
          'CreditedWalletId',
          'DebitedWalletId'
      ]

  )

  create_report = transactions_report.create()

  pprint(create_report._data)  
  ```

  ```csharp .NET  theme={null}
  using MangoPay.SDK;
  using MangoPay.SDK.Core.Enumerations;
  using MangoPay.SDK.Entities.POST;
  using Newtonsoft.Json;

  class Program
  {
      static async Task Main(string[] args)
      {
          MangoPayApi api = new MangoPayApi();

          api.Config.ClientId = "your-client-id";
          api.Config.ClientPassword = "your-api-key";
          
          var userId = "user_m_01J2TZ261WZNDM0ZDRWGDYA4GN";
          var walletId = "wlt_m_01J30991BXBB7VF28PBS82EWD3";

          var report = new ReportRequestPostDTO(ReportType.TRANSACTIONS) {
              Filters = {
                  AuthorId = userId,
                  WalletId = walletId,
                  MinDebitedFundsAmount = 500,
                  MinDebitedFundsCurrency = CurrencyIso.EUR,
                  MaxDebitedFundsAmount = 50000,
                  MaxDebitedFundsCurrency = CurrencyIso.EUR
              },
              Columns = [
                  "Id",
                  "Tag",
                  "CreationDate",
                  "ExecutionDate",
                  "AuthorId",
                  "CreditedUserId",
                  "DebitedFundsAmount",
                  "DebitedFundsCurrency",
                  "CreditedFundsAmount",
                  "CreditedFundsCurrency",
                  "FeesAmount",
                  "FeesCurrency",
                  "Status",
                  "ResultCode",
                  "ResultMessage",
                  "Type",
                  "Nature",
                  "CreditedWalletId",
                  "DebitedWalletId"
              ],
              CallbackURL = "http://example.com",
              Tag = "Created using the Mangopay .NET SDK"
          };
          

          var createReport = await api.Reports.CreateAsync(report);

          string prettyPrint = JsonConvert.SerializeObject(createReport, Formatting.Indented);
          Console.WriteLine(prettyPrint);
      }
  }
  ```
</RequestExample>
