/get_transactions

Gets array of user handle's ACH Debit transactions (issue_sila), ACH Credit transactions (redeem_sila), and Digital Wallet to Digital Wallet (transfer_sila) transactions with detailed status information.

Requests

The request body at this endpoint is the get_transactions_msg JSON object.

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

Results are paginated; by default, the first 20 results are returned in descending order of date transaction was started. You can request up to 100 results per page ("per_page": 100) and sort them in ascending order of the date the transaction was started ("sort_ascending": true) if desired.

The page and per_page keys can instead be specified in query parameters (e.g. by appending ?page=2&per_page=2 or ?per_page=100 to the end of the URL). If these keys are already specified in the request body, the request body keys take precedence. This allows a requester to fetch several pages using the same signatures if desired.

Authorization / Authentication

Apps using Access Token Authorization

Use a valid access token in an Authorization: Bearer request header.

See Authenticating with an Access Token for more details.

Apps using ECDSA Authentication

The auth signature header is required for this request. The user signature header was recently made optional if you would like to get transactions for all users. If you choose to omit the user signature header, you'll also need to omit the user_handle from the Header object.

See the section on ECDSA Authentication for more detail about ECDSA signature generation.

For other endpoints, the reference key may be omitted from the Header object or be null. However, it is required to exist in the Header and not be set to null for the get_transactions endpoint.

Note - We recently renamed the field auth_handle to app_handle. For backward compatibility, auth_handle is still valid but has been removed from our documentation.

POST /0.2/get_transactions HTTP/1.1
Host: sandbox.silamoney.com
Content-Type: application/json
// if using OAuth2
Authorization: Bearer [GENERATED JWT TOKEN HERE]
// if using ECDSA
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]
usersignature: [GENERATED USERSIGNATURE HEX STRING HERE] #optional

{
  "header": {
    "created": 1234567890, 
    "app_handle": "handle.silamoney.eth", 
    "user_handle":"user.silamoney.eth", 
    "version": "0.2", 
    "reference": "<your unique id>"
  }, 
  "message": "get_transactions_msg",
  "search_filters": {
    "transaction_id": "some UUID string assigned by Sila",
    "reference_id": "<your unique id>",
    "show_timelines": true,
    "sort_ascending": false,
    "statuses": ["queued", "pending", "pending_confirmation", "reversed", "failed", "success", "rollback", "review"],
    "start_epoch": 1234567860,
    "end_epoch": 1234567891,
    "page": 1,
    "per_page": 20,
    "transaction_types": ["issue", "redeem", "transfer"],
    "bank_account_name": "the name of the bank account",
    "processing_type": "INSTANT_SETTLEMENT",
    "payment_method_id": "any payment method id from get_payment_methods",
    "source_id": "UUID string assigned by Sila",
    "destination_id": "UUID string assigned by Sila",
    "effective_date": "2021-10-22",
    "effective_epoch": 1634860800,
    "wallet_address": "wallet_address" // legacy, backward compatibility only
  }
}

***

HTTP/1.1 200 OK

