Solved

ISO20022 Supplier Bank - Recipient Postal Code is Required

  • 8 September 2023
  • 24 replies
  • 210 views

Userlevel 7
Badge +16
  • Hero (Customer)
  • 563 replies

Community, 

We are testing with bank ISO20022 US supplier ACH payment, we got below error - Recipient Postal Code is Required.

would like to borrow your mind, where is the place to could fill the postal code in below supplier bank information panel?

 

 

icon

Best answer by Furkan Zengin 9 September 2023, 08:48

View original

24 replies

Userlevel 7
Badge +16

I am appending the postal code at address line #2. see whether it pass the validation or not.

Userlevel 6
Badge +19

Hi @ronhu 

Can you check if Detailed Postal Address is set to true. The field is on payment institute > format specific info per institute.

 

 

 

See help description

 

Detailed Postal Address
If this check box is selected, detailed postal address of the payer will be displayed with following values.    
<StrtNm>     : Address 1
<PstCd>       : Zip Code
<CtrySubDvsn>: State  
<TwnNm>    : City                                                                                                                                                         <Ctry>         : Country Code   

If this check box is not selected, two address lines are displayed.                                                                 

<AdrLine>    : Address 1 + Address 2
<AdrLine>    : Zip Code                                                                                                                                                                                                                    

Userlevel 7
Badge +16

@gumabs Thank you for your assistance.

our Debtor ISO20022 detail postal address is set to TRUE.

 

but I have bit confused, the bank error said Recipient Postal Code, here the settings is about Payer, not Payee (Recipient)?

 

Thank you.

Userlevel 6
Badge +19

Hello @ronhu 

I am sorry, I misread your first post. The one I shared is for payer. For the payee, you can see the setup on the screen shot you shared. 

 

I believe it should be fetched from default PAY address for the supplier. I created a payment file and checking trace information. There is zip code and see the explanation from help. 

 

Payer/Payee Zip Code
This field shows the postal code from the payee's/payer's default payment address at the time when the file was created.

 

 

 

Userlevel 7
Badge +16

@gumabs Thank you for your info.  

I am making changes and testing with bank. 

appreciate your help.

Userlevel 5
Badge +10

Is this available for Employee Payments - looking to pay expenses.

We are on Apps10 UPD16.

I can not see it in the file - nor can we gain access to Payment Specific Information.

 

Many thanks,

Matthew

Userlevel 6
Badge +19

Hi @Matthew 

It is available for employees but setup is a little different than suppliers. You must add  bank details on employee card, then setup ISO20022 under employee expense  etc.

 

Userlevel 7
Badge +16

@gumabs bother here again. I thought I fixed the issue.

Bank send me another error, “Recipient Address is required”. I compared the bank sample, I missed the tag <Adrline>, wondering where to fill this tag?

Bank Statement

 

My supplier address set up

 

My payment history file

 

 

Bank Sample and My Sample

 

Userlevel 7
Badge +16

@gumabs this could be IFS bug?

 

Userlevel 6
Badge +19

Hi @ronhu 

I am suspicious about address setup. Can you check the address setup?

Thanks 

 

 

Userlevel 7
Badge +16

@gumabs below is the address presentation. i don’t see anything wrong, how about you?

 

Userlevel 7
Badge +16

@gumabs I am reporting this to IFS support.

Userlevel 6
Badge +19

Hello @ronhu 

I will reply you tomorrow in more detail I need to check xslt file. 


Just can you send screen shot of supplier payment address for ISO?

 

Thanks

Userlevel 7
Badge +16

@gumabs hope it’s not too late.

 

Userlevel 6
Badge +19

Hi @ronhu 

Can you send payment address (bank account) details for supplier. 

Thanks

Userlevel 7
Badge +16

@gumabs Thank you. this is the supplier bank account set up in ISO20022

 

Userlevel 6
Badge +19

Hi @ronhu 

According to xsl file, when Show Detailed Postal Address of Payee field is selected (set to TRUE) then address presentation will change in the xml file. 

 

Set that field to FALSE, navigate to Supplier Payment Orders, click RMB on the line and Repat Media Output with Current Data. This should create a new xml file. Compare the new file with bank format

 

 

