/get_payment_methods

Get a paginated list of all payment methods linked to an entity.

This endpoint lists all payment methods linked to an entity: bank accounts, virtual accounts, and wallets.

Requests

header.user_handle should have the registered handle corresponding to the valid entity.

The search_filters object and all of its nested keys are optional. They can be used to filter the payment methods that are returned.

Results are paginated; by default, the first 20 results are returned. You can request up to 100 results per page ("per_page": 100)

Both authsignature and usersignature headers are required for this request. The usersignature header should be generated with a keypair registered to the user (either registered from the /register endpoint or the /register_wallet endpoint). See authentication section for more details on how to generate this signature.

POST /0.2/get_payment_methods 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", 
    "reference": "<your unique id>"
  }
}

***

HTTP/1.1 200 OK

{
    "success": true,
    "payment_methods": [
        {
            "payment_method_type": "blockchain_address",
            "blockchain_address_id": "79e1154a-4a78-4ea9-971b-54a8b17dxxxx",
            "blockchain_address": "0x3999A8eb9B6CD5a3646497A354D2d9f90D42Ea8e",
            "blockchain_network": "ETH",
            "nickname": "My Wallet",
            "frozen": false,
            "default": true
        },
        {
            "payment_method_type": "bank_account",
            "bank_account_id": "db0be7e5-cd90-444c-9145-a9f64c3xxxxx",
            "account_number": "*9999",
            "routing_number": "044000000",
            "account_name": "Chase",
            "account_type": "CHECKING",
            "active": true,
            "account_status": "active",
            "account_link_status": "instantly_verified",
            "match_score": 0.95,
            "entity_name": "Sally Mander",
            "account_owner_name": "SALLY D MANDER",
            "web_debit_verified": true
        },
        	{
            "payment_method_type": "virtual_account",
            "virtual_account_id": "b67f2bbf-9255-4339-b6f0-2e7116b69d5b",
            "virtual_account_name": "default",
            "account_number": "9710001234567890",
            "routing_number": "123456780",
            "account_type": "VIRTUAL_ACCOUNT",
            "active": true,
            "closed": false,
            "created_epoch": 1642625366,
            "closed_epoch": "None",
            "ach_credit_enabled": true,
            "ach_debit_enabled": false
      	}      
    ],
    "pagination": {
        "returned_count": 4,
        "total_count": 4,
        "current_page": 1,
        "total_pages": 1
    },
    "status": "SUCCESS", 
    "response_time_ms": "171",
    "reference": "<your unique id>"
}
const filters = {
    "payment_method_types":["blockchain_address"],
    "page":1,
    "per_page":10,
};
//filters object is optional
// OR 
const filters = {};

const res = await sila.getPaymentMethods(userHandle, userPrivateKey,filters);

// Success Response Object

// Data Response
{
    "statusCode": 200,
    "headers": {
        "server": "nginx/1.14.0 (Ubuntu)",
        "date": "Fri, 25 Mar 2022 11:45:08 GMT",
        "content-type": "application/json",
        "content-length": "1232",
        "connection": "close",
        "access-control-allow-origin": "*",
        "access-control-allow-headers": "*",
        "allow": "POST, OPTIONS",
        "vary": "Cookie"
    },
    "data": {
        "success": true,
        "payment_methods": [
        {
            "payment_method_type": "blockchain_address",
            "blockchain_address_id": "10ab47a6-6d59-4950-855b-727c4e23e480",
            "blockchain_address": "0x76fD431757Fd98af7A55fdB8287EB2E172aa62aD",
            "blockchain_network": "ETH",
            "nickname": "node_wallet_1",
            "frozen": false,
            "default": false
        },
        {
            "payment_method_type": "bank_account",
            "bank_account_id": "ad6d3cba-b8e1-4391-a0e6-b9a3caa0227b",
            "account_number": "*9012",
            "routing_number": "123456780",
            "account_name": "default",
            "account_type": "CHECKING",
            "active": true,
            "account_status": "active",
            "account_link_status": "unverified_manual_input",
            "match_score": 0.825,
            "entity_name": "Marquise Heathcote",
            "account_owner_name": "Marquise Heathcote"
        },
        {
            "payment_method_type": "virtual_account",
            "virtual_account_id": "72130e62-1bd8-431d-b88d-2440a27c828a",
            "virtual_account_name": "default_v_account_1",
            "account_number": "************5012",
            "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
        }
    ],
    "pagination": {
        "returned_count": 4,
        "total_count": 4,
        "current_page": 1,
        "total_pages": 1
    },
        "status": "SUCCESS",
        "reference": "1a72fa71-e237-494a-a1e6-8f1b792cd2e6",
        "response_time_ms": "209"
    }
}
payload = {
    "user_handle": "user.silamoney.eth"
}

