Payments Developer Guide

This section describes how to use this guide and where to find further information.
Audience and Purpose
This guide is written for application developers who want to use the
REST API
to integrate payment card processing into an order management system.
Implementing the
Visa Acceptance Solutions
payment services requires software development skills. You must write code that uses the API request and response fields to integrate the payment card services into your existing order management system.
Conventions
These statements appear in this document:
IMPORTANT
An
Important
statement contains information essential to successfully completing a task or learning a concept.
WARNING
A
Warning
contains information or instructions, which, if not heeded, can result in a security risk, irreversible loss of data, or significant cost in time or revenue or both.

Pilot Release

This document provides information about the pilot release of the Payments REST API for
Fiserv RapidConnect
.

Recent Revisions to This Document

25.09.01

Added support for Mastercard. See Card Types.

25.04.01

Fiserv RapidConnect
pilot release.

Introduction to Payments

This introduction provides the basic information that you will need to successfully process payment transactions. It also provides an overview of the payments industry and provides workflows for each process.

Financial Institutions and Payment Networks

Financial institutions and payment networks enable payment services to function. These entities work together to complete the full payment cycle.

Merchant Financial Institutions (Acquirers)

A merchant financial institution, also known as an
acquirer
, offers accounts to businesses that accept payment cards. Before you can accept payments, you must have a merchant account from an acquirer. Your merchant account must be configured to process card-not-present, card-present, or mail-order/telephone-order (MOTO) transactions.
If excessive chargebacks or fraudulant changes occur, these actions might be taken:
  • You might be required to change your business processes to reduce the number chargebacks, fraud, or both.
  • Your acquiring institution might increase your discount rate.
  • Your acquiring institution might revoke your merchant account.
Contact your sales representative for information about products that can help prevent fraud.

Customer Financial Institutions (Issuers)

A customer financial institution, also known as an
issuer
, provides payment cards to and underwrites lines of credit for their customers. The issuer provides monthly statements and collects payments. The issuer must follow the rules of the payment card companies to which they belong.

Payment Networks

Payment networks manage communications between acquirers and issuing banks. They also develop industry standards, support their brands, and establish fees for acquiring institutions.
Some payment networks, such as Visa and Mastercard, are trade associations that do not issue cards. Issuers are members of these associations, and they issue cards under license from the association.

Payment Processors

Payment processors connect with acquirers. Before you can accept payments, you must register with
a payment processor
.
Your payment processor
assigns one or more merchant IDs (MIDs) to your business. These unique codes identify your business during payment transactions.
This table lists the processors and corresponding card types that are supported for payment services.
IMPORTANT
Only the card types explicitly listed here are supported.
Payment Processor and Supported Card Types
Payment Processor
Supported Card Types
Notes
Fiserv RapidConnect
Mastercard, Visa

Card Types

You can process payments with these kinds of cards:
  • Credit cards
  • Debit cards
You can process payments on the
Fiserv RapidConnect
processor with these card types:
  • Mastercard
  • Visa

Transaction Types

This topic provides information about transaction types that are supported by your processor, such as card-present, card-not-present, and international transactions.

Card-Not-Present Transactions

When a customer provides a card number, but the card and the customer are not physically present at the merchant's location, the purchase is known as a
card-not-present transaction
. Typical card-not-present transactions are internet and phone transactions. Card-not-present transactions pose an additional level of risk to your business because the customer’s identification cannot be verified. You can reduce that risk by using features such as the Address Verification System (AVS) and Card Verification Numbers (CVNs). The AVS and CVNs provide additional protection from fraud by verifying the validity of the customer’s information and notifying you when discrepancies occur.

Payment Services

Various services are involved in processing
These services enable customers to purchase goods and services. They also enable merchants to receive payments from customer accounts, to provide refunds, and to void transactions.

Sale

A sale is a bundled authorization and capture. Some processors and acquirers require a sale transaction instead of using separate authorization and capture requests. For other processors and acquirers, you can request a sale instead of a separate authorization and capture when you provide the goods or services immediately after taking an order.
There are two types of sale processing: dual-message processing and single-message processing.

Dual-Message Processing

Dual-message processing is a two-step process. The authorization is processed first. If the authorization is successful, the capture is processed immediately afterward. The response includes the authorization and the capture information. If the authorization is declined, the capture is not processed, and the response message includes only the authorization information.

Partial Authorizations

