Retrieve Transaction
Request to retrieve the details of a transaction. For example you can retrieve the details of an authorization that you previously executed.
URL | https://secure.uat.tnspayments.com/api/rest/version/81/merchant/{merchantId}/order/{orderid}/transaction/{transactionid} |
HTTP Method | GET |
Authentication |
This operation requires authentication via one of the following methods:
|
Request Parameters
correlationId String = OPTIONAL
responseControls = OPTIONAL
responseControls.sensitiveData String = OPTIONAL
{merchantId} Alphanumeric + additional characters COMPULSORY
{orderid} String COMPULSORY
{transactionid} String COMPULSORY
- Movement of money. For example, payments and refunds.
- Validations. For example, account verification or 3-D Secure authentication of the payer.
- Undoing other transactions. For example, voiding a payment transaction.
- Chargebacks.
- Fees from your payment service provider.
If you attempt an operation and it fails (eg you try to PAY on a card with no funds), then you need a new id for each retry.
Response Parameters
browserPayment = CONDITIONAL
browserPayment.redirectUrl Url = CONDITIONAL
merchant Alphanumeric + additional characters = Always Provided
order = Always Provided
order.amount Decimal = Always Provided
order.creationTime DateTime = Always Provided
order.currency Upper case alphabetic text = Always Provided
order.id String = Always Provided
order.lastUpdatedTime DateTime = Always Provided
order.merchantAmount Decimal = Always Provided
order.merchantCurrency Upper case alphabetic text = Always Provided
If there is FX on this order, this is based on the rate quote you provided on the payment transactions, if not then this is the order.currency.
order.totalAuthorizedAmount Decimal = Always Provided
order.totalCapturedAmount Decimal = Always Provided
order.totalDisbursedAmount Decimal = Always Provided
order.totalRefundedAmount Decimal = Always Provided
response = Always Provided
response.gatewayCode Enumeration = Always Provided
result Enumeration = Always Provided
transaction = Always Provided
transaction.amount Decimal = Always Provided
transaction.currency Upper case alphabetic text = Always Provided
transaction.id String = Always Provided
- Movement of money. For example, payments and refunds.
- Validations. For example, account verification or 3-D Secure authentication of the payer.
- Undoing other transactions. For example, voiding a payment transaction.
- Chargebacks.
- Fees from your payment service provider.
If you attempt an operation and it fails (eg you try to PAY on a card with no funds), then you need a new id for each retry.
transaction.type Enumeration = Always Provided
accountFunding = CONDITIONAL
accountFunding.purpose Enumeration = CONDITIONAL
accountFunding.recipient = CONDITIONAL
accountFunding.recipient.account = CONDITIONAL
accountFunding.recipient.account.fundingMethod Enumeration = CONDITIONAL
accountFunding.recipient.account.identifier String = CONDITIONAL
accountFunding.recipient.account.identifierType Enumeration = CONDITIONAL
accountFunding.recipient.address = CONDITIONAL
accountFunding.recipient.address.city String = CONDITIONAL
accountFunding.recipient.address.country Upper case alphabetic text = CONDITIONAL
accountFunding.recipient.address.postCodeZip String = CONDITIONAL
accountFunding.recipient.address.stateProvinceCode String = CONDITIONAL
accountFunding.recipient.address.street String = CONDITIONAL
accountFunding.recipient.address.street2 String = CONDITIONAL
accountFunding.recipient.firstName String = CONDITIONAL
accountFunding.recipient.identification = CONDITIONAL
accountFunding.recipient.identification.country Upper case alphabetic text = CONDITIONAL
accountFunding.recipient.identification.type Enumeration = CONDITIONAL
accountFunding.recipient.identification.value String = CONDITIONAL
accountFunding.recipient.lastName String = CONDITIONAL
accountFunding.recipient.middleName String = CONDITIONAL
accountFunding.reference String = Always Provided
accountFunding.senderIsRecipient Boolean = CONDITIONAL
accountFunding.senderType Enumeration = CONDITIONAL
action = CONDITIONAL
action.refundAuthorization Boolean = CONDITIONAL
agreement = CONDITIONAL
You must provide this data for some types of payments (such as recurring), but you can provide it for any cases where you want to link orders together.
agreement.amountVariability Enumeration = CONDITIONAL
agreement.customData String = CONDITIONAL
agreement.expiryDate Date = CONDITIONAL
agreement.id String = CONDITIONAL
- Recurring payments: you have an agreement with the payer that authorizes you to automatically debit their account at agreed intervals for fixed or variable amounts. For example, gym membership, phone bills, or magazine subscriptions.
- Installment payments: you have an agreement with the payer that authorizes you to process multiple payments over an agreed period of time for a single purchase. For example, the payer purchases an item for $1000 and pays for it in four monthly installments.
- Unscheduled: you have an agreement with the payer that authorizes you to process future payments when required. For example, the payer authorizes you to process an account top-up transaction for a transit card when the account balance drops below a certain threshold.
- Industry Practice: you have an agreement with the payer that authorizes you to initiate additional transactions to fulfil a standard business practice related to an original payment initiated by the payer. For example, a delayed charge for use of the hotel mini bar after the payer has checked out or a no show penalty charge when the payer fails to show for a booking.
agreement.maximumAmountPerPayment Decimal = CONDITIONAL
agreement.minimumAmountPerPayment Decimal = CONDITIONAL
agreement.minimumDaysBetweenPayments Integer = CONDITIONAL
agreement.numberOfPayments Integer = CONDITIONAL
agreement.paymentFrequency Enumeration = CONDITIONAL
agreement.retailer = CONDITIONAL
agreement.retailer.abbreviatedTradingName String = CONDITIONAL
agreement.retailer.merchantCategoryCode String = CONDITIONAL
agreement.retailer.tradingName String = CONDITIONAL
agreement.startDate Date = CONDITIONAL
agreement.type Enumeration = CONDITIONAL
The gateway will use the value you specify for subsequent payments in the series.
airline = CONDITIONAL
airline.bookingReference Alphanumeric = CONDITIONAL
airline.documentType Enumeration = CONDITIONAL
airline.itinerary = CONDITIONAL
airline.itinerary.leg[n] = CONDITIONAL
airline.itinerary.leg[n].carrierCode Regex = CONDITIONAL
airline.itinerary.leg[n].conjunctionTicketNumber Alphanumeric = CONDITIONAL
airline.itinerary.leg[n].couponNumber Alphanumeric = CONDITIONAL
airline.itinerary.leg[n].departureAirport Upper case alphabetic text = CONDITIONAL
airline.itinerary.leg[n].departureDate Date = CONDITIONAL
airline.itinerary.leg[n].departureTax Decimal = CONDITIONAL
airline.itinerary.leg[n].departureTime Time = CONDITIONAL
airline.itinerary.leg[n].destinationAirport Upper case alphabetic text = CONDITIONAL
airline.itinerary.leg[n].destinationArrivalDate Date = CONDITIONAL
airline.itinerary.leg[n].destinationArrivalTime Time = CONDITIONAL
airline.itinerary.leg[n].endorsementsRestrictions Alphanumeric = CONDITIONAL
airline.itinerary.leg[n].exchangeTicketNumber Alphanumeric = CONDITIONAL
airline.itinerary.leg[n].fare Decimal = CONDITIONAL
airline.itinerary.leg[n].fareBasis Alphanumeric = CONDITIONAL
airline.itinerary.leg[n].fees Decimal = CONDITIONAL
airline.itinerary.leg[n].flightNumber Alphanumeric = CONDITIONAL
airline.itinerary.leg[n].stopoverPermitted Boolean = CONDITIONAL
airline.itinerary.leg[n].taxes Decimal = CONDITIONAL
airline.itinerary.leg[n].travelClass Alphanumeric = CONDITIONAL
airline.itinerary.numberInParty Digits = CONDITIONAL
airline.itinerary.originCountry Upper case alphabetic text = CONDITIONAL
airline.passenger[n] = CONDITIONAL
airline.passenger[n].firstName String = CONDITIONAL
airline.passenger[n].frequentFlyerNumber String = CONDITIONAL
airline.passenger[n].lastName String = CONDITIONAL
airline.passenger[n].middleName String = CONDITIONAL
airline.passenger[n].specificInformation Alphanumeric = CONDITIONAL
airline.passenger[n].title String = CONDITIONAL
airline.planNumber Alphanumeric = CONDITIONAL
airline.ticket = CONDITIONAL
airline.ticket.conjunctionTicketIndicator Boolean = CONDITIONAL
airline.ticket.eTicket Boolean = CONDITIONAL
airline.ticket.exchangedTicketNumber Alphanumeric = CONDITIONAL
airline.ticket.issue = CONDITIONAL
airline.ticket.issue.address String = CONDITIONAL
airline.ticket.issue.carrierCode Regex = CONDITIONAL
airline.ticket.issue.carrierName Alphanumeric = CONDITIONAL
airline.ticket.issue.city String = CONDITIONAL
airline.ticket.issue.country Upper case alphabetic text = CONDITIONAL
airline.ticket.issue.date Date = CONDITIONAL
airline.ticket.issue.travelAgentCode Alphanumeric = CONDITIONAL
airline.ticket.issue.travelAgentName Alphanumeric = CONDITIONAL
airline.ticket.restricted Boolean = CONDITIONAL
airline.ticket.taxOrFee[n] = CONDITIONAL
airline.ticket.taxOrFee[n].amount Decimal = CONDITIONAL
airline.ticket.taxOrFee[n].type Alphanumeric = CONDITIONAL
airline.ticket.ticketNumber Alphanumeric = CONDITIONAL
airline.ticket.totalFare Decimal = CONDITIONAL
airline.ticket.totalFees Decimal = CONDITIONAL
airline.ticket.totalTaxes Decimal = CONDITIONAL
airline.transactionType Enumeration = CONDITIONAL
appPayment = CONDITIONAL
appPayment.redirectUrl Url = CONDITIONAL
appPayment.returnUrl Url = CONDITIONAL
authentication = CONDITIONAL
This parameter group include payer authentication options available to you, parameters you need to perform payer authentication for an available method, and the results of payer authentication.
authentication.3ds = CONDITIONAL
Depending on the 3-D Secure authentication version applicable you will also need additional parameters:
- 3-D Secure authentication version 1: see the authentication.3ds1 parameter group.
- 3-D Secure authentication version 2: see the authentication.3ds2 parameter group.
authentication.3ds.acsEci Alphanumeric = CONDITIONAL
authentication.3ds.authenticationToken Base64 = CONDITIONAL
For 3DS version 2, this field corresponds to the Authentication Value.
authentication.3ds.transactionId String = CONDITIONAL
For 3DS version 2, this field corresponds to the identifier assigned by the scheme directory server.
This identifier should be used in subsequent operation requests unaltered.
An XID submitted in this field must be in base64 format.
For Rupay, this field corresponds to the authentication identifier assigned by Rupay for Guest Checkout transaction used for unregistered user transaction only.
authentication.3ds1 = CONDITIONAL
authentication.3ds1.paResStatus Alpha = CONDITIONAL
authentication.3ds1.veResEnrolled Alpha = Always Provided
This is the value returned in the 'enrolled' field of the Verify Enrollment Response (VERes) message from the card scheme's Directory Server. For example, Y, N, or U. Refer to the relevant documentation for Mastercard SecureCode™, Verified by Visa™, JCB J/Secure™, American Express SafeKey™, or Diners Club ProtectBuy™.
authentication.3ds2 = CONDITIONAL
authentication.3ds2.3dsServerTransactionId String = CONDITIONAL
authentication.3ds2.acsTransactionId String = CONDITIONAL
authentication.3ds2.authenticationScheme String = CONDITIONAL
For example, for externally authenticated Mada co-branded transactions, you must provide either MADA, MASTERCARD or VISA to specify the 3DS directory server.
authentication.3ds2.custom JSON Text = CONDITIONAL
authentication.3ds2.directoryServerId String = CONDITIONAL
In this case, provide this value in the directoryServerId field on the createTransaction method request message sent from the app on the payer's device to the 3-D Secure Software Development Kit (SDK).
authentication.3ds2.dsReference String = CONDITIONAL
authentication.3ds2.dsTransactionId String = CONDITIONAL
authentication.3ds2.methodCompleted Boolean = Always Provided
authentication.3ds2.methodSupported Enumeration = Always Provided
authentication.3ds2.protocolVersion Alphanumeric + additional characters = CONDITIONAL
authentication.3ds2.requestorId String = Always Provided
authentication.3ds2.requestorName String = Always Provided
authentication.3ds2.sdk = CONDITIONAL
authentication.3ds2.sdk.challengeCompletionCallbackUrl Url = CONDITIONAL
This allows the gateway to retrieve the authentication result after the challenge has been completed.
authentication.3ds2.sdk.interface Enumeration = CONDITIONAL
You only need to provide this value if you only support one of these formats.
This field corresponds to EMVCo data element sdkInterface in the field deviceRenderOptions.
authentication.3ds2.sdk.timeout Integer = CONDITIONAL
This field corresponds to EMVCo field sdkMaxTimeout
authentication.3ds2.sdk.uiType Comma separated enumeration = CONDITIONAL
You only need to provide this value if all of these values are not supported.
Note: OTHER_HTML is only supported when authentication.3ds2.sdk.interface allows a HTML UI format.
This field corresponds to EMVCo data element sdkUiType in the field deviceRenderOptions.
authentication.3ds2.statusReasonCode String = CONDITIONAL
authentication.3ds2.transactionStatus Alpha = CONDITIONAL
Refer to the EMVCo specification for 3-D Secure.
authentication.3ds2.acsReference String = CONDITIONAL
authentication.acceptVersions Comma Separated Enumeration = CONDITIONAL
You only need to provide a value if you want to restrict the authentication methods you will accept.
If you do not specify a value, then the gateway treats it as if you will accept all available authentication methods.
If you accept both 3DS2 and 3DS1, then the gateway will use 3-D Secure version 2 if supported by the issuer and fallback to use 3-D Secure version 1 if it is not.
authentication.amount Decimal = CONDITIONAL
authentication.method Enumeration = CONDITIONAL
authentication.payerInteraction Enumeration = CONDITIONAL
authentication.psd2 = CONDITIONAL
authentication.psd2.exemption Enumeration = CONDITIONAL
- For recurring payments provide the RECURRING_PAYMENT value only if the amount is the same. If the amount varies, provide MERCHANT_INITIATED_TRANSACTION instead.
authentication.psd2.trustedMerchantStatus Enumeration = CONDITIONAL
If the issuer grants the exemption the payer will not be presented with a challenge, for example, they may have to enter a one-time password.
authentication.redirect.domainName String = CONDITIONAL
authentication.time DateTime = CONDITIONAL
authentication.transactionId String = CONDITIONAL
authentication.version Enumeration = CONDITIONAL
availableBalance = CONDITIONAL
availableBalance.ebt[n] = CONDITIONAL
availableBalance.ebt[n].amount Decimal = CONDITIONAL
availableBalance.ebt[n].currency Upper case alphabetic text = CONDITIONAL
availableBalance.ebt[n].type Enumeration = CONDITIONAL
availableBalance.funds = CONDITIONAL
availableBalance.funds.amount Decimal = CONDITIONAL
availableBalance.funds.currency Upper case alphabetic text = CONDITIONAL
billing = CONDITIONAL
billing.address = CONDITIONAL
billing.address.city String = CONDITIONAL
billing.address.company String = CONDITIONAL
billing.address.country Upper case alphabetic text = CONDITIONAL
billing.address.postcodeZip Alphanumeric + additional characters = CONDITIONAL
billing.address.stateProvince String = CONDITIONAL
billing.address.stateProvinceCode String = CONDITIONAL
billing.address.street String = CONDITIONAL
billing.address.street2 String = CONDITIONAL
browserPayment = CONDITIONAL
browserPayment.interaction = CONDITIONAL
browserPayment.interaction.status Enumeration = Always Provided
browserPayment.interaction.timeCompleted ASCII Text = CONDITIONAL
browserPayment.interaction.timeInitiated ASCII Text = CONDITIONAL
browserPayment.interaction.timeRedirected ASCII Text = CONDITIONAL
browserPayment.interaction.timeReturned ASCII Text = CONDITIONAL
browserPayment.openBankingBankTransfer = CONDITIONAL
browserPayment.openBankingBankTransfer.refundConsent Boolean = Always Provided
browserPayment.operation Enumeration = CONDITIONAL
browserPayment.paypal = CONDITIONAL
browserPayment.paypal.accountId String = CONDITIONAL
browserPayment.paypal.displayShippingAddress Boolean = CONDITIONAL
browserPayment.paypal.interactionId String = CONDITIONAL
browserPayment.paypal.overrideShippingAddress Boolean = CONDITIONAL
browserPayment.paypal.paymentConfirmation Enumeration = CONDITIONAL
browserPayment.preferredLanguage String = CONDITIONAL
browserPayment.redirectUrl Url = CONDITIONAL
browserPayment.returnUrl Url = CONDITIONAL
constraints = CONDITIONAL
constraints.paymentPlans = CONDITIONAL
constraints.paymentPlans.deferralPeriod Integer = CONDITIONAL
constraints.paymentPlans.numberOfPayments Integer = CONDITIONAL
constraints.paymentPlans.supported[n] String = CONDITIONAL
See Payment Plans for the supported payment plans and their identifiers.
correlationId String = CONDITIONAL
cruise = CONDITIONAL
cruise.bookingReference String = CONDITIONAL
cruise.company = CONDITIONAL
cruise.company.contact = CONDITIONAL
cruise.company.contact.companyPhone Telephone Number = CONDITIONAL
cruise.company.contact.customerServicePhone Telephone Number = CONDITIONAL
cruise.departureDate Date = CONDITIONAL
This field is required when cruise industry data is provided.
cruise.departurePort = CONDITIONAL
cruise.departurePort.address = CONDITIONAL
cruise.departurePort.address.city String = CONDITIONAL
cruise.departurePort.address.country Upper case alphabetic text = CONDITIONAL
cruise.departurePort.address.postCodeZip Alphanumeric + additional characters = CONDITIONAL
cruise.departurePort.address.stateProvinceCode String = CONDITIONAL
cruise.departurePort.address.street String = CONDITIONAL
cruise.departurePort.address.street2 String = CONDITIONAL
cruise.passenger[n] = CONDITIONAL
cruise.passenger[n].firstName String = CONDITIONAL
cruise.passenger[n].folioNumber String = CONDITIONAL
cruise.passenger[n].lastName String = CONDITIONAL
cruise.passenger[n].middleName String = CONDITIONAL
cruise.passenger[n].title String = CONDITIONAL
cruise.returnDate Date = CONDITIONAL
This field is required when cruise.departureDate is provided and the value must be equal to or later than cruise.departureDate.
cruise.shipName String = CONDITIONAL
cruise.travelAgentCode Alphanumeric = CONDITIONAL
cruise.travelAgentName String = CONDITIONAL
cruise.travelPackageItems Comma separated enumeration = CONDITIONAL
If the value CRUISE_ONLY is provided then other items are not permitted in the list.
currencyConversion = CONDITIONAL
You can only provide DCC information on the initial transaction for an order.
If the initial transaction for an order is a payer authentication transaction with DCC information and the subsequent authorization or pay transaction contains different DCC information, that authorization or pay transaction will be rejected.
If DCC information is provided on subsequent capture or refund for an order, it will be ignored.
currencyConversion.exchangeRateTime DateTime = CONDITIONAL
currencyConversion.marginPercentage Decimal = CONDITIONAL
currencyConversion.payerAmount Decimal = CONDITIONAL
currencyConversion.payerCurrency Upper case alphabetic text = CONDITIONAL
currencyConversion.payerExchangeRate Decimal = CONDITIONAL
currencyConversion.payerReceiptText String = CONDITIONAL
currencyConversion.provider Enumeration = CONDITIONAL
currencyConversion.providerReceipt String = CONDITIONAL
currencyConversion.uptake Enumeration = Always Provided
customer = CONDITIONAL
customer.account = CONDITIONAL
customer.account.authentication = CONDITIONAL
customer.account.authentication.cardAssociation = CONDITIONAL
customer.account.authentication.cardAssociation.action Enumeration = CONDITIONAL
customer.account.authentication.cardAssociation.status Enumeration = CONDITIONAL
customer.account.authentication.method Enumeration = CONDITIONAL
customer.account.authentication.time DateTime = CONDITIONAL
customer.account.history = CONDITIONAL
customer.account.history.addCardAttempts Integer = CONDITIONAL
customer.account.history.annualActivity Integer = CONDITIONAL
customer.account.history.creationDate Date = CONDITIONAL
customer.account.history.issuerAuthentication = CONDITIONAL
customer.account.history.issuerAuthentication.acsTransactionId String = CONDITIONAL
customer.account.history.issuerAuthentication.authenticationToken Base64 = CONDITIONAL
customer.account.history.issuerAuthentication.time DateTime = CONDITIONAL
customer.account.history.issuerAuthentication.transactionId String = CONDITIONAL
customer.account.history.issuerAuthentication.type Enumeration = CONDITIONAL
customer.account.history.lastUpdated Date = CONDITIONAL
customer.account.history.passwordLastChanged Date = CONDITIONAL
customer.account.history.recentActivity Integer = CONDITIONAL
customer.account.history.shippingAddressDate Date = CONDITIONAL
customer.account.history.suspiciousActivity Boolean = CONDITIONAL
customer.account.id String = CONDITIONAL
customer.email Email = CONDITIONAL
customer.firstName String = CONDITIONAL
customer.identification = CONDITIONAL
customer.identification.country Upper case alphabetic text = CONDITIONAL
customer.identification.type Enumeration = CONDITIONAL
customer.identification.value String = CONDITIONAL
customer.lastName String = CONDITIONAL
customer.middleName String = CONDITIONAL
customer.mobilePhone String = CONDITIONAL
customer.phone String = CONDITIONAL
customer.taxRegistrationId String = CONDITIONAL
customer.nationalId String = CONDITIONAL
debtRepayment = CONDITIONAL
debtRepayment.recipient = CONDITIONAL
debtRepayment.recipient.accountIdentifier String = Always Provided
debtRepayment.recipient.dateOfBirth Date = Always Provided
debtRepayment.recipient.lastName String = Always Provided
debtRepayment.recipient.postcodeZip String = Always Provided
device = CONDITIONAL
device.ani String = CONDITIONAL
device.aniCallType String = CONDITIONAL
device.browser String = CONDITIONAL
device.hostname String = CONDITIONAL
device.ipAddress String = CONDITIONAL
IPv6 address will only be used in EMV 3DS authentication. Supplied IPv6 address will not be used for any other purposes.
device.mobilePhoneModel String = CONDITIONAL
gatewayEntryPoint Enumeration = CONDITIONAL
initiator = CONDITIONAL
initiator.entity = CONDITIONAL
initiator.entity.id String = CONDITIONAL
initiator.entity.type Enumeration = CONDITIONAL
initiator.userId String = CONDITIONAL
lineOfBusiness String = CONDITIONAL
For example, lineOfBusiness = TICKET_SALES can have a different bank account from lineOfBusiness = MERCHANDISING. One line of business on your profile might be "null". To use that, do not provide the lineOfBusiness field.
merchant Alphanumeric + additional characters = Always Provided
order = Always Provided
order.acceptPartialAmount Boolean = CONDITIONAL
Unless you have been advised by your payment service provider that the gateway supports partial approvals for your acquirer, you can ignore this field.
If the gateway supports partial approvals for your acquirer you must set this field to TRUE else the transaction is rejected by the gateway.
order.amount Decimal = Always Provided
order.authenticationStatus Enumeration = CONDITIONAL
order.cashAdvance Boolean = CONDITIONAL
order.cashbackAmount Decimal = CONDITIONAL
order.certainty Enumeration = CONDITIONAL
order.chargeback = CONDITIONAL
order.chargeback.amount Decimal = Always Provided
order.chargeback.currency String = Always Provided
order.creationTime DateTime = Always Provided
order.currency Upper case alphabetic text = Always Provided
order.custom String = CONDITIONAL
order.customerNote String = CONDITIONAL
order.customerOrderDate Date = CONDITIONAL
order.customerReference ASCII Text = CONDITIONAL
order.description String = CONDITIONAL
order.discount = CONDITIONAL
order.discount.amount Decimal = CONDITIONAL
order.discount.code String = CONDITIONAL
order.discount.description String = CONDITIONAL
order.dutyAmount Decimal = CONDITIONAL
order.expectedNumberOfCaptures Integer = CONDITIONAL
If the value equals or drops below the actual number of successful Captures, then the gateway will prevent further Captures and void the outstanding Authorization amount (depending on your merchant profile configuration). If you are unsure of the number of Captures, set the value to 99, and to one on your last Capture.
If you do not provided a value for this field, but had previously provided one, the previous value is applied. For example, if you provide a value 2 on the first Capture for the order and then submit a second Capture without a value, the gateway assumes that the value is still 2.
order.funding = CONDITIONAL
order.funding.amount Decimal = Always Provided
See order.fundingStatus to determine the certainty of this value.
order.funding.currency Upper case alphabetic text = Always Provided
order.fundingStatus Enumeration = CONDITIONAL
When considering funding status, the gateway only examines transactions that can move funds. For example, it ignores Authorizations and declined Captures. This is because fundingStatus reflects the movement of the money for the commercial transaction, it does not reflect the movement of money for fees associated with the transaction.
order.gratuityAmount Decimal = CONDITIONAL
order.id String = Always Provided
order.industryPracticePaymentReason Enumeration = CONDITIONAL
A merchant initiated industry practice transaction must also contain the 'scheme transaction Id' from the associated cardholder initiated transaction.
You can provide the referenceOrderId of the relevant cardholder initiated transaction and the gateway will include the 'scheme transaction Id' on the industry practice transaction. For example, when you submit a 'delayed charge', you should provide the referenceOrderId of the cardholder-initiated transaction that resulted in the delayed charge.
Alternatively, you can provide the 'scheme transaction Id' of the cardholder initiated transaction in the industry practice transaction using the field transaction.acquirer.traceId.
You must have obtained the payer's consent prior to submitting industry practice transactions.
order.invoiceNumber String = CONDITIONAL
order.lastUpdatedTime DateTime = Always Provided
order.localTaxRegistrationId String = CONDITIONAL
order.marketplace = CONDITIONAL
order.marketplace.retailerLocation Enumeration = CONDITIONAL
order.merchantAmount Decimal = Always Provided
order.merchantCategoryCode Digits = CONDITIONAL
order.merchantCharge = CONDITIONAL
order.merchantCharge.amount Decimal = Always Provided
order.merchantCharge.calculatedBy Enumeration = Always Provided
order.merchantCharge.ruleName String = CONDITIONAL
order.merchantCharge.type Enumeration = Always Provided
order.merchantCurrency Upper case alphabetic text = Always Provided
If there is FX on this order, this is based on the rate quote you provided on the payment transactions, if not then this is the order.currency.
order.netAmount Decimal = CONDITIONAL
order.notificationUrl Url = CONDITIONAL
order.owningEntity String = CONDITIONAL
order.purchaseType Enumeration = CONDITIONAL
6051 (Quasi Cash – Merchant or Non-Financial Institutions – Foreign Currency, Non-Fiat Currency) and this transaction is for the purchase of cryptocurrency. Set the value to CRYPTOCURRENCY.
6211 (Securities – Brokers/Dealers) and this transaction is for the purchase of high-risk securities. Set the value to HIGH_RISK_SECURITIES.
6012 (Merchandise and Services—Customer Financial Institutions) or 6051 (Non-Financial Institutions – Foreign Currency, Non-Fiat Currency) and this transaction is for debt repayment. Set the value to DEBT_REPAYMENT.
If the transaction pulls money from an account for the purpose of crediting another account you must set purchase type to ACCOUNT_FUNDING.
You may set purchase type to OTHER for any other type of payment.
order.reference String = CONDITIONAL
order.requestorName String = CONDITIONAL
order.reward = CONDITIONAL
order.reward.amount Decimal = CONDITIONAL
order.reward.availableBalance = CONDITIONAL
order.reward.availableBalance.amount Decimal = CONDITIONAL
order.reward.availableBalance.points Decimal = CONDITIONAL
order.reward.points Decimal = Always Provided
order.reward.previousBalance = CONDITIONAL
order.reward.previousBalance.amount Decimal = CONDITIONAL
order.reward.previousBalance.points Decimal = CONDITIONAL
order.reward.program Enumeration = CONDITIONAL
order.shippingAndHandlingAmount Decimal = CONDITIONAL
order.shippingAndHandlingTaxAmount Decimal = CONDITIONAL
order.shippingAndHandlingTaxRate Decimal = CONDITIONAL
order.statementDescriptor = CONDITIONAL
order.statementDescriptor.address = CONDITIONAL
order.statementDescriptor.address.city String = CONDITIONAL
order.statementDescriptor.address.company String = CONDITIONAL
order.statementDescriptor.address.country Upper case alphabetic text = CONDITIONAL
order.statementDescriptor.address.postcodeZip Alphanumeric + additional characters = CONDITIONAL
order.statementDescriptor.address.stateProvince String = CONDITIONAL
For an address in Canada provide the 2-letter ISO 3166-2 province code.
order.statementDescriptor.address.street String = CONDITIONAL
order.statementDescriptor.address.street2 String = CONDITIONAL
order.statementDescriptor.name String = CONDITIONAL
order.statementDescriptor.phone String = CONDITIONAL
order.status Enumeration = CONDITIONAL
order.subMerchant = CONDITIONAL
order.subMerchant.address = CONDITIONAL
order.subMerchant.address.city String = CONDITIONAL
order.subMerchant.address.company String = CONDITIONAL
order.subMerchant.address.country Upper case alphabetic text = CONDITIONAL
order.subMerchant.address.postcodeZip Alphanumeric + additional characters = CONDITIONAL
order.subMerchant.address.stateProvince String = CONDITIONAL
For an address in Canada provide the 2-letter ISO 3166-2 province code.
order.subMerchant.address.street String = CONDITIONAL
order.subMerchant.address.street2 String = CONDITIONAL
order.subMerchant.authentication[n] = CONDITIONAL
order.subMerchant.authentication[n].3DS2 = CONDITIONAL
order.subMerchant.authentication[n].3DS2.requestorId String = CONDITIONAL
order.subMerchant.authentication[n].3DS2.requestorName String = CONDITIONAL
order.subMerchant.authentication[n].protocol Enumeration = Always Provided
order.subMerchant.bankIndustryCode Digits = CONDITIONAL
order.subMerchant.disputeContactPhone Telephone Number = CONDITIONAL
order.subMerchant.email Email = CONDITIONAL
order.subMerchant.governmentCountryCode Upper case alphabetic text = CONDITIONAL
order.subMerchant.identifier Alphanumeric + additional characters = Always Provided
order.subMerchant.marketplaceId String = CONDITIONAL
order.subMerchant.phone String = CONDITIONAL
order.subMerchant.registeredName String = CONDITIONAL
order.subMerchant.tradingName String = Always Provided
order.supply = CONDITIONAL
order.supply.preorder Boolean = CONDITIONAL
order.supply.preorderAvailabilityDate Date = CONDITIONAL
order.supply.reorder Boolean = CONDITIONAL
order.surchargeAmount Decimal = CONDITIONAL
If you provide a surcharge amount, you should include it in the total amount for the order.
order.surchargeSource Enumeration = CONDITIONAL
order.tax[n] = CONDITIONAL
order.tax[n].amount Decimal = CONDITIONAL
order.tax[n].rate Decimal = CONDITIONAL
order.tax[n].type String = CONDITIONAL
order.taxAmount Decimal = CONDITIONAL
order.taxRegistrationId String = CONDITIONAL
order.taxStatus String = CONDITIONAL
order.totalAuthorizedAmount Decimal = Always Provided
order.totalCapturedAmount Decimal = Always Provided
order.totalDisbursedAmount Decimal = Always Provided
order.totalRefundedAmount Decimal = Always Provided
order.transactionFiltering = CONDITIONAL
order.transactionFiltering.avsResponseCodeRules[n] = CONDITIONAL
order.transactionFiltering.avsResponseCodeRules[n].action Enumeration = Always Provided
order.transactionFiltering.avsResponseCodeRules[n].avsResponseCode Enumeration = Always Provided
order.valueTransfer = CONDITIONAL
order.valueTransfer.accountType Enumeration = CONDITIONAL
order.valueTransfer.amount Decimal = CONDITIONAL
order.valueTransfer.currency Upper case alphabetic text = CONDITIONAL
The default value is order.currency.
order.valueTransfer.numberOfCards Integer = CONDITIONAL
order.wallet = CONDITIONAL
order.wallet.visaCheckout = CONDITIONAL
order.wallet.visaCheckout.callId String = CONDITIONAL
order.walletIndicator String = CONDITIONAL
order.walletProvider Enumeration = CONDITIONAL
partnerSolutionId String = CONDITIONAL
payerConsentForStoringCardDetails Enumeration = CONDITIONAL
posTerminal = CONDITIONAL
posTerminal.address = CONDITIONAL
posTerminal.address.city String = CONDITIONAL
posTerminal.address.company String = CONDITIONAL
posTerminal.address.country Upper case alphabetic text = CONDITIONAL
posTerminal.address.postcodeZip Alphanumeric + additional characters = CONDITIONAL
posTerminal.address.stateProvince String = CONDITIONAL
posTerminal.address.street String = CONDITIONAL
posTerminal.address.street2 String = CONDITIONAL
posTerminal.attended Enumeration = CONDITIONAL
You must provide a value for this field for chip transactions with UK acquirers.
This field corresponds to EMV tag 9F35
posTerminal.cardPresenceCapability Enumeration = CONDITIONAL
posTerminal.cardholderActivated Enumeration = CONDITIONAL
There are seven types (levels) of CAT devices. Each level has specific card scheme requirements.
If you do not provide a value for this field for a Card Present payment the gateway defaults the value to NOT_CARDHOLDER_ACTIVATED.
This field corresponds to EMV tag 9F35
posTerminal.inputCapability Enumeration = CONDITIONAL
This field corresponds to EMV tag 9F33
posTerminal.lane String = CONDITIONAL
This field corresponds to EMV tag 9F1C
posTerminal.location Enumeration = CONDITIONAL
posTerminal.mobile = CONDITIONAL
posTerminal.mobile.cardInputDevice Enumeration = CONDITIONAL
posTerminal.onlineReasonCode Enumeration = CONDITIONAL
Where more than one reason applies, then the order of priority used for the enumeration list applies.
posTerminal.panEntryMode Enumeration = CONDITIONAL
posTerminal.pinEntryCapability Enumeration = CONDITIONAL
posTerminal.pinLengthCapability Integer = CONDITIONAL
posTerminal.serialNumber ASCII Text = CONDITIONAL
posTerminal.singleTapIndicator Boolean = CONDITIONAL
posTerminal.store = CONDITIONAL
posTerminal.store.id String = CONDITIONAL
posTerminal.store.name String = CONDITIONAL
referenceOrderId String = CONDITIONAL
Tokenization requests:
Identifier for the order which will be used to generate a gateway token. The gateway will attempt tokenization of payment credentials linked to the order ID.
The order identifier provided in this field must be linked to a successfully processed order which has card (FPAN / DPAN) as the payment method.
When providing this field, you must not provide card details in the sourceOfFunds.provided.card parameter group, and you must set the sourceOfFunds.type field to CARD.
Payment transactions:
When submitting:
- an industry practice payment, this is the reference to the initial cardholder-initiated transaction.
- a resubmission transaction, this is the reference to the order which is being resubmitted.
response = Always Provided
response.accountUpdater = CONDITIONAL
response.accountUpdater.gatewayCode Enumeration = CONDITIONAL
The gateway assigns a replacement token, if your token repository is configured with the 'UNIQUE_ACCOUNT_IDENTIFIER' token management strategy and the repository already contains a token for the new card that was updated by the Account Updater.
For more details see Gateway Tokenization
response.acquirerCode ASCII Text = CONDITIONAL
response.acquirerMessage ASCII Text = CONDITIONAL
response.authenticationTokenVerification = CONDITIONAL
response.authenticationTokenVerification.acquirerCode Alphanumeric = CONDITIONAL
This code is known by various names according to the relevant scheme.
response.authenticationTokenVerification.gatewayCode Enumeration = CONDITIONAL
response.cardSecurityCode = CONDITIONAL
response.cardSecurityCode.acquirerCode ASCII Text = CONDITIONAL
response.cardSecurityCode.gatewayCode Enumeration = CONDITIONAL
response.cardholderVerification = CONDITIONAL
response.cardholderVerification.avs = CONDITIONAL
response.cardholderVerification.avs.acquirerCode ASCII Text = CONDITIONAL
response.cardholderVerification.avs.gatewayCode Enumeration = CONDITIONAL
response.cardholderVerification.detailedVerification[n] = CONDITIONAL
response.cardholderVerification.detailedVerification[n].gatewayCode Enumeration = CONDITIONAL
response.cardholderVerification.detailedVerification[n].type Enumeration = CONDITIONAL
response.debugInformation String = CONDITIONAL
response.gatewayCode Enumeration = Always Provided
response.gatewayRecommendation Enumeration = CONDITIONAL
- can proceed as planned.
- must not proceed. For example, because there is suspected fraud.
- can take action to obtain a successful Authorization. For example, by authenticating the payer, or asking the payer for updated or new payment details.
- must make a review decision.
response.onBehalfOfOperation Enumeration = CONDITIONAL
result Enumeration = Always Provided
risk = CONDITIONAL
risk.custom String = CONDITIONAL
Field: risk.custom.headOfficeLocation
Value: London UK
risk.response = CONDITIONAL
risk.response.gatewayCode Enumeration = CONDITIONAL
risk.response.provider String = CONDITIONAL
risk.response.reversalResult Enumeration = CONDITIONAL
risk.response.review = CONDITIONAL
risk.response.review.decision Enumeration = CONDITIONAL
risk.response.review.decisionReason String = CONDITIONAL
risk.response.review.note String = CONDITIONAL
risk.response.review.timeOfDecision DateTime = CONDITIONAL
risk.response.review.userId String = CONDITIONAL
risk.response.rule[n] = CONDITIONAL
risk.response.rule[n].data String = CONDITIONAL
risk.response.rule[n].id String = CONDITIONAL
risk.response.rule[n].name String = CONDITIONAL
risk.response.rule[n].recommendation Enumeration = CONDITIONAL
risk.response.rule[n].score Integer = CONDITIONAL
risk.response.rule[n].type Enumeration = CONDITIONAL
risk.response.totalScore Integer = CONDITIONAL
shipping = CONDITIONAL
shipping.address = CONDITIONAL
shipping.address.city String = CONDITIONAL
shipping.address.company String = CONDITIONAL
shipping.address.country Upper case alphabetic text = CONDITIONAL
shipping.address.postcodeZip Alphanumeric + additional characters = CONDITIONAL
shipping.address.source Enumeration = CONDITIONAL
shipping.address.stateProvince String = CONDITIONAL
shipping.address.stateProvinceCode String = CONDITIONAL
shipping.address.street String = CONDITIONAL
shipping.address.street2 String = CONDITIONAL
shipping.address.sameAsBilling Enumeration = CONDITIONAL
The default value for this field is:
SAME - if the shipping and billing address are supplied, and all fields are the same (ignoring non-alphanumerics).
DIFFERENT - if the shipping and billing address are supplied, and at least one field is different (ignoring non-alphanumerics).
UNKNOWN - either shipping address or billing address is absent.
shipping.contact = CONDITIONAL
shipping.contact.email Email = CONDITIONAL
shipping.contact.firstName String = CONDITIONAL
shipping.contact.lastName String = CONDITIONAL
shipping.contact.mobilePhone Telephone Number = CONDITIONAL
The number consists of:
- ‘+’
- country code (1, 2 or 3 digits)
- ‘space’
- national number ( which may embed single spaces characters for readability).
shipping.contact.phone Telephone Number = CONDITIONAL
The number consists of:
- ‘+’
- country code (1, 2 or 3 digits)
- ‘space’
- national number ( which may embed single spaces characters for readability).
shipping.contact.sameAsBilling Enumeration = CONDITIONAL
Default value is UNKNOWN
shipping.method Enumeration = CONDITIONAL
shipping.origin.postcodeZip Alphanumeric + additional characters = CONDITIONAL
sourceOfFunds = CONDITIONAL
For card payments the source of funds information may be represented by combining one or more of the following: explicitly provided card details, a session identifier which the gateway will use to look up the card details and/or a card token. Precedence rules will be applied in that explicitly provided card details will override session card details which will override card token details. Each of these may represent partial card details, however the combination must result in a full and complete set of card details. See Using Multiple Sources of Card Details for examples.
sourceOfFunds.provided = CONDITIONAL
sourceOfFunds.provided.ach = CONDITIONAL
sourceOfFunds.provided.ach.accountType Enumeration = CONDITIONAL
- Consumer (checking or savings), or
- Business
For pre-arranged payments (sourceOfFunds.provided.ach.secCode=PPD) retrieve this information from the payer.
If payments were telephone-initiated (sourceOfFunds.provided.ach.secCode=TEL) or internet-initiated (sourceOfFunds.provided.ach.secCode=WEB) you may choose to limit the payer's options (e.g. only support consumer checking accounts), depending on your type of business (e.g. B2C online webshop).
sourceOfFunds.provided.ach.bankAccountHolder String = CONDITIONAL
sourceOfFunds.provided.ach.bankAccountNumber Alphanumeric + additional characters = CONDITIONAL
sourceOfFunds.provided.ach.routingNumber Digits = CONDITIONAL
- Routing number,
- Transit number, or
- ABA number
Retrieve this information from the payer.
See also http://en.wikipedia.org/wiki/Routing_transit_number.
sourceOfFunds.provided.ach.secCode Enumeration = CONDITIONAL
sourceOfFunds.provided.bancontact = CONDITIONAL
sourceOfFunds.provided.bancontact.bankAccountHolder String = Always Provided
sourceOfFunds.provided.blik = CONDITIONAL
sourceOfFunds.provided.blik.bankAccountHolder String = Always Provided
sourceOfFunds.provided.boletoBancario = CONDITIONAL
sourceOfFunds.provided.boletoBancario.actionType Enumeration = CONDITIONAL
sourceOfFunds.provided.boletoBancario.bankAccountHolder String = Always Provided
sourceOfFunds.provided.boletoBancario.customerType Enumeration = CONDITIONAL
sourceOfFunds.provided.boletoBancario.daysBeforeAction Digits = CONDITIONAL
sourceOfFunds.provided.boletoBancario.dueDate Date = CONDITIONAL
sourceOfFunds.provided.boletoBancario.slipUrl Url = CONDITIONAL
sourceOfFunds.provided.card = CONDITIONAL
Cards: the card details entered directly or collected using a Point of Sale (POS) terminal.
Device payment methods such as Apple Pay, Android Pay, Samsung Pay or Google Pay.
Digital wallets such as Masterpass, Visa Checkout or Amex Express Checkout.
Card scheme tokens where the card was tokenized using a card scheme tokenization service such as Mastercard Digital Enablement Service (MDES).
Alternative IDs provided by the schemes, such as Alt-Id for Guest Checkout payments in India using American Express, Rupay cards issued in India.
sourceOfFunds.provided.card.accountType Enumeration = CONDITIONAL
sourceOfFunds.provided.card.brand Enumeration = Always Provided
You may use this information to support surcharging decisions. This information is gathered from 3rd party sources and may not be accurate in all circumstances.
sourceOfFunds.provided.card.cardType String = CONDITIONAL
- • You will receive paymentTypes.card.interactionConstraints=CARD_TYPE_SELECTION in the PAYMENT_OPTIONS_INQUIRY response if the card type selection is mandatory. In this case, you must let the payer select the card type and provide this field in the request.
- • You will receive paymentTypes.card.capabilities[n].capability=CARD_TYPE_SELECTION in the PAYMENT_OPTIONS_INQUIRY response if the card type selection is optional. In this case, you may let the payer select the card type or make the selection yourself and provide this field in the request. If not provided, the gateway will make the selection based on your configuration and the card type.
- • If the PAYMENT_OPTIONS_INQUIRY response contains neither of the above fields, the gateway determines the card type and requests that contain this field will be rejected by the gateway.
sourceOfFunds.provided.card.devicePayment = CONDITIONAL
sourceOfFunds.provided.card.devicePayment.cryptogramFormat Enumeration = CONDITIONAL
You do not need to provide the cryptogram format if you provide the payment token in sourceOfFunds.provided.card.devicePayment.paymentToken
sourceOfFunds.provided.card.deviceSpecificExpiry = CONDITIONAL
- • Device payments: the expiry date for the Device Primary Account Number (DPAN).
- • Digital wallets: the expiry date for the Token PAN.
- • Card scheme tokens: the expiry date for the Token PAN.
sourceOfFunds.provided.card.deviceSpecificExpiry.month Digits = Always Provided
sourceOfFunds.provided.card.deviceSpecificExpiry.year Digits = Always Provided
sourceOfFunds.provided.card.deviceSpecificNumber Masked digits = Always Provided
- • Device payments: the payers's account number associated with the mobile device used for the payment. This is also known as the Device Primary Account Number (DPAN).
- • Digital wallets: the Token PAN returned by a digital wallet. The gateway only returns this value for Amex Express Checkout.
- • Card scheme tokens: the token generated by a card scheme tokenization service such as Mastercard Digital Enablement Service (MDES). The token is used as an identifier of the payer's Primary Account Number (PAN) securely stored by the service. For MDES, this token is referred to as the Token PAN. For VTS, this is the Token
sourceOfFunds.provided.card.emvRequest String = CONDITIONAL
For the list of field tags to include (if provided by the terminal), see Card Present Payments. Requests with any other tags are rejected by the gateway.
Some of the tags represent data that can occur on explicit fields in this API. You can submit the value either in this field, or in both places. For example, the PAN can be presented as EMV tag 5A in this field, or included both the sourceOfFunds.provided.card.number API field and in EMV tag 5A in this field.
If you specify the EMV tag only, we can populate the explicit field in the API. Fields where this is supported have the text "This field corresponds to EMV tag <tag name>" in their field descriptions.
If you specify both places, there will be no population of the explicit field or validation that the data matches.
The API response will not contain PCI sensitive fields.
sourceOfFunds.provided.card.emvResponse String = CONDITIONAL
The card/terminal uses data returned from the issuer to make the final decision to accept or decline the transaction.
sourceOfFunds.provided.card.encryption Enumeration = CONDITIONAL
sourceOfFunds.provided.card.expiry = CONDITIONAL
sourceOfFunds.provided.card.expiry.month Digits = Always Provided
sourceOfFunds.provided.card.expiry.year Digits = Always Provided
sourceOfFunds.provided.card.fundingMethod Enumeration = Always Provided
sourceOfFunds.provided.card.issuer String = CONDITIONAL
sourceOfFunds.provided.card.localBrand String = CONDITIONAL
You may use this information to support surcharging decisions. This information is gathered from 3rd party sources and may not be accurate in all circumstances.
sourceOfFunds.provided.card.nameOnCard String = CONDITIONAL
sourceOfFunds.provided.card.number Masked digits = Always Provided
- Request
On request, populate this field based on the payment method you are using for the payment:- • Card: the account number embossed onto the card. This field corresponds to EMV tag 5A.
- • Device payment methods such as Apple Pay, Android Pay, Samsung Pay, or Google Pay. Normally for device payments, you would populate sourceOfFunds.provided.card.devicePayment.paymentToken and the gateway will decrypt and extract this field. However, you can populate this field if you decrypt the payment token yourself. In this case use the Device PAN (DPAN) provided in the payment token.
- • Digital wallets such as Masterpass, Visa Checkout or Amex Express Checkout. In this case, provide the PAN retrieved from the wallet.
- • Scheme tokens such as MDES (Mastercard Digital Enablement Service) or Visa Token Service (VTS). For MDES tokens, supply the value called the "Token PAN". For VTS tokens, supply the value called "Token"
- • Alternative IDs provided by the schemes. For Guest Checkout payments in India using American Express, Rupay cards, provide the "Alt-Id".
- Response
On return, the card number will be populated in 6.4 masking format, for example, 000000xxxxxx0000. If you wish to return unmasked card numbers, you must have the requisite permission, set responseControls.sensitiveData field to UNMASK, and authenticate your call to the API using certificate authentication.
When a DPAN or scheme token was provided in the transaction request, then this field will represent the PAN of the associated payer's account (when supported by the acquirer). This is also referred to as the Funding PAN (FPAN).
sourceOfFunds.provided.card.paymentAccountReference String = CONDITIONAL
sourceOfFunds.provided.card.pin = CONDITIONAL
sourceOfFunds.provided.card.pin.encryptionState Enumeration = CONDITIONAL
sourceOfFunds.provided.card.pin.keySerialNumber Hex = Always Provided
sourceOfFunds.provided.card.scheme Enumeration = Always Provided
sourceOfFunds.provided.card.sequenceNumber Digits = CONDITIONAL
sourceOfFunds.provided.card.storedOnFile Enumeration = CONDITIONAL
sourceOfFunds.provided.card.trackDataProvided Boolean = CONDITIONAL
sourceOfFunds.provided.directDebitCanada = CONDITIONAL
sourceOfFunds.provided.directDebitCanada.accountType Enumeration = CONDITIONAL
sourceOfFunds.provided.directDebitCanada.bankAccountHolder String = Always Provided
sourceOfFunds.provided.directDebitCanada.bankAccountNumber Alphanumeric + additional characters = Always Provided
sourceOfFunds.provided.directDebitCanada.financialInstitutionNumber Digits = Always Provided
sourceOfFunds.provided.directDebitCanada.transitNumber Digits = Always Provided
sourceOfFunds.provided.ebt = CONDITIONAL
sourceOfFunds.provided.ebt.accountType Enumeration = CONDITIONAL
sourceOfFunds.provided.ebt.manualAuthorizationCode Digits = CONDITIONAL
sourceOfFunds.provided.ebt.merchantFns Digits = CONDITIONAL
sourceOfFunds.provided.ebt.voucherNumber Digits = CONDITIONAL
sourceOfFunds.provided.enets = CONDITIONAL
sourceOfFunds.provided.enets.bankAccountHolder String = Always Provided
sourceOfFunds.provided.epsUeberweisung = CONDITIONAL
sourceOfFunds.provided.epsUeberweisung.bankAccountCountryCode Alpha = Always Provided
sourceOfFunds.provided.epsUeberweisung.bankAccountHolder String = CONDITIONAL
sourceOfFunds.provided.giftCard = CONDITIONAL
sourceOfFunds.provided.giftCard.brand Enumeration = Always Provided
sourceOfFunds.provided.giftCard.localBrand String = Always Provided
sourceOfFunds.provided.giftCard.number Masked digits = Always Provided
sourceOfFunds.provided.giftCard.pin Masked digits = CONDITIONAL
sourceOfFunds.provided.giftCard.scheme Enumeration = Always Provided
sourceOfFunds.provided.giropay = CONDITIONAL
sourceOfFunds.provided.giropay.bankIdentifier Digits = CONDITIONAL
sourceOfFunds.provided.giropay.bic Alphanumeric = CONDITIONAL
sourceOfFunds.provided.giropay.iban String = CONDITIONAL
sourceOfFunds.provided.grabPay = CONDITIONAL
sourceOfFunds.provided.grabPay.accountHolder String = Always Provided
sourceOfFunds.provided.ideal = CONDITIONAL
sourceOfFunds.provided.ideal.bankAccountHolder String = CONDITIONAL
sourceOfFunds.provided.ideal.bic Alphanumeric = CONDITIONAL
sourceOfFunds.provided.ideal.iban String = CONDITIONAL
sourceOfFunds.provided.klarnaPayLater = CONDITIONAL
sourceOfFunds.provided.klarnaPayLater.bankAccountCountryCode Upper case alphabetic text = Always Provided
sourceOfFunds.provided.klarnaPayNow = CONDITIONAL
sourceOfFunds.provided.klarnaPayNow.bankAccountCountryCode Alpha = Always Provided
sourceOfFunds.provided.multibanco = CONDITIONAL
sourceOfFunds.provided.multibanco.entityId Digits = CONDITIONAL
sourceOfFunds.provided.multibanco.paymentReference Digits = CONDITIONAL
sourceOfFunds.provided.multibanco.terminalId String = CONDITIONAL
sourceOfFunds.provided.multibanco.terminalLocation String = CONDITIONAL
sourceOfFunds.provided.openBankingBankTransfer = CONDITIONAL
sourceOfFunds.provided.openBankingBankTransfer.aspspId String = Always Provided
sourceOfFunds.provided.oxxo = CONDITIONAL
sourceOfFunds.provided.oxxo.bankAccountHolder String = Always Provided
sourceOfFunds.provided.oxxo.dueDate Date = CONDITIONAL
sourceOfFunds.provided.payU = CONDITIONAL
sourceOfFunds.provided.payU.bankAccountCountryCode Alpha = Always Provided
sourceOfFunds.provided.payU.bankAccountHolder String = CONDITIONAL
sourceOfFunds.provided.payconiq = CONDITIONAL
sourceOfFunds.provided.payconiq.countryCode Alpha = Always Provided
sourceOfFunds.provided.paypal = CONDITIONAL
sourceOfFunds.provided.paypal.accountEmail Email = CONDITIONAL
sourceOfFunds.provided.paypal.accountHolder String = CONDITIONAL
sourceOfFunds.provided.paypal.billingAgreement = CONDITIONAL
sourceOfFunds.provided.paypal.billingAgreement.cardinality Enumeration = CONDITIONAL
sourceOfFunds.provided.paypal.billingAgreement.description String = CONDITIONAL
sourceOfFunds.provided.paypal.billingAgreement.id String = CONDITIONAL
sourceOfFunds.provided.paypal.billingAgreement.name String = CONDITIONAL
sourceOfFunds.provided.paypal.payerId String = CONDITIONAL
sourceOfFunds.provided.paysafecard = CONDITIONAL
sourceOfFunds.provided.paysafecard.accountEmail Email = Always Provided
sourceOfFunds.provided.paysafecard.countryCode Alpha = Always Provided
sourceOfFunds.provided.pbba = CONDITIONAL
sourceOfFunds.provided.pbba.paymentRequestId Digits = CONDITIONAL
sourceOfFunds.provided.pbba.paymentRequestInputCode Upper case alphabetic text = CONDITIONAL
sourceOfFunds.provided.poli = CONDITIONAL
sourceOfFunds.provided.poli.bankAccountHolder String = Always Provided
sourceOfFunds.provided.przelewy24 = CONDITIONAL
sourceOfFunds.provided.przelewy24.bankAccountHolder String = Always Provided
sourceOfFunds.provided.sepa = CONDITIONAL
sourceOfFunds.provided.sepa.bankAccountHolder String = Always Provided
sourceOfFunds.provided.sepa.bic Alphanumeric = CONDITIONAL
sourceOfFunds.provided.sepa.iban String = Always Provided
sourceOfFunds.provided.sofort = CONDITIONAL
sourceOfFunds.provided.sofort.bankAccountCountryCode Upper case alphabetic text = CONDITIONAL
sourceOfFunds.provided.sofort.bankAccountHolder String = CONDITIONAL
sourceOfFunds.provided.sofort.bankAccountNumber String = CONDITIONAL
sourceOfFunds.provided.sofort.bankIdentifier String = CONDITIONAL
sourceOfFunds.provided.sofort.bic String = CONDITIONAL
sourceOfFunds.provided.sofort.iban String = CONDITIONAL
sourceOfFunds.provided.trustly = CONDITIONAL
sourceOfFunds.provided.trustly.bankAccountCountryCode Alpha = Always Provided
sourceOfFunds.provided.trustly.bankAccountHolder String = Always Provided
sourceOfFunds.provided.weChatPay = CONDITIONAL
sourceOfFunds.provided.weChatPay.accountHolder String = Always Provided
sourceOfFunds.token Alphanumeric = CONDITIONAL
If account identifier details are also contained in the request, or the request contains a session with account identifier details, these take precedence over the details stored against the token.
sourceOfFunds.tokenRequestorID Alphanumeric = CONDITIONAL
sourceOfFunds.type Enumeration = CONDITIONAL
If you are making a payment with a gateway token, then you can leave this field unset, and only populate the sourceOfFunds.token field. However you can set this to CARD if you want to overwrite or augment the token data with a card security code, expiry date, or cardholder name.
subgatewayMerchant = CONDITIONAL
- operate a gateway, and
- you are not boarding your merchants onto the gateway, and
- you are enabled for this capability on the gateway.
If you are such a gateway, use these fields to provide information about your merchant, so that our gateway can process their transaction on your behalf.
Note: In these cases, you must also provide a value for field order.merchantCategoryCode
subgatewayMerchant.acquirer[n] = Always Provided
Each record in this group applies to one acquirer. If your gateway knows exactly which acquirer will use for this transaction, then you can provide just that acquirer's data. Alternatively, you can specify a set of acquirers, in which case the gateway will select between them based on the routing rules that configured in our gateway.
In this group, the term 'acquirer' includes banks acquiring scheme cards (such as MasterCard,or Visa), and alternative providers (such as UnionPay, or SEPA)subgatewayMerchant.acquirer[n].3DS1 = CONDITIONAL
subgatewayMerchant.acquirer[n].3DS1.mastercardSecureCode = CONDITIONAL
subgatewayMerchant.acquirer[n].3DS1.mastercardSecureCode.merchantId String = CONDITIONAL
subgatewayMerchant.acquirer[n].3DS1.verifiedByVisa = CONDITIONAL
subgatewayMerchant.acquirer[n].3DS1.verifiedByVisa.cardAcceptorId String = CONDITIONAL
subgatewayMerchant.acquirer[n].3DS1.verifiedByVisa.cardAcceptorTerminalId String = CONDITIONAL
subgatewayMerchant.acquirer[n].acquirerMerchantId String = Always Provided
subgatewayMerchant.acquirer[n].amexSafeKey = CONDITIONAL
subgatewayMerchant.acquirer[n].amexSafeKey.merchantId Regex = CONDITIONAL
subgatewayMerchant.acquirer[n].countryCode Upper case alphabetic text = CONDITIONAL
subgatewayMerchant.acquirer[n].fraudRate Integer = CONDITIONAL
subgatewayMerchant.acquirer[n].id String = Always Provided
subgatewayMerchant.acquirer[n].merchantCategoryCode Digits = CONDITIONAL
You only need to provide this value if you are specifying more than one acquirer link, and some acquirers need different MCC values. If the same MCC applies to all acquirers, just specify it as order.merchantCategoryCode.
subgatewayMerchant.address = CONDITIONAL
subgatewayMerchant.address.city String = Always Provided
subgatewayMerchant.address.countryCode Upper case alphabetic text = Always Provided
subgatewayMerchant.address.postcodeZip String = Always Provided
subgatewayMerchant.address.stateProvince String = Always Provided
For Canadian merchants provide the 2-letter ISO 3166-2 province code.
subgatewayMerchant.address.street1 String = Always Provided
subgatewayMerchant.address.street2 String = CONDITIONAL
subgatewayMerchant.authentication[n] = CONDITIONAL
subgatewayMerchant.authentication[n].3DS2 = CONDITIONAL
This API assumes that a merchant has only one registration for a each 3DS2 scheme across all the acquirers. If your merchant has more than one 3DS2 registration that could apply to this transaction, then you need to provide a lineOfBusiness field to narrow to one registration.
subgatewayMerchant.authentication[n].3DS2.requestorId String = CONDITIONAL
subgatewayMerchant.authentication[n].3DS2.requestorName String = CONDITIONAL
subgatewayMerchant.authentication[n].acquirerBIN Digits = CONDITIONAL
subgatewayMerchant.authentication[n].protocol Enumeration = Always Provided
subgatewayMerchant.id Alphanumeric + additional characters = Always Provided
subgatewayMerchant.name String = Always Provided
subgatewayMerchant.websiteUrl Url = Always Provided
timeOfLastUpdate DateTime = CONDITIONAL
timeOfRecord DateTime = CONDITIONAL
transaction = Always Provided
transaction.acquirer = Always Provided
transaction.acquirer.additionalResponseData JSON Text = CONDITIONAL
transaction.acquirer.batch Integer = CONDITIONAL
transaction.acquirer.customData String = CONDITIONAL
transaction.acquirer.date String = CONDITIONAL
transaction.acquirer.id String = CONDITIONAL
transaction.acquirer.merchantId String = CONDITIONAL
transaction.acquirer.settlementDate Date = CONDITIONAL
transaction.acquirer.time String = CONDITIONAL
transaction.acquirer.timeZone Time Offset = CONDITIONAL
transaction.acquirer.transactionId String = CONDITIONAL
transaction.amount Decimal = Always Provided
transaction.authenticationStatus Enumeration = CONDITIONAL
transaction.batchName String = CONDITIONAL
transaction.currency Upper case alphabetic text = Always Provided
transaction.deferredAuthorization Boolean = CONDITIONAL
transaction.disbursementType Enumeration = CONDITIONAL
transaction.discountAmount Decimal = CONDITIONAL
transaction.dispute = CONDITIONAL
transaction.dispute.dateRecurringPaymentCancelled Date = CONDITIONAL
transaction.dispute.deadlineDate Date = CONDITIONAL
transaction.dispute.event Enumeration = Always Provided
transaction.dispute.eventDate Date = CONDITIONAL
transaction.dispute.eventInformation String = CONDITIONAL
transaction.dispute.match = CONDITIONAL
When transaction.dispute.matchAction = STANDALONE, the gateway will create a new order containing the chargeback transaction and does not attempt to match it to the original transaction.
When transaction.dispute.matchAction = MATCHED_FALLBACK, then the gateway will first attempt to match this chargeback transaction to an existing financial transaction with these parameters. If it cannot be matched, the gateway will create a new order containing the chargeback transaction. When the chargeback transaction can be matched to more than one merchant gateway profile, a new order will be created against each profile. When this occurs it will be noted in order.description.
transaction.dispute.match.RRN ASCII Text = CONDITIONAL
transaction.dispute.match.acquirerTransactionId String = CONDITIONAL
transaction.dispute.match.date Date = CONDITIONAL
transaction.dispute.match.stan Digits = CONDITIONAL
transaction.dispute.matchAction Enumeration = Always Provided
transaction.dispute.reason ASCII Text = CONDITIONAL
transaction.dispute.reasonCode ASCII Text = CONDITIONAL
transaction.dutyAmount Decimal = CONDITIONAL
transaction.funding = CONDITIONAL
transaction.funding.acquirerEventDescription String = CONDITIONAL
transaction.funding.amount Decimal = CONDITIONAL
This value is provided if transaction.funding.status is FUNDED. It might be provided if transaction.funding.status is FUNDING_ASSURED or FUNDING_ON_HOLD.
transaction.funding.currency Upper case alphabetic text = CONDITIONAL
transaction.funding.date Date = CONDITIONAL
This value is only populated if the date is known with certainty.
transaction.funding.estimatedDate Date = CONDITIONAL
The date is defined in the acquirer's time zone (see transaction.acquirer.timeZone).
transaction.funding.fee[n] = CONDITIONAL
transaction.funding.fee[n].acquirerFeeName String = CONDITIONAL
transaction.funding.fee[n].amount Decimal = CONDITIONAL
transaction.funding.fee[n].date Date = CONDITIONAL
The date is defined in the acquirer's time zone (see transaction.acquirer.timeZone).
transaction.funding.fee[n].estimatedDate Date = CONDITIONAL
The date is defined in the acquirer's time zone (see transaction.acquirer.timeZone).
transaction.funding.fee[n].initiatedDate Date = CONDITIONAL
The date is defined in the acquirer's time zone (see transaction.acquirer.timeZone).
transaction.funding.fee[n].rate Decimal = CONDITIONAL
transaction.funding.fee[n].type Enumeration = CONDITIONAL
transaction.funding.feeAmount Decimal = CONDITIONAL
A breakdown of the fees is shown in the transaction.funding.fee[n] parameter group if this information was provided by your acquirer.
transaction.funding.feeCurrency Upper case alphabetic text = CONDITIONAL
transaction.funding.initiatedDate Date = CONDITIONAL
The date is defined in the acquirer's time zone (see transaction.acquirer.timeZone).
transaction.funding.settlementIdentifier String = CONDITIONAL
transaction.funding.status Enumeration = Always Provided
transaction.id String = Always Provided
- Movement of money. For example, payments and refunds.
- Validations. For example, account verification or 3-D Secure authentication of the payer.
- Undoing other transactions. For example, voiding a payment transaction.
- Chargebacks.
- Fees from your payment service provider.
If you attempt an operation and it fails (eg you try to PAY on a card with no funds), then you need a new id for each retry.
transaction.instantRefund Boolean = CONDITIONAL
transaction.item[n] = CONDITIONAL
transaction.item[n].brand String = CONDITIONAL
transaction.item[n].category String = CONDITIONAL
transaction.item[n].description String = CONDITIONAL
transaction.item[n].detail = CONDITIONAL
transaction.item[n].detail.acquirerCustom JSON Text = CONDITIONAL
transaction.item[n].detail.commodityCode Integer = CONDITIONAL
transaction.item[n].detail.tax[n] = CONDITIONAL
transaction.item[n].detail.tax[n].amount Decimal = CONDITIONAL
transaction.item[n].detail.tax[n].rate Decimal = CONDITIONAL
transaction.item[n].detail.tax[n].type String = CONDITIONAL
transaction.item[n].detail.unitDiscountRate Decimal = CONDITIONAL
transaction.item[n].detail.unitTaxRate Decimal = CONDITIONAL
transaction.item[n].detail.unitTaxType String = CONDITIONAL
transaction.item[n].detail.unspsc Integer = CONDITIONAL
transaction.item[n].detail.upc Integer = CONDITIONAL
transaction.item[n].industryCategory Enumeration = CONDITIONAL
(order.item.unitPrice + order.item.tax) * order.item.quantity
transaction.item[n].name String = Always Provided
transaction.item[n].quantity Decimal = Always Provided
transaction.item[n].sku String = CONDITIONAL
transaction.item[n].unitDiscountAmount Decimal = CONDITIONAL
transaction.item[n].unitOfMeasure String = CONDITIONAL
transaction.item[n].unitPrice Decimal = Always Provided
transaction.item[n].unitTaxAmount Decimal = CONDITIONAL
transaction.itemAmount Decimal = CONDITIONAL
transaction.merchantNote String = CONDITIONAL
transaction.paymentPlan = CONDITIONAL
transaction.paymentPlan.deferralPeriod Integer = Always Provided
transaction.paymentPlan.firstPaymentAmount Decimal = Always Provided
transaction.paymentPlan.interest.rate Decimal = Always Provided
transaction.paymentPlan.name String = Always Provided
transaction.paymentPlan.numberOfPayments Integer = Always Provided
transaction.paymentPlan.offerId Alphanumeric + additional characters = Always Provided
transaction.paymentPlan.receiptText String = Always Provided
transaction.paymentPlan.subsequentPaymentAmount Decimal = Always Provided
transaction.paymentPlan.totalAmount Decimal = Always Provided
transaction.receipt ASCII Text = CONDITIONAL
transaction.reference String = CONDITIONAL
transaction.requestedAmount Decimal = CONDITIONAL
transaction.resubmission Boolean = CONDITIONAL
transaction.shippingAndHandlingAmount Decimal = CONDITIONAL
transaction.shippingAndHandlingTaxAmount Decimal = CONDITIONAL
transaction.shippingAndHandlingTaxRate Decimal = CONDITIONAL
transaction.source Enumeration = CONDITIONAL
If you have an existing agreement with the payer that authorizes you to process this payment (for example, a recurring payment) then set this value to MERCHANT.You only need to provide transaction.source if you want to override the default value configured for your acquirer link.
Note:
- You can only override the default value if you have the requisite permission.
- The value you provide must match one of those configured by your payment service provider.
- You can only set the transaction source on the initial transaction on an order. It cannot be changed on subsequent transactions.
transaction.stan Digits = CONDITIONAL
transaction.targetTransactionId String = CONDITIONAL
- -authorization transaction you wish to void or
- -capture or pay transaction you wish to void or refund or.
- -the contactless transaction which was processed with a single tap indicator and you want to provide the PIN in this request.
That is the {transactionId} URL field for REST and the transaction.id field for NVP.