<xsl:variable name="Vvar_Detail_Address" select="$Vvar35_SEPA_PAYMENT_TRANS/n1:DETAIL_ADDRESS"/>
<xsl:choose>
<xsl:when test=" $Vvar_Detail_Address = 'TRUE'">
<xsl:for-each select="n1:ADDRESSES">
<xsl:for-each select="n1:SEPA_PAYMENT_TRANS_ADDRESS">
<xsl:if test=" n1:LINE_NO ='1.0'">
<xsl:variable name="Vvar_Null_Const" select="''"/>
<xsl:variable name="Vvar_COUNTRY">
<xsl:for-each select="n1:COUNTRY">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="Vvar_ADDRESS1">
<xsl:for-each select="n1:ADDRESS_1">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="Vvar_CITY">
<xsl:for-each select="n1:CITY">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="Vvar_ZIP_CODE">
<xsl:for-each select="n1:ZIP_CODE">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="Vvar_STATE">
<xsl:for-each select="n1:STATE">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="Vvar_COUNTY">
<xsl:for-each select="n1:COUNTY">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="Vvar_COUNTRY_SUB_DIV">
<xsl:if test="$Vvar_STATE != ''">
<xsl:value-of select="$Vvar_STATE"/>
</xsl:if>
<xsl:if test="$Vvar_STATE = ''">
<xsl:value-of select="$Vvar_COUNTY"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="Vvar_Result_Of_Country" select="$Vvar_Null_Const != $Vvar_COUNTRY"/>
<xsl:variable name="Vvar_Result_Of_Address1" select="$Vvar_Null_Const != $Vvar_ADDRESS1"/>
<xsl:variable name="Vvar_Result_Of_City" select="$Vvar_Null_Const != $Vvar_CITY"/>
<xsl:variable name="Vvar_Result_Of_Zip_Code" select="$Vvar_Null_Const != $Vvar_ZIP_CODE"/>
<xsl:variable name="Vvar_Result_Of_Country_Sub_div" select="$Vvar_Null_Const != $Vvar_COUNTRY_SUB_DIV"/>
<xsl:variable name="Vvar1_Result_Of_All2" select="$Vvar_Result_Of_Country or $Vvar_Result_Of_Address1 or Vvar_Result_Of_City or Vvar_Result_Of_Zip_Code or $Vvar_Result_Of_Country_Sub_div"/>
<xsl:if test="string($Vvar1_Result_Of_All2)='true'">
<PstlAdr>
<xsl:if test="string($Vvar_Result_Of_Address1)='true'">
<StrtNm>
<xsl:call-template name="escapeCharacters">
<xsl:with-param name="inputVal" select="$Vvar_ADDRESS1"/>
</xsl:call-template>
</StrtNm>
</xsl:if>
<xsl:if test="string($Vvar_Result_Of_Zip_Code)='true'">
<PstCd>
<xsl:value-of select="$Vvar_ZIP_CODE"/>
</PstCd>
</xsl:if>
<xsl:if test="string($Vvar_Result_Of_City)='true'">
<TwnNm>
<xsl:value-of select="$Vvar_CITY"/>
</TwnNm>
</xsl:if>
<xsl:if test="string($Vvar_Result_Of_Country_Sub_div)='true'">
<CtrySubDvsn>
<xsl:value-of select="$Vvar_COUNTRY_SUB_DIV"/>
</CtrySubDvsn>
</xsl:if>
<xsl:if test="string($Vvar_Result_Of_Country)='true'">
<Ctry>
<xsl:value-of select="$Vvar_COUNTRY"/>
</Ctry>
</xsl:if>
</PstlAdr>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<PstlAdr>
<xsl:for-each select="n1:ADDRESSES">
<xsl:for-each select="n1:SEPA_PAYMENT_TRANS_ADDRESS">
<xsl:variable name="Vvar54_SEPA_PAYMENT_TRANS_ADDRESS" select="."/>
<xsl:for-each select="n1:LINE_NO">
<xsl:variable name="Vvar56_LINE_NO" select="."/>
<xsl:variable name="Vvar57_CONST" select="1.0"/>
<xsl:variable name="Vvar58_RESULTOF_equal" select="$Vvar56_LINE_NO = $Vvar57_CONST"/>
<xsl:variable name="Vvar59_CONDITION">
<xsl:choose>
<xsl:when test="string($Vvar58_RESULTOF_equal)='true'">
<xsl:for-each select="$Vvar54_SEPA_PAYMENT_TRANS_ADDRESS/n1:COUNTRY">
<xsl:variable name="Vvar61_COUNTRY" select="."/>
<xsl:value-of select="$Vvar61_COUNTRY"/>
</xsl:for-each>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="Vvar118_CONST" select="''"/>
<xsl:variable name="Vvar119_RESULTOF_equal" select="$Vvar118_CONST = $Vvar59_CONDITION"/>
<xsl:if test="not(string($Vvar119_RESULTOF_equal)='true')">
<Ctry>
<xsl:value-of select="$Vvar59_CONDITION"/>
</Ctry>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
<xsl:for-each select="n1:ADDRESSES">
<xsl:for-each select="n1:SEPA_PAYMENT_TRANS_ADDRESS">
<xsl:variable name="Vvar54_SEPA_PAYMENT_TRANS_ADDRESS" select="."/>
<xsl:for-each select="n1:LINE_NO">
<xsl:variable name="Vvar56_LINE_NO" select="."/>
<xsl:variable name="Vvar57_CONST" select="1.0"/>
<xsl:variable name="Vvar58_RESULTOF_equal" select="$Vvar56_LINE_NO = $Vvar57_CONST"/>
<xsl:variable name="Vvar59_CONDITION">
<xsl:choose>
<xsl:when test="string($Vvar58_RESULTOF_equal)='true'">
<xsl:variable name="Vvar1102_RESULTOF_equal" select="'true'"/>
<xsl:variable name="Vvar1103_RESULTOF_equal" select="'true'"/>
<xsl:variable name="Vvar61_ADDRESS_1"/>
<xsl:variable name="Vvar61_ADDRESS_2"/>
<xsl:variable name="Vvar1180_CONST" select="' '"/>
<xsl:variable name="Vvar118_CONST" select="''"/>

