Repay outstanding credit
curl --request POST \
--url https://api.stabyl.com/v1/partner/wallets/credit/repayments \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"amount": "1000.00",
"currency": "NGN"
}
'import requests
url = "https://api.stabyl.com/v1/partner/wallets/credit/repayments"
payload = {
"amount": "1000.00",
"currency": "NGN"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-Api-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({amount: '1000.00', currency: 'NGN'})
};
fetch('https://api.stabyl.com/v1/partner/wallets/credit/repayments', 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.stabyl.com/v1/partner/wallets/credit/repayments",
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([
'amount' => '1000.00',
'currency' => 'NGN'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"X-Api-Key: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.stabyl.com/v1/partner/wallets/credit/repayments"
payload := strings.NewReader("{\n \"amount\": \"1000.00\",\n \"currency\": \"NGN\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("X-Api-Key", "<api-key>")
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.stabyl.com/v1/partner/wallets/credit/repayments")
.header("Idempotency-Key", "<idempotency-key>")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"1000.00\",\n \"currency\": \"NGN\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stabyl.com/v1/partner/wallets/credit/repayments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": \"1000.00\",\n \"currency\": \"NGN\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"created_at": "2026-09-19T10:00:00Z",
"currency": "NGN",
"id": "01980d95-5537-76aa-88a8-ad59117632ef",
"repaid_amount": "1000.00",
"requested_amount": "1000.00",
"status": "completed"
},
"status": "success"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "invalid request parameters"
},
"status": "error"
}{
"error": {
"code": "CONFLICT",
"message": "idempotency key already used"
},
"status": "error"
}Wallets
Repay outstanding credit
Request repayment of outstanding USD or NGN credit from available funds in the same currency. The amount is a maximum. Retain the original Idempotency-Key when retrying and poll the receipt until completed; processing does not confirm payment.
POST
/
partner
/
wallets
/
credit
/
repayments
Repay outstanding credit
curl --request POST \
--url https://api.stabyl.com/v1/partner/wallets/credit/repayments \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"amount": "1000.00",
"currency": "NGN"
}
'import requests
url = "https://api.stabyl.com/v1/partner/wallets/credit/repayments"
payload = {
"amount": "1000.00",
"currency": "NGN"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-Api-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({amount: '1000.00', currency: 'NGN'})
};
fetch('https://api.stabyl.com/v1/partner/wallets/credit/repayments', 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.stabyl.com/v1/partner/wallets/credit/repayments",
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([
'amount' => '1000.00',
'currency' => 'NGN'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"X-Api-Key: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.stabyl.com/v1/partner/wallets/credit/repayments"
payload := strings.NewReader("{\n \"amount\": \"1000.00\",\n \"currency\": \"NGN\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("X-Api-Key", "<api-key>")
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.stabyl.com/v1/partner/wallets/credit/repayments")
.header("Idempotency-Key", "<idempotency-key>")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"1000.00\",\n \"currency\": \"NGN\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stabyl.com/v1/partner/wallets/credit/repayments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": \"1000.00\",\n \"currency\": \"NGN\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"created_at": "2026-09-19T10:00:00Z",
"currency": "NGN",
"id": "01980d95-5537-76aa-88a8-ad59117632ef",
"repaid_amount": "1000.00",
"requested_amount": "1000.00",
"status": "completed"
},
"status": "success"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "invalid request parameters"
},
"status": "error"
}{
"error": {
"code": "CONFLICT",
"message": "idempotency key already used"
},
"status": "error"
}Authorizations
API credential. Withdrawal quote and submit operations additionally require the documented Ed25519 timestamp, nonce, and signature headers.
Headers
Unique key for this exact write intent. Store it before sending the request and reuse it for retries after timeouts or transient errors.
Body
application/json
Was this page helpful?