curl --request POST \
--url https://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"threeDS": {
"type": "full",
"state": "success",
"mode": "frictionless",
"cryptogram": "Vt5xwasruB0Q6qRoG9mpzdRPqQs=",
"eci": "05",
"version": "2.2.0",
"directoryServerTransactionId": "607bb317-8d24-45a7-a3c0-7ae1fdca56d0",
"threeDsServerTransactionId": "59588a8b-955e-4aa8-bae1-338bbfdba8fa",
"acsTransactionId": "6bf18a7a-3a7b-488f-bce1-3da96c73e746",
"deviceData": {
"acceptHeader": "<string>",
"userAgentHeader": "<string>",
"browserLanguage": "<string>",
"browserScreenWidth": 123,
"browserScreenHeight": 123,
"browserJavaEnabled": true,
"browserColorDepth": "<string>",
"timeZone": "<string>",
"browserJavascriptEnabled": true,
"channel": "<string>"
},
"challenge": {
"returnUrl": "https://merchant.com/3ds/return"
}
}
}
'import requests
url = "https://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds"
payload = { "threeDS": {
"type": "full",
"state": "success",
"mode": "frictionless",
"cryptogram": "Vt5xwasruB0Q6qRoG9mpzdRPqQs=",
"eci": "05",
"version": "2.2.0",
"directoryServerTransactionId": "607bb317-8d24-45a7-a3c0-7ae1fdca56d0",
"threeDsServerTransactionId": "59588a8b-955e-4aa8-bae1-338bbfdba8fa",
"acsTransactionId": "6bf18a7a-3a7b-488f-bce1-3da96c73e746",
"deviceData": {
"acceptHeader": "<string>",
"userAgentHeader": "<string>",
"browserLanguage": "<string>",
"browserScreenWidth": 123,
"browserScreenHeight": 123,
"browserJavaEnabled": True,
"browserColorDepth": "<string>",
"timeZone": "<string>",
"browserJavascriptEnabled": True,
"channel": "<string>"
},
"challenge": { "returnUrl": "https://merchant.com/3ds/return" }
} }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
threeDS: {
type: 'full',
state: 'success',
mode: 'frictionless',
cryptogram: 'Vt5xwasruB0Q6qRoG9mpzdRPqQs=',
eci: '05',
version: '2.2.0',
directoryServerTransactionId: '607bb317-8d24-45a7-a3c0-7ae1fdca56d0',
threeDsServerTransactionId: '59588a8b-955e-4aa8-bae1-338bbfdba8fa',
acsTransactionId: '6bf18a7a-3a7b-488f-bce1-3da96c73e746',
deviceData: {
acceptHeader: '<string>',
userAgentHeader: '<string>',
browserLanguage: '<string>',
browserScreenWidth: 123,
browserScreenHeight: 123,
browserJavaEnabled: true,
browserColorDepth: '<string>',
timeZone: '<string>',
browserJavascriptEnabled: true,
channel: '<string>'
},
challenge: {returnUrl: 'https://merchant.com/3ds/return'}
}
})
};
fetch('https://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds', 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://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds",
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([
'threeDS' => [
'type' => 'full',
'state' => 'success',
'mode' => 'frictionless',
'cryptogram' => 'Vt5xwasruB0Q6qRoG9mpzdRPqQs=',
'eci' => '05',
'version' => '2.2.0',
'directoryServerTransactionId' => '607bb317-8d24-45a7-a3c0-7ae1fdca56d0',
'threeDsServerTransactionId' => '59588a8b-955e-4aa8-bae1-338bbfdba8fa',
'acsTransactionId' => '6bf18a7a-3a7b-488f-bce1-3da96c73e746',
'deviceData' => [
'acceptHeader' => '<string>',
'userAgentHeader' => '<string>',
'browserLanguage' => '<string>',
'browserScreenWidth' => 123,
'browserScreenHeight' => 123,
'browserJavaEnabled' => true,
'browserColorDepth' => '<string>',
'timeZone' => '<string>',
'browserJavascriptEnabled' => true,
'channel' => '<string>'
],
'challenge' => [
'returnUrl' => 'https://merchant.com/3ds/return'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$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://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds"
payload := strings.NewReader("{\n \"threeDS\": {\n \"type\": \"full\",\n \"state\": \"success\",\n \"mode\": \"frictionless\",\n \"cryptogram\": \"Vt5xwasruB0Q6qRoG9mpzdRPqQs=\",\n \"eci\": \"05\",\n \"version\": \"2.2.0\",\n \"directoryServerTransactionId\": \"607bb317-8d24-45a7-a3c0-7ae1fdca56d0\",\n \"threeDsServerTransactionId\": \"59588a8b-955e-4aa8-bae1-338bbfdba8fa\",\n \"acsTransactionId\": \"6bf18a7a-3a7b-488f-bce1-3da96c73e746\",\n \"deviceData\": {\n \"acceptHeader\": \"<string>\",\n \"userAgentHeader\": \"<string>\",\n \"browserLanguage\": \"<string>\",\n \"browserScreenWidth\": 123,\n \"browserScreenHeight\": 123,\n \"browserJavaEnabled\": true,\n \"browserColorDepth\": \"<string>\",\n \"timeZone\": \"<string>\",\n \"browserJavascriptEnabled\": true,\n \"channel\": \"<string>\"\n },\n \"challenge\": {\n \"returnUrl\": \"https://merchant.com/3ds/return\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"threeDS\": {\n \"type\": \"full\",\n \"state\": \"success\",\n \"mode\": \"frictionless\",\n \"cryptogram\": \"Vt5xwasruB0Q6qRoG9mpzdRPqQs=\",\n \"eci\": \"05\",\n \"version\": \"2.2.0\",\n \"directoryServerTransactionId\": \"607bb317-8d24-45a7-a3c0-7ae1fdca56d0\",\n \"threeDsServerTransactionId\": \"59588a8b-955e-4aa8-bae1-338bbfdba8fa\",\n \"acsTransactionId\": \"6bf18a7a-3a7b-488f-bce1-3da96c73e746\",\n \"deviceData\": {\n \"acceptHeader\": \"<string>\",\n \"userAgentHeader\": \"<string>\",\n \"browserLanguage\": \"<string>\",\n \"browserScreenWidth\": 123,\n \"browserScreenHeight\": 123,\n \"browserJavaEnabled\": true,\n \"browserColorDepth\": \"<string>\",\n \"timeZone\": \"<string>\",\n \"browserJavascriptEnabled\": true,\n \"channel\": \"<string>\"\n },\n \"challenge\": {\n \"returnUrl\": \"https://merchant.com/3ds/return\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"threeDS\": {\n \"type\": \"full\",\n \"state\": \"success\",\n \"mode\": \"frictionless\",\n \"cryptogram\": \"Vt5xwasruB0Q6qRoG9mpzdRPqQs=\",\n \"eci\": \"05\",\n \"version\": \"2.2.0\",\n \"directoryServerTransactionId\": \"607bb317-8d24-45a7-a3c0-7ae1fdca56d0\",\n \"threeDsServerTransactionId\": \"59588a8b-955e-4aa8-bae1-338bbfdba8fa\",\n \"acsTransactionId\": \"6bf18a7a-3a7b-488f-bce1-3da96c73e746\",\n \"deviceData\": {\n \"acceptHeader\": \"<string>\",\n \"userAgentHeader\": \"<string>\",\n \"browserLanguage\": \"<string>\",\n \"browserScreenWidth\": 123,\n \"browserScreenHeight\": 123,\n \"browserJavaEnabled\": true,\n \"browserColorDepth\": \"<string>\",\n \"timeZone\": \"<string>\",\n \"browserJavascriptEnabled\": true,\n \"channel\": \"<string>\"\n },\n \"challenge\": {\n \"returnUrl\": \"https://merchant.com/3ds/return\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "2vorkDcXyvzifL63YX09S9VqcnI",
"status": "pending",
"paymentDetails": {
"firstSix": "123456",
"lastFour": "7890",
"expirationMonth": "08",
"expirationYear": "2024",
"holderName": "John Doe",
"installments": 3
},
"reason": "Insufficient funds"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}Resume charge after managed 3DS authentication
Called by the 3DS micro-frontend (or your own integration) after the buyer completes the managed 3DS authentication. Processes the charge using the provided 3DS result and fires postback/webhook events.
The charge must be in authentication_required status.
Authentication: Uses the merchant’s public/publishable key (pk_...).
curl --request POST \
--url https://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"threeDS": {
"type": "full",
"state": "success",
"mode": "frictionless",
"cryptogram": "Vt5xwasruB0Q6qRoG9mpzdRPqQs=",
"eci": "05",
"version": "2.2.0",
"directoryServerTransactionId": "607bb317-8d24-45a7-a3c0-7ae1fdca56d0",
"threeDsServerTransactionId": "59588a8b-955e-4aa8-bae1-338bbfdba8fa",
"acsTransactionId": "6bf18a7a-3a7b-488f-bce1-3da96c73e746",
"deviceData": {
"acceptHeader": "<string>",
"userAgentHeader": "<string>",
"browserLanguage": "<string>",
"browserScreenWidth": 123,
"browserScreenHeight": 123,
"browserJavaEnabled": true,
"browserColorDepth": "<string>",
"timeZone": "<string>",
"browserJavascriptEnabled": true,
"channel": "<string>"
},
"challenge": {
"returnUrl": "https://merchant.com/3ds/return"
}
}
}
'import requests
url = "https://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds"
payload = { "threeDS": {
"type": "full",
"state": "success",
"mode": "frictionless",
"cryptogram": "Vt5xwasruB0Q6qRoG9mpzdRPqQs=",
"eci": "05",
"version": "2.2.0",
"directoryServerTransactionId": "607bb317-8d24-45a7-a3c0-7ae1fdca56d0",
"threeDsServerTransactionId": "59588a8b-955e-4aa8-bae1-338bbfdba8fa",
"acsTransactionId": "6bf18a7a-3a7b-488f-bce1-3da96c73e746",
"deviceData": {
"acceptHeader": "<string>",
"userAgentHeader": "<string>",
"browserLanguage": "<string>",
"browserScreenWidth": 123,
"browserScreenHeight": 123,
"browserJavaEnabled": True,
"browserColorDepth": "<string>",
"timeZone": "<string>",
"browserJavascriptEnabled": True,
"channel": "<string>"
},
"challenge": { "returnUrl": "https://merchant.com/3ds/return" }
} }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
threeDS: {
type: 'full',
state: 'success',
mode: 'frictionless',
cryptogram: 'Vt5xwasruB0Q6qRoG9mpzdRPqQs=',
eci: '05',
version: '2.2.0',
directoryServerTransactionId: '607bb317-8d24-45a7-a3c0-7ae1fdca56d0',
threeDsServerTransactionId: '59588a8b-955e-4aa8-bae1-338bbfdba8fa',
acsTransactionId: '6bf18a7a-3a7b-488f-bce1-3da96c73e746',
deviceData: {
acceptHeader: '<string>',
userAgentHeader: '<string>',
browserLanguage: '<string>',
browserScreenWidth: 123,
browserScreenHeight: 123,
browserJavaEnabled: true,
browserColorDepth: '<string>',
timeZone: '<string>',
browserJavascriptEnabled: true,
channel: '<string>'
},
challenge: {returnUrl: 'https://merchant.com/3ds/return'}
}
})
};
fetch('https://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds', 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://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds",
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([
'threeDS' => [
'type' => 'full',
'state' => 'success',
'mode' => 'frictionless',
'cryptogram' => 'Vt5xwasruB0Q6qRoG9mpzdRPqQs=',
'eci' => '05',
'version' => '2.2.0',
'directoryServerTransactionId' => '607bb317-8d24-45a7-a3c0-7ae1fdca56d0',
'threeDsServerTransactionId' => '59588a8b-955e-4aa8-bae1-338bbfdba8fa',
'acsTransactionId' => '6bf18a7a-3a7b-488f-bce1-3da96c73e746',
'deviceData' => [
'acceptHeader' => '<string>',
'userAgentHeader' => '<string>',
'browserLanguage' => '<string>',
'browserScreenWidth' => 123,
'browserScreenHeight' => 123,
'browserJavaEnabled' => true,
'browserColorDepth' => '<string>',
'timeZone' => '<string>',
'browserJavascriptEnabled' => true,
'channel' => '<string>'
],
'challenge' => [
'returnUrl' => 'https://merchant.com/3ds/return'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$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://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds"
payload := strings.NewReader("{\n \"threeDS\": {\n \"type\": \"full\",\n \"state\": \"success\",\n \"mode\": \"frictionless\",\n \"cryptogram\": \"Vt5xwasruB0Q6qRoG9mpzdRPqQs=\",\n \"eci\": \"05\",\n \"version\": \"2.2.0\",\n \"directoryServerTransactionId\": \"607bb317-8d24-45a7-a3c0-7ae1fdca56d0\",\n \"threeDsServerTransactionId\": \"59588a8b-955e-4aa8-bae1-338bbfdba8fa\",\n \"acsTransactionId\": \"6bf18a7a-3a7b-488f-bce1-3da96c73e746\",\n \"deviceData\": {\n \"acceptHeader\": \"<string>\",\n \"userAgentHeader\": \"<string>\",\n \"browserLanguage\": \"<string>\",\n \"browserScreenWidth\": 123,\n \"browserScreenHeight\": 123,\n \"browserJavaEnabled\": true,\n \"browserColorDepth\": \"<string>\",\n \"timeZone\": \"<string>\",\n \"browserJavascriptEnabled\": true,\n \"channel\": \"<string>\"\n },\n \"challenge\": {\n \"returnUrl\": \"https://merchant.com/3ds/return\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"threeDS\": {\n \"type\": \"full\",\n \"state\": \"success\",\n \"mode\": \"frictionless\",\n \"cryptogram\": \"Vt5xwasruB0Q6qRoG9mpzdRPqQs=\",\n \"eci\": \"05\",\n \"version\": \"2.2.0\",\n \"directoryServerTransactionId\": \"607bb317-8d24-45a7-a3c0-7ae1fdca56d0\",\n \"threeDsServerTransactionId\": \"59588a8b-955e-4aa8-bae1-338bbfdba8fa\",\n \"acsTransactionId\": \"6bf18a7a-3a7b-488f-bce1-3da96c73e746\",\n \"deviceData\": {\n \"acceptHeader\": \"<string>\",\n \"userAgentHeader\": \"<string>\",\n \"browserLanguage\": \"<string>\",\n \"browserScreenWidth\": 123,\n \"browserScreenHeight\": 123,\n \"browserJavaEnabled\": true,\n \"browserColorDepth\": \"<string>\",\n \"timeZone\": \"<string>\",\n \"browserJavascriptEnabled\": true,\n \"channel\": \"<string>\"\n },\n \"challenge\": {\n \"returnUrl\": \"https://merchant.com/3ds/return\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-global.fastpaybrasil.com/v1/charges/{id}/resume-3ds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"threeDS\": {\n \"type\": \"full\",\n \"state\": \"success\",\n \"mode\": \"frictionless\",\n \"cryptogram\": \"Vt5xwasruB0Q6qRoG9mpzdRPqQs=\",\n \"eci\": \"05\",\n \"version\": \"2.2.0\",\n \"directoryServerTransactionId\": \"607bb317-8d24-45a7-a3c0-7ae1fdca56d0\",\n \"threeDsServerTransactionId\": \"59588a8b-955e-4aa8-bae1-338bbfdba8fa\",\n \"acsTransactionId\": \"6bf18a7a-3a7b-488f-bce1-3da96c73e746\",\n \"deviceData\": {\n \"acceptHeader\": \"<string>\",\n \"userAgentHeader\": \"<string>\",\n \"browserLanguage\": \"<string>\",\n \"browserScreenWidth\": 123,\n \"browserScreenHeight\": 123,\n \"browserJavaEnabled\": true,\n \"browserColorDepth\": \"<string>\",\n \"timeZone\": \"<string>\",\n \"browserJavascriptEnabled\": true,\n \"channel\": \"<string>\"\n },\n \"challenge\": {\n \"returnUrl\": \"https://merchant.com/3ds/return\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "2vorkDcXyvzifL63YX09S9VqcnI",
"status": "pending",
"paymentDetails": {
"firstSix": "123456",
"lastFour": "7890",
"expirationMonth": "08",
"expirationYear": "2024",
"holderName": "John Doe",
"installments": 3
},
"reason": "Insufficient funds"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}Authorizations
HTTP Basic authentication. Use your secret key as the username and an empty string as password. The API key should be base64 encoded in the format 'username:' when sending the Authorization header.
Path Parameters
Charge ID
"2vorkDcXyvzifL63YX09S9VqcnI"
Body
3D Secure authentication data for BYO-3DS (Bring Your Own) flow. Obtain this object from the FastPay Security SDK or from POST /v1/three-ds/challenge-result after the challenge completes.
Show child attributes
Show child attributes
Response
Charge resumed and processed
The unique identifier of the created charge
"2vorkDcXyvzifL63YX09S9VqcnI"
The status of the charge
paid, pending, refused, failed "pending"
Additional payment details specific to the payment method
- Credit Card
- Rapipago
- Khipu
- Pix
- QRCode
Show child attributes
Show child attributes
The reason for charge status (especially for refused charges)
"Insufficient funds"