API reference
Connectors
GET /v1/admin/data-transfers
The cross-border transfer register
One entry per acquirer outside the region (PSP-12.3): legal entity, country, the fields its allow-list permits and the fields sent so far, transfers and fields dropped, legal basis, data processing agreement, last and next review. Every outbound payload to such a connector carries only its allowed fields; any other field is dropped before the call (data_transfer.blocked_field) and each call records data_transfer.sent. A transfer that cannot be recorded is not sent. Requires connectors:read.
Responses
- 200
{data, total}.
Request
curl -X GET "$KULPAY_URL/v1/admin/data-transfers" \ -H "Authorization: Bearer $KULPAY_KEY"
200 Response application/json
{
"data": [
{
"blocked_fields": 2210,
"connector": "stripe",
"country": "IE",
"created_at": "2026-01-20T08:00:00Z",
"dpa_reference": "DPA-STRIPE-2026-01",
"fields_allowed": "[\"amount\",\"currency\",\"metadata.billing_country\",\"metadata.email\",\"metadata.kulpay_challenge\",\"metadata.merchant_reference\",\"metadata.order_id\",\"payment_id\",\"return_url\",\"source.card.token\"]",
"fields_sent": "[\"amount\",\"currency\",\"metadata.merchant_reference\",\"payment_id\",\"return_url\",\"source.card.token\"]",
"id": "3K3cStcRGSc7g3n7YaS9mOyEJ7L",
"last_transfer_at": "2026-10-11T10:59:12Z",
"legal_basis": "Contract performance (Lei n.º 3/2017, art. 59) with standard contractual clauses",
"legal_entity": "Stripe Payments Europe, Limited",
"next_review_at": "2027-03-15T09:00:00Z",
"reviewed_at": "2026-03-15T09:00:00Z",
"reviewed_by": "operator:7f3c9a2e-5b1d-4e8a-9c6f-2d4b8e1a0c37",
"transfers": 18342,
"updated_at": "2026-10-11T10:59:12Z"
}
],
"total": 1
}
GET /v1/admin/data-transfers/export
Export the register for regulators
The register as CSV, signed (X-Signature, X-Signing-Key-ID) when a report signing key is configured. Requires connectors:read.
Responses
- 200 text/csv.
Request
curl -X GET "$KULPAY_URL/v1/admin/data-transfers/export" \ -H "Authorization: Bearer $KULPAY_KEY"
PATCH /v1/admin/data-transfers/{connector}
Set the legal basis or record the yearly review
Sets legal_basis and dpa_reference; reviewed: true records the yearly review (both must be set first) and moves the next one a year on. Each entry is announced by data_transfer.register.review_due when its review falls due. Records config.data_transfer_register.saved. Requires connectors:write.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
connector required | path | string |
Request body application/json required
| Field | Type | Description |
|---|---|---|
dpa_reference | string | |
legal_basis | string | |
reviewed | boolean |
Responses
- 200 The entry.
- 400 Review recorded without a legal basis or DPA.
invalid_request - 404 No entry for that connector.
not_found
Request
curl -X PATCH "$KULPAY_URL/v1/admin/data-transfers/{connector}" \
-H "Authorization: Bearer $KULPAY_KEY" \
-H "Content-Type: application/json" \
-d '{
"dpa_reference": "2003014567",
"legal_basis": "string",
"reviewed": true
}'
200 Response application/json
{
"blocked_fields": 2210,
"connector": "stripe",
"country": "IE",
"created_at": "2026-01-20T08:00:00Z",
"dpa_reference": "DPA-STRIPE-2026-01",
"fields_allowed": "[\"amount\",\"currency\",\"metadata.billing_country\",\"metadata.email\",\"metadata.kulpay_challenge\",\"metadata.merchant_reference\",\"metadata.order_id\",\"payment_id\",\"return_url\",\"source.card.token\"]",
"fields_sent": "[\"amount\",\"currency\",\"metadata.merchant_reference\",\"payment_id\",\"return_url\",\"source.card.token\"]",
"id": "3K3cStcRGSc7g3n7YaS9mOyEJ7L",
"last_transfer_at": "2026-10-11T10:59:12Z",
"legal_basis": "Contract performance (Lei n.º 3/2017, art. 59) with standard contractual clauses",
"legal_entity": "Stripe Payments Europe, Limited",
"next_review_at": "2027-10-11T11:10:00Z",
"reviewed_at": "2026-10-11T11:10:00Z",
"reviewed_by": "3KIhzpLdNupTuLgu8bwZOQspar2",
"transfers": 18342,
"updated_at": "2026-10-11T11:10:00Z"
}
400 Error · invalid_request application/problem+json
{
"code": "invalid_request",
"detail": "set the legal basis and the data processing agreement before recording the review",
"error": {
"code": "invalid_request",
"message": "set the legal basis and the data processing agreement before recording the review"
},
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}
404 Error · not_found application/problem+json
{
"code": "not_found",
"detail": "no register entry for that connector",
"error": {
"code": "not_found",
"message": "no register entry for that connector"
},
"status": 404,
"title": "Not Found",
"type": "about:blank"
}
KulPay