/update_virtual_account

This endpoint is used to update a virtual account. Items you can update for a virtual account are:

  • virtual_account_name
  • active
  • ach_credit_enabled
  • ach_debit_enabled

These are all optional and if not specified, will not be updated.

Requests

Both authsignature and usersignature headers are required for this request.

POST /0.2/update_virtual_account HTTP/1.1
Host: sandbox.silamoney.com
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]
usersignature: [GENERATED USERSIGNATURE HEX STRING HERE]
Content-Type: application/json

{
  "header": {
    "created": 1234567890, 
    "auth_handle": "handle.silamoney.eth", 
    "user_handle":"user.silamoney.eth", 
    "version": "0.2", 
    "crypto": "ETH", 
    "reference": "<your unique id>"
  }, 
  "virtual_account_id": "{{payment instrument UUID}}",
  "virtual_account_name": "Sherry's Money Tree",
  "active": true/false,
  "ach_debit_enabled": true/false,
  "ach_credit_enabled": true/false
}

***
HTTP/1.1 200 OK

{
  "success": true,
  "status": "SUCCESS",
  "response_time_ms": "171",
  "reference": "ref",
  "message": "Virtual account successfully suspended.",
  "virtual_account":  {
      "virtual_account_id": "{{payment instrument UUID here}}",
      "virtual_account_name": "Sherrys Money Tree",
      "account_number": "1234567812345678",
      "routing_number": "123456789",
      "account_type": "VIRTUAL_ACCOUNT",
      "active": true/false,
      "closed": false,
      "created_epoch": 1645105714,
      "closed_epoch": null,
      "ach_credit_enabled": true/false,
      "ach_debit_enabled": true/false
    }
}
var payload = {
    "ach_debit_enabled":true,
    "ach_credit_enabled":false,
    "virtual_account_name":'default_v_account_1',
    "active":false,
    "virtual_account_id":vAccountId
}     
const res = await Sila.updateVirtualAccount(userHandle, userPrivateKey, payload);

Success Response Object
{
  "statusCode": 200,
  "headers": {
    "server": "nginx/1.14.0 (Ubuntu)",
    "date": "Fri, 25 Mar 2022 11:45:10 GMT",
    "content-type": "application/json",
    "content-length": "511",
    "connection": "close",
    "access-control-allow-origin": "*",
    "access-control-allow-headers": "*",
    "allow": "POST, OPTIONS",
    "vary": "Cookie"
  },
  "data": {
    "success": true,
    "reference": "bbcf475f-f1a9-4295-ab57-e38b602b2146",
    "message": "Virtual account successfully updated",
    "virtual_account": {
      "virtual_account_id": "72130e62-1bd8-431d-b88d-2440a27c828a",
      "virtual_account_name": "default_v_account_1",
      "account_number": "9710010589065012",
      "routing_number": "084106768",
      "account_type": "VIRTUAL_ACCOUNT",
      "ach_credit_enabled": false,
      "ach_debit_enabled": true,
      "active": true,
      "closed": false,
      "created_epoch": 1648208707,
      "closed_epoch": null
    },
    "status": "SUCCESS",
    "response_time_ms": "173"
  }
}
payload = {
    "user_handle": "user.silamoney.eth",
    "virtual_account_id":"f06e7f6d-381f-42c0-997f-98b86cfe3770",
    "virtual_account_name": "default",
    "active": False,
    "ach_debit_enabled": True,
    "ach_credit_enabled": False,
}

User.updateVirtualAccount(app, payload, eth_private_key)

# Success

{
   "success":true,
   "reference": "<your unique id>"
   "message":"Virtual account successfully updated",
   "virtual_account":{
      "virtual_account_id":"f06e7f6d-381f-42c0-997f-98b86cfe3770",
      "virtual_account_name":"default",
      "account_number":"9710012690626872",
      "routing_number":"084106768",
      "account_type":"VIRTUAL_ACCOUNT",
      "active":false,
      "closed":false,
      "created_epoch":1643027824,
      "closed_epoch":"None",
      "ach_debit_enabled": true,
      "ach_credit_enabled": false,
   },
   "status":"SUCCESS",
   "status_code":200,
}
ApiResponse response = api.updateVirtualAccount(DefaultConfigurations.getUserHandle(),DefaultConfigurations.getUserPrivateKey(),"virtual_account_id","virtual_account_name",active,achCreditEnabled,achDebitEnabled); // active,achCreditEnabled and achDebitEnabled are true/false

