Skip to main content

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?

 

 

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


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                                                                                                                                                                                                                    


@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.


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.

 

 

 


@gumabs Thank you for your info.  

I am making changes and testing with bank. 

appreciate your help.


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


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.

 


@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

 


@gumabs this could be IFS bug?

 


Hi @ronhu 

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

Thanks 

 

 


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

 


@gumabs I am reporting this to IFS support.


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


@gumabs hope it’s not too late.

 


Hi @ronhu 

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

Thanks


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

 


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>

 


@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

 

 


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


@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.


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.

 

 


@gumabs Thank you.

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

 


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


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

 

Thank you again.


Reply