{
    "success": true,
    "status": "SUCCESS", 
    "reference": "<your unique id>",
    "response_time_ms": "171", 
    "page": 1,
    "returned_count": 4,
    "total_count": 4,
    "pagination": {
        "returned_count": 4,
        "total_count": 4,
        "current_page": 1,
        "total_pages": 1
    },
    "transactions": [
        {
            "user_handle": "user",
            "reference_id": "<your unique id>",
            "transaction_id": "12345678-abcd-1234-abcd-1234567890aa",
            "transaction_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdee",
            "transaction_type": "transfer",
            "provider_tx_id": null,
            "amount": 100,
            "status": "success",
            "extended_status": null,
            "provider_status": null,
            "created": "2020-03-09T17:45:59.709910Z",
            "last_update": "2020-03-09T17:45:59.709920Z",
            "created_epoch": 1582754399,
            "last_update_epoch": 1582754414,
            "descriptor": "",           
            "descriptor_ach": "",
            "IMAD": "",
            "OMAD": "",
            "ach_name": "",
            "destination_address": "0xF08D203754F8960C3655Aa00Bde006DB78fdBf5d",
            "destination_handle": "user",
            "handle_address": "0x65a796a4bD3AaF6370791BefFb1A86EAcfdBc3C1",
            "source_id": "37559d1e-2848-4109-a7d8-a8b250c6e863",
            "destination_id": "ebd20435-02d4-4fe2-8573-777e712974e8",
            "sec_code": "PPD",
            "timeline": [
                {
                    "date": "2020-03-09T17:45:59.716909Z",
                    "date_epoch": 1582754399,
                    "status": "queued"
                },
                {
                    "date": "2020-03-09T17:45:59.727218Z",
                    "date_epoch": 1582754400,
                    "status": "pending"
                },
                {
                    "date": "2020-03-09T17:45:59.728691Z",
                    "date_epoch": 1582754414,
                    "status": "success"
                }
            ]
        },
        {
            "user_handle": "user",
            "reference_id": "<your unique id>",
            "transaction_id": "12345678-abcd-1234-abcd-1234567890ab",
            "transaction_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
            "transaction_type": "issue",
            "amount": 1000,
            "bank_account_name": "default",
            "handle_address": "0x65a796a4bD3AaF6370791BefFb1A86EAcfdBc3C1",
            "status": "success",
            "extended_status": null,
            "provider_status": null,
            "wallet_funds_status": null, // legacy, backwards compatibility only
            "created": "2019-04-03T00:00:00.000Z",
            "last_update": "2019-04-03T00:00:00.003Z",
            "created_epoch": 1234567890,
            "last_update_epoch": 1234567899,
            "descriptor": "POS purchase in-store",           
            "descriptor_ach": "POS purcha",
             "IMAD": "",
            "OMAD": "",
            "ach_name": "Your Store Name",
            "processing_type": "STANDARD_ACH",
            "submitted": "2021-01-22T17:05:48.425467+00:00",
            "submitted_epoch": 1611335148,
            "trace_number": null,
            "addenda": null,
            "source_id": "37559d1e-2848-4109-a7d8-a8b250c6e863",
            "destination_id": "ebd20435-02d4-4fe2-8573-777e712974e8",
            "timeline": [
                {
                    "date": "2019-04-03T00:00:00.000Z",
                    "date_epoch": 1234567890,
                    "status": "queued"
                },
                {
                    "date": "2019-04-03T00:00:00.001Z",
                    "date_epoch": 1234567890,
                    "status": "pending"
                },
                {
                    "date": "2019-04-03T00:00:00.002Z",
                    "date_epoch": 1234567890,
                    "status": "pending"
                },
                {
                    "date": "2019-04-03T00:00:00.003Z",
                    "date_epoch": 1234567899,
                    "status": "success"
                }
            ]
        },
        {
            "user_handle": "registration-test-2020-sept2",
            "reference_id": "<your unique id>",
            "transaction_id": "eff589b5-b12c-4276-81db-5c238250ae68",
            "transaction_hash": "",
            "transaction_type": "issue",
            "amount": 420,
            "status": "failed",
            "extended_status": null,
            "provider_status": null,,
            "created": "2021-01-22T17:05:15.313627+00:00",
            "last_update": "2021-01-22T17:07:15.332248+00:00",
            "created_epoch": 1611335115,
            "last_update_epoch": 1611335235,
            "descriptor": "",
            "descriptor_ach": "",
            "ach_name": "",
            "handle_address": "0x0AaaF8761c1B246D5EAB358Abd0D6c4B769AF042",
            "bank_account_name": "plaid",
            "processing_type": "STANDARD_ACH",
            "submitted": "2021-01-22T17:05:48.425467+00:00",
            "submitted_epoch": 1611335148,
            "trace_number": null,
            "addenda": null,
            "error_code": "ACH_RETURN",
            "error_msg": "An ACH return was received for this transaction.",
            "error_description": "possible additional error message.",
            "return_code": "R01",
            "return_desc": "Insufficient funds",
            "source_id": "37559d1e-2848-4109-a7d8-a8b250c6e863",
            "destination_id": "ebd20435-02d4-4fe2-8573-777e712974e8",
            "sec_code": "WEB",
            "timeline": [
                {
                    "date": "2021-01-22T17:05:15.313627+00:00",
                    "date_epoch": 1611335115,
                    "status": "queued",
                    "provider_status": null
                },
                {
                    "date": "2021-01-22T17:05:22.091482+00:00",
                    "date_epoch": 1611335122,
                    "status": "pending",
                    "provider_status": null
                },
                {
                    "date": "2021-01-22T17:05:27.651380+00:00",
                    "date_epoch": 1611335127,
                    "status": "pending",
                    "provider_status": null
                },
                {
                    "date": "2021-01-22T17:05:49.753878+00:00",
                    "date_epoch": 1611335149,
                    "status": "pending",
                    "provider_status": null
                },
                {
                    "date": "2021-01-22T17:07:15.312433+00:00",
                    "date_epoch": 1611335235,
                    "status": "failed",
                    "provider_status": null
                }
            ]
        },
        {
            "user_handle": "user",
            "reference_id": "<your unique id>",
            "transaction_id": "08792923-19c0-415a-b013-790324d22d4d",
            "transaction_hash": "",
            "transaction_type": "issue",
            "amount": 100,
            "provider_tx_id": null,
            "status": "success",
            "extended_status": null,
            "provider_status": null,
            "created": "2022-01-14T06:06:26.674258+00:00",
            "last_update": "2022-01-14T06:38:31.137433+00:00",
            "created_epoch": 1642140386,
            "last_update_epoch": 1642142311,
            "descriptor": "",
            "descriptor_ach": "",

            "ach_name": "",
            "sila_ledger_type": "Internal",
            "handle_address": "0xF8ea3da805d9Ac83181B00d0EdFeddD4aD91E757",
            "ledger_account_id": "590be7da-b683-4511-85ee-5112d6003e52",
            "bank_account_name": "test bank account",
            "processing_type": "INSTANT_SETTLEMENT",
            "submitted": "2022-01-14T06:37:00.206201+00:00",
            "submitted_epoch": 1642142220,
            "trace_number": "049211613157098",
            "addenda": "b1b545f6-6b0e-437e-8825-33813523ad41",
            "sec_code": "PPD",
            "source_id": "37559d1e-2848-4109-a7d8-a8b250c6e863",
            "destination_id": "ebd20435-02d4-4fe2-8573-777e712974e8"
        }
    ]
}
let userHandle = null;
let walletPrivateKey = null;
const res = await Sila.getTransactions(userHandle, walletPrivateKey, filters); // Filters are optional. Use Sila.TransactionFilters for a complete list of possible filters
//userHandle and walletPrivateKey is also optional