All debit and prepaid card processors as well as a limited number of credit card processors support partial authorizations when dual-message processing is in place.
When partial authorization is enabled, the issuing financial institution can approve a partial amount when the balance on the card is less than the requested amount. When a partial amount is authorized, the capture is not processed. The merchant can then use a second card to cover the balance, adjust the total cost, or void the transaction.

Single-Message Processing

Single-message processing treats the authorization and capture as a single transaction. There are important differences between dual-message processing and single-message processing:
  • Single-message processing treats the request as a full-financial transaction, and with a successful transaction, funds are immediately transferred from the customer account to the merchant account.
  • Authorization and capture amounts must be the same.
  • Some features cannot be used with single-message processing.

Credits

Credits are payment refunds from a merchant to the cardholder after a cardholder pays for a product or service and that payment is captured by the merchant. When a credit request is successful, the issuer transfers funds from the merchant bank (acquirer) account to the customer's account. It typically takes 2 to 4 days for the acquirer to transfer funds from your merchant account.
WARNING
You should carefully control access to the credit service. Do not request this service directly from your customer interface. Instead, incorporate this service as part of your customer service process. This process reduces the potential for fraudulent transactions.
There are two basic types of credits:
refunds
and stand-alone credits.

Refunds

Refunds, also known as
follow-on credits
, use the capture request ID to link the refund to a specific transaction. The request ID links the transaction to the customer’s billing and account information, so you are not required to include those fields in the credit request.
Unless otherwise specified, refunds must be requested within 180 days of a settlement. You can request multiple refunds against a single capture or sale transaction as long as the total amount does not exceed the original purchase amount. To perform multiple refunds, use the same request ID in each request.

Stand-Alone Credits

Stand-alone credits are not connected to an original transaction. Stand-alone credits do not have a time restriction, and they can be used to issue refunds more than 180 days after a transaction settlement.

Credit Workflow

The credit workflow begins when you send a request for a credit.
  1. The merchant sends a request for a credit to
    Visa Acceptance Solutions
    .
  2. For online credits,
    Visa Acceptance Solutions
    validates the order information then sends an online credit to the payment processor.
  3. The processor validates the request and forwards it to the acquiring bank.
  4. The acquiring bank transfers funds to the issuing bank.

Voids

A void cancels a capture or credit request that was submitted but not yet processed by the processor.
Capture and credit requests are usually submitted once a day. A void request is declined when the capture or credit request has already been sent to the processor.
After a void is processed, you cannot credit or capture the funds. You must perform a new transaction to capture or credit the funds. Further, when you void a capture, a hold remains on the authorized funds. If you are not going to re-capture the authorization, you should request an authorization reversal to release the hold on the unused funds.
A void uses the capture or credit request ID to link the transactions. The authorization request ID is used to look up the customer’s billing and account information, so there is no need to include those fields in the void request. You cannot perform a follow-on credit against a capture that has been voided.

Testing the Payment Services

To ensure that requests are processed correctly, you must test the basic success and error conditions for each service you plan to use.

Requirements for Testing

Before you can test, contact customer support to activate the credit card services and configure your account for testing. You must also contact your processor to set up your processor account.
IMPORTANT
When building your connection to the
Visa Acceptance Solutions
payment gateway, ensure that you have implemented controls to prevent card testing or card enumeration attacks on your platform.
For more information, see the best practices guide.
When we detect suspicious transaction activity associated with your merchant ID, including a card testing or card enumeration attack,
Visa Acceptance Solutions
reserves the right to enable fraud management tools on your behalf in order to mitigate the attack. The fraud team might also implement internal controls to mitigate attack activity. These controls block traffic that is perceived as fraudulent. Additionally, if you are using one of our fraud tools and experience a significant attack, our internal team might modify or add rules to your configuration to help prevent the attack and minimize the threat to our infrastructure. However, any actions taken by
Visa Acceptance Solutions
would not replace the need for you to follow industry standard best practices to protect your systems, servers, and platforms.
Follow these requirements when you test your system:
  • Use your regular merchant ID.
  • Use a real combination for the city, state, and postal code.
  • Use a real combination for the area code and telephone number.
  • Use a nonexistent account and domain name for the customer’s email address.
  • REST API test endpoint:
    POST
    https://apitest.visaacceptance.com
    /pts/v2/payments

Test Card Numbers

