# Code Samples

## API Code Samples for Customer and Wallet Management

Below are code samples for each endpoint in the Customer and Wallet Management API, implemented in cURL, Python, Java, JavaScript, PHP, and C#. Each sample corresponds to the respective endpoint for interacting with the API.

***

### Customer Management

#### Get All Customers

* **cURL**:

```bash
curl --request GET \
  --url '{{base-url}}/customer?page=1' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}'
}

response = requests.get('{{base-url}}/customer?page=1', headers=headers)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/customer?page=1");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}'
};

fetch('{{base-url}}/customer?page=1', {
    method: 'GET',
    headers: headers
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/customer?page=1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var response = await client.GetAsync("{{base-url}}/customer?page=1");
            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();
                Console.WriteLine(content);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Get Customer Details

* **cURL**:

```bash
curl --request GET \
  --url '{{base-url}}/customer/1149d065-c5c9-4382-aec6-323090f31d9d' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}'
}

response = requests.get('{{base-url}}/customer/1149d065-c5c9-4382-aec6-323090f31d9d', headers=headers)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/customer/1149d065-c5c9-4382-aec6-323090f31d9d");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}'
};

fetch('{{base-url}}/customer/1149d065-c5c9-4382-aec6-323090f31d9d', {
    method: 'GET',
    headers: headers
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/customer/1149d065-c5c9-4382-aec6-323090f31d9d");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var response = await client.GetAsync("{{base-url}}/customer/1149d065-c5c9-4382-aec6-323090f31d9d");
            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();
                Console.WriteLine(content);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Find Customer by Phone Number

* **cURL**:

```bash
curl --request GET \
  --url '{{base-url}}/customer/phone?phoneNumber=08030223346' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}'
}

response = requests.get('{{base-url}}/customer/phone?phoneNumber=08030223346', headers=headers)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/customer/phone?phoneNumber=08030223346");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}'
};

fetch('{{base-url}}/customer/phone?phoneNumber=08030223346', {
    method: 'GET',
    headers: headers
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/customer/phone?phoneNumber=08030223346");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var response = await client.GetAsync("{{base-url}}/customer/phone?phoneNumber=08030223346");
            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();
                Console.WriteLine(content);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Update Customer Profile

* **cURL**:

```bash
curl --request PUT \
  --url '{{base-url}}/customer/49d4ea6d-d3dc-490c-800d-7c50b89cf8ff' \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}' \
  --data '{
    "firstName": "Updated"
}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
}

data = {
    "firstName": "Updated"
}

response = requests.put('{{base-url}}/customer/49d4ea6d-d3dc-490c-800d-7c50b89cf8ff', headers=headers, json=data)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/customer/49d4ea6d-d3dc-490c-800d-7c50b89cf8ff");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("PUT");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String jsonInputString = "{\"firstName\": \"Updated\"}";
        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
};

