Hello, my name is Guillaume. I’m a software engineering intern at TESOBE and in this video, we are going to see how we can receive a SEPA credit transfer transaction with the OBP SEPA Adapter.
So first of all, the Clearing & Settlement Mechanism, which links different banks, is going to send us an XML file containing the incoming SEPA transaction. The OBP SEPA Adapter is going to pass this file and save all the credit transfer transactions in its database.
Then, the OBP SEPA Adapter is going to save the transaction in the OBP API. This is going to credit also the accounts with the transaction amount. And this is going to create transactions in OBP. Then of course the app can get those transactions by calling the Get Transactions API route.
Another interesting thing is what happens when we receive a transaction where the IBAN doesn’t exist in the OBP API.
So the CSM is going to send the credit transfer file here; we don’t see it but yeah. Then the OBP SEPA Adapter saves the transaction. When it’s going to try to save the transaction in OBP API, the API call is going to return an error by saying “OK we didn’t find this account”.
So the adapter is going to automatically create another message, a return message linked to the incoming transaction. And then, in the next cycle, the transaction with an unknown creditor is going to be returned to the CSM because we didn’t find the beneficiary.
So let’s see how we can do this. So let’s suppose that we want to integrate this SEPA file, this basic credit transfer file. We have 3 transactions. One transaction is incoming from Louis Dupont, which is in my counterparty in the OBP API. This is my Account IBAN so there is no problem for this transaction.
I have another transaction here, an incoming transaction coming from an unknown counterparty that isn’t in my counterparty in the OBP API. So this is going to automatically create a counterparty to integrate the transaction in OBP API… this is also my IBAN.
Then, for the last transaction, this is going to generate an error because here the creditor IBAN doesn’t exist in the OBP API.
So here is my account with my balance and my IBAN which is corresponding to this one and this one. So I’m going to receive 2 transactions. One transaction is going to return an error. We can also check that I currently don’t have any transactions on my account and that my only counterparty is Louis Dupont, this one, which is going to send me the first transaction.
We can now integrate this file and see what’s happening, so this file is given here, in a direct path. Ok, so what’s happened? We can see here all 3 API calls made to the OBP API.
This is the first one, with the €300 amount. This is the second one. The last one generates an error saying “account not found, specify value ID for IBAN”. I also generate a log to say that the credit transfer transaction has been returned. So if we go in the credit transfer transaction we have here 2 processed transactions, the 2 valid ones, and the last one has a return status with the reason and the originator of the return in the custom fields.
In the Reason Code, we have AC01 which is corresponding to an incorrect account number – this is SEPA terminology. And ok, in the SEPA file we can say that this was an incoming SEPA credit transfer file that has been processed. And in the SEPA message, we can see the incoming message which has been processed.
We create another message to return the transaction with an error. So in the SEPA transaction message, we are going to see here for the transaction with a problem, the return SEPA message 955. I go in the SEPA message… yeah, it’s this one. It’s the return message type.
If I go now in the OBP API I can see that I was credited. I also have now 2 transactions, the first and second one. And, finally, we can see that the counterparty that didn’t exist yet has been automatically created to process the transaction. So, now we can process the outcoming file, this one, the return SEPA file, to return the error transaction. So we are going to process the outgoing unprocessed file.
And we can see that 1 transaction has been accounted for in this one: pacs.004.001.02 is for the return message, which is this one. And if I format it, I can see in the details that this is the original transaction and we can see the reason is here and the originator is the beneficiary bank, because the beneficiary bank didn’t find the IBAN corresponding to the beneficiary.
Ok, so that’s all good. Thank you for listening.