curl --request POST \
--url https://laso.finance/disconnect-card-issuer \
--header 'Authorization: <api-key>'import requests
url = "https://laso.finance/disconnect-card-issuer"
headers = {"Authorization": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: '<api-key>'}};
fetch('https://laso.finance/disconnect-card-issuer', 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://laso.finance/disconnect-card-issuer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://laso.finance/disconnect-card-issuer"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://laso.finance/disconnect-card-issuer")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://laso.finance/disconnect-card-issuer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "not_started",
"note": "The card issuer is unlinked from this account. The card balance stays with the card issuer. To use reloadable or saved cards again, link it with POST /start-card-issuer-link and the code the account holder receives."
}{
"error": "Missing or invalid Authorization header"
}{
"error": "Account is frozen",
"frozen_message": "Your account is frozen pending a compliance review. Contact support@laso.finance."
}{
"error": "A request with this Idempotency-Key is still being processed",
"code": "idempotency_key_in_progress"
}{
"error": "Idempotency-Key reused with a different request",
"code": "idempotency_key_reused"
}Unlink the card issuer
Removes the link between this Laso account and the card issuer, the same as the disconnect button in the dashboard. The card and its balance stay with the card issuer untouched; only Laso’s link is removed.
What stops working. Every reloadable card route and saved card purchases (POST /buy-with-saved-card) need the link, so they fail until the account holder links again with POST /start-card-issuer-link and a fresh code that only they can receive. Confirm with the account holder before calling this.
Safe to repeat: an account with no link answers the same way. Afterwards GET /get-card-issuer-status reads not_started.
This route is free. Requires a Bearer token from /auth or /get-card.
curl --request POST \
--url https://laso.finance/disconnect-card-issuer \
--header 'Authorization: <api-key>'import requests
url = "https://laso.finance/disconnect-card-issuer"
headers = {"Authorization": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: '<api-key>'}};
fetch('https://laso.finance/disconnect-card-issuer', 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://laso.finance/disconnect-card-issuer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://laso.finance/disconnect-card-issuer"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://laso.finance/disconnect-card-issuer")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://laso.finance/disconnect-card-issuer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "not_started",
"note": "The card issuer is unlinked from this account. The card balance stays with the card issuer. To use reloadable or saved cards again, link it with POST /start-card-issuer-link and the code the account holder receives."
}{
"error": "Missing or invalid Authorization header"
}{
"error": "Account is frozen",
"frozen_message": "Your account is frozen pending a compliance review. Contact support@laso.finance."
}{
"error": "A request with this Idempotency-Key is still being processed",
"code": "idempotency_key_in_progress"
}{
"error": "Idempotency-Key reused with a different request",
"code": "idempotency_key_reused"
}Authorizations
Firebase ID token from /auth or any paid route, sent as a Bearer token: Authorization: Bearer <id_token> (the Bearer prefix is required).
Headers
Optional client-generated unique key (a UUID works) that makes this write safe to retry. A retry with the same key within 24 hours returns the recorded response of the original request, marked with an Idempotency-Replayed: true header, instead of performing the write again. Reusing a key with a different body or route is rejected with 422 (code: idempotency_key_reused); a retry that arrives while the original is still running gets 409 (code: idempotency_key_in_progress), so wait a moment and retry with the same key. Keys are scoped to the authenticated account.
255Was this page helpful?