fetch('{{base-url}}/customer/49d4ea6d-d3dc-490c-800d-7c50b89cf8ff', {
    method: 'PUT',
    headers: headers,
    body: JSON.stringify({
        firstName: "Updated"
    })
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/customer/49d4ea6d-d3dc-490c-800d-7c50b89cf8ff");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"firstName": "Updated"}');

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var content = new StringContent(
                "{\"firstName\": \"Updated\"}",
                Encoding.UTF8,
                "application/json"
            );

            var response = await client.PutAsync("{{base-url}}/customer/49d4ea6d-d3dc-490c-800d-7c50b89cf8ff", content);
            if (response.IsSuccessStatusCode)
            {
                var responseContent = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseContent);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

### Wallet Management

#### Create Customer Wallet

* **cURL**:

```bash
curl --request POST \
  --url '{{base-url}}/wallet' \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}' \
  --data '{
    "bvn": "22181029312",
    "firstName": "Ridwan",
    "lastName": "Adekunle",
    "dateOfBirth": "1992-05-16",
    "phoneNumber": "08020245356",
    "address": "No 10, Adewale Ajasin University",
    "metadata": {
        "even-more": "Other data",
        "additional-data": "some more data"
    }
}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
}

data = {
    "bvn": "22181029312",
    "firstName": "Ridwan",
    "lastName": "Adekunle",
    "dateOfBirth": "1992-05-16",
    "phoneNumber": "08020245356",
    "address": "No 10, Adewale Ajasin University",
    "metadata": {
        "even-more": "Other data",
        "additional-data": "some more data"
    }
}

response = requests.post('{{base-url}}/wallet', headers=headers, json=data)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/wallet");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String jsonInputString = "{\"bvn\": \"22181029312\", \"firstName\": \"Ridwan\", \"lastName\": \"Adekunle\", \"dateOfBirth\": \"1992-05-16\", \"phoneNumber\": \"08020245356\", \"address\": \"No 10, Adewale Ajasin University\", \"metadata\": {\"even-more\": \"Other data\", \"additional-data\": \"some more data\"}}";
        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
};

fetch('{{base-url}}/wallet', {
    method: 'POST',
    headers: headers,
    body: JSON.stringify({
        bvn: "22181029312",
        firstName: "Ridwan",
        lastName: "Adekunle",
        dateOfBirth: "1992-05-16",
        phoneNumber: "08020245356",
        address: "No 10, Adewale Ajasin University",
        metadata: {
            "even-more": "Other data",
            "additional-data": "some more data"
        }
    })
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/wallet");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"bvn": "22181029312", "firstName": "Ridwan", "lastName": "Adekunle", "dateOfBirth": "1992-05-16", "phoneNumber": "08020245356", "address": "No 10, Adewale Ajasin University", "metadata": {"even-more": "Other data", "additional-data": "some more data"}}');

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var content = new StringContent(
                "{\"bvn\": \"22181029312\", \"firstName\": \"Ridwan\", \"lastName\": \"Adekunle\", \"dateOfBirth\": \"1992-05-16\", \"phoneNumber\": \"08020245356\", \"address\": \"No 10, Adewale Ajasin University\", \"metadata\": {\"even-more\": \"Other data\", \"additional-data\": \"some more data\"}}",
                Encoding.UTF8,
                "application/json"
            );

            var response = await client.PostAsync("{{base-url}}/wallet", content);
            if (response.IsSuccessStatusCode)
            {
                var responseContent = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseContent);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Get All Wallets

* **cURL**:

```bash
curl --request GET \
  --url '{{base-url}}/wallet' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}'
}

response = requests.get('{{base-url}}/wallet', headers=headers)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/wallet");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}'
};

fetch('{{base-url}}/wallet', {
    method: 'GET',
    headers: headers
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/wallet");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var response = await client.GetAsync("{{base-url}}/wallet");
            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();
                Console.WriteLine(content);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Get Customer Wallet

* **cURL**:

```bash
curl --request GET \
  --url '{{base-url}}/wallet/customer?customerId=5de468b7-de5f-414e-b948-1f2f336c3c5e' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}'
}

response = requests.get('{{base-url}}/wallet/customer?customerId=5de468b7-de5f-414e-b948-1f2f336c3c5e', headers=headers)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/wallet/customer?customerId=5de468b7-de5f-414e-b948-1f2f336c3c5e");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}'
};

fetch('{{base-url}}/wallet/customer?customerId=5de468b7-de5f-414e-b948-1f2f336c3c5e', {
    method: 'GET',
    headers: headers
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/wallet/customer?customerId=5de468b7-de5f-414e-b948-1f2f336c3c5e");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var response = await client.GetAsync("{{base-url}}/wallet/customer?customerId=5de468b7-de5f-414e-b948-1f2f336c3c5e");
            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();
                Console.WriteLine(content);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Credit Wallet

* **cURL**:

```bash
curl --request POST \
  --url '{{base-url}}/wallet/credit' \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}' \
  --data '{
    "amount": 200,
    "reference": "14kg34dqe3rkyd23wo",
    "customerId": "d818688f-50ca-4b9c-9693-ca7c6c3988ad",
    "metadata": {
        "some-data": "sample data",
        "more-data": "any value here"
    }
}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
}

data = {
    "amount": 200,
    "reference": "14kg34dqe3rkyd23wo",
    "customerId": "d818688f-50ca-4b9c-9693-ca7c6c3988ad",
    "metadata": {
        "some-data": "sample data",
        "more-data": "any value here"
    }
}

response = requests.post('{{base-url}}/wallet/credit', headers=headers, json=data)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/wallet/credit");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String jsonInputString = "{\"amount\": 200, \"reference\": \"14kg34dqe3rkyd23wo\", \"customerId\": \"d818688f-50ca-4b9c-9693-ca7c6c3988ad\", \"metadata\": {\"some-data\": \"sample data\", \"more-data\": \"any value here\"}}";
        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
};