let userHandle = 'UserHandle';
let walletPrivateKey = 'WalletPrivateKey';
const res = await Sila.getTransactions(userHandle, walletPrivateKey, filters); // Filters are optional. Use Sila.TransactionFilters for a complete list of possible filters

// Success Response Object
console.log(res.statusCode); // 200
console.log(res.data.success); // TRUE
console.log(res.data.status); // TRUE
console.log(res.data.page); // The number of page
console.log(res.data.returned_count);
console.log(res.data.total_count);
console.log(res.data.pagination);
console.log(res.data.pagination.returned_count);
console.log(res.data.pagination.total_count);
console.log(res.data.pagination.current_page);
console.log(res.data.pagination.total_pages);
console.log(res.data.transactions); // Transactions array
console.log(res.data.transactions[0].user_handle);
console.log(res.data.transactions[0].reference_id);
console.log(res.data.transactions[0].transaction_id);
console.log(res.data.transactions[0].transaction_hash);
console.log(res.data.transactions[0].transaction_type);
console.log(res.data.transactions[0].sila_amount);
console.log(res.data.transactions[0].status);
console.log(res.data.transactions[0].usd_status);
console.log(res.data.transactions[0].token_status);
console.log(res.data.transactions[0].created);
console.log(res.data.transactions[0].last_update);
console.log(res.data.transactions[0].created_epoch);
console.log(res.data.transactions[0].last_update_epoch);
console.log(res.data.transactions[0].descriptor);
console.log(res.data.transactions[0].descriptor_ach);
console.log(res.data.transactions[0].ach_name);
console.log(res.data.transactions[0].destination_address);
console.log(res.data.transactions[0].destination_handle);
console.log(res.data.transactions[0].handle_address);
console.log(res.data.transactions[0].timeline);
console.log(res.data.transactions[0].timeline[0].date);
console.log(res.data.transactions[0].timeline[0].date_epoch);
console.log(res.data.transactions[0].timeline[0].status);
console.log(res.data.transactions[0].timeline[0].usd_status);
console.log(res.data.transactions[0].timeline[0].token_status);
console.log(res.data.transactions[0].timeline[0].provider_status);

console.log(res.data.transactions[0].sec_code);

