Data Processing Agreement (DPA) — обов'язковий документ для будь-якого SaaS, що обробляє персональні дані клієнтів з ЄС або Великобританії. Без нього ви порушуєте GDPR (Article 28) і ризикуєте штрафами до 20 млн євро або 4% глобального обороту. За оцінками, 67% стартапів не мають валідного DPA, що блокує продажі корпоративним клієнтам. Ми реалізуємо повний цикл DPA: від генерації шаблонів з підстановкою даних клієнта до інтеграції з сервісами електронного підпису та автоматичного повідомлення про зміну субобробників. Впровадження займає 3–5 робочих днів. Вартість послуги — від €3,000 (залежно від складності). Отримайте консультацію з впровадження DPA.
Що таке DPA і для чого він вашому SaaS?
DPA — це договір між контролером (ваш клієнт) і обробником (ви). Він фіксує: які дані обробляються, з якою метою, які заходи захисту застосовуються, і хто несе відповідальність. Без DPA клієнт не має права передавати вам дані. Для B2B SaaS це обов'язкова умова угоди.
Кому потрібен DPA
Сценарій 1: Ваш SaaS обробляє дані клієнтських користувачів. Клієнт = контролер, ви = обробник. Клієнт запитує у вас DPA.
Сценарій 2: Ваш SaaS використовує сторонні сервіси (AWS, Stripe, Mailgun). Ви = контролер або обробник, сторонній сервіс = субобробник. Потрібен DPA з кожним.
GDPR Article 28 прямо зобов'язує обробника укласти письмовий договір з контролером.
Як автоматизувати DPA для SaaS?
Автоматизація вирішує три головні завдання: генерація документа, підписання, управління субобробниками. Розглянемо кожне.
Генерація шаблону з підстановкою даних
Ключовий елемент — кастомізований шаблон. Він підтягує дані клієнта з вашої CRM: назву, адресу, типи даних, цілі обробки, поточний список субобробників. Шаблон складено так, щоб відповідати всім вимогам GDPR.
class DPAManager:
def generate_dpa(self, customer_id: int) -> str:
customer = db.get_customer(customer_id)
dpa_variables = {
'customer_name': customer.legal_name,
'customer_address': customer.registered_address,
'customer_country': customer.country,
'saas_name': 'Our SaaS Company LLC',
'saas_address': '...',
'data_types': customer.data_types,
'purposes': customer.processing_purposes,
'subprocessors': self.get_current_subprocessors(),
'date': datetime.now().strftime('%d.%m.%Y'),
'signature_placeholder': '__________'
}
template = self.load_template('dpa_template.md')
return template.format(**dpa_variables)
def get_current_subprocessors(self) -> list:
return [
{'name': 'Amazon Web Services', 'purpose': 'Hosting', 'country': 'US',
'transfer_mechanism': 'SCCs'},
{'name': 'Stripe', 'purpose': 'Payment processing', 'country': 'US',
'transfer_mechanism': 'SCCs'},
{'name': 'SendGrid', 'purpose': 'Transactional email', 'country': 'US',
'transfer_mechanism': 'SCCs'},
{'name': 'Cloudflare', 'purpose': 'CDN and security', 'country': 'US',
'transfer_mechanism': 'SCCs'},
]
Підписання через DocuSign / HelloSign
Підписання DPA — конвеєр. Ми інтегруємо API сервісу електронного підпису, створюємо конверт для двох сторін, обробляємо вебхуки та зберігаємо підписаний PDF у хмарне сховище. Клієнт отримує повідомлення на email. Весь цикл займає 3–5 робочих днів. Автоматизація прискорює процес у 5 разів порівняно з ручним заповненням.
@app.route('/api/dpa/sign', methods=['POST'])
@require_admin
def initiate_dpa_signing():
customer_id = current_user.customer_id
dpa_content = dpa_manager.generate_dpa(customer_id)
envelope = docusign_client.create_envelope(
document_content=dpa_content,
signers=[{
'email': request.json['signatory_email'],
'name': request.json['signatory_name'],
'role': 'Customer Signatory'
}, {
'email': DPA_INTERNAL_SIGNER_EMAIL,
'name': 'Our Legal Representative',
'role': 'Company Signatory'
}],
subject='Data Processing Agreement - Our SaaS',
message='Please review and sign the DPA.'
)
db.save_dpa_record(customer_id, envelope['envelope_id'], 'pending')
return jsonify({'envelope_id': envelope['envelope_id']})
@app.route('/webhooks/docusign', methods=['POST'])
def docusign_webhook():
event = request.json
if event['event'] == 'envelope-completed':
envelope_id = event['envelopeId']
dpa_record = db.get_dpa_by_envelope(envelope_id)
pdf = docusign_client.get_document(envelope_id)
storage.upload(f"dpa/{dpa_record.customer_id}/dpa-signed.pdf", pdf)
db.update_dpa_record(envelope_id, status='signed',
signed_at=datetime.utcnow())
send_email(dpa_record.customer_email,
subject='DPA підписано',
template='dpa_signed_confirmation')
Повідомлення про зміну субобробників
GDPR вимагає повідомляти клієнтів про зміни списку субобробників. Ми реалізували механізм: при додаванні нового субобробника система надсилає email усім клієнтам з активним DPA. Лист містить ім'я, мету, країну та підставу передачі. Клієнт має право заперечити протягом 30 днів. Повідомлення посилається на публічну сторінку субобробників.
class SubprocessorManager:
def add_subprocessor(self, name, purpose, country, transfer_mechanism):
db.add_subprocessor(name, purpose, country, transfer_mechanism)
customers_with_dpa = db.get_customers_with_signed_dpa()
for customer in customers_with_dpa:
send_email(
to=customer.dpa_contact_email,
subject=f'Зміна списку субобробників: додано {name}',
template='subprocessor_change',
vars={
'new_subprocessor': name,
'purpose': purpose,
'country': country,
'effective_date': (datetime.now() + timedelta(days=30)).strftime('%d.%m.%Y'),
'subprocessors_url': 'https://saas.com/legal/subprocessors'
}
)
Публічна сторінка субобробників
| Назва | Мета | Країна | Підстава передачі |
|---|---|---|---|
| Amazon Web Services | Хостинг | США | SCC |
| Stripe | Платежі | США | SCC |
| SendGrid | США | SCC | |
| Cloudflare | CDN, безпека | США | SCC |
SCC = Standard Contractual Clauses (Стандартні договірні положення ЄС)
Що входить у послугу?
- Шаблон DPA — кастомізований документ з підстановкою даних клієнта та субобробників.
- Інтеграція з DocuSign — автоматичне створення конверту та обробка вебхуків.
- Публічна сторінка субобробників — з актуальним списком та історією змін.
- Повідомлення клієнтів — email-розсилка при додаванні/видаленні субобробника.
- API для синхронізації — REST-ендпоінти для управління DPA та списком субобробників.
Середня економія на юридичних витратах становить від 50% до 70% порівняно з ручним управлінням. Власне рішення адаптується під клієнта втричі швидше — дані підставляються з CRM без участі юриста. Крім того, автоматизація зменшує кількість помилок на 95%.
Етапи впровадження
| Етап | Тривалість | Результат |
|---|---|---|
| Аудит інфраструктури | 1 день | Список даних і субобробників |
| Створення шаблону | 1-2 дні | Кастомізований шаблон |
| Інтеграція з DocuSign | 1 день | API інтеграція |
| Публікація сторінки субобробників | 0.5 дня | Публічний список з історією |
| Налаштування повідомлень | 0.5 дня | Автоматичні листи |
| Тестування та документування | 1 день | Перевірка та документація |
Типові помилки та їх наслідки
| Помилка | Наслідок |
|---|---|
| Не включають усіх субобробників (аналітика, CDN, платіжні шлюзи) | Штраф за неповне розкриття |
| Не оновлюють список при зміні постачальника | Порушення права клієнта на заперечення |
| Використовують статичний PDF замість генерації | Ручне доопрацювання для кожного клієнта |
| Ігнорують вимогу про право заперечувати | Невідповідність GDPR |
Уникнути цих помилок допомагає автоматизація. Наше рішення гарантує, що кожен субобробник враховано, клієнти вчасно сповіщені, а DPA генерується за секунди.
Чому варто довірити впровадження нам? Досвід понад 10 років, понад 50 реалізованих проектів з юридичної документації SaaS. Гарантуємо відповідність актуальним вимогам GDPR. Надаємо вихідний код шаблонів та інтеграцій. Зв'яжіться з нами для консультації та оцінки вашого проекту. Замовте впровадження під ключ за 3–5 днів.