fetch('{{base-url}}/wallet/credit', {
    method: 'POST',
    headers: headers,
    body: JSON.stringify({
        amount: 200,
        reference: "14kg34dqe3rkyd23wo",
        customerId: "d818688f-50ca-4b9c-9693-ca7c6c3988ad",
        metadata: {
            "some-data": "sample data",
            "more-data": "any value here"
        }
    })
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/wallet/credit");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"amount": 200, "reference": "14kg34dqe3rkyd23wo", "customerId": "d818688f-50ca-4b9c-9693-ca7c6c3988ad", "metadata": {"some-data": "sample data", "more-data": "any value here"}}');

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var content = new StringContent(
                "{\"amount\": 200, \"reference\": \"14kg34dqe3rkyd23wo\", \"customerId\": \"d818688f-50ca-4b9c-9693-ca7c6c3988ad\", \"metadata\": {\"some-data\": \"sample data\", \"more-data\": \"any value here\"}}",
                Encoding.UTF8,
                "application/json"
            );

            var response = await client.PostAsync("{{base-url}}/wallet/credit", content);
            if (response.IsSuccessStatusCode)
            {
                var responseContent = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseContent);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Debit Wallet

* **cURL**:

```bash
curl --request POST \
  --url '{{base-url}}/wallet/debit' \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}' \
  --data '{
    "amount": 200,
    "reference": "34k3e4f4ek4t4",
    "customerId": "aa4e9eea-d7a5-4ac2-a211-dc6d59b0c050",
    "metadata": {
        "some-data": "sample data",
        "more-data": "any value here"
    }
}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
}

data = {
    "amount": 200,
    "reference": "34k3e4f4ek4t4",
    "customerId": "aa4e9eea-d7a5-4ac2-a211-dc6d59b0c050",
    "metadata": {
        "some-data": "sample data",
        "more-data": "any value here"
    }
}

response = requests.post('{{base-url}}/wallet/debit', headers=headers, json=data)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/wallet/debit");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String jsonInputString = "{\"amount\": 200, \"reference\": \"34k3e4f4ek4t4\", \"customerId\": \"aa4e9eea-d7a5-4ac2-a211-dc6d59b0c050\", \"metadata\": {\"some-data\": \"sample data\", \"more-data\": \"any value here\"}}";
        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
};

fetch('{{base-url}}/wallet/debit', {
    method: 'POST',
    headers: headers,
    body: JSON.stringify({
        amount: 200,
        reference: "34k3e4f4ek4t4",
        customerId: "aa4e9eea-d7a5-4ac2-a211-dc6d59b0c050",
        metadata: {
            "some-data": "sample data",
            "more-data": "any value here"
        }
    })
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/wallet/debit");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"amount": 200, "reference": "34k3e4f4ek4t4", "customerId": "aa4e9eea-d7a5-4ac2-a211-dc6d59b0c050", "metadata": {"some-data": "sample data", "more-data": "any value here"}}');

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var content = new StringContent(
                "{\"amount\": 200, \"reference\": \"34k3e4f4ek4t4\", \"customerId\": \"aa4e9eea-d7a5-4ac2-a211-dc6d59b0c050\", \"metadata\": {\"some-data\": \"sample data\", \"more-data\": \"any value here\"}}",
                Encoding.UTF8,
                "application/json"
            );

            var response = await client.PostAsync("{{base-url}}/wallet/debit", content);
            if (response.IsSuccessStatusCode)
            {
                var responseContent = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseContent);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Freeze Customer Wallet

* **cURL**:

```bash
curl --request POST \
  --url '{{base-url}}/wallet/close' \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}' \
  --data '{
    "customerId": "49d4ea6d-d3dc-490c-800d-7c50b89cf8ff"
}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
}

data = {
    "customerId": "49d4ea6d-d3dc-490c-800d-7c50b89cf8ff"
}

response = requests.post('{{base-url}}/wallet/close', headers=headers, json=data)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/wallet/close");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String jsonInputString = "{\"customerId\": \"49d4ea6d-d3dc-490c-800d-7c50b89cf8ff\"}";
        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
};