// New option fields are exposed in reponse
// They are found in different type of transaction

console.log(res.data.transactions[0].source_id);
console.log(res.data.transactions[0].destination_id);
console.log(res.data.transactions[0].effective_date);
console.log(res.data.transactions[0].effective_epoch);

console.log(res.data.transactions[0].sila_ledger_type);
console.log(res.data.transactions[0].destination_sila_ledger_type);
console.log(res.data.transactions[0].ledger_account_id);
console.log(res.data.transactions[0].destination_ledger_account_id);


console.log(res.data.transactions[0].IMAD);
console.log(res.data.transactions[0].OMAD);
console.log(res.data.transactions[0].provider_tx_id);
console.log(res.data.transactions[0].provider_status);
payload={

        "user_handle": "user.silamoney.eth",        #Optional
        "search_filters": {...}                     #Optional: See below for potential values.
    }

User.getTransactions(silaApp,payload,user_private_key)        #Requires 256 bit ethereum private key                      

### Success Response Object
{
    "status_code": 200,
    "success": True,
    "status": "SUCCESS",
    "page": 1,
    "returned_count": 3,
    "total_count": 3,
    "pagination": {
        "returned_count": 3,
        "total_count": 3,
        "current_page": 1,
        "total_pages": 1
    },
    "transactions": [
        {
            "user_handle": "user",
            "reference_id": "",
            "transaction_id": "12345678-abcd-1234-abcd-1234567890aa",
            "transaction_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdee",
            "transaction_type": "transfer",
            "sila_amount": 100,
            "status": "success",
            "usd_status": "queued",
            "token_status": "success",
            "created": "2020-03-09T17:45:59.709910Z",
            "last_update": "2020-03-09T17:45:59.709920Z",
            "created_epoch": 1582754399,
            "last_update_epoch": 1582754414,
            "descriptor": "",
            "descriptor_ach": "",
            "ach_name": "",
            "destination_address": "0xF08D203754F8960C3655Aa00Bde006DB78fdBf5d",
            "destination_handle": "user",
            "handle_address": "0x65a796a4bD3AaF6370791BefFb1A86EAcfdBc3C1",
            "source_id": 782bbd8c-ae27-4fb6-89e8-2675a1791382, # Optional
            "destination_id": ecd4984f-6e3d-444b-9532-3fb3828acb8c # Optional
            "effective_date": 1582754414, # Optional
            "effective_epoch": "2020-03-09T17:45:59.709920Z", # Optional
            "sec_code": "WEB",
            "IMAD": "", 
            "OMAD": "", 
            "provider_tx_id": "", 
            "provider_status": "",
            "timeline": [
                {
                    "date": "2020-03-09T17:45:59.716909Z",
                    "date_epoch": 1582754399,
                    "status": "queued",
                    "usd_status": "queued",
                    "token_status": "queued",
                    "provider_status": "",

                },
                ...
            ]
        },
        ...
    ]
}

### Failure Response Object
{
    status: 'FAILURE'
}
SearchFilters filters = new SearchFilters();
filters.setTransactionId("some UUID string assigned by Sila");
filters.setReferenceId("The reference string sent in the header object when transaction request was made");
filters.showTimelines();// for true and by default false
filters.sortAscending();// for true and by default false
filters.setMaxSilaAmount(1300);
filters.setMinSilaAmount(1000);
List<SearchFilters.StatusesEnum> statuses=new ArrayList<>();
statuses.add(SearchFilters.StatusesEnum.QUEUED); // queued
statuses.add(SearchFilters.StatusesEnum.PENDING); // pending
statuses.add(SearchFilters.StatusesEnum.PENDING_CONFIRMATION); // pending_confirmation
statuses.add(SearchFilters.StatusesEnum.REVERSED); // reversed
statuses.add(SearchFilters.StatusesEnum.FAILED); // failed
statuses.add(SearchFilters.StatusesEnum.SUCCESS); // success
statuses.add(SearchFilters.StatusesEnum.ROLLBACK); // rollback
statuses.add(SearchFilters.StatusesEnum.REVIEW); // review
filters.setStatuses(statuses);
filters.setStartEpoch(1234567860);
filters.setEndEpoch(1234567891);
filters.setPage(1);
filters.setPerPage(20);
List<SearchFilters.TransactionTypesEnum> transactionTypesEnums=new ArrayList<>();
transactionTypesEnums.add(SearchFilters.TransactionTypesEnum.ISSUE);
transactionTypesEnums.add(SearchFilters.TransactionTypesEnum.REDEEM);
transactionTypesEnums.add(SearchFilters.TransactionTypesEnum.TRANSFER);
filters.setTransactionTypes(transactionTypesEnums);
filters.setBankAccountName("bank account name");
filters.setSourceId("source account id");
filters.setDestinationId("destination account id");
filters.setProcessingType(ProcessingTypeEnum.INSTANT_SETTLEMENT); // INSTANT_SETTLEMENT / WIRE
filters.setPaymentMethodId("any payment method id from get_payment_methods");

