Payment Authorization Cancel

Overview

A PaymentAuthCancelRequest message should be sent to cancel an authorization if an order is canceled. This removes any holds or pending charges on the customer's account.

An alternate request format, PaymentSettlementRequestList, groups several events together in a single message, and is intended for clients using the Webhooks Implementation for Asynchronous Messages. If you are using the Webhooks implemention, see Payment Authorization Cancel List Event, below.

URI Summary

Action URI Template URI Example Non-URI Request Response
POST /v[M.m]/stores/[StoreID]/
payments/auth/cancel/[TenderType].[format]
/v1.0/stores/ABCXYZ/
payments/auth/cancel/VC.xml
XML 200 + XML response

Tender Types

In the URI, use the appropriate Tender Types code for the transaction. This is generally the tender type that was originally used for the payment authorization that is being canceled. Tender types that can be used with this request include PY (PayPal), KL (Klarna), and various tender types that identify credit cards.

When submitting an authorization cancel for a digital wallet (including Apple Pay) transaction, do not use the DW tender type. Instead, use the specific tender type of the credit card used in this transaction. This value can be found in the TenderType field of the CreditCardAuthReply message that you received in response to the original digital wallet auth request.

Request Examples

The request is a PaymentAuthCancelRequest message.

Request with a Payment Account Number

Use this format for an authorization cancel request of a payment transaction that involves a card number, such as a credit card, private label credit card, or Apple Pay transaction.

<?xml version="1.0" encoding="UTF-8"?>
<PaymentAuthCancelRequest requestId="123" xmlns="http://api.gsicommerce.com/schema/checkout/1.0">
   <PaymentContext>
      <OrderId>12345</OrderId>
      <PaymentAccountUniqueId isToken="true">4111110PASeK1111</PaymentAccountUniqueId>
   </PaymentContext>
   <Amount currencyCode="USD">100.00</Amount>
</PaymentAuthCancelRequest>

Request without a Payment Account Number

Use this format for an authorization cancel request of a payment transaction without a card number, such as a PayPal or Klarna transaction.

<?xml version="1.0" encoding="UTF-8"?>
<PaymentAuthCancelRequest requestId="123" xmlns="http://api.gsicommerce.com/schema/checkout/1.0">
   <PaymentContextBase>
      <OrderId>12345</OrderId>
   </PaymentContextBase>
   <Amount currencyCode="USD">100.00</Amount>
</PaymentAuthCancelRequest>

Request with a Reference Transaction Id

Use this format for an authorization cancel request when the authorization was created outside of Radial systems.

<?xml version="1.0" encoding="UTF-8"?>
<PaymentAuthCancelRequest requestId="123" xmlns="http://api.gsicommerce.com/schema/checkout/1.0">
   <PaymentContextBase>
      <OrderId>12345</OrderId>
   </PaymentContextBase>
   <Amount currencyCode="USD">100.00</Amount>
   <ReferenceTransactionId>75a68dd9-8602-1a33-aab4-7705099786f0</ReferenceTransactionId>
</PaymentAuthCancelRequest>

Request Elements

Element Required Description Type Restriction
PaymentAuthCancelRequest/
@requestId
Yes RequestId is used to uniquely identify a request, including as part of idempotent duplicate request processing. The value must be unique. It is recommended to use a variant 4 UUID for the request id. The same request id should only be reused if a read timeout occurs when attempting to receive a response from the payment service, or the payment service responds with a fault response. In all other cases a new request id must be sent for retried requests, including responses such as Fail, Timeout or PaymentProcessorTimeout. String Max 40 characters
PaymentContext Choice of PaymentContext (when a PaymentAccountUniqueId value is available) or PaymentContextBase (when a PaymentAccountUniqueId value is not available) Sequence of OrderId, PaymentAccountUniqueId ComplexType  
PaymentContext/
OrderId
Yes (when PaymentContext is present) Order ID String Max 20 characters
PaymentContext/
PaymentAccountUniqueId
Yes (when PaymentContext is present) Tokenized payment account number (for example, a credit card number) String Max 22 characters
PaymentContext/
PaymentAccountUniqueId/
@isToken
Yes (when PaymentContext is present) Attribute that indicates whether the payment account number is tokenized String true
PaymentContextBase Choice of PaymentContext (when a PaymentAccountUniqueId value is available) or PaymentContextBase (when a PaymentAccountUniqueId value is not available) Sequence of OrderId ComplexType  
PaymentContextBase/
OrderId
Yes (when PaymentContextBase is present) Order ID String Max 20 characters
Amount Yes Amount authorized on the credit card String

