Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

...

...

...

...

...

...

In this section:

Table of Contents
minLevel1
maxLevel1

Definition

A Cancellation is a transaction initiated by an Acceptor to cancel a payment which was successfully completed. The Cancellation service is also known as a Reversal. A Cancellation cannot be revoked.

Reference Documents

  • nexo Card Payment Message Usage Guide

  • nexo-FAST

Processing

The Cancellation service can be performed and processed in three ways:

Offline Cancellation

The Acceptor shall be aware that the transaction was not yet cleared: an AcceptorCancellationAdvice is sent to the Acquirer without an AcceptorCancellationRequest.

Online Cancellation

The Acceptor asks the Acquirer whether a cancellation can be performed by sending an AcceptorCancellationRequest before sending an AcceptorCancellationAdvice.

The AcceptorCancellationRequest may contain some information of the payment transaction to be cancelled.

Configuration

Enable Cancellation Service

To enable the Cancellation Service:

  1. Define the Cancellation Service proprieties in the Service Settings Table (E4).

  2. Add the Cancellation Service in the list of configured service in Terminal Data (E1) using:

    1. 'DF13' - Configured Services[1, 6] = 1b (Cancellation) or

    2. 'DF67' - Configured Services Extended[1, 6] = 1b (Cancellation)

  3. Specify which payment services can be cancelled:

    1. To allow the Cancellation of Payment, set 'DF28' - Application Profile Settings(APS) for Cancellation [1, 8] = 1b (Cancellation of Payment)

    2. To allow the Cancellation of Refund, set 'DF28' - Application Profile Settings(APS) for Cancellation [1, 7] = 1b (Cancellation of Refund)

    3. To allow the Cancellation of Pre-Authorization, set 'DF28' - Application Profile Settings(APS) for Cancellation [1, 6] = 1b (Cancellation of Pre-Authorisation)

    4. To allow the Cancellation of Payment Completion, set 'DF28' - Application Profile Settings(APS) for Cancellation [1, 5] = 1b (Cancellation of Payment Completion)

    5. To allow the Cancellation of Cash Advance, set 'DF28' - Application Profile Settings(APS) for Cancellation [1, 4] = 1b (Cancellation of Cash Advance)

Enable Offline Cancellation

The Cancellation Service processing mode is configurable per Application Profile (E6).

To enable Offline Cancellation:

  • Set 'DF28' - Application Profile Settings(APS) for Cancellation [2, 8] = 0b (Cancellation shall be performed offline (without Online Approval Request) for transactions that are neither captured nor reconciled) .

  • Set 'DF28' - Application Profile Settings(APS) for Cancellation [2, 6] = 0b (Cancellation shall be performed offline (without Online Approval Request) for captured transactions) .

Enable Online Cancellation

The Cancellation Service processing mode is configurable per Application Profile (E6).

To enable Online Cancellation:

  • Set 'DF28' - Application Profile Settings(APS) for Cancellation [2, 8] = 1b (Cancellation shall be performed with Online Approval Request for transactions that are neither captured nor reconciled) .

  • Set 'DF28' - Application Profile Settings(APS) for Cancellation [2, 6] = 1b (Cancellation shall be performed with Online Approval Request for captured transactions) .

Message Examples

Image Modified

To be completed



. From now on, a merchant is able to do :

Online Cancellation using the transaction log

Performing an online cancellation through a search of the transaction log involves the following steps explained below.

Steps Taken for a successful online cancellation:

  • Terminal Settings ( Tag DF34 byte 3, bit 6 set to 0 , bit 7 set to 1).

Image Modified
  • Ensure that Application Profile Settings for Cancellation (Tag DF28) is configured for the service you want to cancel(byte 1) and is configured to be performed online(byte 2). NOTE: In our case, it is configured online for captured transaction.

    Image Modified

Below is an example derived from a cancellation of an original transaction(payment).

Code Block
PaymentResult result;
result = arkos.doPayment(arkosConfig.AsBytes(), paymentParams.AsBytes()); //In your payment function
paymentParams.AddAscii(ArkosTags.ReferenceData,result.trxReference); //In your cancellation function

Examples of the use cases with their corresponding XML can be found below.