ApiResponse response = api.getTransactions("userHandle", filters, "userPrivateKey"); // userHandle and userPrivateKey are optional.

System.out.println(response.getStatusCode()); // 200
GetTransactionsResponse parsedResponse = (GetTransactionsResponse) response.getData();
System.out.println(parsedResponse.success); // true
System.out.println(parsedResponse.status); // SUCCESS
System.out.println(parsedResponse.pagination.getReturnedCount());
System.out.println(parsedResponse.pagination.getTotalCount());
System.out.println(parsedResponse.pagination.getCurrentPage());
System.out.println(parsedResponse.pagination.getTotalPages());
System.out.println(parsedResponse.transactions.get(0).userHandle);
System.out.println(parsedResponse.transactions.get(0).referenceId);
System.out.println(parsedResponse.transactions.get(0).transactionId);
System.out.println(parsedResponse.transactions.get(0).transactionHash);
System.out.println(parsedResponse.transactions.get(0).transactionType);
System.out.println(parsedResponse.transactions.get(0).silaAmount);
System.out.println(parsedResponse.transactions.get(0).status);
System.out.println(parsedResponse.transactions.get(0).usdStatus);
System.out.println(parsedResponse.transactions.get(0).tokenStatus);
System.out.println(parsedResponse.transactions.get(0).created);
System.out.println(parsedResponse.transactions.get(0).lastUpdate);
System.out.println(parsedResponse.transactions.get(0).createdEpoch);
System.out.println(parsedResponse.transactions.get(0).lastUpdateEpoch);
System.out.println(parsedResponse.transactions.get(0).descriptor);
System.out.println(parsedResponse.transactions.get(0).descriptorAch);
System.out.println(parsedResponse.transactions.get(0).achName);
System.out.println(parsedResponse.transactions.get(0).timeline); // List of changes on the transaction
System.out.println(parsedResponse.transactions.get(0).timeline.get(0).date);
System.out.println(parsedResponse.transactions.get(0).timeline.get(0).dateEpoch);
System.out.println(parsedResponse.transactions.get(0).timeline.get(0).status);
System.out.println(parsedResponse.transactions.get(0).timeline.get(0).usdStatus);
System.out.println(parsedResponse.transactions.get(0).timeline.get(0).tokenStatus);
System.out.println(parsedResponse.transactions.get(0).timeline.get(0).providerStatus);
if (parsedResponse.transactions.get(0).transactionType.equals("transfer")) {
    System.out.println(parsedResponse.transactions.get(0).destinationAddress);
    System.out.println(parsedResponse.transactions.get(0).destinationHandle);
    System.out.println(parsedResponse.transactions.get(0).handleAddress);
} else {
    System.out.println(parsedResponse.transactions.get(0).processingType);
}
System.out.println(parsedResponse.transactions.get(0).sourceId);
System.out.println(parsedResponse.transactions.get(0).destinationId);
System.out.println(parsedResponse.transactions.get(0).silaLedgerType);  
System.out.println(parsedResponse.transactions.get(0).destinationSilaLedgerType);
System.out.println(parsedResponse.transactions.get(0).ledgerAccountId); 
System.out.println(parsedResponse.transactions.get(0).destinationLedgerAccountId);
System.out.println(parsedResponse.transactions.get(0).effectiveDate);   
System.out.println(parsedResponse.transactions.get(0).effectiveEpoch);
System.out.println(parsedResponse.transactions.get(0).childTransactions); // child transactions detail
System.out.println(parsedResponse.transactions.get(0).submitted);
System.out.println(parsedResponse.transactions.get(0).submittedEpoch);
System.out.println(parsedResponse.transactions.get(0).errorMsg);
System.out.println(parsedResponse.transactions.get(0).secCode);
System.out.println(parsedResponse.transactions.get(0).IMAD);
System.out.println(parsedResponse.transactions.get(0).OMAD);
System.out.println(parsedResponse.transactions.get(0).providerTxId);
System.out.println(parsedResponse.transactions.get(0).providerStatus);
use Silamoney\Client\Domain\SearchFilters;

