---
title: EU Transparency Database Integration
slug: eu-transparency-database-integration
docTags: 
createdAt: 2025-12-30T09:06:14.996Z
---

:::hint{type="warning"}
**Every report needs a country code, or it is never submitted.** Send location.countryCode, set to an EU or EEA country code (or EU), on every user report and every Proactive Detection request. A report ingested without it is permanently excluded from Statement of Reasons submission, and adding the code later does not bring it back. See **Country code configuration** below.
:::

This guide walks you through setting up automated Statement of Reasons (SOR) submissions to the EU Transparency Database to ensure compliance with the Digital Services Act.

## Prerequisites

Before configuring SOR submissions in Nima, you'll need to complete the initial setup with the EU portal - more information available [here](https://transparency.dsa.ec.europa.eu/page/onboarding-documentation).

### 1. Create EU portal accounts

You must create **two separate accounts** on the EU Transparency Database portal:

- **Sandbox Account** - For testing SOR submissions
- **Production Account** - For live SOR submissions

:::BlockQuote
⚠️**Important**: The EU requires that you successfully send test SORs to the sandbox environment before you can submit to production.
:::

### 2. API token configuration

After creating your portal accounts, you'll receive API tokens for both environments:

- **Sandbox API Token** - Share this with your Nima support team for initial testing and SOR validation
- **Production API Token** - This will be configured in your Nima instance once sandbox testing is complete and validated

**Process:**

1. Provide your sandbox API token to Nima support for testing
2. We'll validate your SOR submissions in the sandbox environment
3. Once validated, Tremau will configure your production instance with your production API token

## Nima configuration requirements

For Nima to automatically generate and submit Statement of Reasons, your configuration must meet the following requirements:

:::Heading{depth="3" indent="1"}
Country code configuration
:::

Ensure that incoming reports contain a `countryCode` in the Location attribute of the request payload, set to an EU or EEA country code. `EU` is also accepted, and is treated as applying to every member state.

:::hint{type="warning"}
**A report ingested without a country code is permanently excluded from Statement of Reasons submission.** Nima decides this at the moment the report arrives and the decision is not revisited — adding the country code later, or correcting your integration, does not bring those cases back. If Statements of Reasons matter to you, verify the country code is present before you go live.
:::

```json
{
  "location": {
    "countryCode": "DE"  // An EU or EEA country code
  }
}
```

:::Heading{depth="3" indent="1"}
DSA infringement categories mapping
:::

All Policy Configurations must have Statement Categories assigned:

1. Navigate to `Configure > Trust & Safety > Policies`
2. For each policy, ensure a DSA Infringement Category is assigned - more details in [DSA Transparency Reporting](docId\:ncsBihsujuK1eAEey_bH2)
3. Save your changes

**Why this matters**: Statement Categories are required by the EU to categorize the type of content violation.

:::Heading{depth="3" indent="1"}
Action - DSA Decision type mapping
:::

All moderation actions must be assigned to a Decision Type - as detailed in [DSA Transparency Reporting](docId\:ncsBihsujuK1eAEey_bH2).

**Why this matters**: The EU requires clear decision types to understand what action was taken on reported content.

## How it works

Once all requirements are satisfied:

1. **Automated Processing**: a scheduled job runs **every day at 02:00**
2. **SOR Generation**: Statements of Reasons are generated for every qualifying case
3. **EU Submission**: SORs are sent to the EU Transparency API
4. **PUID Assignment**: upon successful submission, a PUID (Platform Unique Identifier) is recorded on the case for tracking

### What qualifies

A case is submitted only when **all** of the following are true:

- It has been **processed** — either a first decision or a decision after appeal.
- It was processed **more than 24 hours ago**. This delay is deliberate: it leaves room for a decision to be reverted or appealed before it is reported to the Commission, so a SOR is never sent for a decision that has already changed.
- Its location carries an **EU or EEA country code** (see above).
- No Statement of Reasons has already been sent for it.
- The policy applied is mapped to a DSA infringement category that is **still current**. If a category has been deprecated, cases mapped to it are skipped — so after any change to your infringement categories, re-check the mapping.
- The case was created **on or after 1 August 2025**. Cases predating that are never submitted.

## Validation checklist

Before going live, verify that:

- Sandbox and production accounts are created on the EU portal
- Test SORs have been successfully submitted to sandbox
- Country codes are properly configured in request payloads
- All Policy Configurations have Statement Categories assigned
- All moderation actions have Decision Types mapped
- The scheduled submission job is running (your account team can confirm)

## Monitoring and verification

### Portal submission tracking

The EU Transparency Database portal provides visibility into your SOR submissions:

**Sandbox portal monitoring:**

- Log into your sandbox account to review test submissions
- Verify that SORs appear with correct formatting and required fields
- Use this environment to validate your integration before production

**Production portal monitoring:**

- Access your production account to monitor live SOR submissions
- Review submission history and status for each SOR
- Track successful submissions and identify any rejected entries
- Monitor compliance metrics and submission volumes

### What to monitor

When checking the portal, pay attention to:

- **Submission Status**: Confirm SORs are being accepted (not rejected)
- **Required Fields**: Ensure all mandatory EU fields are populated correctly
- **Timing**: verify submissions align with the daily 02:00 schedule
- **Volume**: check that submission counts match your expected case volumes for EU and EEA countries

## Next steps

Once your configuration is complete and validated:

1. **Monitor Portal Submissions**: Regularly check both sandbox and production portals for successful SOR submissions
2. **Verify System Operation**: Confirm that the daily submission job is running successfully and PUIDs are being assigned to qualifying cases
3. **Track Compliance**: Use the EU portal to monitor overall submission volumes and ensure regulatory compliance

## Support

If you encounter issues during setup or need assistance with EU compliance requirements, please contact our support team.

## Useful links

- [EU Transparency Database Portal](https://transparency.dsa.ec.europa.eu/?lang=en)