AcceptorCancellationRequest:

Code Block
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:caaa.005.001.06">
  <AccptrCxlReq>
    <Hdr>
      <MsgFctn>CCAQ</MsgFctn>
      <PrtcolVrsn>6.0</PrtcolVrsn>
      <XchgId>0</XchgId>
      <CreDtTm>2021-06-21T01:36:05.000+00:00</CreDtTm>
      <InitgPty>
        <Id>UBUNTU</Id>
      </InitgPty>
      <RcptPty>
        <Id>NATIXIS</Id>
      </RcptPty>
    </Hdr>
    <CxlReq>
      <Envt>
        <Acqrr>
          <Id>
            <Id>010009287351</Id>
          </Id>
          <ParamsVrsn>1.0</ParamsVrsn>
        </Acqrr>
        <Mrchnt>
          <Id>
            <Id>00000NEXOMER001</Id>
          </Id>
          <CmonNm>AMADIS 1111 Saint-Urbain Montréal</CmonNm>
        </Mrchnt>
        <POI>
          <Id>
            <Id>ASA00001</Id>
          </Id>
          <Cpblties>
            <CardRdngCpblties>ECTL</CardRdngCpblties>
            <ApprvlCdLngth>6</ApprvlCdLngth>
            <OnLineCpblties>SMON</OnLineCpblties>
            <MsgCpblties>
              <Dstn>CRCP</Dstn>
              <Dstn>MDSP</Dstn>
              <Dstn>MRCP</Dstn>
              <AvlblLang>en</AvlblLang>
              <AvlblLang>fr</AvlblLang>
              <AvlblLang>it</AvlblLang>
            </MsgCpblties>
          </Cpblties>
          <Cmpnt>
            <Tp>TERM</Tp>
            <Id>
              <PrvdrId>MANUFACTURER</PrvdrId>
              <Id>MODEL</Id>
              <SrlNb>DEVICESN</SrlNb>
            </Id>
            <Sts />
          </Cmpnt>
          <Cmpnt>
            <Tp>APLI</Tp>
            <Id>
              <PrvdrId>AMADIS</PrvdrId>
              <Id>ARKOS</Id>
            </Id>
            <Sts>
              <VrsnNb>2.0</VrsnNb>
            </Sts>
          </Cmpnt>
        </POI>
        <Card>
          <PlainCardData>
            <PAN>5219610200140517</PAN>
            <XpryDt>2021-08</XpryDt>
          </PlainCardData>
          <CardPdctPrfl>04</CardPdctPrfl>
          <CardBrnd>Carte a Piste</CardBrnd>
        </Card>
      </Envt>
      <Cntxt>
        <PmtCntxt>
          <CardPres>false</CardPres>
          <CrdhldrPres>false</CrdhldrPres>
          <AttndncCntxt>ATTD</AttndncCntxt>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
        </PmtCntxt>
      </Cntxt>
      <Tx>
        <TxCaptr>false</TxCaptr>
        <MrchntCtgyCd>5555</MrchntCtgyCd>
        <TxId>
          <TxDtTm>2021-06-21T01:36:05.000+00:00</TxDtTm>
          <TxRef>00000029</TxRef>
        </TxId>
        <OrgnlTx>
          <TxId>
            <TxDtTm>2021-06-21T01:36:00.000+00:00</TxDtTm>
            <TxRef>00000028</TxRef>
          </TxId>
          <POIId>
            <Id>ASA00001</Id>
          </POIId>
          <TxTp>CRDP</TxTp>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
          <TxRslt>
            <RspnToAuthstn>
              <Rspn>APPR</Rspn>
            </RspnToAuthstn>
            <AuthstnCd>000534</AuthstnCd>
          </TxRslt>
        </OrgnlTx>
        <RcncltnId>1</RcncltnId>
        <TxDtls>
          <Ccy>EUR</Ccy>
          <TtlAmt>89.12</TtlAmt>
        </TxDtls>
      </Tx>
    </CxlReq>
  </AccptrCxlReq>
</Document>

AcceptorCancellationAdvice:

Code Block
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:caaa.007.001.06">
  <AccptrCxlAdvc>
    <Hdr>
      <MsgFctn>CCAQ</MsgFctn>
      <PrtcolVrsn>6.0</PrtcolVrsn>
      <XchgId>0</XchgId>
      <ReTrnsmssnCntr>1</ReTrnsmssnCntr>
      <CreDtTm>2021-06-21T01:36:05.000+00:00</CreDtTm>
      <InitgPty>
        <Id>UBUNTU</Id>
      </InitgPty>
      <RcptPty>
        <Id>NATIXIS</Id>
      </RcptPty>
    </Hdr>
    <CxlAdvc>
      <Envt>
        <Acqrr>
          <Id>
            <Id>010009287351</Id>
          </Id>
          <ParamsVrsn>1.0</ParamsVrsn>
        </Acqrr>
        <Mrchnt>
          <Id>
            <Id>00000NEXOMER001</Id>
          </Id>
          <CmonNm>AMADIS 1111 Saint-Urbain Montréal</CmonNm>
        </Mrchnt>
        <POI>
          <Id>
            <Id>ASA00001</Id>
          </Id>
          <Cpblties>
            <CardRdngCpblties>ECTL</CardRdngCpblties>
            <ApprvlCdLngth>6</ApprvlCdLngth>
            <OnLineCpblties>SMON</OnLineCpblties>
            <MsgCpblties>
              <Dstn>CRCP</Dstn>
              <Dstn>MDSP</Dstn>
              <Dstn>MRCP</Dstn>
              <AvlblLang>en</AvlblLang>
              <AvlblLang>fr</AvlblLang>
              <AvlblLang>it</AvlblLang>
            </MsgCpblties>
          </Cpblties>
          <Cmpnt>
            <Tp>TERM</Tp>
            <Id>
              <PrvdrId>MANUFACTURER</PrvdrId>
              <Id>MODEL</Id>
              <SrlNb>DEVICESN</SrlNb>
            </Id>
            <Sts />
          </Cmpnt>
          <Cmpnt>
            <Tp>APLI</Tp>
            <Id>
              <PrvdrId>AMADIS</PrvdrId>
              <Id>ARKOS</Id>
            </Id>
            <Sts>
              <VrsnNb>2.0</VrsnNb>
            </Sts>
          </Cmpnt>
        </POI>
        <Card>
          <PlainCardData>
            <PAN>5219610200140517</PAN>
            <XpryDt>2021-08</XpryDt>
          </PlainCardData>
          <IssrBIN>52196102</IssrBIN>
          <CardPdctPrfl>04</CardPdctPrfl>
          <CardBrnd>Carte a Piste</CardBrnd>
        </Card>
      </Envt>
      <Cntxt>
        <PmtCntxt>
          <CardPres>false</CardPres>
          <CrdhldrPres>false</CrdhldrPres>
          <OnLineCntxt>true</OnLineCntxt>
          <AttndncCntxt>ATTD</AttndncCntxt>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
        </PmtCntxt>
      </Cntxt>
      <Tx>
        <MrchntCtgyCd>5555</MrchntCtgyCd>
        <TxId>
          <TxDtTm>2021-06-21T01:36:05.000+00:00</TxDtTm>
          <TxRef>00000029</TxRef>
        </TxId>
        <OrgnlTx>
          <TxId>
            <TxDtTm>2021-06-21T01:36:00.000+00:00</TxDtTm>
            <TxRef>00000028</TxRef>
          </TxId>
          <POIId>
            <Id>ASA00001</Id>
          </POIId>
          <TxTp>CRDP</TxTp>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
          <TxRslt>
            <RspnToAuthstn>
              <Rspn>APPR</Rspn>
            </RspnToAuthstn>
            <AuthstnCd>000534</AuthstnCd>
          </TxRslt>
        </OrgnlTx>
        <TxSucss>true</TxSucss>
        <Rvsl>false</Rvsl>
        <RcncltnId>1</RcncltnId>
        <TxDtls>
          <Ccy>EUR</Ccy>
          <TtlAmt>89.12</TtlAmt>
        </TxDtls>
      </Tx>
    </CxlAdvc>
  </AccptrCxlAdvc>
</Document>

Offline Cancellation