// Load your information
$userHandle = 'user.silamoney.eth';
$filters = new SearchFilters();

$processingType = "INSTANT_SETTLEMENT"; // Optional. All possible processing types: STANDARD, SAME_DAY, INSTANT, CARD, INSTANT_SETTLEMENT & WIRE.

$filters->setProcessingType($processingType); // Optional

$PaymentMethodId = "Payment Method Id"; // Optional
$filters->setPaymentMethodId($PaymentMethodId);// Optional

// Call the api
$response = $client->getTransactions($userHandle, $filters);
// or without $userHandle
$response = $client->getTransactions(null, $filters);

//Success 200
echo $response->getStatusCode(); // 200
$data = $response->getData();
echo $data->success; // TRUE
$data->status; // SUCCESS
$data->page; // The current page
$data->returnedCount; // The amount of results returned in this request
$data->totalCount; // The total amount of results that satisfies the filters
$transactions = $data->transactions; // Array of transactions
$transactions[0]->userHandle; // The user handle
$transactions[0]->referenceId; // The transaction reference
$transactions[0]->transactionId; // The transaction id
$transactions[0]->transactionHash; // The transaction hash
$transactions[0]->transactionType; // The transaction type
$transactions[0]->silaAmount; // The amount of sila tokens in the transaction
$transactions[0]->bankAccountName; // The bank account used in the transaction
$transactions[0]->status; // The current status of the transaction
$transactions[0]->usdStatus; // The status of the transaction
$transactions[0]->tokenStatus; // The status of the token
$transactions[0]->created; // The date of creation of the transaction
$transactions[0]->lastUpdate; // The date of last modification of the transaction
$transactions[0]->createdEpoch;
$transactions[0]->lastUpdateEpoch;
$transactions[0]->descriptor; // The descriptor of the transaction
$transactions[0]->descriptorAch;
$transactions[0]->achName;
$transactions[0]->destinationAddress; // Just for 'transfer' transactions.
$transactions[0]->destinationHandle; // Just for 'transfer' transactions.
$transactions[0]->handleAddress;
$transactions[0]->processingType; // Just for 'issue' and 'redeem' transactions.
$transactions[0]->returnCode; //For 'issue' and 'redeem' transactions only where there is an error_code field matching "AC_RETURN".
$transactions[0]->returnDesc; //For 'issue' and 'redeem' transactions only where there is an error_code field matching "AC_RETURN".
$transactions[0]->traceNumber; //For 'issue' and 'redeem' transactions.
$transactions[0]->addenda; //For 'issue' and 'redeem' transactions.
$transactions[0]->submitted;
$transactions[0]->submittedEpoch;
$transactions[0]->secCode;
$transactions[0]->IMAD;
$transactions[0]->OMAD;
$transactions[0]->providerTxId;
$transactions[0]->providerStatus;
$transactions[0]->timeline;
$transactions[0]->timeline[0]->date;
$transactions[0]->timeline[0]->dateEpoch;
$transactions[0]->timeline[0]->status;
$transactions[0]->timeline[0]->usdStatus;
$transactions[0]->timeline[0]->tokenStatus;
$transactions[0]->timeline[0]->providerStatus;
$transactions[0]->childTransactions;
$transactions[0]->childTransactions[0]->reference_id;
$transactions[0]->childTransactions[0]->transaction_id;
$transactions[0]->childTransactions[0]->transaction_type;
$transactions[0]->childTransactions[0]->sila_amount;
$transactions[0]->childTransactions[0]->status;
//Load your informations
string userHandle = "your-user-handle";
SearchFilters filters = new SearchFilters();
filters.TransactionId = "some UUID string assigned by Sila";
filters.ReferenceId = "The reference string sent in the header object when transaction request was made";
filters.ShowTimelines = true;
filters.SortAscending = false;
filters.MaxSilaAmount = 1300;
filters.MinSilaAmount = 1000;
filters.SetStatuses(new Statuses[] { Statuses.Queued, Statuses.Pending, Statuses.Failed, Statuses.Success, Statuses.Rollback, Statuses.Review });
filters.StartEpoch = 1234567860;
filters.EndEpoch = 1234567891;
filters.Page = 1;
filters.PerPage = 20;
filters.SetTransactionTypes(new TransactionTypes[] { TransactionTypes.Issue, TransactionTypes.Redeem, TransactionTypes.Transfer });
filters.BankAccountName = "bank account name"; //if passing CardName parameter than no need to pass BankAccountName
filters.CardName = "visa"; //if passing BankAccountName parameter then no need to pass CardName
filters.SourceId = "UUID of virtual account - represents the source - NEW!";  // optional
filters.DestinationId = "UUID of virtual account - represents the destination - NEW!"; // optional
filters.ProcessingType = ProcessingType.Wire; // optional - Sameday/Card/InstantACH/Standard/InstantSettlement/Wire
filters.PaymentMethodId = "f6e57c71-dff8-47fb-bb4d-df7ce501d6ef"; //"any payment method id from get_payment_methods"