Positive decimal, up to two decimal places (for example, 4.75)

Amount/
@currencyCode
Yes Attribute that indicates the type of currency used for the order String 3-character ISO 4217 code (for example, USD, CAD, EUR). See http://en.wikipedia.org/
wiki/ISO_4217.
ReferenceTransactionId No External reference ID of the authorization to be cancelled String May not be empty if included.

HTTP Reply

<?xml version="1.0" encoding="UTF-8"?>
<AckReply xmlns="http://api.gsicommerce.com/schema/checkout/1.0">
   <Received/>
</AckReply>

Queue Format

q.Payments.AuthCancels.Status.<RABBIT_MQ_USERNAME>

Response Example

The response is a PaymentAuthCancelReply message.

With a Payment Account Number)

<?xml version="1.0" encoding="UTF-8"?>
<PaymentAuthCancelReply xmlns="http://api.gsicommerce.com/schema/checkout/1.0">
   <PaymentContext>
      <OrderId>12345</OrderId>
      <PaymentAccountUniqueId isToken="true">4111110PASeK1111</PaymentAccountUniqueId>
   </PaymentContext>
   <TenderType>VC</TenderType>
   <ResponseCode>Success</ResponseCode>
   <Amount currencyCode="USD">1.00</Amount>
   <ExtendedResponseCode/>
   <StoreId>ABCXYZ</StoreId>
</PaymentAuthCancelReply>

Without a Payment Account Number

<?xml version="1.0" encoding="UTF-8"?>
<PaymentAuthCancelReply xmlns="http://api.gsicommerce.com/schema/checkout/1.0">
   <PaymentContextBase>
      <OrderId>12345</OrderId>
   </PaymentContextBase>
   <TenderType>PY</TenderType>
   <ResponseCode>Success</ResponseCode>
   <Amount currencyCode="USD">100.00</Amount>
   <ExtendedResponseCode/>
   <StoreId>ABCXYZ</StoreId>
</PaymentAuthCancelReply>

Response Elements

Element Required Description Type Restriction
PaymentContext Choice of PaymentContext or PaymentContextBase. The same element that was used in the request is returned in the reply.      
PaymentContext/
OrderId
Yes (when PaymentContext is present) Order ID String Max 20 characters
PaymentContext/
PaymentAccountUniqueId
Yes (when PaymentContext is present) Tokenized payment account number (for example, credit card number) String Max 22 characters
PaymentContext/
PaymentAccountUniqueId/
@isToken
Yes (when PaymentContext is present) Attribute that indicates whether the payment account number is tokenized String true
PaymentContextBase Choice of PaymentContextBase or PaymentContext. The same element that was used in the request is returned in the reply.      

PaymentContextBase/
OrderId

Yes (when PaymentContextBase is present) Order ID String Max 20 characters
TenderType Yes Tender type identifier String 2 to 4 characters
ResponseCode Yes Authorization cancel response code String Success
Fail
Timeout
Amount Yes Amount authorized on the credit card String

Positive decimal, up to two decimal places (for example, 4.75)

Amount/
@currencyCode
Yes Attribute that indicates the type of currency used for the order String 3-character ISO 4217 code (for example, USD, CAD, EUR). See http://en.wikipedia.org/
wiki/ISO_4217.
ExtendedResponseCode Yes Additional response code details for failures String
StoreId Yes Store identifier String Max 100 characters

Payment Authorization Cancel List Event

The xml response (mentioned below) contains a list of PaymentAuthCancelReply messages all clubbed under one parent element and is available only for clients using Asynchronous API Operations through Webhooks. This message cannot be obtained from a queue in RabbitMQ and hence the queue format is not applicable for the list event. In case you want to sign up for these events please contact customer service.

However, the individual PaymentAuthCancelReply message continues to live on RabbitMQ server and can be accessed using the information provided above.

Response Example

The response is a list of PaymentAuthCancelReply messages. Instead of returning single PaymentAuthCancelReply message, a list/batch of messsages are getting returned.