fetch('{{base-url}}/wallet/close', {
    method: 'POST',
    headers: headers,
    body: JSON.stringify({
        customerId: "49d4ea6d-d3dc-490c-800d-7c50b89cf8ff"
    })
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/wallet/close");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customerId": "49d4ea6d-d3dc-490c-800d-7c50b89cf8ff"}');

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var content = new StringContent(
                "{\"customerId\": \"49d4ea6d-d3dc-490c-800d-7c50b89cf8ff\"}",
                Encoding.UTF8,
                "application/json"
            );

            var response = await client.PostAsync("{{base-url}}/wallet/close", content);
            if (response.IsSuccessStatusCode)
            {
                var responseContent = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseContent);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Unfreeze Customer Wallet

* **cURL**:

```bash
curl --request POST \
  --url '{{base-url}}/wallet/enable' \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}' \
  --data '{
    "customerId": "49d4ea6d-d3dc-490c-800d-7c50b89cf8ff"
}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
}

data = {
    "customerId": "49d4ea6d-d3dc-490c-800d-7c50b89cf8ff"
}

response = requests.post('{{base-url}}/wallet/enable', headers=headers, json=data)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/wallet/enable");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String jsonInputString = "{\"customerId\": \"49d4ea6d-d3dc-490c-800d-7c50b89cf8ff\"}";
        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
};

fetch('{{base-url}}/wallet/enable', {
    method: 'POST',
    headers: headers,
    body: JSON.stringify({
        customerId: "49d4ea6d-d3dc-490c-800d-7c50b89cf8ff"
    })
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/wallet/enable");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customerId": "49d4ea6d-d3dc-490c-800d-7c50b89cf8ff"}');

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var content = new StringContent(
                "{\"customerId\": \"49d4ea6d-d3dc-490c-800d-7c50b89cf8ff\"}",
                Encoding.UTF8,
                "application/json"
            );

            var response = await client.PostAsync("{{base-url}}/wallet/enable", content);
            if (response.IsSuccessStatusCode)
            {
                var responseContent = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseContent);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Batch Credit Customer Wallets

* **cURL**:

```bash
curl --request POST \
  --url '{{base-url}}/wallet/batch-credit-customer-wallet' \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}' \
  --data '{
    "batchReference": "afsdfeadsfasrgasdfasd6",
    "transactions": [
        {
            "amount": 200,
            "reference": "afsdfeadsfasrgasdfas4d",
            "customerId": "1149d065-c5c9-4382-aec6-323090f31d9d"
        },
        {
            "amount": 4000,
            "reference": "afsdfeadsfasrgasd5fase",
            "customerId": "c938a018-8987-4411-97c5-e456868741e8"
        }
    ]
}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
}

data = {
    "batchReference": "afsdfeadsfasrgasdfasd6",
    "transactions": [
        {
            "amount": 200,
            "reference": "afsdfeadsfasrgasdfas4d",
            "customerId": "1149d065-c5c9-4382-aec6-323090f31d9d"
        },
        {
            "amount": 4000,
            "reference": "afsdfeadsfasrgasd5fase",
            "customerId": "c938a018-8987-4411-97c5-e456868741e8"
        }
    ]
}

response = requests.post('{{base-url}}/wallet/batch-credit-customer-wallet', headers=headers, json=data)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/wallet/batch-credit-customer-wallet");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String jsonInputString = "{\"batchReference\": \"afsdfeadsfasrgasdfasd6\", \"transactions\": [{\"amount\": 200, \"reference\": \"afsdfeadsfasrgasdfas4d\", \"customerId\": \"1149d065-c5c9-4382-aec6-323090f31d9d\"}, {\"amount\": 4000, \"reference\": \"afsdfeadsfasrgasd5fase\", \"customerId\": \"c938a018-8987-4411-97c5-e456868741e8\"}]}";
        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
};