ApiResponse<object> response = api.GetTransactions(userHandle, filters); // With userHandle

or

ApiResponse<object> response = api.GetTransactions(filters); // Without userHandle 

// Success Object Response

Console.WriteLine(response.StatusCode); // 200
Console.WriteLine(((GetTransactionsResult)response.Data).Page); // Page Number  
Console.WriteLine(((GetTransactionsResult)response.Data).ReturnedCount); // Pages returned
Console.WriteLine(((GetTransactionsResult)response.Data).Success); // Status of the request
Console.WriteLine(((GetTransactionsResult)response.Data).TotalCount); // Total of transactions returned
Console.WriteLine(((GetTransactionsResult)response.Data).ResponseTimeMs); // API responses time

Console.WriteLine(((GetTransactionsResult)response.Data).Transactions); // Transactions array
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].UserHandle);  // The user handle
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].ReferenceId); // The transaction reference
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TransactionId);  // The transaction id
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TransactionHash); // The transaction hash
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TransactionType); // The transaction type
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].SilaAmount); // The amount of sila tokens in the transaction
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].BankAccountName); // The bank account used in the transaction
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].CardName); // The CardName used in the transaction
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].Status); // The current status of the transaction
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].UsdStatus); // The status of the transaction
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TokenStatus); // The status of the token
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].Created); // The date of creation of the transaction
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].LastUpdate); // The date of last modification of the transaction
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].CreatedEpoch);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].LastUpdateEpoch);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].Descriptor); // The descriptor of the transaction
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].DescriptorAch);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].AchName);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].DestinationAddress); // Just for 'transfer' transactions.
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].DestinationHandle); // Just for 'transfer' transactions.
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].HandleAddress);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].ProcessingType); // Just for 'issue' and 'redeem' transactions.
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].ReturnCode); //For 'issue' and 'redeem' transactions only where there is an error_code field matching "AC_RETURN".
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].ReturnDesc); //For 'issue' and 'redeem' transactions only where there is an error_code field matching "AC_RETURN".
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TraceNumber); //For 'issue' and 'redeem' transactions.
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].Addenda); //For 'issue' and 'redeem' transactions.
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].ChildTransactions); //String array list
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].SecCode); //3 letter code like “WEB” or “PPD”, etc.

Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].EffectiveDate);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].EffectiveEpoch);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].SilaLedgerType);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].SourceId);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].DestinationId);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].DestinationSilaLedgerType);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].LedgerAccountId);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].DestinationLedgerAccountId);

Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].IMAD); // "20210913MMQFMPD1000540"
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].OMAD); // "20210913L1B77D1C005996"
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].ProviderTxId); // "JW2QGEHYI0"
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].ProviderStatus); // "initiated"


Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TimeLines);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TimeLines[0].Date);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TimeLines[0].DateEpoch);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TimeLines[0].Status);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TimeLines[0].UsdStatus);
Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TimeLines[0].TokenStatus);