With a Payment Account Number

<?xml version="1.0" encoding="UTF-8"?>
<PaymentAuthCancelReplyList xmlns="http://api.gsicommerce.com/schema/checkout/1.0">
    <PaymentAuthCancelReply>
       <PaymentContext>
          <OrderId>12345</OrderId>
          <PaymentAccountUniqueId isToken="true">4111110PASeK1111</PaymentAccountUniqueId>
       </PaymentContext>
       <TenderType>VC</TenderType>
       <ResponseCode>Success</ResponseCode>
       <Amount currencyCode="USD">1.00</Amount>
       <ExtendedResponseCode/>
       <StoreId>ABCXYZ</StoreId>
    </PaymentAuthCancelReply>
    <PaymentAuthCancelReply>
       <PaymentContext>
          <OrderId>12890</OrderId>
          <PaymentAccountUniqueId isToken="true">4222220PASeK2222</PaymentAccountUniqueId>
       </PaymentContext>
       <TenderType>VC</TenderType>
       <ResponseCode>Success</ResponseCode>
       <Amount currencyCode="USD">25.00</Amount>
       <ExtendedResponseCode/>
       <StoreId>ABC</StoreId>
    </PaymentAuthCancelReply>
</PaymentAuthCancelReplyList>

Without a Payment Account Number

<?xml version="1.0" encoding="UTF-8"?>
<PaymentAuthCancelReplyList xmlns="http://api.gsicommerce.com/schema/checkout/1.0">
    <PaymentAuthCancelReply>
       <PaymentContextBase>
          <OrderId>12345</OrderId>
       </PaymentContextBase>
       <TenderType>PY</TenderType>
       <ResponseCode>Success</ResponseCode>
       <Amount currencyCode="USD">100.00</Amount>
       <ExtendedResponseCode/>
       <StoreId>ABCXYZ</StoreId>
    </PaymentAuthCancelReply>
    <PaymentAuthCancelReply>
       <PaymentContextBase>
          <OrderId>906735</OrderId>
       </PaymentContextBase>
       <TenderType>PY</TenderType>
       <ResponseCode>Success</ResponseCode>
       <Amount currencyCode="USD">200.00</Amount>
       <ExtendedResponseCode/>
       <StoreId>ABC</StoreId>
    </PaymentAuthCancelReply>
</PaymentAuthCancelReplyList>

Response Elements

Element Required Description Type Restriction
PaymentAuthCancelReplyList A wrapper/parent object for all the PaymentAuthCancelReply elements Sequence of PaymentAuthCancelReply elements ComplexType  
PaymentAuthCancelReply A wrapper/parent object for all the sub-elements such as PaymentContextBase, TenderType, ResponseCode, Amount, ExtendedResponseCode, StoreId etc. Sequence of PaymentContextBase, TenderType, ResponseCode, Amount, ExtendedResponseCode, StoreId ComplexType  
PaymentContext Choice of PaymentContext or PaymentContextBase. The same element that was used in the request is returned in the reply.      
PaymentContext/
OrderId
Yes (when PaymentContext is present) Order ID String Max 20 characters
PaymentContext/
PaymentAccountUniqueId
Yes (when PaymentContext is present) Tokenized payment account number (for example, credit card number) String Max 22 characters
PaymentContext/
PaymentAccountUniqueId/
@isToken
Yes (when PaymentContext is present) Attribute that indicates whether the payment account number is tokenized String true
PaymentContextBase Choice of PaymentContextBase or PaymentContext. The same element that was used in the request is returned in the reply.      

PaymentContextBase/
OrderId

Yes (when PaymentContextBase is present) Order ID String Max 20 characters
TenderType Yes Tender type identifier String 2 to 4 characters
ResponseCode Yes Authorization cancel response code String Success
Fail
Timeout
Amount Yes Amount authorized on the credit card String

Positive decimal, up to two decimal places (for example, 4.75)

Amount/
@currencyCode
Yes Attribute that indicates the type of currency used for the order String 3-character ISO 4217 code (for example, USD, CAD, EUR). See http://en.wikipedia.org/
wiki/ISO_4217.
ExtendedResponseCode Yes Additional response code details for failures String
StoreId Yes Store identifier String Max 100 characters