Skip to content
Translated page. The English version is the source of truth.

POST /apiv2/withdraw ​

ถอน TRX จากยอดคงเหลือใน Netts ของคุณไปยังที่อยู่ TRON คำขอจะส่งคืน หมายเลขคำสั่งซื้อทันที โดยการจ่ายเงิน on-chain จริงจะดำเนินการแบบอะซิงโครนัสโดยระบบเบื้องหลัง (ภายในประมาณ 5 นาที) ติดตามผลลัพธ์ได้โดย การโพลไปยังสถานะ endpoint หรือกำหนดค่า webhook

ℹ️ วิธีการทำงาน การส่งคำขอถอนเงินจะ กันยอดเงินจากยอดคงเหลือของคุณในทันที (ยอดคงเหลือจะถูกหักทันทีที่คำสั่งซื้อได้รับการยอมรับ) จากนั้น backend daemon จะส่ง TRX และทำเครื่องหมายคำสั่งซื้อเป็น completed หรือ failed จะ ไม่มีผลลัพธ์ on-chain แบบซิงโครนัส ในการตอบกลับเริ่มต้น — คุณจะได้รับการตอบรับสถานะ pending ก่อนเสมอ

ก่อนที่คำสั่งซื้อจะได้รับการยอมรับ ระบบจะ ตรวจสอบที่อยู่ปลายทาง หากไม่สามารถถอนเงินไปยังที่อยู่นั้นได้ หรือไม่สามารถตรวจสอบได้ในขณะนั้น คำขอจะถูกปฏิเสธ: จะไม่มีการสร้างคำสั่งซื้อและไม่มีการกันยอดเงินใดๆ จากยอดคงเหลือของคุณ

URL ของ Endpoint ​

POST https://netts.io/apiv2/withdraw

Headers ของคำขอ ​

HeaderRequiredDescription
Content-Typeใช่application/json
X-API-KEYใช่API key ของคุณจากแดชบอร์ด Netts
X-Idempotency-Keyไม่คีย์ที่ฝั่งไคลเอนต์สร้างขึ้นเอง (base64) เพื่อลองส่งใหม่ได้อย่างปลอดภัยโดยไม่เกิดการถอนเงินซ้ำ หากละเว้น เซิร์ฟเวอร์จะสร้างขึ้นมาให้โดยอัตโนมัติ ค่านี้จะ กลายเป็น orderId ของคุณ

เนื้อหาของคำขอ ​