Console.WriteLine(((GetTransactionsResult)response.Data).Transactions[0].TimeLines[0].ProviderStatus); // "complete"
KeyTypeDescription
headerJSON objectRequired. Requires these keys in JSON format: created, app_handle. , user_handle is optional. See the /check_handle endpoint for the complete list of fields in this object.
search_filtersJSON objectOptional. Allows filtering results.
search_filters.
transaction_id
StringOptional. The format should be a UUID string.
Example: 5167160d-9d12-4fa8-a8cd-302507782de0
search_filters.
reference_id
StringOptional. The reference id that was sent in the header object when the transaction request was made.
search_filters.
show_timelines
BooleanOptional. Default: false
Example: true
search_filters.
sort_ascending
BooleanOptional. Default: false
Example: false
search_filters.
statuses
ArrayOptional. Choice field.
Example: ": {
"h-0": "Key",
"h-1": "Type",
"h-2": "Description",
"h-3": "Mandatory",
"0-0
search_filters.
start_epoch
IntegerOptional. UTC Unix Timestamp. Minimum 0
Example: 1234567860
search_filters.
end_epoch
IntegerOptional. UTC Unix Timestamp. Minimum 0
Example: 1234567891
search_filters.pageIntegerOptional. Min Length 1 Default: 1
search_filters.
per_page
IntegerOptional. Min 1
Max 100
Default per page 20
search_filters.
transaction_types
ArrayOptional. Choice field.
Example: ": {
"h-0": "Key",
"h-1
search_filters.
bank_account_name
StringOptional. The name of the bank account. Max length 255.
Example: "bank_name"
search_filters.processing_typeArrayOptional. To filter Instant Settlement transactions, use INSTANT_SETTLEMENT
search_filters.payment_method_idStringOptional. To filter on a single payment method (wallet, bank account, virtual account, etc.)
search_filters.source_idStringOptional. The format should be a UUID string.
Example: 27579abe-e3f3-42c7-98c5-981f96496fdd
search_filters.destination_idStringOptional. The format should be a UUID string.
Example: b2cadf03-01d0-4c86-a4fe-62d060d9129d
search_filters.wallet_addressStringOptional.

Backwards compatibility only. Disregard if not already utilizing.
search_filters.effective_epochUnix TimestampOptional. UTC Unix Timestamp. Minimum 0
Example: 1234567860
search_filters.effective_dateDateOptional.
Example: 2021-10-22

Responses

The error_code and error_msg fields are returned for failed, manual review, or rollback transactions of all types only. If the error_code field is returned, you can refer to the Transaction Error Codes page to check what it means. The error_msg field is a human-readable description of the error.

The descriptor is used to describe the transaction. A shortened form of the descriptor (descriptor_ach) will appear on the end-user's bank statement.

The descriptor_ach is the first ten characters of the descriptor value, used to describe the transaction on the end-user’s bank statement. This is truncated from the descriptor field (100 chars max).

The ach_name is a 16 character field which appears on the end-user’s bank statement and reflects the company name responsible for the transaction.

The processing_type field is only returned for issue and redeem transactions. Possible values are in ["SAME_DAY_ACH", "STANDARD_ACH"]. "CARD_CKO" is a possible value for issue transactions. By default, all issue and redeem transactions are sent as standard ACH transactions ("STANDARD_ACH"). For more details, see the ACH processing schedule page.

The submitted and submitted_epoch fields are returned for issue and redeem transactions only. If these fields are null, this indicates that these transactions have not been submitted in an ACH file. (If the transaction is an issue transaction, this indicates that the transaction can be canceled.)

The return_code and return_desc fields are returned for issue and redeem transactions where there is an error_code field matching "ACH_RETURN".

The trace_number and addenda fields are returned only for issue and redeem transactions and will always be null except in the production environment. These are usually used for escalating problems with ACH transactions, particularly returns. The addenda is sometimes shown on an end-user's bank statement (though not always) .

We should add descriptions for IMAD, OMAD, and all the other response fields here.

📘

Descriptors

Currently only the first 10 characters of the 100-character descriptor field will appear on the customer's statement. Default values are Debit or Credit and do not carry a surcharge. The use of a descriptor will incur an additional fee per transaction.

📘

ACH name

This is a 16 character field that appears on the end-user’s bank statement and reflects the company name responsible for the transaction. There is an additional application fee and process to approve the use of the company name.

Status Codesuccess AttributeDescription
200trueAble to return transaction information.
400falseBad request format - check validation_details for more information.
403falseBad/absent signature header.
500falseServer-side issue; let us know if you get this status code!

📘

Note

"transfer" transactions will always have a usd_status of "queued" since they are exclusively blockchain transfer events.

For more information on the various usd status and token status values, see below:

Issue Status Diagram
Transfer Status Diagram
Redeem Status Diagram