myTU
Secure electronic banking
Supports in this guide: Payments
Provider website: mytu.de
What you need to do for start processing transactions (brief summary)
- Choose account type
- Get your credentials (from myTU)
- Connect in Dashboard
- Send an API request
Choose account type
myTU can be connected in different ways (depending on your needs):
- If you do SEPA Direct Debit payments -> choose Provider account
If you are not sure which one to use, confirm with your Corefy account manager.
Prerequisites: get from myTU
Get the following values for your myTU project/account:
- Client IBAN -> Corefy field
client_iban-> example:DE89370400440532013000-> where to find: myTU backoffice / issued by myTU manager - Auth Private Key -> Corefy field
auth_private_key-> format: upload a PEM file -> where to find: myTU backoffice / issued by myTU manager - Signature Private Key -> Corefy field
signature_private_key-> format: upload a PEM file -> where to find: myTU backoffice / issued by myTU manager - PSP Public Key -> Corefy field
psp_public_key-> format: upload a PEM file -> where to find: myTU backoffice / issued by myTU manager - CPK -> Corefy field
cpk-> example:a1b2c3d4e5f6...(66 hex characters) -> where to find: myTU backoffice / issued by myTU manager, only if myTU issued you several key pairs
Payments processing (connect Provider account, create payment-invoice)
Connect Provider account in Corefy Dashboard
Step 1 - Open connection form
Open myTU in the provider directory and press Connect at myTU Provider Overview page in the New connection section. Choose Provider account.
Step 2 - Fill in fields and select settings
- Client IBAN
- Auth Private Key (upload PEM file)
- Signature Private Key (upload PEM file)
- PSP Public Key (upload PEM file)
- CPK (optional — only if myTU issued you several key pairs)
- API URL (optional — override the default provider URL)
- Test Mode -> (enable if you are using sandbox credentials)
Choose Currency and Features. You can set these parameters according to available currencies and features for your myTU account, but it is necessary to check details of the connection with your Corefy account manager.
Success
You have connected myTU Provider account!
First request to Corefy API
What it does: creates a payment-invoice. myTU's Sale operation has two request shapes, not a MIN/MAX pair — which one applies depends on whether the payer already has a mandate.
Payment
What it does: first collection for a payer — myTU has no mandate for them yet, so one is created as part of this request. This is the minimum required data for this flow.
POST /api/payment-invoices
{
"data": {
"type": "payment-invoices",
"attributes": {
"service": "sepadirectdebit_eur_invoice",
"currency": "EUR",
"amount": 10,
"test_mode": true,
"reference_id": "ORDER-1001",
"service_fields": {
"iban": "ES9121000418450200051332",
"account_holder_name": "Test Debtor",
"mandate_signed_at": "2026-07-29",
"mandate_expire_at": "2028-07-30"
}
}
}
}
FRST. The response surfaces the created mandate under flow_data.requisites, which is where a merchant reads the mandate_id to reuse for that payer's next collection: {
"data": {
"id": "cpi_7XqR2mKpL9wZaB4C",
"attributes": {
"status": "process_pending",
"flow_data": {
"requisites": {
"mandate_id": "9KRT4LX8B2QM",
"charge_date": "2026-08-04",
"mandate_seq_tp": "FRST",
"vop_code": "NOAP"
}
}
}
}
}
Repeat payment
What it does: a later collection for a payer who already has a mandate — send its mandate_id (returned in flow_data.requisites of the first payment's response, as shown above) instead of mandate_signed_at/mandate_expire_at, and no new mandate is created. This example also shows charge_date, an optional field (in either request shape) to pick a specific collection day instead of the earliest possible one.
POST /api/payment-invoices
{
"data": {
"type": "payment-invoices",
"attributes": {
"service": "sepadirectdebit_eur_invoice",
"currency": "EUR",
"amount": 10,
"test_mode": true,
"reference_id": "ORDER-1002",
"service_fields": {
"iban": "ES9121000418450200051332",
"account_holder_name": "Test Debtor",
"mandate_id": "9KRT4LX8B2QM",
"charge_date": "2026-08-13"
}
}
}
}
mandate_signed_at/mandate_expire_at are required only when mandate_id is not provided — send mandate_id to reuse an existing mandate for the same payer (the collection is sent as RCUR), or omit it and provide mandate_signed_at/mandate_expire_at instead to create a new one (as in the Payment example above). mandate_seq_tp (optional, service_fields) — which collection in the mandate's series this is: FRST (first), RCUR (repeat), FNAL (last one — no further collections will be made against this mandate), or OOFF (one-off, not part of a recurring series at all). If not sent, it's worked out automatically: FRST when no mandate_id is given, RCUR when one is. Set it explicitly to FNAL for a series' last collection or OOFF for a standalone one-off collection.
charge_date (optional, service_fields) — the day the money is taken, YYYY-MM-DD. If not sent, the earliest possible day is used: D+1 if the payment is submitted before 11:15 Europe/Vilnius, otherwise D+2; capped at D+14 at the latest. Weekends and TARGET2-style holidays (New Year's Day, Labour Day, Good Friday, Easter Monday, Christmas Day, Boxing Day) are skipped in either direction. A charge_date outside this window, or falling on a non-working day, is rejected before the request reaches myTU.
Extended request
Why add extra fields (typical reasons): - Provide additional customer details for compliance/reconciliation - Positively influence conversion rate - Include optional fields required by your specific flow (e.g. charge_date above)
Options
Options are configured on the Corefy side and affect how Corefy builds provider requests or processes responses.
Currently available options (3)
mandate_vop_policy- controls which Verification of Payee result is accepted when a new mandate is createdrefund_vop_policy- the same check, applied when confirming an outgoing refund transferrefund_transfer_method- how a refund is sent back to the payer
mandate_vop_policy
What it does: when a new mandate is created, myTU compares the account holder name you sent with the name the bank has for that IBAN and returns MTCH (match), CMTC (close match), NMTC (no match), or NOAP (bank could not check). This option decides which of these results Corefy still accepts; on a refused result, the payment is declined as invalid details and no money is collected.
When to use: tighten it to strict if your compliance policy requires an exact name match, or loosen it to permissive if you want mandates created regardless of the name-check result.
Default: "standard"
Allowed values: strict (only MTCH), standard (anything except NMTC), permissive (always accepted)
refund_vop_policy
What it does: the same Verification of Payee check as mandate_vop_policy, but applied when myTU asks Corefy to confirm an outgoing refund transfer. On a refused result, Corefy refuses to confirm and myTU cancels the transfer.
When to use: tighten or loosen independently from mandate_vop_policy if your refund-side compliance requirements differ from mandate creation.
Default: "standard"
Allowed values: strict (only MTCH), standard (anything except NMTC), permissive (always accepted)
refund_transfer_method
What it does: selects how a refund is sent back to the payer.
When to use: set to INST if refunds should arrive within seconds (may cost more), or REG for a regular SEPA transfer arriving the next business day. Leave as default to let myTU choose.
Default: "default"
Allowed values: default (myTU chooses), INST (SEPA Instant), REG (regular SEPA transfer)
Additional info
- Callbacks are delivered to dedicated endpoints, one per direction:
/mytu/callback/rx/{client_iban}for collection status updates, and/mytu/callback/tx/{client_iban}for refund status updates. - Refunds use an authorising-signature step: myTU calls a dedicated
client-sign-url(/mytu/sign/tx) during refund processing, and Corefy responds with a signature made using the Signature Private Key. This happens automatically once the account is connected.
FAQ / Troubleshooting
- Invalid credentials / auth error -> verify credentials for the selected environment and account type
- Currency or service is not supported -> confirm allowed currencies/features in your myTU account and in Corefy
- Missing required fields -> provide missing request fields in the API request
- Not sure which account type to use? -> ask your Corefy account manager
Question
Still looking for help connecting your myTU account? Please contact our support team!