fetch('{{base-url}}/wallet/batch-credit-customer-wallet', {
    method: 'POST',
    headers: headers,
    body: JSON.stringify({
        batchReference: "afsdfeadsfasrgasdfasd6",
        transactions: [
            {
                amount: 200,
                reference: "afsdfeadsfasrgasdfas4d",
                customerId: "1149d065-c5c9-4382-aec6-323090f31d9d"
            },
            {
                amount: 4000,
                reference: "afsdfeadsfasrgasd5fase",
                customerId: "c938a018-8987-4411-97c5-e456868741e8"
            }
        ]
    })
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/wallet/batch-credit-customer-wallet");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"batchReference": "afsdfeadsfasrgasdfasd6", "transactions": [{"amount": 200, "reference": "afsdfeadsfasrgasdfas4d", "customerId": "1149d065-c5c9-4382-aec6-323090f31d9d"}, {"amount": 4000, "reference": "afsdfeadsfasrgasd5fase", "customerId": "c938a018-8987-4411-97c5-e456868741e8"}]}');

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var content = new StringContent(
                "{\"batchReference\": \"afsdfeadsfasrgasdfasd6\", \"transactions\": [{\"amount\": 200, \"reference\": \"afsdfeadsfasrgasdfas4d\", \"customerId\": \"1149d065-c5c9-4382-aec6-323090f31d9d\"}, {\"amount\": 4000, \"reference\": \"afsdfeadsfasrgasd5fase\", \"customerId\": \"c938a018-8987-4411-97c5-e456868741e8\"}]}",
                Encoding.UTF8,
                "application/json"
            );

            var response = await client.PostAsync("{{base-url}}/wallet/batch-credit-customer-wallet", content);
            if (response.IsSuccessStatusCode)
            {
                var responseContent = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseContent);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Batch Debit Customer Wallets

* **cURL**:

```bash
curl --request POST \
  --url '{{base-url}}/wallet/batch-debit-customer-wallet' \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}' \
  --data '{
    "batchReference": "88adsf8hssa43sefas8df8ahhjefasdff14",
    "transactions": [
        {
            "amount": 250,
            "reference": "dkfajdfsdjjjssd23sfjasdfasdkfjds12",
            "customerId": "a2c40f33-489c-480f-9d24-e2742502b85f"
        },
        {
            "amount": 30000,
            "reference": "dkfajdfsdjjjdsfjasd45fssasdkfjds20",
            "customerId": "cdf29144-10f7-4805-8389-3928050904f7"
        }
    ]
}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
}

data = {
    "batchReference": "88adsf8hssa43sefas8df8ahhjefasdff14",
    "transactions": [
        {
            "amount": 250,
            "reference": "dkfajdfsdjjjssd23sfjasdfasdkfjds12",
            "customerId": "a2c40f33-489c-480f-9d24-e2742502b85f"
        },
        {
            "amount": 30000,
            "reference": "dkfajdfsdjjjdsfjasd45fssasdkfjds20",
            "customerId": "cdf29144-10f7-4805-8389-3928050904f7"
        }
    ]
}

response = requests.post('{{base-url}}/wallet/batch-debit-customer-wallet', headers=headers, json=data)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/wallet/batch-debit-customer-wallet");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String jsonInputString = "{\"batchReference\": \"88adsf8hssa43sefas8df8ahhjefasdff14\", \"transactions\": [{\"amount\": 250, \"reference\": \"dkfajdfsdjjjssd23sfjasdfasdkfjds12\", \"customerId\": \"a2c40f33-489c-480f-9d24-e2742502b85f\"}, {\"amount\": 30000, \"reference\": \"dkfajdfsdjjjdsfjasd45fssasdkfjds20\", \"customerId\": \"cdf29144-10f7-4805-8389-3928050904f7\"}]}";
        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } else {
            System.out.println(conn.getResponseMessage());
        }
    }
}
```

* **JavaScript**:

```javascript
const headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
};

fetch('{{base-url}}/wallet/batch-debit-customer-wallet', {
    method: 'POST',
    headers: headers,
    body: JSON.stringify({
        batchReference: "88adsf8hssa43sefas8df8ahhjefasdff14",
        transactions: [
            {
                amount: 250,
                reference: "dkfajdfsdjjjssd23sfjasdfasdkfjds12",
                customerId: "a2c40f33-489c-480f-9d24-e2742502b85f"
            },
            {
                amount: 30000,
                reference: "dkfajdfsdjjjdsfjasd45fssasdkfjds20",
                customerId: "cdf29144-10f7-4805-8389-3928050904f7"
            }
        ]
    })
})
.then(response => {
    if (response.ok) {
        return response.json();
    }
    throw new Error(response.statusText);
})
.then(data => console.log(data))
.catch(error => console.error(error));
```

* **PHP**:

```php
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{{base-url}}/wallet/batch-debit-customer-wallet");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-Access-Token: {{access-token}}',
    'X-Refresh-Token: {{refresh-token}}',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"batchReference": "88adsf8hssa43sefas8df8ahhjefasdff14", "transactions": [{"amount": 250, "reference": "dkfajdfsdjjjssd23sfjasdfasdkfjds12", "customerId": "a2c40f33-489c-480f-9d24-e2742502b85f"}, {"amount": 30000, "reference": "dkfajdfsdjjjdsfjasd45fssasdkfjds20", "customerId": "cdf29144-10f7-4805-8389-3928050904f7"}]}');

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    echo $response;
} else {
    echo curl_error($ch);
}

curl_close($ch);
?>
```

* **C#**:

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-Access-Token", "{{access-token}}");
            client.DefaultRequestHeaders.Add("X-Refresh-Token", "{{refresh-token}}");

            var content = new StringContent(
                "{\"batchReference\": \"88adsf8hssa43sefas8df8ahhjefasdff14\", \"transactions\": [{\"amount\": 250, \"reference\": \"dkfajdfsdjjjssd23sfjasdfasdkfjds12\", \"customerId\": \"a2c40f33-489c-480f-9d24-e2742502b85f\"}, {\"amount\": 30000, \"reference\": \"dkfajdfsdjjjdsfjasd45fssasdkfjds20\", \"customerId\": \"cdf29144-10f7-4805-8389-3928050904f7\"}]}",
                Encoding.UTF8,
                "application/json"
            );

            var response = await client.PostAsync("{{base-url}}/wallet/batch-debit-customer-wallet", content);
            if (response.IsSuccessStatusCode)
            {
                var responseContent = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseContent);
            }
            else
            {
                Console.WriteLine(response.ReasonPhrase);
            }
        }
    }
}
```

#### Customer Batch Credit Customer Wallets

* **cURL**:

```bash
curl --request POST \
  --url '{{base-url}}/wallet/customer-batch-credit-customer-wallet' \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Token: {{access-token}}' \
  --header 'X-Refresh-Token: {{refresh-token}}' \
  --data '{
    "batchReference": "88adsf8hasefas8df8ahhjefasdff8",
    "customerId": "c938a018-8987-4411-97c5-e456868741e8",
    "recipients": [
        {
            "amount": 180,
            "reference": "dkfajdfsdjjjdsfjasdfasdkfjds9",
            "customerId": "de304d11-ca4e-491f-8851-9ca09a0084a3"
        },
        {
            "amount": 500,
            "reference": "dkfajdfsdjjjdsfjasdfasdkfjds10",
            "customerId": "f75774b0-6f99-4029-92a9-2dfe7e15d3f0"
        }
    ]
}'
```

* **Python**:

```python
import requests