Offline cancellations are done through a search in the transaction log as well. Performing an offline cancellation involves the following steps explained below.

Steps Taken for a successful offline cancellation:

  • Terminal Settings ( Tag DF34 byte 3, bit 6 set to 0 , bit 7 set to 1).

Image Modified
  • Ensure that Application Profile Settings for Cancellation (Tag DF28) is configured for the service you want to cancel(byte 1) and is configured to be performed offline(byte 2). NOTE: In our case, it is configured offline for captured transaction.

    Image Modified

Below is an example derived from a cancellation of an original transaction(payment).

Code Block
PaymentResult result;
result = arkos.doPayment(arkosConfig.AsBytes(), paymentParams.AsBytes()); //In your payment function
paymentParams.AddAscii(ArkosTags.ReferenceData,result.trxReference); //In your cancellation function

Examples of the use cases with their corresponding XML can be found below.

AcceptorCancellationAdvice:

Code Block
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:caaa.007.001.06">
  <AccptrCxlAdvc>
    <Hdr>
      <MsgFctn>CCAQ</MsgFctn>
      <PrtcolVrsn>6.0</PrtcolVrsn>
      <XchgId>0</XchgId>
      <ReTrnsmssnCntr>1</ReTrnsmssnCntr>
      <CreDtTm>2021-06-21T02:03:26.000+00:00</CreDtTm>
      <InitgPty>
        <Id>UBUNTU</Id>
      </InitgPty>
      <RcptPty>
        <Id>NATIXIS</Id>
      </RcptPty>
    </Hdr>
    <CxlAdvc>
      <Envt>
        <Acqrr>
          <Id>
            <Id>010009287351</Id>
          </Id>
          <ParamsVrsn>1.0</ParamsVrsn>
        </Acqrr>
        <Mrchnt>
          <Id>
            <Id>00000NEXOMER001</Id>
          </Id>
          <CmonNm>AMADIS 1111 Saint-Urbain Montréal</CmonNm>
        </Mrchnt>
        <POI>
          <Id>
            <Id>ASA00001</Id>
          </Id>
          <Cpblties>
            <CardRdngCpblties>ECTL</CardRdngCpblties>
            <ApprvlCdLngth>6</ApprvlCdLngth>
            <OnLineCpblties>SMON</OnLineCpblties>
            <MsgCpblties>
              <Dstn>CRCP</Dstn>
              <Dstn>MDSP</Dstn>
              <Dstn>MRCP</Dstn>
              <AvlblLang>en</AvlblLang>
              <AvlblLang>fr</AvlblLang>
              <AvlblLang>it</AvlblLang>
            </MsgCpblties>
          </Cpblties>
          <Cmpnt>
            <Tp>TERM</Tp>
            <Id>
              <PrvdrId>MANUFACTURER</PrvdrId>
              <Id>MODEL</Id>
              <SrlNb>DEVICESN</SrlNb>
            </Id>
            <Sts />
          </Cmpnt>
          <Cmpnt>
            <Tp>APLI</Tp>
            <Id>
              <PrvdrId>AMADIS</PrvdrId>
              <Id>ARKOS</Id>
            </Id>
            <Sts>
              <VrsnNb>2.0</VrsnNb>
            </Sts>
          </Cmpnt>
        </POI>
        <Card>
          <PlainCardData>
            <PAN>5219610200140517</PAN>
            <XpryDt>2021-08</XpryDt>
          </PlainCardData>
          <IssrBIN>52196102</IssrBIN>
          <CardPdctPrfl>04</CardPdctPrfl>
          <CardBrnd>Carte a Piste</CardBrnd>
        </Card>
      </Envt>
      <Cntxt>
        <PmtCntxt>
          <CardPres>false</CardPres>
          <CrdhldrPres>false</CrdhldrPres>
          <OnLineCntxt>false</OnLineCntxt>
          <AttndncCntxt>ATTD</AttndncCntxt>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
        </PmtCntxt>
      </Cntxt>
      <Tx>
        <MrchntCtgyCd>5555</MrchntCtgyCd>
        <TxId>
          <TxDtTm>2021-06-21T02:03:26.000+00:00</TxDtTm>
          <TxRef>00000032</TxRef>
        </TxId>
        <OrgnlTx>
          <TxId>
            <TxDtTm>2021-06-21T02:03:23.000+00:00</TxDtTm>
            <TxRef>00000031</TxRef>
          </TxId>
          <POIId>
            <Id>ASA00001</Id>
          </POIId>
          <TxTp>CRDP</TxTp>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
          <TxRslt>
            <RspnToAuthstn>
              <Rspn>APPR</Rspn>
            </RspnToAuthstn>
            <AuthstnCd>000535</AuthstnCd>
          </TxRslt>
        </OrgnlTx>
        <TxSucss>true</TxSucss>
        <Rvsl>false</Rvsl>
        <RcncltnId>1</RcncltnId>
        <TxDtls>
          <Ccy>EUR</Ccy>
          <TtlAmt>89.12</TtlAmt>
        </TxDtls>
      </Tx>
    </CxlAdvc>
  </AccptrCxlAdvc>
