Eindpunten op deze pagina
GET /v1/catalog/coins: Geaccepteerde cryptovaluta en netwerken (met het bijbehorende vaste stortingsadres)POST /v1/topups: Start een crypto-opwaardering van het saldo (vast adres, exact bedrag)POST /v1/topups/{topUpId}/txid: Meld de betaling als verzonden (TXID optioneel)GET /v1/topups/{topUpId}: Een opwaardering ophalen (poll voor de actuele status)GET /v1/topups: Crypto-opwaarderingen weergeven
Basis-URL https://localserpproxy.com/api/v1. Authenticatie, fouten en limieten: zie het API-overzicht.
Geaccepteerde cryptovaluta en netwerken (met het vaste stortingsadres)
GET/v1/catalog/coins
Openbaar: geen API-sleutel nodig.
Response 200 OK
{
"data": [
{
"code": "BTC",
"name": "Bitcoin",
"networks": [
{
"id": "bitcoin",
"name": "Bitcoin",
"confirmationsRequired": 2,
"estimatedMinutes": null,
"memoRequired": false,
"address": "DEPOSIT_ADDRESS"
}
]
}
]
}Codevoorbeelden
curl -s "https://localserpproxy.com/api/v1/catalog/coins"import os
import requests
API = "https://localserpproxy.com/api/v1"
r = requests.get(f"{API}/catalog/coins", timeout=30)
r.raise_for_status()
print(r.json())// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';
const res = await fetch(`${API}/catalog/coins`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());Een crypto-opwaardering van het saldo starten (vast adres, exact bedrag)
POST/v1/topups
amountUsd≥ 25.00 USD en ≤ het maximum (standaard 10,000.00):422opamountUsd, anders.coin+networkmoet een vanGET /v1/catalog/coinszijn (anders409 coin_unavailable).- Geeft het vaste
addressvan het netwerk en het exacteamountCrypto=amountUsd/rate, naar boven afgerond op de precisie van de munt (BTC/LTC/ETH/SOL 8 decimalen, USDT/USDC 6), plus een kleine unieke toeslag op de laatste cijfers, zodat geen twee openstaande opwaarderingen op hetzelfde netwerk om hetzelfde bedrag vragen.ratewordt vergrendeld totexpiresAt(30 minuten);txidDeadline=expiresAt+ 72 h. - Optioneel
purchase(dezelfde body alsPOST /v1/orders): wordt nu gevalideerd en geprijsd (422met veldnamen voorafgegaan doorpurchase.,409 plan_unavailable…).amountUsdmoet het totaal vanpurchase− het huidige saldo dekken (422 too_smallopamountUsd). Zodra de opwaardering is bijgeschreven, wordt de bestelling in dezelfde transactie vanaf het saldo geplaatst;purchase.statuswordtcompleted(metorderId) offailed(failureReason; het geld blijft op het saldo).
Authenticatie: API-sleutel in de Authorization: Bearer API_KEY-header.
Parameters
| Naam | In | Type | Verplicht | Beschrijving |
|---|---|---|---|---|
Idempotency-Key | header | string | Nee | Unieke sleutel (bijv. een UUID) om een POST veilig opnieuw te proberen. 24 h bewaard. — max. 128 tekens |
Requestbody
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
amountUsd | string (USD, 2 decimals) | Ja | Toe te voegen bedrag in USD: ≥ 25.00, standaard ≤ 10,000.00. |
coin | string | Ja | — |
network | string | Ja | — |
purchase | object | Nee | Plan om iets met het saldo te kopen zodra de opwaardering is bijgeschreven (dezelfde body als POST /v1/orders). |
{
"amountUsd": "50.00",
"coin": "USDT",
"network": "tron"
}{
"amountUsd": "25.00",
"coin": "BTC",
"network": "bitcoin",
"purchase": {
"planId": "res-10",
"quantity": 1
}
}Response 201 Created
{
"id": "top_7d2kq9x1",
"status": "verifying",
"final": false,
"amountUsd": "25.00",
"coin": "USDT",
"network": "tron",
"address": "DEPOSIT_ADDRESS",
"amountCrypto": "25.000137",
"rate": "1.00",
"paymentUri": "PAYMENT_URI",
"expiresAt": "2026-10-05T14:33:11Z",
"txidDeadline": "2026-10-08T14:33:11Z",
"confirmationsRequired": 20,
"confirmations": 7,
"txid": "9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
"txidSubmittedAt": "2026-10-05T14:09:42Z",
"amountReceivedCrypto": "25.000137",
"explorerUrl": "https://tronscan.org/#/transaction/9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
"creditedUsd": null,
"creditedAt": null,
"rejection": null,
"purchase": {
"planId": "res-10",
"planName": "Local team",
"quantity": 1,
"options": {},
"promoCode": null,
"total": "7.50",
"status": "pending",
"orderId": null,
"failureReason": null
},
"createdAt": "2026-10-05T14:03:11Z"
}Codevoorbeelden
curl -s -X POST "https://localserpproxy.com/api/v1/topups" \
-H "Authorization: Bearer $API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"amountUsd":"50.00","coin":"USDT","network":"tron"}'import os, uuid
import requests
API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}", "Idempotency-Key": str(uuid.uuid4())}
r = requests.post(f"{API}/topups", headers=HEADERS, json={"amountUsd": "50.00", "coin": "USDT", "network": "tron"}, timeout=30)
r.raise_for_status()
print(r.json())// Node.js 18+ (built-in fetch), ES module
import { randomUUID } from 'node:crypto';
const API = 'https://localserpproxy.com/api/v1';
const res = await fetch(`${API}/topups`, {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Idempotency-Key': randomUUID(), 'Content-Type': 'application/json' },
body: JSON.stringify({ amountUsd: '50.00', coin: 'USDT', network: 'tron' }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());Meld dat de betaling is verzonden (TXID optioneel)
POST/v1/topups/{topUpId}/txid
Meld dat de betaling is verzonden zodra deze je wallet of exchange heeft verlaten: dit is de API-versie van de knop ‘Ik heb de betaling verzonden’. De transactie-ID (TXID) is optioneel: stuur een lege body ({}) of voeg txid toe als je die hebt. Je betaling wordt aan deze opwaardering gekoppeld op basis van het exacte bedrag (amountCrypto) op het netwerk en adres van de opwaardering. Stuur dus precies dat bedrag.
Wordt geaccepteerd zolang de opwaardering de status awaiting_payment, expired of rejected heeft en vóór txidDeadline (expiresAt + 72 h): een late melding leidt nooit tot verlies van een betaling. Een txid wordt, indien opgegeven, gecontroleerd op het formaat van het netwerk (422 op txid) en mag niet aan een andere opwaardering zijn gekoppeld (409 txid_already_used). Bij een gesloten opwaardering wordt 409 topup_closed teruggegeven. De opwaardering krijgt vervolgens de status verifying terwijl de betaling op de blockchain wordt gecontroleerd, en eindigt met credited zodra het netwerk de transactie heeft bevestigd, of met rejected (met rejection).
Authenticatie: API-sleutel in de Authorization: Bearer API_KEY-header.
Parameters
| Naam | In | Type | Verplicht | Beschrijving |
|---|---|---|---|---|
topUpId | path | string | Ja | — |
Requestbody
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
txid | string | Nee | Optioneel. Transactiehash: 64 hex (bitcoin, litecoin, tron), 0x + 64 hex (ethereum), base58-handtekening (solana). Leeg of niet opgegeven: de betaling wordt gekoppeld op basis van het exacte bedrag. — max. 128 tekens |
{}{
"txid": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
}Response 200 OK
{
"id": "top_7d2kq9x1",
"status": "verifying",
"final": false,
"amountUsd": "25.00",
"coin": "USDT",
"network": "tron",
"address": "DEPOSIT_ADDRESS",
"amountCrypto": "25.000137",
"rate": "1.00",
"paymentUri": "PAYMENT_URI",
"expiresAt": "2026-10-05T14:33:11Z",
"txidDeadline": "2026-10-08T14:33:11Z",
"confirmationsRequired": 20,
"confirmations": 7,
"txid": "9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
"txidSubmittedAt": "2026-10-05T14:09:42Z",
"amountReceivedCrypto": "25.000137",
"explorerUrl": "https://tronscan.org/#/transaction/9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
"creditedUsd": null,
"creditedAt": null,
"rejection": null,
"purchase": {
"planId": "res-10",
"planName": "Local team",
"quantity": 1,
"options": {},
"promoCode": null,
"total": "7.50",
"status": "pending",
"orderId": null,
"failureReason": null
},
"createdAt": "2026-10-05T14:03:11Z"
}Codevoorbeelden
curl -s -X POST "https://localserpproxy.com/api/v1/topups/top_7d2kq9x1/txid" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import os
import requests
API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}
r = requests.post(f"{API}/topups/top_7d2kq9x1/txid", headers=HEADERS, json={}, timeout=30)
r.raise_for_status()
print(r.json())// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';
const res = await fetch(`${API}/topups/top_7d2kq9x1/txid`, {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({}),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());Saldo opwaarderen (live status opvragen)
GET/v1/topups/{topUpId}
Vraag deze route op om een opwaardering te volgen: elke 10 s zolang status = verifying, elke 30 s zolang de betaling wordt afgewacht, en stop zodra final = true. Een opwaardering krijgt de status expired als niet vóór expiresAt is gemeld dat de betaling is verzonden; je kunt dit nog melden tot txidDeadline.
Authenticatie: API-sleutel in de Authorization: Bearer API_KEY-header.
Parameters
| Naam | In | Type | Verplicht | Beschrijving |
|---|---|---|---|---|
topUpId | path | string | Ja | — |
Response 200 OK
{
"id": "top_7d2kq9x1",
"status": "verifying",
"final": false,
"amountUsd": "25.00",
"coin": "USDT",
"network": "tron",
"address": "DEPOSIT_ADDRESS",
"amountCrypto": "25.000137",
"rate": "1.00",
"paymentUri": "PAYMENT_URI",
"expiresAt": "2026-10-05T14:33:11Z",
"txidDeadline": "2026-10-08T14:33:11Z",
"confirmationsRequired": 20,
"confirmations": 7,
"txid": "9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
"txidSubmittedAt": "2026-10-05T14:09:42Z",
"amountReceivedCrypto": "25.000137",
"explorerUrl": "https://tronscan.org/#/transaction/9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
"creditedUsd": null,
"creditedAt": null,
"rejection": null,
"purchase": {
"planId": "res-10",
"planName": "Local team",
"quantity": 1,
"options": {},
"promoCode": null,
"total": "7.50",
"status": "pending",
"orderId": null,
"failureReason": null
},
"createdAt": "2026-10-05T14:03:11Z"
}Codevoorbeelden
curl -s "https://localserpproxy.com/api/v1/topups/top_7d2kq9x1" \
-H "Authorization: Bearer $API_KEY"import os
import requests
API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}
r = requests.get(f"{API}/topups/top_7d2kq9x1", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';
const res = await fetch(`${API}/topups/top_7d2kq9x1`, {
headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());Crypto-opwaarderingen weergeven
GET/v1/topups
Authenticatie: API-sleutel in de Authorization: Bearer API_KEY-header.
Parameters
| Naam | In | Type | Verplicht | Beschrijving |
|---|---|---|---|---|
page | query | integer | Nee | ≥ 1, standaard 1 |
perPage | query | integer | Nee | 1–100, standaard 20 |
status | query | awaiting_payment · verifying · credited · rejected · expired | Nee | final = bijgeschreven, of verlopen / afgewezen na txidDeadline. |
Response 200 OK
{
"data": [
{
"id": "top_7d2kq9x1",
"status": "verifying",
"final": false,
"amountUsd": "25.00",
"coin": "USDT",
"network": "tron",
"address": "DEPOSIT_ADDRESS",
"amountCrypto": "25.000137",
"rate": "1.00",
"paymentUri": "PAYMENT_URI",
"expiresAt": "2026-10-05T14:33:11Z",
"txidDeadline": "2026-10-08T14:33:11Z",
"confirmationsRequired": 20,
"confirmations": 7,
"txid": "9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
"txidSubmittedAt": "2026-10-05T14:09:42Z",
"amountReceivedCrypto": "25.000137",
"explorerUrl": "https://tronscan.org/#/transaction/9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
"creditedUsd": null,
"creditedAt": null,
"rejection": null,
"purchase": {
"planId": "res-10",
"planName": "Local team",
"quantity": 1,
"options": {},
"promoCode": null,
"total": "7.50",
"status": "pending",
"orderId": null,
"failureReason": null
},
"createdAt": "2026-10-05T14:03:11Z"
}
],
"pagination": {
"page": 1,
"perPage": 20,
"total": 1,
"totalPages": 1
}
}Codevoorbeelden
curl -s "https://localserpproxy.com/api/v1/topups" \
-H "Authorization: Bearer $API_KEY"import os
import requests
API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}
r = requests.get(f"{API}/topups", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';
const res = await fetch(`${API}/topups`, {
headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());