Use these payment card numbers to test the authorization, capture, and credit services. Remove the spaces from the test card numbers when sending them to the test system. Do not use real payment card numbers. To test card types that are not included in the list, use an account number that is in the card’s BIN range. For best results, try each test with a different service request and with different test payment card numbers.
IMPORTANT
The test card numbers that are provided are formatted with Xs for zeroes in the card number. When testing with the card numbers, replace each X with a 0 (zero).
  • American Express—3782 8224 631X XX5
  • Discover—6X11 1111 1111 1117
  • JCB—3566 1111 1111 1113
  • Maestro (International)
    • 5X33 9619 89X9 17
    • 5868 2416 0825 5333 38
  • Maestro (UK Domestic)—the issue number is not required for Maestro (UK Domestic) transactions.
    • 6759 4111 XXXX XXX8
    • 6759 56XX 45XX 5727 054
    • 5641 8211 1116 6669
  • Mastercard
    • 2222 42XX XXXX 1113
    • 2222 63XX XXXX 1125
    • 5555 5555 5555 4444
  • UATP—1354 1234 5678 911
  • Visa—4111 1111 1111 1111

Standard Payment Processing

This section shows you how to process various authorization, capture, credit, and sales transactions.

Zero Amount Authorizations

This section provides the information that you need in order to process a zero amount authorization.
Authorizing a payment for a zero amount shows whether a payment card account is valid and whether the card is lost or stolen. You cannot capture a zero amount authorization.

Endpoint

Production:
POST
https://api.visaacceptance.com
/pts/v2/payments
Test:
POST
https://apitest.visaacceptance.com
/pts/v2/payments

Required Fields for Processing
a Zero Amount Authorization

Use these required fields for processing
a zero amount authorization
.
clientReferenceInformation.code
clientReferenceInformation.reconciliationId
orderInformation.amountDetails.currency
orderInformation.amountDetails.totalAmount
Set this value to
0
.
orderInformation.billTo.address1
orderInformation.billTo.address2
orderInformation.billTo.administrativeArea
orderInformation.billTo.country
orderInformation.billTo.email
orderInformation.billTo.firstName
orderInformation.billTo.lastName
orderInformation.billTo.locality
orderInformation.billTo.phoneNumber
orderInformation.billTo.postalCode
paymentInformation.card.expirationMonth
paymentInformation.card.expirationYear
paymentInformation.card.number
paymentInformation.card.securityCode
processingInformation.actionList
Set the value to
TOKEN_CREATE
.
processingInformation.actionTokenTypes
Set to one or more of these values:
  • customer
  • paymnentInstrument
  • shippingAddress

REST Example: Processing a Zero Amount Authorization

Request
{ "clientReferenceInformation": { "code": "1234567890", "reconcilationId": "000000050000752" }, "processingInformation": { "actionList": [ "TOKEN_CREATE" ], "actionTokenTypes": [ "customer", "paymentInstrument", "shippingAddress" ] }, "orderInformation": { "billTo": { "country": "US", "firstName": "John", "lastName": "Smith", "phoneNumber": "650-965-6111", "address2": "Room 2-2123", "address1": "600 Morgan Falls Road", "postalCode": "94566", "locality": "Atlanta", "administrativeArea": "MI", "email": "" }, "amountDetails": { "totalAmount": "0", "currency": "USD" } }, "paymentInformation": { "card": { "expirationYear": "2030", "number": "4111111111111111", "expirationMonth": "12", "type": "001" } } }
Response to a Successful Request
{ "embeddedActions": { "TOKEN_CREATE": { "status": "SUCCESS" } }, "paymentInformation": { "bin": "411111", "issuer": "CONOTOXIA SP. Z O.O", "binCountry": "PL", "accountType": "Visa Classic", "cardBrand": "VISA", "cardType": "001" }, "submitTimeUtc": "2025-03-10T18:38:09Z", "processorInformation": { "approvalCode": "OK1272", "responseCodeSource": "4", "networkTransactionId": "0014239537635196CN", "responseCode": "000" }, "_links": { "capture": { "href": "/pts/v2/payments/7416318895663232235535/captures", "method": "POST" }, "reversal": { "href": "/pts/v2/payments/7416318895663232235535/reversals", "method": "POST" }, "self": { "method": "GET", "href": "/pts/v2/payments/7416318895663232235535" } }, "consumerAuthenticationResponse": { "systemTraceAuditNumber": "500016", "merchantNumber": "RCTST1000107085" }, "orderInformation": { "amountDetails": { "authorizedAmount": "0000000000.00" } }, "message": "Successful transaction.", "clientReferenceInformation": { "code": "001234567890" }, "reconciliationId": "000000050000752", "pointOfSaleInformation": { "terminalId": "00000001" }, "id": "7416318895663232235535", "status": "AUTHORIZED", "tokenInformation": { "instrumentIdentifierNew": false, "customer": { "id": "300220A7824EF32AE0634136CF0A7425" }, "instrumentIdentifier": { "id": "7018759999957811111", "state": "ACTIVE" }, "paymentInstrument": { "id": "300220A78257F32AE0634136CF0A7425" }, "shippingAddress": { "id": "300220A7825AF32AE0634136CF0A7425" } } }