json
{
    "amount": 15,
    "address": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

พารามิเตอร์ ​

ParameterTypeRequiredDescription
amountnumberใช่จำนวนเงิน รวม (gross) ในหน่วย TRX (ขั้นต่ำ 3) ค่าธรรมเนียมจะถูกหักออกจากจำนวนนี้ — ผู้รับจะได้รับ amount − fee (net)
addressstringใช่ที่อยู่ TRON ปลายทาง (T…, ความยาว 34 ตัวอักษร, base58) ได้รับการตรวจสอบก่อนที่คำสั่งซื้อจะได้รับการยอมรับ
sub_and_robot_outbooleanไม่โหมดการจ่ายเงินแบบ Robot/sub: คิดค่าธรรมเนียม 2 TRX แทนที่จะเป็น 1 TRX ค่าเริ่มต้นคือ false

ค่าธรรมเนียม มีการหักค่าธรรมเนียมคงที่จากยอดเงินรวม amount: ปกติคือ 1 TRX หรือ 2 TRX เมื่อ sub_and_robot_out = true คำสั่งซื้อจะถูกปฏิเสธหาก amount − fee ≤ 0

ตัวอย่างคำขอ ​

ตัวอย่างด้านล่างนี้ยังรวมถึงการ สร้างและส่ง X-Idempotency-Key ด้วย เพื่อป้องกันไม่ให้การส่งซ้ำโดยไม่ได้ตั้งใจสร้างการถอนเงินรายการที่สอง ดูข้อกำหนดทั้งหมดได้ที่ ความสามารถในการทำงานซ้ำ (Idempotency)

cURL ​

bash
API_KEY="your_api_key"
ADDR="TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
AMOUNT=15
NONCE=$(( $(date +%s) / 2 ))   # stable for retries within a 2s window; or your own order UUID

# X-Idempotency-Key = base64url( HMAC-SHA256( API_KEY, "addr:amount:nonce" ) )
IDEMP=$(printf '%s' "${ADDR}:${AMOUNT}:${NONCE}" \
  | openssl dgst -sha256 -hmac "$API_KEY" -binary | basenc --base64url | tr -d '=')

curl -X POST https://netts.io/apiv2/withdraw \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $API_KEY" \
  -H "X-Idempotency-Key: $IDEMP" \
  -d "{\"amount\": $AMOUNT, \"address\": \"$ADDR\"}"

Python ​

python
import time, hmac, hashlib, base64, requests

API_KEY = "your_api_key"
url = "https://netts.io/apiv2/withdraw"
payload = {"amount": 15, "address": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}

# X-Idempotency-Key = base64url( HMAC-SHA256( API_KEY, "addr:amount:nonce" ) ), padding stripped.
# Generate ONCE per order and resend the same value on every retry.
nonce = str(int(time.time() // 2))   # 2s bucket; or your own order UUID
message = f"{payload['address']}:{payload['amount']}:{nonce}"
idem_key = base64.urlsafe_b64encode(
    hmac.new(API_KEY.encode(), message.encode(), hashlib.sha256).digest()
).decode().rstrip("=")

headers = {
    "Content-Type": "application/json",
    "X-API-KEY": API_KEY,
    "X-Idempotency-Key": idem_key,
}

resp = requests.post(url, headers=headers, json=payload)
detail = resp.json().get("detail", {})

if resp.status_code == 202 and detail.get("status") == "pending":
    d = detail["data"]
    print(f"Order ID: {d['orderId']}")            # use it for the status endpoint / webhook
    print(f"Net to recipient: {d['net']} TRX (fee {d['fee']})")
else:
    print(f"Code {detail.get('code')}: {detail.get('msg', detail)}")

การตอบกลับ ​

ยอมรับแล้ว — การถอนเข้าสู่คิว (202 Accepted) ​

ยอดเงินถูกกันไว้จากยอดคงเหลือของคุณแล้ว และกำหนดเวลาการจ่ายเงินเรียบร้อยแล้ว โพลไปยังสถานะ endpoint (หรือรอ webhook) จนกระทั่งสถานะเปลี่ยนเป็น completed / failed

json
{
    "detail": {
        "code": 10000,
        "status": "pending",
        "msg": "Withdrawal request accepted, processing within 5 minutes.",
        "data": {
            "orderId": "EXAMPLEorderId0000000000000000000000000000Aa",
            "amount": 15.0,
            "fee": 1.0,
            "net": 14.0,
            "address": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        }
    }
}

ฟิลด์การตอบกลับ ​

FieldTypeDescription
detail.codeinteger10000 ยอมรับแล้ว
detail.statusstringpending
detail.data.orderIdstringหมายเลขคำสั่งซื้อ — สตริงที่ปลอดภัยสำหรับ URL ความยาว 43 ตัวอักษร ใช้สำหรับสถานะ endpoint และใช้ระบุคำสั่งซื้อในเพย์โหลด webhook
detail.data.amountnumberยอดเงินรวมที่ขอถอน (TRX)
detail.data.feenumberค่าธรรมเนียมที่ถูกหัก (1 หรือ 2 TRX)
detail.data.netnumberจำนวนเงินที่ผู้รับจะได้รับ (amount − fee)
detail.data.addressstringที่อยู่ปลายทาง

Endpoint สถานะ ​

GET https://netts.io/apiv2/withdraw/status/{orderId}

ส่วนหัว: X-API-KEY (คำสั่งซื้อต้องเป็นของผู้ใช้ที่ได้รับการยืนยันตัวตน) orderId เป็นสตริงที่ปลอดภัยสำหรับ URL อยู่แล้ว — ส่งค่านั้น ตามเดิม โดยไม่ต้องทำ URL-encoding

สถานะคำสั่งซื้อHTTPcodestatus
สำเร็จแล้ว (ส่ง TRX แล้ว)20010000completed (พร้อม processed_at)
อยู่ในคิว / กำลังส่ง20010001pending
ล้มเหลว2005003failed (พร้อม error_message)
ไม่พบ / ไม่ใช่ของคุณ404-1—
json
{
    "detail": {
        "code": 10000,
        "status": "completed",
        "data": {
            "orderId": "EXAMPLEorderId0000000000000000000000000000Aa",
            "amount": 15.0, "fee": 1.0, "net": 14.0,
            "address": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "processed_at": "2026-01-01 00:00:00+00:00"
        }
    }
}

บัญชีผู้ใช้ย่อย (Sub-user) ​

การถอนเงินของผู้ใช้ย่อยทำงานเหมือนกับผู้ใช้ทั่วไปทุกประการ — เพียงแต่ใช้ API key ของผู้ใช้ย่อยเอง ผู้ใช้ย่อยจะเรียกใช้ endpoint POST /apiv2/withdraw เดียวกันนี้ โดยยืนยันตัวตนด้วยคีย์ของตนเอง การถอนเงินจะถูกหักออกจาก ยอดคงเหลือของผู้ใช้ย่อยรายนั้นเอง และส่งไปยัง address ที่ระบุไว้ในคำขอ ขั้นต่ำเดียวกัน ค่าธรรมเนียมเท่ากัน (1 TRX) การตรวจสอบที่อยู่เหมือนกัน ขั้นตอนเหมือนกัน ไม่มี endpoint แยกต่างหากสำหรับผู้ใช้ย่อย — แต่ละบัญชี ไม่ว่าจะเป็นบัญชีหลักหรือบัญชีผู้ใช้ย่อย จะถอนได้เฉพาะยอดคงเหลือของตนเองด้วยคีย์ของตนเองเท่านั้น

Webhooks ​

แทนที่จะใช้วิธีการโพล คุณสามารถกำหนดค่า webhook เพียงครั้งเดียว และ Netts จะส่งคำขอ POST พร้อมลายเซ็นแจ้งเตือนเมื่อการถอนเงินแต่ละรายการของคุณเข้าสู่สถานะสุดท้าย (completed / failed) ระบบจะจัดเก็บการตั้งค่า webhook แยกตามผู้ใช้ และมีผลกับการถอนเงินของบัญชีนั้นๆ หากไม่ได้กำหนดค่า webhook ไว้ ให้ใช้วิธีโพลไปยังสถานะ endpoint แทน

กำหนดค่า / ดู / ลบ ​

POST   https://netts.io/apiv2/withdraw/webhook      # create or update
GET    https://netts.io/apiv2/withdraw/webhook      # view current config (secret is never returned)
DELETE https://netts.io/apiv2/withdraw/webhook      # unsubscribe

ส่วนหัว: X-API-KEY

json
// POST body
{
    "callback_url": "https://your-server.example/netts/withdraw-hook",
    "secret": "your_shared_secret_min_8_chars",
    "enabled": true
}
ParameterTypeRequiredDescription
callback_urlstringใช่URL แบบ http(s) (≤ 2048 ตัวอักษร) ที่จะรับคำขอ POST
secretstringใช่ข้อมูลลับที่ใช้ร่วมกัน (8…256 ตัวอักษร) ที่ใช้ในการลงนามแต่ละเพย์โหลด
enabledbooleanไม่เปิด/ปิด การส่งข้อมูลโดยไม่ต้องลบการกำหนดค่า ค่าเริ่มต้นคือ true

คำขอ GET จะส่งคืน { callback_url, enabled, secret_set, updated_at } — ข้อมูลลับ (secret) จะ ไม่มีการ ส่งคืนกลับมาอย่างเด็ดขาด

เพย์โหลดการจัดส่ง ​

Netts จะส่งคำขอ POST ไปยัง callback_url ของคุณพร้อมส่วนหัว X-Netts-Signature: base64( HMAC-SHA256( secret, raw_body ) ) และ JSON body ดังนี้:

json
{
    "orderId": "EXAMPLEorderId0000000000000000000000000000Aa",
    "status": "completed",
    "amount": 15.0,
    "fee": 1.0,
    "net": 14.0,
    "address": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "processed_at": "2026-01-01 00:00:00+00:00",
    "error_message": null
}
  • status จะเป็น completed หรือ failed (หากเป็น failed จะมีข้อมูลใน error_message)

การตรวจสอบยืนยันลายเซ็น ​

ลายเซ็นจะถูกคำนวณจาก canonical JSON ของเนื้อหา: มีการ เรียงลำดับคีย์ และไม่มีช่องว่าง (separators=(",", ":")) ให้คำนวณซ้ำด้วยวิธีเดียวกันแล้วนำมาเปรียบเทียบ

python
import hmac, hashlib, base64, json

def verify(raw_body: bytes, signature_header: str, secret: str) -> bool:
    expected = base64.b64encode(
        hmac.new(secret.encode(), raw_body, hashlib.sha256).digest()
    ).decode()
    return hmac.compare_digest(expected, signature_header)

# Flask example: verify against the EXACT bytes received, then parse.
# if verify(request.get_data(), request.headers["X-Netts-Signature"], SECRET): ...

ตรวจสอบยืนยันเทียบกับ ไบต์ดิบที่ได้รับ (raw received bytes) เสมอ หากคุณนำ JSON ที่แปลงแล้วมาทำ serialize ใหม่อีกครั้ง โปรดจำลองรูปแบบ canonical ให้ถูกต้อง: json.dumps(payload, ensure_ascii=False, separators=(",",":"), sort_keys=True)

การรับประกันการจัดส่ง ​

  • ตอบกลับด้วยรหัส HTTP 2xx เพื่อยืนยันการรับ การตอบกลับอื่นๆ (หรือการหมดเวลา) จะถือเป็นความพยายามที่ล้มเหลว
  • พยายามส่งสูงสุด 3 ครั้ง ต่อหนึ่งคำสั่งซื้อ ภายในช่วงเวลา 21 นาที นับจากเวลาที่สร้างคำสั่งซื้อ (ระยะเวลาหน่วงก่อนลองส่งใหม่ ≈ 5 นาที) หลังจากนั้นจะยกเลิกการส่ง — ให้เปลี่ยนไปใช้วิธีโพลผ่านสถานะ endpoint แทน
  • การส่งข้อมูลจะ ตัดรายการซ้ำ: แต่ละคำสั่งซื้อจะถูกจัดส่งสำเร็จสูงสุดเพียงครั้งเดียวเท่านั้น
  • กำหนดให้ตัวประมวลผล (handler) ของคุณทำงานแบบ idempotent โดยอ้างอิงจาก orderId

การตอบกลับเมื่อเกิดข้อผิดพลาด ​

ข้อผิดพลาดในการยืนยันตัวตน (401) ​

json
{ "detail": { "code": -1, "msg": "Invalid API key or IP not in whitelist" } }

ยอดคงเหลือไม่เพียงพอ (403) ​

json
{ "detail": { "code": 1004, "status": "failed", "msg": "Insufficient balance: 2.0 < 15 TRX" } }

ที่อยู่ไม่สามารถใช้งานได้ (403) ​

ไม่รับการถอนเงินไปยังที่อยู่ปลายทางนี้ ไม่มีการสร้างคำสั่งซื้อและไม่มีการกันยอดเงิน โปรดใช้ที่อยู่อื่นหรือติดต่อฝ่ายสนับสนุน

json
{ "detail": { "code": 1006, "status": "failed", "msg": "Withdrawals to this address are not available. Contact support." } }

ไม่สามารถตรวจสอบที่อยู่ได้ในขณะนี้ (503) ​

ไม่สามารถตรวจสอบที่อยู่ปลายทางได้ในขณะนี้ ไม่มีการสร้างคำสั่งซื้อและไม่มีการกันยอดเงิน ลองใหม่อีกครั้งในภายหลัง — สามารถใช้ X-Idempotency-Key เดิมซ้ำได้

json
{ "detail": { "code": 1009, "status": "failed", "msg": "Address check is temporarily unavailable. No request was created. Retry shortly." } }

มีรายการถอนเงินที่รอดำเนินการอยู่แล้ว (409) ​

คุณสามารถมี รายการถอนเงินที่รอดำเนินการได้ครั้งละหนึ่งรายการเท่านั้น ในยอดคงเหลือของคุณเอง โปรดรอจนกว่ารายการปัจจุบันจะได้รับการประมวลผลเสร็จสิ้น

json
{ "detail": { "code": 4090, "status": "failed", "msg": "You have a pending withdrawal. Wait until it is processed." } }

ข้อผิดพลาดในการตรวจสอบความถูกต้อง (400) ​

json
{ "detail": { "code": 5004, "status": "failed", "msg": "Minimum withdrawal is 3 TRX" } }

ข้อมูลอ้างอิงรหัสข้อผิดพลาด ​

CodeDescriptionHTTP Status
10000ยอมรับแล้ว (การถอนเข้าคิวแล้ว) / สำเร็จแล้ว (สถานะ endpoint)202 / 200
10001รอดำเนินการ — อยู่ในคิวหรือกำลังส่ง (สถานะ endpoint)200
208คำขอซ้ำกับคำขอที่ยอมรับไปแล้ว — ส่งคืนการตอบกลับที่แคชไว้208
-คำขอเดิมกำลังอยู่ระหว่างการประมวลผล (อย่าเพิ่งลองใหม่)409
4090คุณมีรายการถอนเงินที่รอดำเนินการอยู่แล้ว409
-1API key ไม่ถูกต้อง / IP ไม่อยู่ในไวท์ลิสต์ หรือไม่พบคำสั่งซื้อ401 / 404
1004ยอดคงเหลือไม่เพียงพอ403
1006ไม่สามารถถอนเงินไปยังที่อยู่นี้ได้403
1009ไม่สามารถตรวจสอบที่อยู่ได้ชั่วคราว — ไม่มีการสร้างคำสั่งซื้อ ให้ลองใหม่ในภายหลัง503
5004ข้อผิดพลาดในการตรวจสอบความถูกต้อง (amount < 3, ค่าธรรมเนียม ≥ amount, ที่อยู่ไม่ถูกต้อง, คีย์ idempotency ไม่ถูกต้อง)400
5003การถอนเงินล้มเหลว / บริการไม่พร้อมใช้งาน200 (สถานะ) / 503
5000ข้อผิดพลาดภายในเซิร์ฟเวอร์500

ขีดจำกัดอัตราการเรียกใช้ ​

จำกัด ต่อหนึ่ง API key (ส่วนหัว X-API-KEY):

ช่วงเวลาขีดจำกัด
1 วินาที5 คำขอ
1 นาที150 คำขอ

เกินขีดจำกัดอัตราคำขอ (429) ​

json
{ "message": "API rate limit exceeded" }

ความสามารถในการทำงานซ้ำ (Idempotency) ​

ส่งส่วนหัว X-Idempotency-Key (ไม่บังคับ) เพื่อให้การส่งซ้ำโดยไม่ได้ตั้งใจ ไม่ ทำให้เกิดการถอนเงินซ้ำรอบที่สอง — การตอบกลับเดิมจะถูกส่งคืนพร้อมรหัส HTTP 208 หากคุณไม่ได้ส่งส่วนหัวนี้ เซิร์ฟเวอร์จะสร้างคีย์ขึ้นมาให้โดยอัตโนมัติจากพารามิเตอร์ของคำขอภายในกรอบเวลาสั้นๆ คีย์นี้จะทำหน้าที่เป็น orderId ของคุณด้วย

วิธีสร้างคีย์ ​

คีย์คือ base64url( HMAC-SHA256( secret, message ) ) ที่ตัด padding = ออก — เป็นสตริงที่ปลอดภัยสำหรับ URL ความยาว 43 ตัวอักษร โดยที่:

  • secret = API key ของคุณ (X-API-KEY)
  • message = ฟิลด์ต่างๆ ที่เชื่อมต่อกันด้วยเครื่องหมาย : — address:amount:nonce

nonce คือค่าใดๆ ที่ คงที่สำหรับการลองส่งซ้ำของคำสั่งซื้อเชิงตรรกะเดียวกัน แต่แตกต่างกันระหว่างคำสั่งซื้อที่ไม่เกี่ยวข้องกัน — เช่น UUID ที่คุณเก็บไว้สำหรับคำสั่งซื้อนั้น หรือกลุ่มช่วงเวลาแบบหยาบๆ (timestamp bucket) สร้างคีย์เพียงครั้งเดียวต่อหนึ่งคำสั่งซื้อ และส่งค่าเดิมทุกประการในทุกครั้งที่ลองใหม่

python
import hmac, hashlib, base64, time

def make_idempotency_key(api_key, address, amount, nonce=None):
    if nonce is None:
        nonce = str(int(time.time() // 2))   # 2-second bucket; or your own order UUID
    message = f"{address}:{amount}:{nonce}"
    digest = hmac.new(api_key.encode(), message.encode(), hashlib.sha256).digest()
    return base64.urlsafe_b64encode(digest).decode().rstrip("=")  # 43-char URL-safe

การตรวจสอบความถูกต้อง X-Idempotency-Key ที่ระบุต้องมีความยาว 16–64 ตัวอักษร จากชุดอักขระ A–Z a–z 0–9 + / = _ - คีย์ที่มีรูปแบบไม่ถูกต้องหรือยาวเกินไปจะถูกปฏิเสธด้วยรหัส HTTP 400 (code 5004)

รหัสสถานะความหมาย
202ยอมรับแล้ว (คำขอครั้งแรก)
208ยอมรับไปแล้ว — ส่งคืนการตอบกลับที่แคชไว้ (ไม่มีการถอนเงินซ้ำรอบสอง)
409คำขอเดียวกันกำลังอยู่ระหว่างการประมวลผล — โปรดรอ อย่าเพิ่งลองใหม่

การลองใหม่หลังจากเกิดข้อผิดพลาด ระบบจะแคชเฉพาะผลลัพธ์ที่ ยอมรับแล้ว (accepted) เท่านั้น หากความพยายามก่อนหน้า ล้มเหลว (เช่น ยอดคงเหลือไม่พอ, การตรวจสอบไม่ผ่าน) คุณสามารถ ลองใหม่ด้วยคีย์เดิมได้อย่างปลอดภัย — คำขอจะได้รับการพยายามประมวลผลใหม่อีกครั้งแทนที่จะส่งคืนข้อผิดพลาดเดิม ในขณะที่คำขอยังอยู่ระหว่างการดำเนินการ คุณจะได้รับรหัส 409 ให้รอและลองใหม่อีกครั้ง

หมายเหตุ ​

  • การจ่ายเงินแบบอะซิงโครนัส การตอบกลับจะเป็นการรับทราบสถานะ pending เสมอ โดย daemon เบื้องหลังจะส่ง TRX ซึ่งมักจะอยู่ภายในประมาณ 5 นาที ตรวจสอบผลลัพธ์ได้จากสถานะ endpoint หรือ webhook
  • ยอดเงินจะถูกกันไว้ทันที เมื่อคำสั่งซื้อได้รับการยอมรับ (ไม่ใช่ตอนที่ส่ง TRX สำเร็จในขั้นตอนสุดท้าย)
  • ขั้นต่ำ: 3 TRX ค่าธรรมเนียม: 1 TRX (หรือ 2 TRX เมื่อใช้ sub_and_robot_out) โดยหักออกจากยอดเงินรวม amount ผู้รับจะได้รับยอดสุทธิ net = amount − fee
  • รอดำเนินการได้ครั้งละหนึ่งรายการ ในยอดคงเหลือของคุณเอง (code 4090)
  • การตรวจสอบที่อยู่ปลายทาง ทุกคำขอจะได้รับการตรวจสอบก่อนที่คำสั่งซื้อจะได้รับการยอมรับ: code 1006 (HTTP 403) — ไม่สามารถถอนเงินไปยังที่อยู่นี้ได้, code 1009 (HTTP 503) — ระบบตรวจสอบไม่พร้อมใช้งานชั่วคราว ให้ลองใหม่ในภายหลัง ทั้งสองกรณีจะไม่มีการสร้างคำสั่งซื้อ
  • ผู้ใช้ย่อยถอนเงินได้เหมือนกับผู้ใช้ทั่วไปทุกประการ — ใช้ endpoint POST /apiv2/withdraw เดียวกัน กฎเดียวกัน แต่ยืนยันตัวตน ด้วย API key ของผู้ใช้ย่อยเอง ผู้ใช้ย่อยจะถอน ยอดคงเหลือของตนเอง ไปยัง address ที่ตนระบุไว้ ไม่มี endpoint แยกต่างหากสำหรับผู้ใช้ย่อย
  • orderId เป็นสตริงที่ปลอดภัยสำหรับ URL ความยาว 43 ตัวอักษร สามารถส่งผ่าน URL ของสถานะได้ตามเดิม (ไม่ต้องแปลงรหัส)
  • Webhooks: แยกตามผู้ใช้, มีการลงนามด้วย X-Netts-Signature, ลองส่งใหม่สูงสุด 3 ครั้งภายในระยะเวลา 21 นาที กำหนดค่าผ่าน POST /apiv2/withdraw/webhook