// Success Response
System.out.println(response.getStatusCode()); // 200
VirtualAccountResponse parsedResponse = (VirtualAccountResponse) response.getData();
System.out.println(parsedResponse.getStatus()); // SUCCESS
System.out.println(parsedResponse.getSuccess()); // true
System.out.println(parsedResponse.getReference()); // Reference number
System.out.println(parsedResponse.getMessage()); // Virtual account successfully suspended.
System.out.println(parsedResponse.getVirtualAccount().getVirtualAccountId()); // 1df8f430-3dec-47a2-bfa7-5e02b19a7bc8
System.out.println(parsedResponse.getVirtualAccount().getVirtualAccountName()); // Virtual account name
System.out.println(parsedResponse.getVirtualAccount().getAccountNumber()); // Account number
System.out.println(parsedResponse.getVirtualAccount().getRoutingNumber()); // 123456789
System.out.println(parsedResponse.getVirtualAccount().getAccountType()); // VIRTUAL_ACCOUNT
System.out.println(parsedResponse.getVirtualAccount().getClosedEpoch()); // <epoch_timestamp>
System.out.println(parsedResponse.getVirtualAccount().getCreated_epoch()); // <epoch_timestamp>
System.out.println(parsedResponse.getVirtualAccount().isClosed()); // true/false
System.out.println(parsedResponse.getVirtualAccount().isActive()); // true/false System.out.println(parsedResponse.getVirtualAccount().isAchCreditEnabled()); // true/false   System.out.println(parsedResponse.getVirtualAccount().isAchDebitEnabled());  // true/false
$userHandle = 'user.silamoney.eth';
$userPrivateKey = 'some private key'; // Hex format
$virtualAccountId = "virtual account id";
$virtualAccountName = "virtual account name";
$active = false;
$achDebitEnabled = true;// Optional - null or true or false;
$achCreditEnabled = true;// Optional - null or true or false;

$response = $client->UpdateVirtualAccount($userHandle, $userPrivateKey, $virtual_account_id, $virtual_account_name, $active, $achDebitEnabled, $achCreditEnabled);
    
// or without optional params
$response = $client->UpdateVirtualAccount($userHandle, $userPrivateKey, $virtual_account_id, $virtual_account_name);
    
echo $response->getStatusCode();
echo $response->getData()->status;
echo $response->getData()->success;
echo $response->getData()->virtualAccount["virtual_account_id"];
echo $response->getData()->virtualAccount["virtual_account_name"];
echo $response->getData()->virtualAccount["account_number"];
echo $response->getData()->virtualAccount["ach_credit_enabled"];
echo $response->getData()->virtualAccount["ach_debit_enabled"];
//Load your informations
bool achCreditEnabled = true; // optional input field
bool achDebitEnabled = false; // optional input field            
var response = api.UpdateVirtualAccount(userHandle, userPrivateKey, virtualAccountId, virtualAccountName, isActive, achCreditEnabled, achDebitEnabled);

// Success Object Response

Console.WriteLine(response.StatusCode); // 200           
Console.WriteLine(((VirtualAccountResponse)response.Data).Message); // Message
Console.WriteLine(((VirtualAccountResponse)response.Data).Success); // true
Console.WriteLine(((VirtualAccountResponse)response.Data).Status); // SUCCESS
Console.WriteLine(((VirtualAccountResponse)response.Data).Reference); // ccb35eb8-xxxx-xxxx-xxxx-xxxxx
Console.WriteLine(((GetVirtualAccountsResponse)response.Data).ResponseTimeMs); // API responses time

Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount);
Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount.AccountNumber);  // 1234567812345678
Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount.AccountType); // VIRTUAL_ACCOUNT
Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount.Active);  // true/false
Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount.Closed); // true/false
Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount.ClosedEpoch); // epoch timestamp
Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount.CreatedEpoch); // epoch timestamp
Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount.RoutingNumber); // 044000000
Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount.VirtualAccountId); // {{payment instrument UUID here}}
Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount.VirtualAccountName); // name of virtual account

Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount.AchCreditEnabled); // true
Console.WriteLine(((VirtualAccountResponse)response.Data).VirtualAccount.AchDebitEnabled); // false

Key

Type

Description

header

JSON object

Required. Requires these keys in JSON format: created, app_handle, user_handle. See the /check_handle endpoint for the complete list of fields in this object.

virtual_account_id

UUID

Required. The UUID of the virtual account.

virtual_account_name

String

Optional. The virtual account name for the update

active

Bool

Optional. To freeze/unfreeze (suspend) the virtual account

ach_credit_enabled

Bool

Optional. whether to allow ach credits for this virtual account.

ach_debit_enabled

Bool

Optional. whether to allow ach debits for this virtual account.

A virtual account in the closed state may not be updated. Return 403 with a descriptive error message indicating that closed accounts may not be updated.

  

Responses

Status Code

Description

200

Successfully fetched virtual accounts.

400

Bad request format - check validation_details for more information.

401

authsignature or usersignature header was absent or incorrect.

403

Not Authorized

404

Not Found

  

Response Contents

  

Key

Datatype

Description

virtual_account_id

UUID

UUID is unique and distinct to the virtual account

virtual_account_name

string or null

Name of the virtual account

account_number

string

Full virtual account number

routing_number

string or null

Virtual account routing number.

account_type

string

Account subtype "VIRTUAL_ACCOUNT"

active

boolean

Whether the virtual account is "active", True or False.

closed

boolean

Whether the account is "closed", True or False.

created

datetime

Unix datetime for the date the virtual account was created.

closed_epoch

datetime or null

Unix datetime for the date the virtual account was closed.

ach_credit_enabled

boolean

Whether or not the virtual account can receive incoming external ACH credits

ach_debit_enabled

boolean

Whether or not the virtual account can receive incoming external ACH debits

  

Did this page help you?