/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"
Key | Type | Description |
---|---|---|
header | JSON object | Required. 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_filters | JSON object | Optional. Allows filtering results. |
search_filters. transaction_id | String | Optional. The format should be a UUID string. Example: 5167160d-9d12-4fa8-a8cd-302507782de0 |
search_filters. reference_id | String | Optional. The reference id that was sent in the header object when the transaction request was made. |
search_filters. show_timelines | Boolean | Optional. Default: false Example: true |
search_filters. sort_ascending | Boolean | Optional. Default: false Example: false |
search_filters. statuses | Array | Optional. Choice field. Example: ": { "h-0": "Key", "h-1": "Type", "h-2": "Description", "h-3": "Mandatory", "0-0 |
search_filters. start_epoch | Integer | Optional. UTC Unix Timestamp. Minimum 0 Example: 1234567860 |
search_filters. end_epoch | Integer | Optional. UTC Unix Timestamp. Minimum 0 Example: 1234567891 |
search_filters.page | Integer | Optional. Min Length 1 Default: 1 |
search_filters. per_page | Integer | Optional. Min 1 Max 100 Default per page 20 |
search_filters. transaction_types | Array | Optional. Choice field. Example: ": { "h-0": "Key", "h-1 |
search_filters. bank_account_name | String | Optional. The name of the bank account. Max length 255. Example: "bank_name" |
search_filters.processing_type | Array | Optional. To filter Instant Settlement transactions, use INSTANT_SETTLEMENT |
search_filters.payment_method_id | String | Optional. To filter on a single payment method (wallet, bank account, virtual account, etc.) |
search_filters.source_id | String | Optional. The format should be a UUID string. Example: 27579abe-e3f3-42c7-98c5-981f96496fdd |
search_filters.destination_id | String | Optional. The format should be a UUID string. Example: b2cadf03-01d0-4c86-a4fe-62d060d9129d |
search_filters.wallet_address | String | Optional. Backwards compatibility only. Disregard if not already utilizing. |
search_filters.effective_epoch | Unix Timestamp | Optional. UTC Unix Timestamp. Minimum 0 Example: 1234567860 |
search_filters.effective_date | Date | Optional. 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 Code | success Attribute | Description |
---|---|---|
200 | true | Able to return transaction information. |
400 | false | Bad request format - check validation_details for more information. |
403 | false | Bad/absent signature header. |
500 | false | Server-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
Updated about 24 hours ago