Create DCC Rate Offer
curl --request POST \
--url https://{your-base-url}/dcc/offers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-acquirer-id: <x-acquirer-id>' \
--header 'x-card-acceptor-id: <x-card-acceptor-id>' \
--data '
{
"referenceCode": "TXN-2025-001234",
"transactionType": "PURCHASE",
"paymentDetails": {
"bin": "409019",
"cid": "111",
"posEntryMode": "079"
},
"orderDetails": {
"amount": "100.00",
"fee": "2.50",
"currency": "EUR"
},
"terminalInformation": {
"terminalId": "TERM001234",
"terminalType": "POS"
}
}
'import requests
url = "https://{your-base-url}/dcc/offers"
payload = {
"referenceCode": "TXN-2025-001234",
"transactionType": "PURCHASE",
"paymentDetails": {
"bin": "409019",
"cid": "111",
"posEntryMode": "079"
},
"orderDetails": {
"amount": "100.00",
"fee": "2.50",
"currency": "EUR"
},
"terminalInformation": {
"terminalId": "TERM001234",
"terminalType": "POS"
}
}
headers = {
"x-acquirer-id": "<x-acquirer-id>",
"x-card-acceptor-id": "<x-card-acceptor-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-acquirer-id': '<x-acquirer-id>',
'x-card-acceptor-id': '<x-card-acceptor-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
referenceCode: 'TXN-2025-001234',
transactionType: 'PURCHASE',
paymentDetails: {bin: '409019', cid: '111', posEntryMode: '079'},
orderDetails: {amount: '100.00', fee: '2.50', currency: 'EUR'},
terminalInformation: {terminalId: 'TERM001234', terminalType: 'POS'}
})
};
fetch('https://{your-base-url}/dcc/offers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{your-base-url}/dcc/offers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'referenceCode' => 'TXN-2025-001234',
'transactionType' => 'PURCHASE',
'paymentDetails' => [
'bin' => '409019',
'cid' => '111',
'posEntryMode' => '079'
],
'orderDetails' => [
'amount' => '100.00',
'fee' => '2.50',
'currency' => 'EUR'
],
'terminalInformation' => [
'terminalId' => 'TERM001234',
'terminalType' => 'POS'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-acquirer-id: <x-acquirer-id>",
"x-card-acceptor-id: <x-card-acceptor-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{your-base-url}/dcc/offers"
payload := strings.NewReader("{\n \"referenceCode\": \"TXN-2025-001234\",\n \"transactionType\": \"PURCHASE\",\n \"paymentDetails\": {\n \"bin\": \"409019\",\n \"cid\": \"111\",\n \"posEntryMode\": \"079\"\n },\n \"orderDetails\": {\n \"amount\": \"100.00\",\n \"fee\": \"2.50\",\n \"currency\": \"EUR\"\n },\n \"terminalInformation\": {\n \"terminalId\": \"TERM001234\",\n \"terminalType\": \"POS\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-acquirer-id", "<x-acquirer-id>")
req.Header.Add("x-card-acceptor-id", "<x-card-acceptor-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{your-base-url}/dcc/offers")
.header("x-acquirer-id", "<x-acquirer-id>")
.header("x-card-acceptor-id", "<x-card-acceptor-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"referenceCode\": \"TXN-2025-001234\",\n \"transactionType\": \"PURCHASE\",\n \"paymentDetails\": {\n \"bin\": \"409019\",\n \"cid\": \"111\",\n \"posEntryMode\": \"079\"\n },\n \"orderDetails\": {\n \"amount\": \"100.00\",\n \"fee\": \"2.50\",\n \"currency\": \"EUR\"\n },\n \"terminalInformation\": {\n \"terminalId\": \"TERM001234\",\n \"terminalType\": \"POS\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{your-base-url}/dcc/offers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-acquirer-id"] = '<x-acquirer-id>'
request["x-card-acceptor-id"] = '<x-card-acceptor-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"referenceCode\": \"TXN-2025-001234\",\n \"transactionType\": \"PURCHASE\",\n \"paymentDetails\": {\n \"bin\": \"409019\",\n \"cid\": \"111\",\n \"posEntryMode\": \"079\"\n },\n \"orderDetails\": {\n \"amount\": \"100.00\",\n \"fee\": \"2.50\",\n \"currency\": \"EUR\"\n },\n \"terminalInformation\": {\n \"terminalId\": \"TERM001234\",\n \"terminalType\": \"POS\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"transactionType": "PURCHASE",
"baseAmount": "100.0",
"foreignAmount": "110.5",
"exchangeRate": {
"baseCurrency": {
"numericCode": "978",
"alphaCode": "EUR",
"minorUnits": 2
},
"foreignCurrency": {
"numericCode": "978",
"alphaCode": "EUR",
"minorUnits": 2
},
"rate": "1.105",
"expiry": "2025-10-08T14:35:00Z",
"id": "650e8400-e29b-41d4-a716-446655440001",
"marginPercentage": "3.5",
"commissionPercentage": "1.0",
"source": "Refinitiv",
"sourceTimestamp": "2025-10-08T14:00:00Z",
"schemeCode": 1
},
"issueAt": "2025-10-08T14:30:00Z",
"referenceCode": "TXN-2025-001234",
"foreignFeeAmount": "2.75",
"foreignTotalAmount": "113.25",
"offerText": "Accept currency conversion at rate 1.1050? You will pay 110.50 USD instead of 100.00 EUR.",
"receiptText": "Currency conversion applied: 100.00 EUR = 110.50 USD at rate 1.1050"
}{
"timestamp": "2025-10-09T09:57:32.461Z",
"status": 400,
"error": "Bad Request",
"message": "Request validation failed",
"path": "/dcc/offers",
"details": [
{
"code": "VALIDATION_ERROR",
"title": "Invalid Field Value",
"message": "Field 'amount' is required but was null, or Currency 'XYZ' is not supported"
}
]
}{
"timestamp": "2025-10-09T09:57:32.461Z",
"status": 400,
"error": "Bad Request",
"message": "Request validation failed",
"path": "/dcc/offers",
"details": [
{
"code": "VALIDATION_ERROR",
"title": "Invalid Field Value",
"message": "Field 'amount' is required but was null, or Currency 'XYZ' is not supported"
}
]
}{
"timestamp": "2025-10-09T09:57:32.461Z",
"status": 400,
"error": "Bad Request",
"message": "Request validation failed",
"path": "/dcc/offers",
"details": [
{
"code": "VALIDATION_ERROR",
"title": "Invalid Field Value",
"message": "Field 'amount' is required but was null, or Currency 'XYZ' is not supported"
}
]
}Rate Service Connect
Create DCC Rate Offer
Creates a Dynamic Currency Conversion (DCC) rate offer for a card transaction. The offer includes exchange rate, foreign currency amounts, fees, and expiry information.
Create DCC Rate Offer
curl --request POST \
--url https://{your-base-url}/dcc/offers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-acquirer-id: <x-acquirer-id>' \
--header 'x-card-acceptor-id: <x-card-acceptor-id>' \
--data '
{
"referenceCode": "TXN-2025-001234",
"transactionType": "PURCHASE",
"paymentDetails": {
"bin": "409019",
"cid": "111",
"posEntryMode": "079"
},
"orderDetails": {
"amount": "100.00",
"fee": "2.50",
"currency": "EUR"
},
"terminalInformation": {
"terminalId": "TERM001234",
"terminalType": "POS"
}
}
'import requests
url = "https://{your-base-url}/dcc/offers"
payload = {
"referenceCode": "TXN-2025-001234",
"transactionType": "PURCHASE",
"paymentDetails": {
"bin": "409019",
"cid": "111",
"posEntryMode": "079"
},
"orderDetails": {
"amount": "100.00",
"fee": "2.50",
"currency": "EUR"
},
"terminalInformation": {
"terminalId": "TERM001234",
"terminalType": "POS"
}
}
headers = {
"x-acquirer-id": "<x-acquirer-id>",
"x-card-acceptor-id": "<x-card-acceptor-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-acquirer-id': '<x-acquirer-id>',
'x-card-acceptor-id': '<x-card-acceptor-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
referenceCode: 'TXN-2025-001234',
transactionType: 'PURCHASE',
paymentDetails: {bin: '409019', cid: '111', posEntryMode: '079'},
orderDetails: {amount: '100.00', fee: '2.50', currency: 'EUR'},
terminalInformation: {terminalId: 'TERM001234', terminalType: 'POS'}
})
};
fetch('https://{your-base-url}/dcc/offers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{your-base-url}/dcc/offers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'referenceCode' => 'TXN-2025-001234',
'transactionType' => 'PURCHASE',
'paymentDetails' => [
'bin' => '409019',
'cid' => '111',
'posEntryMode' => '079'
],
'orderDetails' => [
'amount' => '100.00',
'fee' => '2.50',
'currency' => 'EUR'
],
'terminalInformation' => [
'terminalId' => 'TERM001234',
'terminalType' => 'POS'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-acquirer-id: <x-acquirer-id>",
"x-card-acceptor-id: <x-card-acceptor-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{your-base-url}/dcc/offers"
payload := strings.NewReader("{\n \"referenceCode\": \"TXN-2025-001234\",\n \"transactionType\": \"PURCHASE\",\n \"paymentDetails\": {\n \"bin\": \"409019\",\n \"cid\": \"111\",\n \"posEntryMode\": \"079\"\n },\n \"orderDetails\": {\n \"amount\": \"100.00\",\n \"fee\": \"2.50\",\n \"currency\": \"EUR\"\n },\n \"terminalInformation\": {\n \"terminalId\": \"TERM001234\",\n \"terminalType\": \"POS\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-acquirer-id", "<x-acquirer-id>")
req.Header.Add("x-card-acceptor-id", "<x-card-acceptor-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{your-base-url}/dcc/offers")
.header("x-acquirer-id", "<x-acquirer-id>")
.header("x-card-acceptor-id", "<x-card-acceptor-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"referenceCode\": \"TXN-2025-001234\",\n \"transactionType\": \"PURCHASE\",\n \"paymentDetails\": {\n \"bin\": \"409019\",\n \"cid\": \"111\",\n \"posEntryMode\": \"079\"\n },\n \"orderDetails\": {\n \"amount\": \"100.00\",\n \"fee\": \"2.50\",\n \"currency\": \"EUR\"\n },\n \"terminalInformation\": {\n \"terminalId\": \"TERM001234\",\n \"terminalType\": \"POS\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{your-base-url}/dcc/offers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-acquirer-id"] = '<x-acquirer-id>'
request["x-card-acceptor-id"] = '<x-card-acceptor-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"referenceCode\": \"TXN-2025-001234\",\n \"transactionType\": \"PURCHASE\",\n \"paymentDetails\": {\n \"bin\": \"409019\",\n \"cid\": \"111\",\n \"posEntryMode\": \"079\"\n },\n \"orderDetails\": {\n \"amount\": \"100.00\",\n \"fee\": \"2.50\",\n \"currency\": \"EUR\"\n },\n \"terminalInformation\": {\n \"terminalId\": \"TERM001234\",\n \"terminalType\": \"POS\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"transactionType": "PURCHASE",
"baseAmount": "100.0",
"foreignAmount": "110.5",
"exchangeRate": {
"baseCurrency": {
"numericCode": "978",
"alphaCode": "EUR",
"minorUnits": 2
},
"foreignCurrency": {
"numericCode": "978",
"alphaCode": "EUR",
"minorUnits": 2
},
"rate": "1.105",
"expiry": "2025-10-08T14:35:00Z",
"id": "650e8400-e29b-41d4-a716-446655440001",
"marginPercentage": "3.5",
"commissionPercentage": "1.0",
"source": "Refinitiv",
"sourceTimestamp": "2025-10-08T14:00:00Z",
"schemeCode": 1
},
"issueAt": "2025-10-08T14:30:00Z",
"referenceCode": "TXN-2025-001234",
"foreignFeeAmount": "2.75",
"foreignTotalAmount": "113.25",
"offerText": "Accept currency conversion at rate 1.1050? You will pay 110.50 USD instead of 100.00 EUR.",
"receiptText": "Currency conversion applied: 100.00 EUR = 110.50 USD at rate 1.1050"
}{
"timestamp": "2025-10-09T09:57:32.461Z",
"status": 400,
"error": "Bad Request",
"message": "Request validation failed",
"path": "/dcc/offers",
"details": [
{
"code": "VALIDATION_ERROR",
"title": "Invalid Field Value",
"message": "Field 'amount' is required but was null, or Currency 'XYZ' is not supported"
}
]
}{
"timestamp": "2025-10-09T09:57:32.461Z",
"status": 400,
"error": "Bad Request",
"message": "Request validation failed",
"path": "/dcc/offers",
"details": [
{
"code": "VALIDATION_ERROR",
"title": "Invalid Field Value",
"message": "Field 'amount' is required but was null, or Currency 'XYZ' is not supported"
}
]
}{
"timestamp": "2025-10-09T09:57:32.461Z",
"status": 400,
"error": "Bad Request",
"message": "Request validation failed",
"path": "/dcc/offers",
"details": [
{
"code": "VALIDATION_ERROR",
"title": "Invalid Field Value",
"message": "Field 'amount' is required but was null, or Currency 'XYZ' is not supported"
}
]
}Authorizations
Headers
Body
application/json
DCC rate offer request containing transaction details, payment info, and order information
Response
Successfully created DCC rate offer
Response containing the DCC rate offer details including exchange rates, amounts, and offer status