headers = {
    'X-Access-Token': '{{access-token}}',
    'X-Refresh-Token': '{{refresh-token}}',
    'Content-Type': 'application/json'
}

data = {
    "batchReference": "88adsf8hasefas8df8ahhjefasdff8",
    "customerId": "c938a018-8987-4411-97c5-e456868741e8",
    "recipients": [
        {
            "amount": 180,
            "reference": "dkfajdfsdjjjdsfjasdfasdkfjds9",
            "customerId": "de304d11-ca4e-491f-8851-9ca09a0084a3"
        },
        {
            "amount": 500,
            "reference": "dkfajdfsdjjjdsfjasdfasdkfjds10",
            "customerId": "f75774b0-6f99-4029-92a9-2dfe7e15d3f0"
        }
    ]
}

response = requests.post('{{base-url}}/wallet/customer-batch-credit-customer-wallet', headers=headers, json=data)
if response.status_code == 200:
    print(response.json())
else:
    print(response.reason)
```

* **Java**:

```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        URL url = new URL("{{base-url}}/wallet/customer-batch-credit-customer-wallet");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("X-Access-Token", "{{access-token}}");
        conn.setRequestProperty("X-Refresh-Token", "{{refresh-token}}");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String jsonInputString = "{\"batchReference\": \"88adsf8hasefas8df8ahhjefasdff8\", \"customerId\": \"c938a018-8987-4411-97c5-e456868741e8\", \"recipients\": [{\"amount\": 180, \"reference\": \"dkfajdfsdjjjdsfjasdfasdkfjds9\", \"customerId\": \"de304d11-ca4e-491f-8851-9ca09a0084a3\"}, {\"amount\": 500, \"reference\": \"dkfajdfsdjjjdsfjasdfasdkfjds10\", \"customerId\": \"f75774b0-6f99-4029-92a9-2dfe7e15d3f0\"}]}";
        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int responseCode = conn.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.providusbank.com/xpress-wallet-api/code-samples.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