User.getPaymentMethods(app, payload, eth_private_key)

# Success

{
    "status_code": 200,
    "success": true,
    "payment_methods": [
        {
            "payment_method_type": "blockchain_address",
            "blockchain_address": "0x3999A8eb9B6CD5a3646497A354D2d9f90D42Ea8e",
            "blockchain_network": "ETH",
            "nickname": "My Wallet",
            "frozen": false,
            "default": true
        },
        {
            "payment_method_type": "bank_account",
            "account_number": "*9999",
            "routing_number": "044000000",
            "account_name": "Chase",
            "account_type": "CHECKING",
            "active": true,
            "account_status": "active",
            "account_link_status": "instantly_verified",
            "match_score": 0.95,
            "entity_name": "Sally Mander",
            "account_owner_name": "SALLY D MANDER"
        },
        {
            "payment_method_type": "virtual_account",
            "virtual_account_id": "b67f2bbf-9255-4339-b6f0-2e7116b69d5b",
            "virtual_account_name": "default",
            "account_number": "9710001234567890",
            "routing_number": "123456780",
            "account_type": "VIRTUAL_ACCOUNT",
            "active": true,
            "closed": false,
            "created_epoch": 1642625366,
            "closed_epoch": "None",
            "ach_debit_enabled": true,
            "ach_credit_enabled": false,
        }      
    ],
    "pagination": {
        "returned_count": 4,
        "total_count": 4,
        "current_page": 1,
        "total_pages": 1
    }
    "status": "SUCCESS", 
    "reference": "<your unique id>"
}
Key
PaymentMethodsSearchFilters searchFilters= new PaymentMethodsSearchFilters();
List<PaymentMethodsSearchFilters.PaymentMethodsTypesEnum> paymentMethodsTypesEnumList=new ArrayList<>();
paymentMethodsTypesEnumList.add(PaymentMethodsSearchFilters.PaymentMethodsTypesEnum.BLOCKCHAIN_ADDRESS);
paymentMethodsTypesEnumList.add(PaymentMethodsSearchFilters.PaymentMethodsTypesEnum.BANK_ACCOUNT);
paymentMethodsTypesEnumList.add(PaymentMethodsSearchFilters.PaymentMethodsTypesEnum.CARD);
searchFilters.setPaymentMethodsTypes(paymentMethodsTypesEnumList);
searchFilters.setPage(1);
searchFilters.setPerPage(20);

ApiResponse response = api.getPaymentMethods("userHandle", "userPrivateKey",searchFilters); // searchFilters is optional