<xsl:for-each select="$Vvar54_SEPA_PAYMENT_TRANS_ADDRESS/n1:ADDRESS_1">
<xsl:variable name="Vvar61_ADDRESS_1" select="."/>
<xsl:variable name="Vvar1102_RESULTOF_equal" select="$Vvar118_CONST = $Vvar61_ADDRESS_1"/>
<xsl:value-of select="$Vvar61_ADDRESS_1"/>

<xsl:for-each select="$Vvar54_SEPA_PAYMENT_TRANS_ADDRESS/n1:ADDRESS_2">
<xsl:variable name="Vvar61_ADDRESS_2" select="."/>
<xsl:variable name="Vvar1103_RESULTOF_equal" select="$Vvar118_CONST = $Vvar61_ADDRESS_2"/>
<xsl:if test="not(string($Vvar1102_RESULTOF_equal)='true') and not(string($Vvar1103_RESULTOF_equal)='true')">
<xsl:value-of select="$Vvar1180_CONST"/>
</xsl:if>
<xsl:value-of select="$Vvar61_ADDRESS_2"/>
</xsl:for-each>

</xsl:for-each>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="Vvar118_CONST" select="''"/>
<xsl:variable name="Vvar119_RESULTOF_equal" select="$Vvar118_CONST = $Vvar59_CONDITION"/>
<xsl:if test="not(string($Vvar119_RESULTOF_equal)='true')">
<AdrLine>
<xsl:call-template name="escapeCharacters">
<xsl:with-param name="inputVal" select="substring($Vvar59_CONDITION,1,70)"/>
</xsl:call-template>
</AdrLine>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
<xsl:for-each select="n1:ADDRESSES">
<xsl:for-each select="n1:SEPA_PAYMENT_TRANS_ADDRESS">
<xsl:variable name="Vvar54_SEPA_PAYMENT_TRANS_ADDRESS" select="."/>
<xsl:for-each select="n1:LINE_NO">
<xsl:variable name="Vvar56_LINE_NO" select="."/>
<xsl:variable name="Vvar59_CONST" select="2.0"/>
<xsl:variable name="Vvar60_RESULTOF_equal" select="$Vvar56_LINE_NO = $Vvar59_CONST"/>
<xsl:variable name="Vvar59_CONDITION">
<xsl:choose>
<xsl:when test="string($Vvar60_RESULTOF_equal)='true'">
<xsl:for-each select="$Vvar54_SEPA_PAYMENT_TRANS_ADDRESS/n1:ADDRESS_1">
<xsl:variable name="Vvar61_ADDRESS_2" select="."/>
<xsl:value-of select="$Vvar61_ADDRESS_2"/>
</xsl:for-each>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="Vvar118_CONST" select="''"/>
<xsl:variable name="Vvar119_RESULTOF_equal" select="$Vvar118_CONST = $Vvar59_CONDITION"/>
<xsl:if test="not(string($Vvar119_RESULTOF_equal)='true')">
<AdrLine>
<xsl:call-template name="escapeCharacters">
<xsl:with-param name="inputVal" select="$Vvar59_CONDITION"/>
</xsl:call-template>
</AdrLine>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>

</PstlAdr>
</xsl:otherwise>
</xsl:choose>

 

Userlevel 7
Badge +16

@gumabs after set Show Detailed Postal Address of Payee field to FALSE, XML is changed to below, you can see postal code is on the second address line 2, and I got another error for missing <PstCd> tag. I believe we might face modification.

Supplier Payment Address

 

 

Userlevel 6
Badge +19

Hello @ronhu 

I think issue is with the bank’s format. But we can modify xsl. Set Show Detailed address to TRUE again. That is the closest version. Bank is asking for adrline tag rather than strnm. I will modify xsl and send you updated version.

have a nice weekend

Userlevel 7
Badge +16

@gumabs thank you again.

how difficult to change the XSL? sorry I am not technical, and we are on cloud, is that easy to do at our end or has to be done by IFS support?

Appreciated your time.

Userlevel 6
Badge +19

Hi @ronhu 

It is handled on IFS windows but requires technical skill. You can download current xsl file. Make your changes and upload newer version. Always save original xsl as backup.

 

 

Userlevel 7
Badge +16

@gumabs Thank you.

I am wondering whether below changes in XSL that could change the tag name from <StrtNm> to <AdrLine>

 

Userlevel 6
Badge +19

Hi @ronhu 

This could be a solution but if you will have another bank with detailed address and the bank format will ask for StrtNm tag instead of AdrLine, then you must add a condition to resolve the issue.

Hope this helps

Userlevel 7
Badge +16

@gumabs you are correct. I am thinking of adding <AdrLine> instead of repalce <StrtNm>. 

 

Thank you again.

Reply