Migration Guide (Direct Debit Collections)

Overview

This document describes the migration from the legacy Direct Debit Payment Initiation endpoint to the new endpoint with a simplified structure and aligned with ISO20022 payment terminology and structure.

The new endpoint provides:

  • Simplified payload
  • Simplified response model
  • Explicit debtor and creditor sections
  • Higher degree of structured object (e.g.
  • ISO-aligned terminology 
  • Date-only fields
  • No nested resource creation
  • No idempotency keys in payload

Deprecation Date & End-of-Life

Deprecation Date: To-be-announced

End-of-Life: To-be-announced

Legacy Endpoints

Instruction: (POST) https://sepaexpress-prod-fx.azurewebsites.net/api/services/v2/Payments

GET/Reporting: 

New Endpoints

Guide: Initiating Collections, Collection Status & Reconciling 

New Instruction: (POST) https://www.bankingcircleconnect.com/api/v1/direct-debits

New GET/Reporting: Customer Payment Status Report https://docs.bankingcircleconnect.com/docs/customer-payment-status-report

High-level Changes

Category

Legacy Endpoint

New Endpoint

Impact

Mandate Management

Required to supply a reference to a self-managed- or Banking Circle managed Mandate

Required to supply reference to a self-managed Mandate. Banking Circle managed Mandate is no longer support

Banking Circle managed Mandate is no longer support

Idempotency key

Idempotency key is required (optionally) to supply in the request parameters

Idempotency key is valid indefinitely.

Idempotency key is required (optionally) to supply in the request headers

Idempotency key is valid for 10 days.

Idempotency must be supplied via request headers and has a limited validity period

Configuration & Reference Management

Management of Merchant, Connector, Customer, Bank Account and Hosted Page-objects

Relevant supported values are not provided explicitly in the payload. 

Separate management of these objects are no longer required.

Structural Changes

ISO 20022 Data Model

The new endpoint follows an ISO 20022 style payment structure, introducing dedicated objects for:

  • Creditor
  • Debtor
  • Accounts
  • Agent banks
  • Mandate information
  • Remittance information

The legacy endpoint embedded many of these values within the mandate or bankAccount objects.

Debtor & Creditor Information

Creditor Information

Previously managed separate and referenced under bankAccountId

The new endpoint separates this into explicit entities.

//new structure
"creditor": {
  "name": "string",
  "personId": "string",
  "postalAddress": {...}
},
"ultimateCreditor": { 
	"name": "string", 
	"organisationId": "string" 
}

Debtor Information

The debtor (payer) is also now explicitly modeled.

//new structure
"debtor": {
  "name": "string",
  "postalAddress": {...}
}
//new structure
"debtorAccount": {
  "iban": "string"
}

Bank (Agent) Information

The debtor bank is now specified separately - this replaces earlier bank-related fields embedded in the account object.:

//new structure
"debtorAgent": {
  "bicFi": "string",
  "country": "string"
}

Field-by-field mapping - Instruction & Reporting

Legacy FieldNew FieldNotes
accountNumber❌ RemovedNot supported
amountinstructedAmount.amountNow a string value in the amount object
approvalBy❌ RemovedNot supported. Approval support planned
bankAccount❌ RemovedNot supported
bankAccountId❌ RemovedNot supported
bankCode❌ RemovedNot supported
branchCode❌ RemovedNot supported
connector❌ RemovedNot supported
connectorId❌ RemovedNot supported
countryCode (on bankAccount)❌ RemovedNot supported
createdAtacceptanceDateTimeRenamed
creditorBic❌ RemovedBIC not required in new payload
creditorIbancreditorAccount.ibanDirect mapping
currencyCodeinstructedAmount.currencyMoved inside structured amount object
custom1–custom5❌ RemovedNot supported
customer❌ RemovedNot supported
customerId❌ RemovedNot supported
hostedPage❌ RemovedNot supported
hostedPageId❌ RemovedNot supported
idinstructionUetrRenamed / semantic change
idempotencyKey (Header)Idempotency-KeyValid for 10 days
mandate.approvalDatemandateRelatedInformation.dateOfSignatureConverted from timestamp to YYYY-MM-DD
mandate.bankAccount.*❌ RemovedNot supported
mandate.connectorId❌ RemovedNot supported
mandate.referencemandateRelatedInformation.mandateIdDirect mapping
mandate.scheme❌ RemovedNot supported
mandate.typemandateRelatedInformation.sequenceTypeDirect mapping
mandateIdmandateRelatedInformation.mandateIdDirect mapping
memo❌ RemovedNot supported
merchant❌ RemovedNot supported
paymentPreNotificationUrl❌ RemovedNot supported
reasonCodestatusReasonInformation.reasonRenamed
referenceendToEndIdMax 35 chars; end-to-end payment identifier
refundAmount❌ RemovedNot supported
refundCount❌ RemovedNot supported
softDescriptorremittanceInformation.line1-4Payment reference text
statetransactionStatusRenamed / enum change
submitAfterrequestedCollectionDate / transactionReference.requestedCollectionDateConverted from timestamp to YYYY-MM-DD
validation*❌ RemovedNot supported