curl --request POST \
--url https://imbawallet.com/api/partner/card_unfreeze \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"card_id": "00112233445566778899aabb",
"ext_id": "unfreeze-20261014-001",
"reason": "user_request"
}
'import requests
url = "https://imbawallet.com/api/partner/card_unfreeze"
payload = {
"card_id": "00112233445566778899aabb",
"ext_id": "unfreeze-20261014-001",
"reason": "user_request"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
card_id: '00112233445566778899aabb',
ext_id: 'unfreeze-20261014-001',
reason: 'user_request'
})
};
fetch('https://imbawallet.com/api/partner/card_unfreeze', 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://imbawallet.com/api/partner/card_unfreeze",
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([
'card_id' => '00112233445566778899aabb',
'ext_id' => 'unfreeze-20261014-001',
'reason' => 'user_request'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://imbawallet.com/api/partner/card_unfreeze"
payload := strings.NewReader("{\n \"card_id\": \"00112233445566778899aabb\",\n \"ext_id\": \"unfreeze-20261014-001\",\n \"reason\": \"user_request\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://imbawallet.com/api/partner/card_unfreeze")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"card_id\": \"00112233445566778899aabb\",\n \"ext_id\": \"unfreeze-20261014-001\",\n \"reason\": \"user_request\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://imbawallet.com/api/partner/card_unfreeze")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"card_id\": \"00112233445566778899aabb\",\n \"ext_id\": \"unfreeze-20261014-001\",\n \"reason\": \"user_request\"\n}"
response = http.request(request)
puts response.read_body{
"ext_id": "unfreeze-20261014-001",
"card_id": "00112233445566778899aabb",
"status": "processing",
"reason": "user_request"
}{
"error": "insufficient_balance",
"message": "<string>"
}{
"error": "insufficient_balance",
"message": "<string>"
}{
"error": "insufficient_balance",
"message": "<string>"
}Unfreeze a self-frozen card
Scope cards:freeze. Same body as freeze. card_id hex is
case-insensitive. Accepted only when the partner or cardholder froze
the card (202, then card_unfreeze.status_changed). Replaying the
same ext_id and body returns HTTP 202; read status in the body
(processing, then active or failed). The document
is done when the card is active, including when the issuer already
reported it active. A reported success does not unfreeze the card
while it is still frozen. If IMBA or the issuer freezes the card
again before the issuer answers, the card stays frozen and the
document fails with unfreeze_not_confirmed (not a second 409).
ext_id is 1..128 characters (ext_id_required, ext_id_too_long).
reason is optional, defaults to user_request, and is at most 200
characters (reason_too_long). Card numbers in reason are removed
and are not returned. A body that is not JSON, or is larger than
8 KiB, is 400 invalid_json. Another tenant’s card and an unknown
card return the same 404 not_found. IMBA freezes already in place
return 409 card_frozen_by_platform. Bank or issuer freezes already
in place return 409 card_frozen_by_issuer.
curl --request POST \
--url https://imbawallet.com/api/partner/card_unfreeze \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"card_id": "00112233445566778899aabb",
"ext_id": "unfreeze-20261014-001",
"reason": "user_request"
}
'import requests
url = "https://imbawallet.com/api/partner/card_unfreeze"
payload = {
"card_id": "00112233445566778899aabb",
"ext_id": "unfreeze-20261014-001",
"reason": "user_request"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
card_id: '00112233445566778899aabb',
ext_id: 'unfreeze-20261014-001',
reason: 'user_request'
})
};
fetch('https://imbawallet.com/api/partner/card_unfreeze', 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://imbawallet.com/api/partner/card_unfreeze",
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([
'card_id' => '00112233445566778899aabb',
'ext_id' => 'unfreeze-20261014-001',
'reason' => 'user_request'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://imbawallet.com/api/partner/card_unfreeze"
payload := strings.NewReader("{\n \"card_id\": \"00112233445566778899aabb\",\n \"ext_id\": \"unfreeze-20261014-001\",\n \"reason\": \"user_request\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://imbawallet.com/api/partner/card_unfreeze")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"card_id\": \"00112233445566778899aabb\",\n \"ext_id\": \"unfreeze-20261014-001\",\n \"reason\": \"user_request\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://imbawallet.com/api/partner/card_unfreeze")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"card_id\": \"00112233445566778899aabb\",\n \"ext_id\": \"unfreeze-20261014-001\",\n \"reason\": \"user_request\"\n}"
response = http.request(request)
puts response.read_body{
"ext_id": "unfreeze-20261014-001",
"card_id": "00112233445566778899aabb",
"status": "processing",
"reason": "user_request"
}{
"error": "insufficient_balance",
"message": "<string>"
}{
"error": "insufficient_balance",
"message": "<string>"
}{
"error": "insufficient_balance",
"message": "<string>"
}Authorizations
Access token from POST /auth/v1/partner/token