Sale

This section provides the information you need in order to process a sale transaction.
A sale combines an authorization and a capture into a single transaction.

Endpoint

Production:
POST
https://api.visaacceptance.com
/pts/v2/payments
Test:
POST
https://apitest.visaacceptance.com
/pts/v2/payments

Required Fields for Processing a Sale

clientReferenceInformation.code
clientReferenceInformation.reconciliationId
orderInformation.amountDetails.currency
orderInformation.amountDetails.totalAmount
orderInformation.billTo.address1
orderInformation.billTo.administrativeArea
orderInformation.billTo.country
orderInformation.billTo.email
orderInformation.billTo.firstName
orderInformation.billTo.lastName
orderInformation.billTo.locality
orderInformation.billTo.phoneNumber
orderInformation.billTo.postalCode
paymentInformation.card.expirationMonth
paymentInformation.card.expirationYear
paymentInformation.card.number
processingInformation.capture
Set the value to
true
.

REST Example: Sale with an Instrument Identifier Token

Request
{ "clientReferenceInformation": { "code": "123456789012", "reconciliationId": "000000050000773" }, "processingInformation": { "commerceIndicator": "internet", "capture": true }, "orderInformation": { "billTo": { "country": "US", "firstName": "John", "lastName": "Smith", "phoneNumber": "650-965-6111", "address1": "600 Morgan Falls Road", "postalCode": "94566-1234", "locality": "Atlanta", "administrativeArea": "MI", "email": "" }, "amountDetails": { "totalAmount": "110", "currency": "USD" } }, "merchantInformation": { "merchantDescriptor": { "name": "Best Bakery" } }, "paymentInformation": { "tokenizedCard": { "expirationYear": "2030", "expirationMonth": "02" }, "instrumentIdentifier": { "id": "7018759999957811111" } } }
Response to a Successful Request
{ "paymentInformation": { "bin": "411111", "issuer": "CONOTOXIA SP. Z O.O", "binCountry": "PL", "accountType": "Visa Classic", "cardBrand": "VISA", "cardType": "001", "instrumentIdentifier": { "id": "7018759999957811111", "state": "ACTIVE" } }, "submitTimeUtc": "2025-03-12T16:27:31Z", "_links": { "refund": { "href": "/pts/v2/payments/7417968511323232235535/refunds", "method": "POST" }, "void": { "href": "/pts/v2/payments/7417968511323232235535/voids", "method": "POST" }, "self": { "method": "GET", "href": "/pts/v2/payments/7417968511323232235535" } }, "processorInformation": { "approvalCode": "OK1272", "consumerAuthenticationResponse": { "code": "1", "codeRaw": "1" }, "responseCodeSource": "4", "networkTransactionId": "0014239537635196CN", "responseCode": "000" }, "consumerAuthenticationResponse": { "systemTraceAuditNumber": "500040", "merchantNumber": "RCTST1000107085" }, "clientReferenceInformation": { "code": "123456789012" }, "pointOfSaleInformation": { "terminalId": "00000001" }, "id": "7417968511323232235535", "orderInformation": { "amountDetails": { "authorizedAmount": "110.00" } }, "message": "Successful transaction.", "reconciliationId": "000000050000773", "status": "COMPLETED", "tokenInformation": { "instrumentIdentifierNew": false, "instrumentIdentifier": { "id": "7018759999957811111", "state": "ACTIVE" } }, "embeddedActions": { "TOKEN_RETRIEVE": { "status": "SUCCESS" } } }

Refunds

This section provides the information you need in order to process a
refund
, which is linked to a sale.

Endpoint