// Success Response Object
System.out.println(response.getStatusCode()); // 200
GetPaymentMethodsResponse parsedResponse = (GetPaymentMethodsResponse) response.getData();
System.out.println(parsedResponse.getSuccess()); // true
System.out.println(parsedResponse.getStatus()); // SUCCESS
System.out.println(parsedResponse.getPagination().getReturnedCount());
System.out.println(parsedResponse.getPagination().getTotalCount());
System.out.println(parsedResponse.getPagination().getCurrentPage());
System.out.println(parsedResponse.getPagination().getTotalPages());
System.out.println(parsedResponse.getPaymentMethods()); // List of payment methods
System.out.println(parsedResponse.getPaymentMethods().get(0).getPaymentMethodType()); // Payment method type: blockchain_address/bank_account/card
//Payment method type is blockchain_address
System.out.println(parsedResponse.getPaymentMethods().get(0).getBlockchainAddressId()); // 0x3999A8eb9B6CD5a3646497A354D2d9f90D42Ea8e
System.out.println(parsedResponse.getPaymentMethods().get(0).getBlockChainAddress());  // 
System.out.println(parsedResponse.getPaymentMethods().get(0).getBlockChainNetwork()); // ETH
System.out.println(parsedResponse.getPaymentMethods().get(0).getNickname()); // My Wallet
System.out.println(parsedResponse.getPaymentMethods().get(0).isDefaultPayment()); // true
System.out.println(parsedResponse.getPaymentMethods().get(0).isFrozen()); // false
//Payment method type is bank_account
System.out.println(parsedResponse.getPaymentMethods().get(0).getBankAccountId());
System.out.println(parsedResponse.getPaymentMethods().get(0).getAccountNumber());
System.out.println(parsedResponse.getPaymentMethods().get(0).getRoutingNumber());
System.out.println(parsedResponse.getPaymentMethods().get(0).getAccountName());
System.out.println(parsedResponse.getPaymentMethods().get(0).getAccountType());
System.out.println(parsedResponse.getPaymentMethods().get(0).getAccountStatus());
System.out.println(parsedResponse.getPaymentMethods().get(0).getAccountLinkStatus());
System.out.println(parsedResponse.getPaymentMethods().get(0).getMatchScore());
System.out.println(parsedResponse.getPaymentMethods().get(0).getEntityName());
System.out.println(parsedResponse.getPaymentMethods().get(0).getAccountOwnerName());
//Payment method type is virtual_account
System.out.println(parsedResponse.getPaymentMethods().get(0).getVirtualAccountId());
System.out.println(parsedResponse.getPaymentMethods().get(0).getVirtualAccountName());
System.out.println(parsedResponse.getPaymentMethods().get(0).getRoutingNumber());
System.out.println(parsedResponse.getPaymentMethods().get(0).getAccountName());
System.out.println(parsedResponse.getPaymentMethods().get(0).getAccountType());
System.out.println(parsedResponse.getPaymentMethods().get(0).getCreated_epoch());
System.out.println(parsedResponse.getPaymentMethods().get(0).getClosedEpoch());
System.out.println(parsedResponse.getPaymentMethods().get(0).isClosed());
System.out.println(parsedResponse.getPaymentMethods().get(0).isAchCreditEnabled()); // true
System.out.println(parsedResponse.getPaymentMethods().get(0).isAchDebitEnabled()); // false

System.out.println(parsedResponse.getPaymentMethods().get(0).isActive());
use Silamoney\Client\Domain\SearchFilters;

// Load your information
$userHandle = 'user.silamoney.eth';
$userPrivateKey = 'some private key'; // Hex format
$filters = new SearchFilters();

// Call the api
$response = $client->getPaymentMethods($userHandle, $userPrivateKey, $filters);

// Response
echo $response->getStatusCode();
echo $response->getData()->status;
echo $response->getData()->success;
//Load your informations
var user = DefaultConfig.FirstUser;
ApiResponse<object> response = api.GetPaymentMethods(user.UserHandle, user.PrivateKey);

// Success Object Response

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

Console.WriteLine(((GetPaymentMethodsResponse)response.Data).Pagination.ReturnedCount);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).Pagination.TotalCount);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).Pagination.CurrentPage);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).Pagination.TotalPages);


Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods); // List of payment methods
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].PaymentMethodType); // Payment method type: blockchain_address/bank_account/card
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].Active);

//Payment method type is blockchain_address
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].BlockchainAddressId); // 0x3999A8eb9B6CD5a3646497A354D2d9f90D42Ea8e
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].BlockChainAddress);  // 
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].BlockChainNetwork); // ETH
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].NickName); // My Wallet
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].IsDefault); // true
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].Frozen); // false

//Payment method type is bank_account
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].BankAccountId);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].AccountNumber);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].RoutingNumber);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].AccountName);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].AccountType);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].AccountStatus);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].AccountLinkStatus);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].MatchScore);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].EntityName);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].AccountOwnerName);

//Payment method type is virtual_account
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].VirtualAccountId);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].VirtualAccountName);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].RoutingNumber);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].AccountName);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].AccountType);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].CreatedEpoch);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].ClosedEpoch);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].Closed);
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].AchCreditEnabled); // true/false
Console.WriteLine(((GetPaymentMethodsResponse)response.Data).PaymentMethods[0].AchDebitEnabled); // true/false
KeyTypeDescription
headerJSON objectRequired. Requires these keys in JSON format: created, auth_handle, user_handle. See the /check_handle endpoint for the complete list of fields in this object.
search_filtersJSON objectOptional. Allows filtering results.
search_filters.
payment_method_types
ArrayOptional. Choice field.
Example: ["blockchain_address", "bank_account"]
search_filters.pageIntegerOptional. Min Length 1 Default: 1
search_filters.
per_page
IntegerOptional. Min 1
Max 100
Default per page 20

Responses

Status Codesuccess AttributeDescription
200trueResponse successfully rendered.
400falseBad request format - check validation_details for more information.
403falseauthsignature or usersignature header was absent or incorrect.