</Document>

Online Cancellation without searching from the log

It is to be noted that a slight modification was made to the flow of the latter (Online Cancellation without searching from the log) to help retrieve some Infos; such as AcquirerID, TerminalID, and etc. As it stands, this seems to be lackluster from Nexofast as they haven't thought out this solution properly. Upon implementing the flow they provided to us (nexoFAST 3.2), we ended up having some issues.

A new function was introduced as a solution to the problem.

The function setSelectedApplicationProfileNumberToDefaultFromServiceEntry allows us to set a profile, initialized the application, and finally, construct valid messages.

Below is the modified diagram.

Image Modified

Steps Taken for a successful online cancellation:

  • Terminal Settings ( Tag DF34 byte 3, bit 6 set to 1 , bit 7 set to 0).

Image Modified

Reference data has been included in the Original Transaction section of CancellationRequest and CancellationAdvice.

Below is an example derived from a cancellation of an original transaction(payment).

Code Block
 paymentParams.AddBin(ArkosTags.TransactionAmount, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00 });
 paymentParams.AddBin(ArkosTags.AmountAuthorised, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00 });
 paymentParams.AddBin(ArkosTags.TransactionAmountBeforeAdjustment, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00 });

TlvTree originalTransaction = paymentParams.AddChild(ArkosTags.OriginalTransaction);
originalTransaction.AddEMVDate(ArkosTags.TransactionDate, cal.get(Calendar.YEAR) % 100, cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH));
originalTransaction.AddEMVTime(ArkosTags.TransactionTime, cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
originalTransaction.AddBin(ArkosTags.LocalTimezone, utcOffset);
originalTransaction.AddAscii(ArkosTags.ReferenceData,"1234567890");
originalTransaction.AddEnum(ArkosTags.SelectedService, PaymentServiceID.Payment);

paymentParams.AddAscii(ArkosTags.ReferenceData,"1234567890");


Examples of the use cases with their corresponding XML can be found below.

AcceptorCancellationRequest:

Code Block
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:caaa.005.001.06">
  <AccptrCxlReq>
    <Hdr>
      <MsgFctn>CCAQ</MsgFctn>
      <PrtcolVrsn>6.0</PrtcolVrsn>
      <XchgId>0</XchgId>
      <CreDtTm>2021-06-21T00:30:03.000+00:00</CreDtTm>
      <InitgPty>
        <Id>UBUNTU</Id>
      </InitgPty>
      <RcptPty>
        <Id>NATIXIS</Id>
      </RcptPty>
    </Hdr>
    <CxlReq>
      <Envt>
        <Acqrr>
          <Id>
            <Id>010009287351</Id>
          </Id>
          <ParamsVrsn>1.0</ParamsVrsn>
        </Acqrr>
        <Mrchnt>
          <Id>
            <Id>00000NEXOMER001</Id>
          </Id>
          <CmonNm>AMADIS 1111 Saint-Urbain Montréal</CmonNm>
        </Mrchnt>
        <POI>
          <Id>
            <Id>ASA00001</Id>
          </Id>
          <Cpblties>
            <CardRdngCpblties>ECTL</CardRdngCpblties>
            <ApprvlCdLngth>6</ApprvlCdLngth>
            <OnLineCpblties>SMON</OnLineCpblties>
            <MsgCpblties>
              <Dstn>CRCP</Dstn>
              <Dstn>MDSP</Dstn>
              <Dstn>MRCP</Dstn>
              <AvlblLang>en</AvlblLang>
              <AvlblLang>fr</AvlblLang>
              <AvlblLang>it</AvlblLang>
            </MsgCpblties>
          </Cpblties>
          <Cmpnt>
            <Tp>TERM</Tp>
            <Id>
              <PrvdrId>MANUFACTURER</PrvdrId>
              <Id>MODEL</Id>
              <SrlNb>ASADEVSN</SrlNb>
            </Id>
            <Sts />
          </Cmpnt>
          <Cmpnt>
            <Tp>APLI</Tp>
            <Id>
              <PrvdrId>AMADIS</PrvdrId>
              <Id>ARKOS</Id>
            </Id>
            <Sts>
              <VrsnNb>2.0</VrsnNb>
            </Sts>
          </Cmpnt>
        </POI>
        <Card>
          <CardPdctPrfl>04</CardPdctPrfl>
          <CardBrnd>Carte a Piste</CardBrnd>
        </Card>
      </Envt>
      <Cntxt>
        <PmtCntxt>
          <CardPres>false</CardPres>
          <CrdhldrPres>false</CrdhldrPres>
          <AttndncCntxt>ATTD</AttndncCntxt>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
        </PmtCntxt>
      </Cntxt>
      <Tx>
        <TxCaptr>false</TxCaptr>
        <MrchntCtgyCd>5555</MrchntCtgyCd>
        <TxId>
          <TxDtTm>2021-06-21T00:30:03.000+00:00</TxDtTm>
          <TxRef>00000026</TxRef>
        </TxId>
        <OrgnlTx>
          <TxId>
            <TxDtTm>2021-06-21T00:30:03.000+00:00</TxDtTm>
            <TxRef>1234567890</TxRef>
          </TxId>
          <TxTp>CRDP</TxTp>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
        </OrgnlTx>
        <RcncltnId>1</RcncltnId>
        <TxDtls>
          <Ccy>EUR</Ccy>
          <TtlAmt>20.00</TtlAmt>
        </TxDtls>
      </Tx>
    </CxlReq>
  </AccptrCxlReq>
</Document>

AcceptorCancellationAdvice:

Code Block
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:caaa.007.001.06">
  <AccptrCxlAdvc>
    <Hdr>
      <MsgFctn>CCAQ</MsgFctn>
      <PrtcolVrsn>6.0</PrtcolVrsn>
      <XchgId>0</XchgId>
      <ReTrnsmssnCntr>1</ReTrnsmssnCntr>
      <CreDtTm>2021-06-21T00:30:03.000+00:00</CreDtTm>
      <InitgPty>
        <Id>UBUNTU</Id>
      </InitgPty>
      <RcptPty>
        <Id>NATIXIS</Id>
      </RcptPty>
    </Hdr>
    <CxlAdvc>
      <Envt>
        <Acqrr>
          <Id>
            <Id>010009287351</Id>
          </Id>
          <ParamsVrsn>1.0</ParamsVrsn>
        </Acqrr>
        <Mrchnt>
          <Id>
            <Id>00000NEXOMER001</Id>
          </Id>
          <CmonNm>AMADIS 1111 Saint-Urbain Montréal</CmonNm>
        </Mrchnt>
        <POI>
          <Id>
            <Id>ASA00001</Id>
          </Id>
          <Cpblties>
            <CardRdngCpblties>ECTL</CardRdngCpblties>
            <ApprvlCdLngth>6</ApprvlCdLngth>
            <OnLineCpblties>SMON</OnLineCpblties>
            <MsgCpblties>
              <Dstn>CRCP</Dstn>
              <Dstn>MDSP</Dstn>
              <Dstn>MRCP</Dstn>
              <AvlblLang>en</AvlblLang>
              <AvlblLang>fr</AvlblLang>
              <AvlblLang>it</AvlblLang>
            </MsgCpblties>
          </Cpblties>
          <Cmpnt>
            <Tp>TERM</Tp>
            <Id>
              <PrvdrId>MANUFACTURER</PrvdrId>
              <Id>MODEL</Id>
              <SrlNb>ASADEVSN</SrlNb>
            </Id>
            <Sts />
          </Cmpnt>
          <Cmpnt>
            <Tp>APLI</Tp>
            <Id>
              <PrvdrId>AMADIS</PrvdrId>
              <Id>ARKOS</Id>
            </Id>
            <Sts>
              <VrsnNb>2.0</VrsnNb>
            </Sts>
          </Cmpnt>
        </POI>
        <Card>
          <CardPdctPrfl>04</CardPdctPrfl>
          <CardBrnd>Carte a Piste</CardBrnd>
        </Card>
      </Envt>
      <Cntxt>
        <PmtCntxt>
          <CardPres>false</CardPres>
          <CrdhldrPres>false</CrdhldrPres>
          <OnLineCntxt>true</OnLineCntxt>
          <AttndncCntxt>ATTD</AttndncCntxt>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
        </PmtCntxt>
      </Cntxt>
      <Tx>
        <MrchntCtgyCd>5555</MrchntCtgyCd>
        <TxId>
          <TxDtTm>2021-06-21T00:30:03.000+00:00</TxDtTm>
          <TxRef>00000026</TxRef>
        </TxId>
        <OrgnlTx>
          <TxId>
            <TxDtTm>2021-06-21T00:30:03.000+00:00</TxDtTm>
            <TxRef>1234567890</TxRef>
          </TxId>
          <TxTp>CRDP</TxTp>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
        </OrgnlTx>
        <TxSucss>true</TxSucss>
        <Rvsl>false</Rvsl>
        <RcncltnId>1</RcncltnId>
        <TxDtls>
          <Ccy>EUR</Ccy>
          <TtlAmt>20.00</TtlAmt>
        </TxDtls>
      </Tx>
    </CxlAdvc>
  </AccptrCxlAdvc>
</Document>

Transaction Reversal

An online cancellation can be reversed in the same way as an online authorization during payment if we don't receive any message or if an incident happened after authorization. An online cancellation that received a DECLINED response from the acquirer will NOT result in completion advice.

Below is the obtained cancellation advice XML.

Code Block
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:caaa.007.001.06">
  <AccptrCxlAdvc>
    <Hdr>
      <MsgFctn>CCAQ</MsgFctn>
      <PrtcolVrsn>6.0</PrtcolVrsn>
      <XchgId>0</XchgId>
      <ReTrnsmssnCntr>1</ReTrnsmssnCntr>
      <CreDtTm>2021-06-21T10:40:24.000+00:00</CreDtTm>
      <InitgPty>
        <Id>UBUNTU</Id>
      </InitgPty>
      <RcptPty>
        <Id>NATIXIS</Id>
      </RcptPty>
    </Hdr>
    <CxlAdvc>
      <Envt>
        <Acqrr>
          <Id>
            <Id>010009287351</Id>
          </Id>
          <ParamsVrsn>1.0</ParamsVrsn>
        </Acqrr>
        <Mrchnt>
          <Id>
            <Id>00000NEXOMER001</Id>
          </Id>
          <CmonNm>AMADIS 1111 Saint-Urbain Montréal</CmonNm>
        </Mrchnt>
        <POI>
          <Id>
            <Id>ASA00001</Id>
          </Id>
          <Cpblties>
            <CardRdngCpblties>ECTL</CardRdngCpblties>
            <ApprvlCdLngth>6</ApprvlCdLngth>
            <OnLineCpblties>SMON</OnLineCpblties>
            <MsgCpblties>
              <Dstn>CRCP</Dstn>
              <Dstn>MDSP</Dstn>
              <Dstn>MRCP</Dstn>
              <AvlblLang>en</AvlblLang>
              <AvlblLang>fr</AvlblLang>
              <AvlblLang>it</AvlblLang>
            </MsgCpblties>
          </Cpblties>
          <Cmpnt>
            <Tp>TERM</Tp>
            <Id>
              <PrvdrId>MANUFACTURER</PrvdrId>
              <Id>MODEL</Id>
              <SrlNb>DEVICESN</SrlNb>
            </Id>
            <Sts />
          </Cmpnt>
          <Cmpnt>
            <Tp>APLI</Tp>
            <Id>
              <PrvdrId>AMADIS</PrvdrId>
              <Id>ARKOS</Id>
            </Id>
            <Sts>
              <VrsnNb>2.0</VrsnNb>
            </Sts>
          </Cmpnt>
        </POI>
        <Card>
          <PlainCardData>
            <PAN>5219610200140517</PAN>
            <XpryDt>2021-08</XpryDt>
          </PlainCardData>
          <IssrBIN>52196102</IssrBIN>
          <CardPdctPrfl>04</CardPdctPrfl>
          <CardBrnd>Carte a Piste</CardBrnd>
        </Card>
      </Envt>
      <Cntxt>
        <PmtCntxt>
          <CardPres>false</CardPres>
          <CrdhldrPres>false</CrdhldrPres>
          <OnLineCntxt>true</OnLineCntxt>
          <AttndncCntxt>ATTD</AttndncCntxt>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
        </PmtCntxt>
      </Cntxt>
      <Tx>
        <MrchntCtgyCd>5555</MrchntCtgyCd>
        <TxId>
          <TxDtTm>2021-06-21T10:40:24.000+00:00</TxDtTm>
          <TxRef>00000022</TxRef>
        </TxId>
        <OrgnlTx>
          <TxId>
            <TxDtTm>2021-06-21T10:40:20.000+00:00</TxDtTm>
            <TxRef>00000021</TxRef>
          </TxId>
          <POIId>
            <Id>ASA00001</Id>
          </POIId>
          <TxTp>CRDP</TxTp>
          <CardDataNtryMd>DFLE</CardDataNtryMd>
          <TxRslt>
            <RspnToAuthstn>
              <Rspn>APPR</Rspn>
            </RspnToAuthstn>
            <AuthstnCd>000532</AuthstnCd>
          </TxRslt>
        </OrgnlTx>
        <TxSucss>false</TxSucss>
        <Rvsl>true</Rvsl>
        <RcncltnId>1</RcncltnId>
        <TxDtls>
          <Ccy>EUR</Ccy>
          <TtlAmt>99.12</TtlAmt>
        </TxDtls>
      </Tx>
    </CxlAdvc>
  </AccptrCxlAdvc>
</Document>

NOTE: It is to be noted that if there is a declined on a CancellationRequest, no CancellationAdvice will be sent to the server. See the attached picture below for more information.

Image Modified

Nexo Acq Receipt…

Nexo Retailer:

PaymentResp : PaymentAcquirerData.Acquirer.TransactionID

Quid PaymentReq? PaymentData.CardAcquisatio

Completion et Annulation sans recherche dans le lot

MerchantApp Considerations

UI/UX (Recommended)

Cancellation online without searching the log

Sales

  1. Purchase

  2. Refund

  3. Cancellation

Reference :

1234567890ABC

1 2 3 4 5 6 7 8 9 0

q w e r t y u i o p

a s d f g h j k l

z x c v b n m . :

Maj Space Sym

Terminal ID:

DEMO0001

1 2 3 4 5 6 7 8 9 0

q w e r t y u i o p

a s d f g h j k l

z x c v b n m . :

Maj Space Sym

Amount

80.00

1 2 3 4 5 6 7 8 9 0

q w e r t y u i o p

a s d f g h j k l

z x c v b n m . :

Maj Space Sym

Date

29 08 2021

1 2 3 4 5 6 7 8 9 0

q w e r t y u i o p

a s d f g h j k l

z x c v b n m . :

Maj Space Sym

Code Block
languagenone
<OrgnlTx>
...
  <POIId>
   <Id>DEMO1234</Id>
  </POIId>
 ...
</OrgnlTx>

Voir écran d’initialisation d’un POI pour inspiration…

Voir écran saisie pour MOTO ou saisie manuelle

Forcer le time à 0

Forcer le timezone à 0

Notes:

  • User shall be able to press “OK” to skip Refund Reference Data Entry

Refund

15.00$

Present Card

Image Modified

Refund

15.00$

Approved

(tick)

Welcome / Bienvenue

Receipt

The payment receipt shall include the Refund Reference Data.