Production:
POST
https://api.visaacceptance.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.visaacceptance.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the transaction ID returned in the capture or sale response.

Required Fields for Processing a
Refund

Use these required fields for processing a
refund
.
clientReferenceInformation.code
clientReferenceInformation.reconciliationId
orderInformation.amountDetails.currency
orderInformation.amountDetails.totalAmount

REST Example: Processing a Refund

Request
{ "clientReferenceInformation": { "code": "123456789012", "reconciliationId": "000000050000769" }, "orderInformation": { "amountDetails": { "totalAmount": "110", "currency": "USD" } } }
Response to a Successful Request
{ "submitTimeUtc": "2025-03-11T16:38:53Z", "processorInformation": { "approvalCode": "OK9473", "responseCodeSource": "4", "networkTransactionId": "0014239537635196CN", "responseCode": "000" }, "consumerAuthenticationResponse": { "systemTraceAuditNumber": "500033", "merchantNumber": "RCTST1000107085" }, "orderInformation": { "amountDetails": { "authorizedAmount": "110.00" } }, "message": "Successful transaction.", "_links": { "void": { "href": "/pts/v2/refunds/7417111335293232235535/voids", "method": "POST" }, "self": { "method": "GET", "href": "/pts/v2/refunds/7417111335293232235535" } }, "clientReferenceInformation": { "code": "123456789012" }, "issuerInformation": { "responseCode": "123" }, "reconciliationId": "000000050000769", "pointOfSaleInformation": { "terminalId": "00000001" }, "id": "7417111335293232235535", "status": "COMPLETED" }

Credits

This section shows you how to process a credit, which is not linked to a capture or sale. There is no time limit for requesting a credit.

Endpoint

Production:
POST
https://api.visaacceptance.com
/pts/v2/credits/
Test:
POST
https://apitest.visaacceptance.com
/pts/v2/credits/

Required Fields for Processing a Credit

Use these required fields for processing a credit.
clientReferenceInformation.code
clientReferenceInformation.reconciliationId
merchantInformation.merchantDescriptor.name
orderInformation.amountDetails.currency
orderInformation.amountDetails.totalAmount
orderInformation.billTo.address1
orderInformation.billTo.administrativeArea
orderInformation.billTo.country
orderInformation.billTo.email
orderInformation.billTo.firstName
orderInformation.billTo.lastName
orderInformation.billTo.locality
orderInformation.billTo.postalCode
paymentInformation.card.expirationMonth
paymentInformation.card.expirationYear
paymentInformation.card.number
paymentInformation.instrumentIdentifier.id
processingInformation.commerceIndicator
Set the value to
internet
.

REST Example: Processing a Credit

Request
{ "orderInformation" : { "billTo" : { "country" : "US", "lastName" : "Kim", "address1" : "201 S. Division St.", "postalCode" : "48104-2201", "locality" : "Ann Arbor", "administrativeArea" : "MI", "firstName" : "Kyong-Jin", "email" : "" }, "amountDetails" : { "totalAmount" : "100.00", "currency" : "eur" } }, "paymentInformation" : { "card" : { "expirationYear" : "2031", "number" : "4111111111111111", "expirationMonth" : "12" } } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/credits/6663069906146706403954/voids" }, "self": { "method": "GET", "href": "/pts/v2/credits/6663069906146706403954" } }, "clientReferenceInformation": { "code": "1666306990717" }, "creditAmountDetails": { "currency": "eur", "creditAmount": "100.00" }, "id": "6663069906146706403954", "orderInformation": { "amountDetails": { "currency": "eur" } }, "paymentAccountInformation": { "card": { "type": "001" } }, "paymentInformation": { "tokenizedCard": { "type": "001" }, "card": { "type": "001" } }, "processorInformation": { "approvalCode": "888888", "networkTransactionId": "016153570198200", "responseCode": "100" }, "reconciliationId": "66490108K9CLFJPN", "status": "PENDING", "submitTimeUtc": "2022-10-20T23:03:10Z" }

REST Example: Processing a Credit

Request
{ "clientReferenceInformation": { "code": "123456789012", "reconciliationId": "000000050000765" }, "processingInformation": { "commerceIndicator": "internet" }, "orderInformation": { "billTo": { "country": "US", "firstName": "John", "lastName": "Smith", "phoneNumber": "650-965-6111", "address1": "600 Morgan Falls Road", "postalCode": "94566-1234", "locality": "Atlanta", "administrativeArea": "MI", "email": "" }, "amountDetails": { "totalAmount": "110", "currency": "USD" } }, "merchantInformation": { "merchantDescriptor": { "name": "Best Bakery" } }, "paymentInformation": { "card": { "expirationYear": "2030", "expirationMonth": "02" }, "instrumentIdentifier": { "id": "7018759999957811111" } } }
Response to a Successful Request
{ "submitTimeUtc": "2025-03-10T22:18:45Z", "_links": { "refund": { "href": "/pts/v2/payments/7416451254443232235535/refunds", "method": "POST" }, "void": { "href": "/pts/v2/payments/7416451254443232235535/voids", "method": "POST" }, "self": { "method": "GET", "href": "/pts/v2/payments/7416451254443232235535" } }, "processorInformation": { "approvalCode": "OK9473", "responseCodeSource": "4", "networkTransactionId": "0014239537635196CN", "responseCode": "000" }, "consumerAuthenticationResponse": { "systemTraceAuditNumber": "500028", "merchantNumber": "RCTST1000107085" }, "orderInformation": { "amountDetails": { "authorizedAmount": "110.00" } }, "message": "Successful transaction.", "clientReferenceInformation": { "code": "123456789012" }, "issuerInformation": { "responseCode": "123" }, "reconciliationId": "000000050000765", "pointOfSaleInformation": { "terminalId": "00000001" }, "id": "7416451254443232235535", "status": "COMPLETED", "embeddedActions": { "TOKEN_RETRIEVE": { "status": "SUCCESS" } } }

Voids for a Capture or Credit

This section describes how to void a capture or credit that was submitted but not yet processed by the processor.

Endpoints

Void a Capture
Production:
POST
https://api.visaacceptance.com
/pts/v2/captures/
{id}
/voids
Test:
POST
https://apitest.visaacceptance.com
/pts/v2/captures/
{id}
/voids
Void a Credit
Production:
POST
https://api.visaacceptance.com
/pts/v2/credits/
{id}
/voids
Test:
POST
https://apitest.visaacceptance.com
/pts/v2/credits/
{id}
/voids
The
{id}
is the transaction ID returned during the capture or credit response.

Required Fields for Voiding a Capture or Credit

clientReferenceInformation.code
clientReferenceInformation.reconciliationId

REST Example: Voiding a Capture or Credit

Request
{ "clientReferenceInformation": { "code": "123456789012", "reconciliationId": "000000050000771" }, "orderInformation": { "amountDetails": { "totalAmount": "110", "currency": "USD" } } }
Response to a Successful Request
{ "submitTimeUtc": "2025-03-11T16:39:30Z", "processorInformation": { "approvalCode": "OK1272", "responseCode": "000" }, "consumerAuthenticationResponse": { "systemTraceAuditNumber": "500036" }, "orderInformation": { "amountDetails": { "authorizedAmount": "110.00" } }, "message": "Successful transaction.", "clientReferenceInformation": { "code": "123456789012" }, "reconciliationId": "000000050000771", "id": "7417111702443232235535", "_links": { "self": { "method": "GET", "href": "/pts/v2/voids/7417111702443232235535" } }, "status": "VOIDED" }

Void for a Sale

This section describes how to void a sale that was submitted but not yet processed by the processor.

Endpoint

Production:
POST
https://api.visaacceptance.com
/pts/v2/payments/
{id}
/voids
Test:
POST
https://apitest.visaacceptance.com
/pts/v2/payments/
{id}
/voids
The
{id}
is the transaction ID returned in the sale response.

Required Fields for Voiding a Sale

clientReferenceInformation.code
clientReferenceInformation.reconciliationId
orderInformation.amountDetails.currency
orderInformation.amountDetails.totalAmount

REST Example: Voiding a Sale

Request
{ "clientReferenceInformation": { "code": "123456789012", "reconciliationId": "000000050000771" }, "orderInformation": { "amountDetails": { "totalAmount": "110", "currency": "USD" } } }
Response to a Successful Request
{ "submitTimeUtc": "2025-03-11T16:39:30Z", "processorInformation": { "approvalCode": "OK1272", "responseCode": "000" }, "consumerAuthenticationResponse": { "systemTraceAuditNumber": "500036" }, "orderInformation": { "amountDetails": { "authorizedAmount": "110.00" } }, "message": "Successful transaction.", "clientReferenceInformation": { "code": "123456789012" }, "reconciliationId": "000000050000771", "id": "7417111702443232235535", "_links": { "self": { "method": "GET", "href": "/pts/v2/voids/7417111702443232235535" } }, "status": "VOIDED" }

Voids for a Refund

This section describes how to void a sale that was submitted but not yet processed by the processor.

Endpoint

Production:
POST
https://api.visaacceptance.com
/pts/v2/refund/
{id}
/voids
Test:
POST
https://apitest.visaacceptance.com
/pts/v2/refund/
{id}
/voids
The
{id}
is the transaction ID returned in the refund response.

Required Fields for Voiding a Refund

clientReferenceInformation.code
clientReferenceInformation.reconciliationId
orderInformation.amountDetails.currency
orderInformation.amountDetails.totalAmount

REST Example: Voiding a Refund

Request
{ "clientReferenceInformation": { "code": "123456789012", "reconciliationId": "000000050000772" }, "orderInformation": { "amountDetails": { "totalAmount": "100", "currency": "USD" } } }
Response to a Successful Request
{ "submitTimeUtc": "2025-03-11T16:57:19Z", "processorInformation": { "approvalCode": "OK1272", "responseCode": "000" }, "consumerAuthenticationResponse": { "systemTraceAuditNumber": "500039" }, "orderInformation": { "amountDetails": { "authorizedAmount": "110.00" } }, "message": "Successful transaction.", "clientReferenceInformation": { "code": "123456789012" }, "reconciliationId": "000000050000772", "id": "7417122396283232235535", "_links": { "self": { "method": "GET", "href": "/pts/v2/voids/7417122396283232235535" } }, "status": "VOIDED" }

Time-Out Voids for a Capture, Sale,
Refund
, or
Credit

When you do not receive a response message after requesting a capture, sale,
refund
, or
credit
, this feature enables you to void the transaction that you requested.
Include the
clientReferenceInformation.transactionId
field in the original request for a capture, sale,
refund
, or
credit
. The value of the merchant transaction ID must be unique for 180 days.
When the original transaction fails, the response message for the reversal request includes these fields:
  • voidAmountDetails.originalTransactionAmount
  • processorInformation.responseCode

Endpoint

Production:
POST
https://api.visaacceptance.com
/pts/v2/voids/
Test:
POST
https://apitest.visaacceptance.com
/pts/v2/voids/

Required Fields for a Time-Out Void for a Capture, Sale,
Refund
, or
Credit

clientReferenceInformation.code
clientReferenceInformation.reconciliationId
clientReferenceInformation.transactionId
orderInformation.amountDetails.currency
orderInformation.amountDetails.totalAmount

REST Example: Time-Out Void for a Capture, Sale, Refund, or Credit

Request
{ "clientReferenceInformation": { "code": "123456789012", "reconciliationId": "000000050000772" "transactionId": "987654321" }, "orderInformation": { "amountDetails": { "totalAmount": "100", "currency": "USD" } } }
Response to a Successful Request
{ "submitTimeUtc": "2025-03-11T16:57:19Z", "processorInformation": { "approvalCode": "OK1272", "responseCode": "000" }, "consumerAuthenticationResponse": { "systemTraceAuditNumber": "500039" }, "orderInformation": { "amountDetails": { "authorizedAmount": "110.00" } }, "message": "Successful transaction.", "clientReferenceInformation": { "code": "123456789012" }, "reconciliationId": "000000050000772", "id": "7417122396283232235535", "_links": { "self": { "method": "GET", "href": "/pts/v2/voids/7417122396283232235535" } }, "status": "VOIDED" }

Payer Authentication Processing

This section shows you how to process authorizations that use these payer authentication methods:

Visa Secure

Visa Secure is the authentication service in the Visa card network that uses the 3-D Secure protocol to authenticate customers at checkout. This authentication is a two-step process. First, the cardholder is authenticated by 3-D Secure. Then, the transaction is authorized based on the 3-D Secure evaluation. This section explains how to authorize a card payment based on the 3-D Secure evaluation.
Before implementing Visa Secure, contact customer support to have your account configured for this feature.

Fields Specific to the Visa Secure Use Case

These API fields are required specifically for this use case.
processingInformation.commerceIndicator
Set the value to
vbv
for a successful authentication (3-D Secure value of
05
),
vbv_attempted
if authentication was attempted but did not succeed (3-D Secure value of
06
), or
vbv_failure
if authentication failed (3-D Secure value of
07
).
consumerAuthenticationInformation.cavv
Required when payer authentication is successful.

Endpoint

Production:
POST
https://api.visaacceptance.com
/pts/v2/payments
Test:
POST
https://apitest.visaacceptance.com
/pts/v2/payments

Required Fields for Processing an Authorization Using Visa Secure

Use these required fields to process an authorization using Visa Secure.
IMPORTANT
When relaxed requirements for address data and the expiration date are being used, not all fields in this list are required. It is your responsibility to determine whether your account is enabled to use this feature and which fields are required. Refer to the Payments guide for more information about relaxed requirements in payment transactions.

Required Fields

This field is required when payer authentication is successful. Otherwise, this field is optional.
Vero
supports Brazilian real (BRL) currency only.
Set this field to one of these values:
  • vbv
    : Successful authentication (EMV
    3-D Secure
    value of
    05
    ).
  • vbv_attempted
    : Authentication was attempted (EMV
    3-D Secure
    value of
    06
    ).
  • vbv_failure
    : or
    internet
    : Authentication failed or was not attempted (EMV
    3-D Secure
    value of
    07
    ).

REST Example: Validating and Authorizing a Transaction

Request
{ "clientReferenceInformation": { "code": "test" }, "processingInformation": { "capture": "true", "authorizationOptions": { "ignoreAvsResult": "true" }, "actionList": [ "VALIDATE_CONSUMER_AUTHENTICATION" ] }, "paymentInformation": { "card": { "expirationYear": "2031", "number": "4XXXXXXXXXXX25X3", "securityCode": "123", "expirationMonth": "12", "type": "001" } }, "orderInformation": { "amountDetails": { "totalAmount": "100.00", "currency": "GBP" }, "billTo": { "firstName": "John", "lastName": "Smith", "address1": "201 S. Division St._1", "address2": "Suite 500", "locality": "Foster City", "administrativeArea": "CA", "postalCode": "94404", "country": "US", "email": "[email protected]", "phoneNumber": "6504327113" } }, "consumerAuthenticationInformation": { "authenticationTransactionId": "2b4eAa4K3H778X34Ciy0" } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7478305945626990404807/voids" }, "self": { "method": "GET", "href": "/pts/v2/payments/7478305945626990404807" } }, "clientReferenceInformation": { "code": "test" }, "consumerAuthenticationInformation": { "indicator": "vbv", "eciRaw": "05", "authenticationResult": "0", "strongAuthentication": { "OutageExemptionIndicator": "0" }, "authenticationStatusMsg": "Success", "eci": "05", "token": "Axj//wSTlWZX08jkcOTHAAIU3YMmzhgzcN2ie/LXsgSgKe/LXsgS50OnEFBWGTSTL0Yua1eAwHScqzK+nkcjhyY4wDi0", "cavv": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "paresStatus": "Y", "xid": "AAIBBYNoEwAAACcKhAJkdQAAAAA=", "directoryServerTransactionId": "fa628ed8-ad77-4723-b28f-91952eaca8fe", "threeDSServerTransactionId": "71399671-8456-4c97-b056-e127622a5e26", "specificationVersion": "2.2.0", "acsTransactionId": "5f9fb589-08cc-4952-866d-30939868f411" }, "id": "7478305945626990404807", "orderInformation": { "amountDetails": { "totalAmount": "100.00", "authorizedAmount": "100.00", "currency": "GBP" } }, "paymentAccountInformation": { "card": { "brandName": "VISA", "type": "001" } }, "paymentInformation": { "tokenizedCard": { "type": "001" }, "card": { "bin": "400000", "type": "VISA" } }, "pointOfSaleInformation": { "terminalId": "12345678" }, "processorInformation": { "paymentAccountReferenceNumber": "V0010013018036776997406844475", "merchantNumber": "12345678", "approvalCode": "100", "cardVerification": { "resultCodeRaw": "3", "resultCode": "2" }, "merchantAdvice": { "code": "00", "codeRaw": "0" }, "networkTransactionId": "123456789012345", "transactionId": "123456789012345", "responseCode": "0", "avs": { "code": "U", "codeRaw": "00" } }, "reconciliationId": "7026803874", "status": "AUTHORIZED", "submitTimeUtc": "2025-05-21T12:29:54Z" }