cURL Generator · Authentication
1 · Connection
Your base URL and API version are provided during onboarding.
2 · Credentials (from onboarding)
3 · Short-term Token (Bearer)
Auth flow
① Call ProvisionToken with your Main Token and an X-OTP derived from your TOTP seed.
② Paste the returned short-term token into the field above.
③ Every endpoint call sends Authorization: Bearer <short-term token> and a fresh X-OTP.
Settings are held in this browser tab only and never transmitted.
Endpoints:
Authentication
Provision and expire the short-term tokens that authenticate every API call.
POSTProvision Token/api/FE/ProvisionToken
Request Parameters — enter values to build the request
Usage Notes

Provisions a short-term security token for authenticated API access in order to limit usage of your main token. Short-term tokens expire based on the STTokenExpiration parameter (in seconds). The value must be greater than zero and cannot be larger than 5184000 (60 days).

Query Parameters
ParameterTypeRequiredDescription
STTokenExpirationintegerREQUIREDToken lifetime in seconds. Must be greater than 0 and at most 5184000 (60 days).
Example Responses
200 OKSuccess

Returns: TokenResponse

JSON { "token": "string", "expiresAtUTC": "2024-01-01T00:00:00Z", "tokenHash": "string", "tokenID": 0 }
Response Fields · TokenResponse
FieldTypeDescription
tokenstringShort-term bearer token to use on subsequent calls.
expiresAtUTCstring (ISO-8601)Expiry timestamp (UTC).
tokenHashstringHash of the issued token.
tokenIDnumberNumeric ID of the token record.
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Main token or X-OTP is invalid." }

Returned when the Main Token is invalid or the X-OTP value is missing, expired, or incorrect.

DELETEExpire Token/api/FE/ExpireToken
Request Parameters — enter values to build the request
Usage Notes

Immediately expires an active short-term token. Use this for logout functionality or when a token needs to be revoked.

Query Parameters
ParameterTypeRequiredDescription
STTokenIDnumber (double)OPTIONALThe token ID to expire.
Example Responses
200 OKSuccess

Success - no response body is returned.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Main token or X-OTP is invalid." }

Returned when the Main Token is invalid or the X-OTP value is missing, expired, or incorrect.

Identity & Compliance
Onboard and verify walletholders and store their compliance documents.
POSTCreate Client/api/FE/NewClient
Request Body — edit the JSON to build the request
Usage Notes

Creates a new client and runs verification. A single request covers both the domestic schema and an international / KYC-extended schema. For a US consumer, the fields below are enough; for a business entity set businessName and dateOfFormation and include beneficial owners; for a non-domestic client add an international object (see Optional Extensions). clientID must be unique. Supply valid routing and account numbers to draft funds directly from a client bank account; an accountStatus of Active means the client can be drafted.

Request Body · application/json
JSON · ClientCreate { "firstName": "string", "lastName": "string", "middleInitial": "string", "address": "string", "address2": "string", "city": "string", "state": "string", "zip": "string", "taxID": "string", "dob": "2024-01-01", "clientID": "string", "miscellaneous": "string", "accountStatus": "Active", "email": "user@example.com", "username": "string", "bankAccount": "string", "bankRouting": "string", "bankNameOnAccount": "string", "phone": "string", "businessName": "string", // KYB — if set, verifies a business "dateOfFormation": "2024-01-01" }
Request Body Parameters
FieldTypeRequiredDescription
firstNamestringREQUIREDClient's legal first name.
lastNamestringREQUIREDClient's legal last name.
addressstringREQUIREDStreet address.
citystringREQUIREDCity.
statestringREQUIREDState code.
zipstringREQUIREDZIP code.
taxIDstringREQUIREDSSN (or EIN for business accounts).
dobstring (date)REQUIREDDate of birth (YYYY-MM-DD).
clientIDstringREQUIREDYour external identifier for this client.
emailstringREQUIREDEmail address (validated).

Core domestic fields shown. ClientCreate also accepts optional international / KYB (business) / banking-identifier / government-ID extensions — see the collapsible blocks below.

Optional Extensions — International & KYB

The domestic body above is enough for a standard US consumer. To onboard internationally, verify a business, attach extra identifiers/documents, or supply a pre-existing KYC result, add any of these optional objects to the same request body.

International onboarding — international

Include an international object to onboard a non-domestic client. Everything here is optional except primaryAddress.country.

FieldTypeRequiredDescription
countryOfOnboardingstringOPTIONALISO 3166-1 alpha-2 country where onboarding took place.
intakeChannelstringOPTIONALOne of web, api, manual, batch.
dataSourceReferencestringOPTIONALYour reference to the source record.
fullNameRawstringOPTIONALFull name exactly as captured, unnormalised.
nameScriptstringOPTIONALOriginal script of the name (e.g. Cyrillic, Han).
nameRomanizedstringOPTIONALRomanised form of the name.
nameAlternatestringOPTIONALAny alternate / former name.
namePrefix / nameSuffixstringOPTIONALHonorific prefix / generational suffix.
nationalitiesstringOPTIONALComma-separated ISO codes for dual nationals, e.g. DE,US.
countryOfResidencestringOPTIONALISO 3166-1 alpha-2 country of residence.
placeOfBirthCitystringOPTIONAL
placeOfBirthCountrystringOPTIONALISO 3166-1 alpha-2.
genderstringOPTIONALFree text; unconstrained.
primaryAddressobjectOPTIONALInternational address — see the table below.

international.primaryAddress

FieldTypeRequiredDescription
addressTypestringOPTIONALOne of residential, mailing, business, registered, other.
addressLine1 / addressLine2stringOPTIONALStreet lines.
localitystringOPTIONALCity / town.
adminArea1 / adminArea2stringOPTIONALState / province and sub-division.
postalCodestringOPTIONAL
countrystringREQUIREDISO 3166-1 alpha-2. Required within primaryAddress.
addressRawstringOPTIONALFull address as captured.
Business & beneficial owners (KYB) — businessName, dateOfFormation, beneficialOwners[]

For a business entity, set the top-level businessName and dateOfFormation, then provide beneficialOwners (an array, maximum 4). Supplying businessName drives KYB verification instead of KYC.

FieldTypeRequiredDescription
firstName / lastNamestringOPTIONALOwner name.
taxIDstringOPTIONALSSN or equivalent.
dobdateOPTIONALYYYY-MM-DD.
address / city / state / zipstringOPTIONALOwner address.
phonestringOPTIONAL
ownershipPercentagenumberREQUIRED0–100. Required for each owner.
isControlPersonboolOPTIONALTrue if this owner is a control person.
existingKycResultobjectOPTIONALOptional per-owner external KYC attestation (same shape as below).
Banking identifiers — bankingIdentifiers[]

Provide bankingIdentifiers (an array) to attach international bank/account references.

FieldTypeRequiredDescription
identifierTypestringOPTIONALOne of iban, ach_routing_account, bsb, ifsc, sort_code, clabe, swift_bic, eft_transit, nz_account, crypto_address, other.
identifierValuestringREQUIREDThe identifier itself (the IBAN, IFSC, wallet address, etc.).
routingNumber / accountNumberstringOPTIONALWhen the scheme uses them.
bankName / bankCountry / bankSwiftBicstringOPTIONALBank details; country is ISO 3166-1 alpha-2.
currencyCodestringOPTIONALISO 4217 currency of the account, e.g. EUR.
accountHolderNamestringOPTIONALFlagged for review if it differs from the customer name.
isPrimaryboolOPTIONALMarks the primary banking identifier.
Government IDs — governmentIds[]

Provide governmentIds (an array) to attach identity documents.

FieldTypeRequiredDescription
idTypestringOPTIONALOne of passport, national_id, driver_license, tax_id, residence_permit, voter_id, social_security, birth_certificate, other.
idNumberstringREQUIREDThe document number.
issuingCountrystringREQUIREDISO 3166-1 alpha-2.
issuingAuthoritystringOPTIONAL
issueDate / expiryDatedateOPTIONALYYYY-MM-DD.
isPrimaryboolOPTIONALMarks the primary identity document.
External KYC attestation — existingKycResult
Skips RAMFi’s own screening. When existingKycResult is supplied, RAMFi records it as the client’s initial KYC assessment and does not run its own LexisNexis pass. The enrolling party is responsible for the accuracy of the data supplied.
FieldTypeRequiredDescription
performedBystringREQUIREDWho performed the screening, e.g. "Acme Debt Solutions".
screeningProviderstringOPTIONALe.g. LexisNexis, Onfido, Socure, manual_review.
screeningReferencestringOPTIONALProvider-side reference.
screenedAtdatetimeREQUIREDISO 8601 timestamp of the screening.
riskTierstringREQUIREDOne of low, medium, high, unacceptable.
riskScorenumberOPTIONALNumeric risk score, if available.
sanctionsMatch / pepMatchboolOPTIONALSanctions / politically-exposed-person hits.
adverseMediaMatch / watchlistMatchboolOPTIONALAdverse-media / watchlist hits.
outcomestringREQUIREDOne of approved, declined, in_review.
reviewNotesstringOPTIONAL
expiresAtdatetimeOPTIONALDefaults to screenedAt + 1 year if omitted.
Example Responses
200 OKSuccess

Returns: Client

JSON { "id": "string", "firstName": "string", "lastName": "string", "clientID": "string", "accountStatus": "Active", "email": "user@example.com" }
Response Fields · Client
FieldTypeDescription
idstringInternal RAMFi ID for the client.
clientIDstringYour external client identifier.
firstName / lastName / middleInitialstringClient name.
address / address2 / city / state / zipstringMailing address.
taxIDstringTax ID / SSN.
dobdateDate of birth.
email / phonestringContact details.
accountStatusAccountStatusCurrent account status (see AccountStatus enum). Active means the client can transact.
bankAccount / bankRouting / bankNameOnAccountstringBank details on file for ACH.
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETGet Client/api/FE/GetClient
Request Parameters — enter values to build the request
Usage Notes

Retrieves the full client record for a single clientId - profile, contact details, account status, and masked bank details. Use it to confirm onboarding state (for example that KYC passed and accountStatus is Active) before initiating funding, or to sync client state into your system.

Note: confirm availability of this endpoint in your environment with RAMFi.

Query Parameters
ParameterTypeRequiredDescription
clientIdstringOPTIONALThe RAMFi client ID. Supply this or userId.
userIdguidOPTIONALAlternate lookup by internal user ID. Supply this or clientId.
Example Responses
200 OKSuccess
JSON { "id": "string", "clientID": "client-001", "firstName": "string", "lastName": "string", "email": "user@example.com", "phone": "string", "accountStatus": "Active", "bankAccount": "****6789", "bankRouting": "****4321", "bankNameOnAccount": "string" }
Response Fields · Client
FieldTypeDescription
idstringInternal RAMFi ID for the client.
clientIDstringYour external client identifier.
firstName / lastName / middleInitialstringClient name.
address / address2 / city / state / zipstringMailing address.
taxIDstringTax ID / SSN.
dobdateDate of birth.
email / phonestringContact details.
accountStatusAccountStatusCurrent account status (see AccountStatus enum). Active means the client can transact.
bankAccount / bankRouting / bankNameOnAccountstringBank details on file for ACH.

A Client object (bank fields masked). See Data Models for the full schema. Values are illustrative.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETGet All Clients/api/FE/GetAllClients
Usage Notes

Returns every client on file for the calling company. Useful for a full sync or a company-wide dashboard. Bank details are masked in the response, and each client's accountStatus reflects its current lifecycle state.

Example Responses
200 OKSuccess

Returns: Array of Client - see Data Models for the full schema.

JSON [ { "clientID": "client-001", "firstName": "string", "lastName": "string", "email": "user@example.com", "accountStatus": "Active" } ]
Response Fields · Client[] (array)
FieldTypeDescription
idstringInternal RAMFi ID for the client.
clientIDstringYour external client identifier.
firstName / lastName / middleInitialstringClient name.
address / address2 / city / state / zipstringMailing address.
taxIDstringTax ID / SSN.
dobdateDate of birth.
email / phonestringContact details.
accountStatusAccountStatusCurrent account status (see AccountStatus enum). Active means the client can transact.
bankAccount / bankRouting / bankNameOnAccountstringBank details on file for ACH.

An array of Client objects (bank fields masked). Values are illustrative.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

PATCHUpdate Client/api/FE/UpdateClient
Request Parameters — enter values to build the request
Usage Notes

Updates existing client information. Only the fields provided in the request body will be updated. Use this for address changes, contact information updates, and returning a client to Active status after a hold.

The same optional international, bankingIdentifiers, and existingKycResult blocks documented under Create Client can be sent here to update or attach international / external-KYC data (the update variant resolves the customer internally, so it does not take a customer ID). taxID and dob cannot be changed via this endpoint.

Query Parameters
ParameterTypeRequiredDescription
consumerIdintegerOPTIONALInternal numeric identifier for the client to update.
Request Body · application/json
JSON · ClientUpdate { "clientID": "string", "firstName": "string", "lastName": "string", "address": "string", "city": "string", "state": "string", "zip": "string", "email": "user@example.com", "phone": "string", "accountStatus": "Active" }
Request Body Parameters — enter values to build the request
FieldTypeRequiredDescriptionValue
clientIDstringREQUIREDYour external identifier for the client to update.
accountStatusAccountStatusoptionalNew account status (see AccountStatus enum), e.g. to clear a hold back to Active.

Minimal example shown. ClientUpdate also supports name, address, email, and bank fields (not taxID/dob). The consumerId query parameter is required.

Example Responses
200 OKSuccess

Success - no response body is returned.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

PATCHClose Client/api/FE/CloseClient
Request Parameters — enter values to build the request
Usage Notes

Closes a client account. Typically used when a program is completed or when a client requests account closure. If a client is closed with balances, those balances are converted to fiat and refunded to the client within 5 business days of account closure.

Query Parameters
ParameterTypeRequiredDescription
clientIdstringOPTIONALThe client ID to close. Obtain via Create Client.
Example Responses
200 OKSuccess

Success - no response body is returned.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTAdd Document/api/FE/AddDocument
Usage Notes

Uploads a document for a client. The docBody should be a base64-encoded PDF of the document. Common document types include ID verification and ACH agreements. This endpoint is typically the second step after NewClient in order to provide an ACH authorization for drafting a client bank account.

Request Body · application/json
JSON · ClientDocumentAdd { "clientID": "string", "docType": "ID_VERIFICATION", "docBody": "base64-encoded-string" }
Request Body Parameters — enter values to build the request
FieldTypeRequiredDescriptionValue
clientIDstringREQUIREDThe client to attach the document to.
docTypeDocumentTypeREQUIREDDocument type (see DocumentType enum), e.g. ID_VERIFICATION / ACH_AGREEMENT.
docBodystringREQUIREDBase64-encoded document body.
Example Responses
200 OKSuccess
JSON 1024

Returns a number (double) - the document ID. The value shown is illustrative.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETGet Document Status/api/FE/GetDocumentStatus
Request Parameters — enter values to build the request
Usage Notes

Retrieves the processing status of a previously uploaded document. Returns a numeric status code indicating approval, rejection, or pending review. Documents are initially uploaded with a pending status and move to approved or rejected typically within 1 business day.

Query Parameters
ParameterTypeRequiredDescription
documentIdnumber (double)OPTIONALThe document ID. Obtain via Add Document.
clientIdstringOPTIONALThe client ID. Obtain via Create Client.
Example Responses
200 OKSuccess
JSON 1024

Returns a number (double) - status code. The value shown is illustrative.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

Balances & Reporting
Read balances, convert between currencies, and pull ledger, returns, and transaction reports.
GETAll Balances/api/FE/Reporting/AllBalances
Usage Notes

Retrieves balances for all of your clients across all currencies. Useful for reconciliation reports and dashboard summaries. Returns both tradable and non-tradable balances. PUSD balances are funds pending from ACH drafts; funds from a client draft (AddClientFunds) are pending for 2 business days before being available.

Example Responses
200 OKSuccess

Returns: Array of ClientBalances

JSON [ { "clientID": "string", "amount": 0.00, "symbol": "BTC", "currencyID": "BTC", "tradable": true } ]
Response Fields · ClientBalances[] (all clients)
FieldTypeDescription
clientIDstringThe client the balance belongs to.
amountdecimalBalance amount.
symbolstringCurrency symbol (e.g. USD, BTC).
currencyIDCurrencyTypeCurrency identifier (see CurrencyType enum).
tradablebooleanWhether the balance is tradable (PUSD is non-tradable until it clears).
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETClient Balance/api/FE/Reporting/ClientBalance
Request Parameters — enter values to build the request
Usage Notes

Retrieves balances for specific clients. Pass multiple clientIds to get balances for several clients at once. Useful for client-specific dashboards and account pages. Returns both tradable and non-tradable balances. PUSD balances are funds pending from ACH drafts; funds from a client draft are pending for 2 business days before being available.

Query Parameters
ParameterTypeRequiredDescription
clientIdsarray[string]REQUIREDOne or more client IDs; at least one must be supplied. Obtain via Create Client.
Example Responses
200 OKSuccess
JSON [ { "clientID": "client-001", "amount": 250.00, "symbol": "string", "currencyID": "USD", "tradable": true } ]
Response Fields · ClientBalances[]
FieldTypeDescription
clientIDstringThe client the balance belongs to.
amountdecimalBalance amount.
symbolstringCurrency symbol (e.g. USD, BTC).
currencyIDCurrencyTypeCurrency identifier (see CurrencyType enum).
tradablebooleanWhether the balance is tradable (PUSD is non-tradable until it clears).

Array of ClientBalances objects - see the Data Models page for the full schema. Values are illustrative.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTConvert Client Funds/api/FE/ConvertClientFunds
Usage Notes

Converts client funds between different currencies (USD to BTC, BTC to USDC, etc.) at the current market rate at time of conversion. The externalReference helps track the conversion in your system.

Request Body · application/json
JSON · ConvertFunds { "clientID": "string", "amount": 0.00, "fromCurrencyID": "USD", "toCurrencyID": "BTC", "externalReference": "string" // REQUIRED }
Request Body Parameters — enter values to build the request
FieldTypeRequiredDescriptionValue
clientIDstring (UUID)REQUIREDThe client whose funds to convert.
amountnumberREQUIREDAmount to convert.
fromCurrencyIDCurrencyTypeREQUIREDSource currency (see CurrencyType enum).
toCurrencyIDCurrencyTypeREQUIREDTarget currency (see CurrencyType enum).
externalReferencestringREQUIREDYour unique reconciliation key.
Example Responses
200 OKSuccess
JSON 1024

Returns a number (double) - Conversion transaction ID. The value shown is illustrative.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETSpot Price/api/FE/SpotPrice
Request Parameters — enter values to build the request
Usage Notes

Returns the current spot exchange rate for a currency pair (fiat or digital asset), as an OHLC quote. Use it to preview a rate before calling Convert Client Funds; the actual conversion always executes at the market rate at time of conversion, which may differ from this quote.

Query Parameters
ParameterTypeRequiredDescription
baseCurrencyCurrencyTypeREQUIREDThe base currency of the pair. See CurrencyType.
quoteCurrencyCurrencyTypeREQUIREDThe quote currency of the pair. See CurrencyType.
Example Responses
200 OKSuccess

Returns: SpotPriceResponse

JSON { "time": "2026-01-01T00:00:00Z", "open": 42000.00, "high": 42500.00, "low": 41800.00, "close": 42250.00, "base_volume": 1234.56, "quote_volume": 52000000.00 }
Response Fields · SpotPriceResponse (OHLC)
FieldTypeDescription
timestring (ISO-8601)Timestamp of the quote candle.
open / high / low / closenumberOHLC prices; close is the current price.
base_volumenumberVolume in the base currency.
quote_volumenumberVolume in the quote currency.

SpotPriceResponse - an OHLC candle for the pair. close is the current price. Values are illustrative.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETClient Ledger/api/FE/Reporting/ClientLedger/{clientId}
Request Parameters — enter values to build the request
Usage Notes

Retrieves the complete transaction ledger for a specific client. Shows all debits, credits, fees, and balance changes. Essential for account statements and transaction history displays.

Path Parameters
ParameterTypeRequiredDescription
clientIdstringREQUIREDThe client ID. Obtain via Create Client.
Example Responses
200 OKSuccess

Returns: ClientLedgerResponse

JSON { "clientId": "string", "entries": [ { "date": "string", "action": "string", "amount": 0.00, "notes": "string", "scheduleID": 0, "clientID": "string", "clientName": "string", "scheduledDate": "2024-01-01T00:00:00Z", "feeName": "string", "checkID": 0 } ] }
Response Fields · ClientLedger
FieldTypeDescription
clientIdstringThe client the ledger belongs to.
entries[]arrayLedger entries.
entries[].date / scheduledDatestringEntry date / scheduled date.
entries[].actionstringMovement type for the entry.
entries[].amountdecimalEntry amount.
entries[].notesstringFree-form notes.
entries[].feeNamestringFee name, when the entry is a fee.
entries[].scheduleID / checkIDstringSchedule / check references, when applicable.
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETReturns Report/api/FE/Reporting/Returns
Request Parameters — enter values to build the request
Usage Notes

Retrieves information about returned ACH drafts within a date range. Critical for tracking failed payments, understanding return reasons (NSF, account closed, etc.), and taking collection actions. Clients who return a draft are set to Hold status and must be set back to active using UpdateClient before a subsequent draft can be attempted.

Query Parameters
ParameterTypeRequiredDescription
startDatedateREQUIREDStart of the range. Must be on or before endDate.
endDatedateREQUIREDEnd of the range. The window from startDate cannot exceed 365 days.
Example Responses
200 OKSuccess

Returns: Array of DraftReturns

JSON [ { "clientID": "string", "clientName": "string", "amount": 0.00, "draftDate": "2024-01-01", "returnReason": "NSF", "returnDate": "2024-01-03", "externalID": "string", "paymentID": 0 } ]
Response Fields · Returns[]
FieldTypeDescription
clientID / clientNamestringThe client whose draft was returned.
amountdecimalReturned draft amount.
draftDatestringOriginal draft date.
returnReasonstringReason for the return (e.g. NSF, closed account).
returnDatestringWhen the return posted.
externalIDstringYour external reference for the draft.
paymentIDstringRAMFi payment identifier.
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETHeld Clients/api/FE/Reporting/HeldClients
Usage Notes

Returns a list of all clients with accounts on hold. Accounts are typically placed on hold due to returned payments, compliance issues, or client requests. Use this for operations dashboards and exception management.

Example Responses
200 OKSuccess

Returns: Array of HeldClient

JSON [ { "clientID": "string", "firstName": "string", "lastName": "string", "createDate": "string", "statusDate": "string", "accountStatus": "OnHold", "lastReturnDate": "string" } ]
Response Fields · HeldClients[]
FieldTypeDescription
clientIDstringThe held client.
firstName / lastNamestringClient name.
createDatestringAccount creation date.
statusDatestringWhen the hold status was set.
accountStatusAccountStatusCurrent status (Hold).
lastReturnDatestringDate of the last returned draft.
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETTransactions Report/api/FE/Reporting/Transactions
Request Parameters — enter values to build the request
Usage Notes

Retrieves all transactions updated on or after a specific date. Can be filtered by clientId for client-specific transaction history. Essential for daily reconciliation and transaction monitoring.

Query Parameters
ParameterTypeRequiredDescription
updateDatedateREQUIREDReturns transactions updated on or after this date. Cannot be more than 365 days in the past.
clientIdstringOPTIONALFilter by client ID (default: ""). Obtain via Create Client.
Example Responses
200 OKSuccess

Returns: Array of Transactions

JSON [ { "transactionID": 0, "clientID": "string", "action": "string", "description": "string", "transactionDate": "2024-01-01T00:00:00Z", "amount": 0.00, "payee": "string", "feeName": "string", "updateDate": "2024-01-01T00:00:00Z", "tCode": "string", "tSubCode": 0, "tSubSubCode": "string" } ]
Response Fields · Transactions[]
FieldTypeDescription
transactionIDstringRAMFi transaction identifier.
clientIDstringThe client on the transaction.
action / descriptionstringTransaction type and description.
transactionDate / updateDatestringWhen it occurred / was last updated.
amountdecimalTransaction amount.
payeestringPayee, when applicable.
feeNamestringFee name, when the row is a fee.
tCode / tSubCode / tSubSubCodestringTransaction classification codes.
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

Linked Instruments
Register and inspect the external accounts a client transacts against.
Linked Account
GETAccount Holder NameComing soon/api/FE/LinkedAccount/AccountHolderName/{clientId}/{linkedAccountId}
Coming soon — not yet enabled. The request schema below is confirmed, but this endpoint is not live yet and its response shape may still change before release. Contact your RAMFi integration specialist about availability and timing.
Request Parameters — enter values to build the request
Usage Notes

Returns the verified account holder name and address associated with a client's linked bank account. This is typically called after the Bank Connection SDK flow completes to confirm the name on the account matches your client's identity.

Note: KYB / KYC status is not returned by this endpoint. Use the appropriate Client Management endpoint to retrieve KYB and verification status separately.

Path Parameters
ParameterTypeRequiredDescription
clientId string (UUID) REQUIREDThe RAMFi clientID for the end user. Obtain via Create Client.
linkedAccountId string (UUID) REQUIREDThe specific bank account to query. Obtain via Bank Connection SDK.
Example Responses
200 OKSuccess

Returns: AccountHolder - name and address on file for the specified bank account.

JSON { "isSuccess": true, "errorMessage": "", "result": { "linkedAccountId": "string (UUID)", "name": "string", "address": { "streetAddress": "string", "additionalAddress": "", "city": "string", "state": "string", "country": "US", "zip": "string" } } }
AccountHolder Schema
PropertyTypeDescription
linkedAccountIdstring (UUID)Identifier of the bank account this record represents.
namestringFull name or business name on the bank account.
addressobjectStreet address on the account (streetAddress, additionalAddress, city, state, country, zip).

Endpoint returns an array of these objects — one per linked account.

StatusDescription
401Unauthorized - invalid or expired token
404Client or linkedAccountId not found
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETLinked Account BalanceComing soon/api/FE/LinkedAccount/Balance/{clientId}/{linkedAccountId}
Coming soon — not yet enabled. The request schema below is confirmed, but this endpoint is not live yet and its response shape may still change before release. Contact your RAMFi integration specialist about availability and timing.
Request Parameters — enter values to build the request
Usage Notes

Fetches the available balance for a specific linked bank account. Useful for pre-transaction validation - checking sufficient funds before initiating an ACH draft - or for displaying balance data to clients in your application. The account must have been connected via the Bank Connection SDK; accounts linked through other methods will return a 403.

⚠️
Balance data is sourced from the bank aggregator in real time. Response times scale with the number of linked accounts. Only accounts linked via the RAMFi Bank Connection SDK are eligible - accounts linked via other methods will return a 403 Invalid Account Type error.
Path Parameters
ParameterTypeRequiredDescription
clientId string (UUID) REQUIREDThe RAMFi clientID for the end user. Obtain via Create Client.
linkedAccountId string (UUID) REQUIREDThe specific bank account to query. Obtain via Bank Connection SDK.
Example Responses
200 OKSuccess

Returns: LinkedAccountBalance

JSON { "isSuccess": true, "errorMessage": "", "result": { "linkedAccountId": "string (UUID)", "availableBalance": 25425 } }
AccountHolder Schema
PropertyTypeDescription
linkedAccountIdstring (UUID)Identifier of the bank account this record represents.
namestringFull name or business name on the bank account.
addressobjectStreet address on the account (streetAddress, additionalAddress, city, state, country, zip).

Endpoint returns an array of these objects — one per linked account.

ℹ️
Balance format: availableBalance is returned in cents as an integer. Divide by 100 to display as dollars (e.g., 25425$254.25).
StatusDescription
401Unauthorized - invalid or expired token
403Invalid account type - one or more accounts not linked via Bank Connection SDK
404Client or linkedAccountId not found
406Merchant configuration error - contact RAMFi support
503Unable to retrieve balance - bank aggregator unavailable, retry with backoff
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETLinked Account HistoryComing soon/api/FE/LinkedAccount/History/{clientId}/{linkedAccountId}
Coming soon — not yet enabled. The request schema below is confirmed, but this endpoint is not live yet and its response shape may still change before release. Contact your RAMFi integration specialist about availability and timing.
Request Parameters — enter values to build the request
Usage Notes

Retrieves the transaction history for a specific linked bank account, including enriched merchant data, transaction categories, and subcategories powered by the aggregator's intelligence layer. This endpoint only works for accounts linked through the Bank Connection SDK. Use this to display account activity, support underwriting decisions, or perform cash flow analysis. Each transaction includes a confidence-scored category and subcategory for consistent classification.

Path Parameters
ParameterTypeRequiredDescription
clientId string (UUID) REQUIREDThe RAMFi clientID for the end user. Obtain via Create Client.
linkedAccountId string (UUID) REQUIREDThe specific bank account to query. Obtain via Bank Connection SDK.
Example Responses
200 OKSuccess

Returns: LinkedAccountHistory - transaction list for the specified account.

JSON { "isSuccess": true, "errorMessage": "", "result": { "linkedAccountId": "string (UUID)", "transactions": [ { "transactionId": "string (UUID)", "accountId": "string (UUID)", "amount": 384.05, "type": "debit|credit", "currency": "USD", "date": "2024-01-01T00:00:00Z", "datetime": "2024-01-01T09:14:11", "description": "string", "rawDescription": "string", "pending": true, "enrichment": { "category": { "value": "string", "confidence": 79 }, "subcategory": { "value": "string", "confidence": 99 }, "merchant": { "id": "string (UUID)" } } } ] } }
Transaction Object Fields
FieldTypeDescription
transactionIdstring (UUID)Unique identifier for this transaction.
accountIdstring (UUID)The linked bank account UUID this transaction belongs to.
amountnumber (double)Transaction amount. Positive values are debits from the account.
typestring (enum)debit or credit.
currencystringISO 4217 currency code (e.g. USD).
datedateDate of the transaction (midnight UTC).
datetimedatetimePrecise timestamp of the transaction when available.
descriptionstringCleaned, human-readable merchant name.
rawDescriptionstringOriginal unprocessed description from the bank.
pendingbooleanWhether the transaction has cleared or is still pending.
enrichment.categoryobjectTop-level merchant category with confidence score (0–100).
enrichment.subcategoryobjectSubcategory classification with confidence score (0–100).
enrichment.merchant.idstring (UUID)Internal merchant identifier for deduplication.
Transaction Object Fields
FieldTypeDescription
transactionIdstring (UUID)Unique identifier for this transaction.
accountIdstring (UUID)The linked bank account UUID this transaction belongs to.
amountnumber (double)Transaction amount. Positive values are debits from the account.
typestring (enum)debit or credit.
currencystringISO 4217 currency code (e.g. USD).
datedateDate of the transaction (midnight UTC).
datetimedatetimePrecise timestamp of the transaction when available.
descriptionstringCleaned, human-readable merchant name.
rawDescriptionstringOriginal unprocessed description from the bank.
pendingbooleanWhether the transaction has cleared or is still pending.
enrichment.categoryobjectSee structure below.
   .valuestringTop-level merchant category name.
   .confidencenumber (0–100)Confidence score for the category classification.
enrichment.subcategoryobjectSee structure below.
   .valuestringSubcategory name.
   .confidencenumber (0–100)Confidence score for the subcategory classification.
enrichment.merchant.idstring (UUID)Internal merchant identifier for deduplication.
StatusDescription
401Unauthorized - invalid or expired token
403Forbidden - one or more accounts not linked via Bank Connection SDK, or retrieval failed
404Client or linkedAccountId not found
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTAccount ValidationComing soon/api/FE/LinkedAccount/AccountValidation
Coming soon — not yet enabled. The request schema below is confirmed, but this endpoint is not live yet and its response shape may still change before release. Contact your RAMFi integration specialist about availability and timing.
Request Body — edit the JSON to build the request
Usage Notes

Validates bank account information by combining account, location, and identity data to produce a confidence score and decisioning insights. Only bankAccount is required; identity, address, and actions are optional.

Headers
HeaderTypeRequiredDescription
X-Idempotency-Key string OPTIONAL Idempotency key to safely retry the request. Same key + same payload returns the original response within ~24 hours.
Request Body · application/json
JSON { "clientID": "string", // REQUIRED - RAMFi clientID of the end user "bankAccount": { // REQUIRED "accountNumber": "string", // REQUIRED - bank account number "routingNumber": "string", // REQUIRED - 9-digit ABA routing number "accountType": "checking|savings" }, "identity": { // Optional "firstName": "string", "lastName": "string", "middleName": "string", "prefix": "string", "suffix": "string", "email": "string", "phoneNumber": "string", "ssn": "string", "deviceId": "string" }, "address": { // Optional "streetAddress": "string", "additionalAddress": "string", "city": "string", "state": "string", "country": "US", "zip": "string" }, "actions": { // Optional "nameMatch": true, "taxpayerNumberMatch": true } }
Request Body Parameters
ParameterTypeRequiredDescription
clientIDstring (UUID)REQUIREDThe RAMFi clientID for the end user.
bankAccountobjectREQUIREDBank account to validate. Includes accountNumber, routingNumber, and accountType.
identityobjectOPTIONALIdentity fields to match against.
addressobjectOPTIONALAddress to match against.
actionsobjectOPTIONALToggle specific checks: nameMatch and taxpayerNumberMatch.
Request Body Parameters
ParameterTypeRequiredDescription
clientIDstring (UUID)REQUIREDThe RAMFi clientID for the end user. Obtain via Create Client.
bankAccountobjectREQUIREDSee structure below.
   .accountNumberstringREQUIREDBank account number.
   .routingNumberstringREQUIRED9-digit ABA routing number.
   .accountTypeenum - checking or savings.
identityobjectOPTIONALSee structure below.
   .firstNamestring - First name on the account.
   .lastNamestring - Last name on the account.
   .middleNamestring - Middle name.
   .prefixstring - Name prefix (e.g. Mr., Dr.).
   .suffixstring - Name suffix (e.g. Jr., Sr.).
   .emailstring - Email address.
   .phoneNumberstring - Phone number.
   .ssnstring - Social Security Number.
   .deviceIdstring - Device identifier.
addressobjectOPTIONALSee structure below.
   .streetAddressstring - Street address.
   .additionalAddressstring - Apartment, suite, or unit.
   .citystring - City.
   .statestring - State / region.
   .countrystring - Country code.
   .zipstring - Postal / ZIP code.
actionsobjectOPTIONALSee structure below.
   .nameMatchboolean - Whether to perform a name match check.
   .taxpayerNumberMatchboolean - Whether to perform a taxpayer number match check.
Example Responses
200 OKSuccess

Returns: AccountValidationResult

JSON { "isSuccess": true, "errorMessage": "", "result": { "confidenceScore": 0.27, // 0.00–1.00 - overall validation confidence "validRoutingNumber": true, "nameMatch": "yes|no|not_available", "taxpayerNumberMatch": "yes|no|not_available", "phoneNumberPresent": true, "decisioningInsights": { "accountDuplicate": false, "daysSinceFirstSeen": 128, "daysSinceLastTransaction": 14, "hasNegativeTransactions": false, "hasPaidTransactions": true, "hasPositiveTransactions": true } } }
Result Object Fields
FieldTypeDescription
confidenceScorenumber (0.00–1.00)Overall validation confidence.
validRoutingNumberbooleanWhether the supplied routing number is valid.
nameMatchenumyes, no, or not_available.
taxpayerNumberMatchenumyes, no, or not_available.
phoneNumberPresentbooleanWhether a phone number is associated with the account.
decisioningInsights.accountDuplicatebooleanWhether the account is flagged as a duplicate.
decisioningInsights.daysSinceFirstSeenintegerDays since the account was first observed.
decisioningInsights.daysSinceLastTransactionintegerDays since the most recent transaction on the account.
decisioningInsights.hasNegativeTransactionsbooleanWhether negative transaction history is on file.
decisioningInsights.hasPaidTransactionsbooleanWhether the account has cleared transactions.
decisioningInsights.hasPositiveTransactionsbooleanWhether the account has positive transaction history.
Result Object Fields
FieldTypeDescription
confidenceScorenumber (0.00–1.00)Overall validation confidence.
validRoutingNumberbooleanWhether the supplied routing number is valid.
nameMatchenumyes, no, or not_available.
taxpayerNumberMatchenumyes, no, or not_available.
phoneNumberPresentbooleanWhether a phone number is associated with the account.
decisioningInsightsobjectSee structure below.
   .accountDuplicatebooleanWhether the account is flagged as a duplicate.
   .daysSinceFirstSeenintegerDays since the account was first observed.
   .daysSinceLastTransactionintegerDays since the most recent transaction on the account.
   .hasNegativeTransactionsbooleanWhether negative transaction history is on file.
   .hasPaidTransactionsbooleanWhether the account has cleared transactions.
   .hasPositiveTransactionsbooleanWhether the account has positive transaction history.
StatusDescription
400Invalid request. Response includes errors[].field and errors[].message.
409Idempotency key reused for a different endpoint
429Rate limit exceeded. Retry after the time specified in the Retry-After response header.
503Service not available
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTTransaction Risk ScoreComing soon/api/FE/LinkedAccount/AccountValidation/TransactionRiskScore
Coming soon — not yet enabled. The request schema below is confirmed, but this endpoint is not live yet and its response shape may still change before release. Contact your RAMFi integration specialist about availability and timing.
Request Body — edit the JSON to build the request
Usage Notes

Assesses Accounts Receivable transaction risk using payor, payee (with beneficial owners), and transaction amount. Returns a numerical risk score and a validity expiration timestamp.

Headers
HeaderTypeRequiredDescription
X-Idempotency-Key string OPTIONAL Idempotency key to safely retry the request within ~24 hours.
Request Body · application/json
JSON { "clientID": "string", // REQUIRED - RAMFi clientID of the end user "amount": 0.00, // REQUIRED "payor": { ... }, // REQUIRED "payee": { // REQUIRED "accountNumber": "string", "address": { "city": "string", "state": "string", "street1": "string", "street2": "string", "zip": "string" }, "beneficialOwners": [ { "firstName": "string", "lastName": "string", "email": "string", "dob": "YYYY-MM-DD", "address": { ... }, "isAccountOwner": true, "isBeneficialOwner": true, "isDirector": false, "isShareHolder": false, "isSignificantControlPerson": true } ] } }
Request Body Parameters
ParameterTypeRequiredDescription
clientIDstring (UUID)REQUIREDThe RAMFi clientID for the end user.
amountnumberREQUIREDTransaction amount.
payorobjectREQUIREDPayor object. Structure not yet confirmed from source — see warning above.
payeeobjectREQUIREDPayee object containing accountNumber, address, and beneficialOwners.
payee.beneficialOwnersarrayArray of beneficial owner records, each with identity fields and role flags.
Request Body Parameters
ParameterTypeRequiredDescription
clientIDstring (UUID)REQUIREDThe RAMFi clientID for the end user. Obtain via Create Client.
amountnumberREQUIREDTransaction amount.
payorobjectREQUIREDSee structure below.
   .accountNumberstring - Payor's bank account number.
   .addressobject - Payor's address (city, state, street1, street2, zip).
payeeobjectREQUIREDSee structure below.
   .accountNumberstring - Payee's bank account number.
   .addressobject - Payee's address.
      .citystring - City.
      .statestring - State / region.
      .street1string - Street address line 1.
      .street2string - Street address line 2.
      .zipstring - Postal / ZIP code.
   .beneficialOwnersarray - Array of beneficial owner records - see structure below.
      .firstNamestring - Owner's first name.
      .lastNamestring - Owner's last name.
      .emailstring - Owner's email.
      .dobstring (YYYY-MM-DD) - Date of birth.
      .addressobject - Owner's address (city, state, street1, street2, zip).
      .isAccountOwnerboolean - True if the person is the account owner.
      .isBeneficialOwnerboolean - True if the person is a beneficial owner.
      .isDirectorboolean - True if the person is a director.
      .isShareHolderboolean - True if the person is a shareholder.
      .isSignificantControlPersonboolean - True if the person has significant control.
Example Responses
200 OKSuccess

Returns: TransactionRiskScore

JSON { "isSuccess": true, "errorMessage": "", "result": { "riskScore": 72.5, "validityExpiration": "2025-03-18T12:00:00Z" } }
Result Object Fields
FieldTypeDescription
riskScorenumberCalculated risk score for the transaction.
validityExpirationdatetime (ISO 8601)UTC timestamp indicating when the score expires.
Result Object Fields
FieldTypeDescription
riskScorenumberCalculated risk score for the transaction.
validityExpirationdatetime (ISO 8601)UTC timestamp indicating when the score expires.
StatusDescription
400Bad request - invalid data. Response includes errors[].field and errors[].message.
401Unauthorized request
409Idempotency key reused for a different endpoint or payload
500Internal server error - retry with backoff
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETGet Bank Account/api/FE/BankAccount/{clientId}
Request Parameters — enter values to build the request
Usage Notes

Returns all bank accounts on file for a given client, with a flag identifying which one is currently set as the default. The default account is the one used for ACH originations (AddClientFunds, WithdrawClientFunds). Use this endpoint to display saved accounts to your end users for selection, or before calling UpdateDefaultBankAccount to change which account is active.

Path Parameters
ParameterTypeRequiredDescription
clientId string (UUID) REQUIREDThe RAMFi clientID for the end user. Obtain via Create Client.
Example Responses
200 OKSuccess

Returns: BankAccountList - array of bank accounts on file with default flag.

JSON { "isSuccess": true, "errorMessage": "", "result": { "accounts": [ { "linkedAccountId": "string (UUID)", // account identifier "institutionName": "string", // e.g. "Chase Bank" "accountNickname": "string", // e.g. "Total Checking" "accountType": "checking|savings", "last4": "string", // last 4 of account number "isDefault": true, // only one account will have isDefault=true "linkedAt": "2024-01-01T00:00:00Z" } ] } }
Account Object Fields
FieldTypeDescription
linkedAccountIdstring (UUID)Unique identifier for this bank account on file.
institutionNamestringDisplay name of the bank.
accountNicknamestringUser-friendly account name (e.g. "Total Checking").
accountTypeenumchecking or savings.
last4stringLast 4 digits of the account number for display purposes.
isDefaultbooleanIndicates whether this account is the active default for ACH originations. Only one account per client will have this set to true.
linkedAtdatetimeTimestamp when this account was originally linked.
Account Object Fields
FieldTypeDescription
linkedAccountIdstring (UUID)Unique identifier for this bank account on file. Obtain via Bank Connection SDK.
institutionNamestringDisplay name of the bank.
accountNicknamestringUser-friendly account name (e.g. "Total Checking").
accountTypeenumchecking or savings.
last4stringLast 4 digits of the account number for display purposes.
isDefaultbooleanIndicates whether this account is the active default for ACH originations. Only one account per client will have this set to true.
linkedAtdatetimeTimestamp when this account was originally linked.
StatusDescription
401Unauthorized - invalid or expired token
404Client not found, or no bank accounts on file
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTUpdate Default Bank Account/api/FE/BankAccount/UpdateDefault
Usage Notes

Sets or updates the default bank account used for ACH origination endpoints (AddClientFunds, WithdrawClientFunds), which do not accept a per-call account identifier. Provide the full account details below; only one account is the default at a time - calling this endpoint replaces the previous default.

Request Body · application/json
JSON { "clientID": "string", "userID": "guid", "accountNumber": "string", // REQUIRED - max 40 chars "routingNumber": "string", // REQUIRED - max 9 chars "nameOnAccount": "string", // REQUIRED "accountType": 1 // REQUIRED - int, must be > 0 }
Request Body Parameters — enter values to build the request
FieldTypeRequiredDescriptionValue
clientIDstringREQUIREDThe client whose default account to set.
userIDstring (GUID)optionalAlternate client lookup.
accountNumberstringREQUIREDBank account number (max 40 chars).
routingNumberstringREQUIREDABA routing number (max 9 chars).
nameOnAccountstringREQUIREDName on the bank account.
accountTypenumber (int)REQUIREDAccount type (int, must be > 0). See BankAccountType enum.
Example Responses
200 OKSuccess
JSON { "isSuccess": true, "errorMessage": "", "result": { "updatedAt": "2024-01-01T00:00:00Z" // confirmed new default } }
StatusDescription
401Unauthorized - invalid or expired token
404Client not found
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

Card
GETGet Card on FileComing soon/api/FE/Card/{clientId}
Coming soon — not yet enabled. The request schema below is confirmed, but this endpoint is not live yet and its response shape may still change before release. Contact your RAMFi integration specialist about availability and timing.
Request Parameters — enter values to build the request
Usage Notes

Returns all cards on file for a given client, including their RAMFi-issued cardId tokens and display metadata (last 4 digits, brand). Use this to populate card selection UIs in your application or to retrieve a cardId for use in PullFromCard or PushToCard when your backend needs to initiate a transaction without a fresh user session.

Note: Card numbers, expiry dates, and CVVs are never returned. Only the tokenized cardId and display fields are exposed.

Path Parameters
ParameterTypeRequiredDescription
clientId string (UUID) REQUIREDThe RAMFi clientID for the end user. Obtain via Create Client.
Example Responses
200 OKSuccess

Returns: CardList - array of cards on file.

JSON { "isSuccess": true, "errorMessage": "", "result": { "cards": [ { "cardId": "string (UUID)", // token for PullFromCard / PushToCard "last4": "string", // last 4 digits of card "cardBrand": "Visa|Mastercard|Discover|Amex", "cardType": "debit", // only debit cards are eligible "nickname": "string", // optional user-friendly label "capturedAt": "2024-01-01T00:00:00Z" } ] } }
Card Object Fields
FieldTypeDescription
cardIdstring (UUID)RAMFi-issued token for this card. Use in PullFromCard and PushToCard.
last4stringLast 4 digits of the card number for display purposes.
cardBrandenumVisa, Mastercard, Discover, or Amex.
cardTypeenumCurrently only debit is supported.
nicknamestringOptional user-friendly label for this card.
capturedAtdatetimeTimestamp when this card was originally tokenized.
Card Object Fields
FieldTypeDescription
cardIdstring (UUID)RAMFi-issued token for this card (a tokenized card identifier, never a raw PAN). Use in PullFromCard and PushToCard. Retrieve stored cards via Get Card on File.
last4stringLast 4 digits of the card number for display purposes.
cardBrandenumVisa, Mastercard, Discover, or Amex.
cardTypeenumCurrently only debit is supported.
nicknamestringOptional user-friendly label for this card.
capturedAtdatetimeTimestamp when this card was originally tokenized.
StatusDescription
401Unauthorized - invalid or expired token
404Client not found, or no cards on file
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

Wallet Address
POSTAdd Wallet Address/api/FE/AddWalletAddress
Request Parameters — enter values to build the request
Usage Notes

Registers a new wallet address in the system. The addressIdentifier is a label for the address (e.g. 'Main BTC Wallet', 'Client Deposit Address'). Addresses are validated for AML purposes before being approved.

Know Your Address (KYA) screening runs automatically in the background as part of registration: the address is risk-assessed and AML-screened before it is approved. There is no separate KYA endpoint to call — a high-risk address is rejected here.

Query Parameters
ParameterTypeRequiredDescription
addressstringOPTIONALThe wallet address.
addressIdentifierstringOPTIONALA friendly name for the address.
Example Responses
200 OKSuccess

Success - no response body is returned.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

Transactions
Move money on a rail: ACH, card, and wallet-to-wallet.
ACH Transaction
POSTAdd Client Funds/api/FE/AddClientFunds
Usage Notes

Adds funds to a client's account. This endpoint should only be used for setting up a draft from a client's bank account via ACH. The account drafted is the banking information provided for the client, and the draft occurs on the payment date you specify if the client is active and has an approved ACH authorization on file. The externalReference should be a unique transaction ID from your system for reconciliation.

Request Body · application/json
JSON · AddFunds { "clientID": "string", "amount": 0.00, "transactionDate": "2024-01-01", "externalReference": "string" // REQUIRED }
Request Body Parameters — enter values to build the request
FieldTypeRequiredDescriptionValue
clientIDstringREQUIREDThe client to fund.
amountnumberREQUIREDUSD amount to draft via ACH.
transactionDatestring (date)optionalDate to initiate the ACH draft (YYYY-MM-DD).
externalReferencestringREQUIREDYour unique reconciliation key.
Example Responses
200 OKSuccess
JSON 1024

Returns a number (double) - Transaction ID. The value shown is illustrative.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTAdd Pending Funds/api/FE/AddPendingFunds
Usage Notes

Enters a pending deposit into the ledgering system for this client. Use this for money the customer pushes to RAMFi — most commonly a wire or RTP transfer, but also a deposit from a company merchant account or any other source that is not an ACH draft. To pull funds from the client's linked bank instead, use Add Client Funds.

Call Get Deposit Info first to obtain the receiving bank coordinates and the client's memoID, and have the customer put that memoID on the wire. Set clientReference to the same value so the deposit can be matched and attributed when it lands. The expectedDepositDate helps with identifying incoming deposits.

Request Body · application/json
JSON · AddPendingFunds { "clientID": "string", // REQUIRED "externalTransactionID": "string", // REQUIRED "amount": 0.00, "transactionDate": "2024-01-01T00:00:00Z", "expectedDepositDate": "2024-01-05", "clientReference": "string", "processorReference": "string" }
Request Body Parameters — enter values to build the request
FieldTypeRequiredDescriptionValue
clientIDstringREQUIREDThe client the pending deposit is for.
externalTransactionIDstringREQUIREDExternal transaction/processor reference, known in advance.
amountnumberREQUIREDExpected deposit amount.
expectedDepositDatestring (date)optionalWhen the deposit is expected to clear (YYYY-MM-DD).
clientReferencestringoptionalYour reference for this pending deposit.
Example Responses
200 OKSuccess

Success - no response body is returned.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETGet Deposit Info/api/FE/GetDepositInfo
Request Parameters — enter values to build the request
Usage Notes

Retrieves the deposit information for a client: the receiving bank coordinates — valid for ACH, wire, or RTP — plus a memoID for reference. Provide these to the customer so they know where to send funds, and make sure the transfer carries the memoID so the deposit can be attributed to that client. Record the incoming deposit with Add Pending Funds.

Query Parameters
ParameterTypeRequiredDescription
clientIdstringOPTIONALThe client ID. Obtain via Create Client.
Example Responses
200 OKSuccess

Returns: DepositInfo

JSON { "bankAccount": "string", "routing": "string", "bankName": "string", "address": "string", "city": "string", "state": "string", "zip": "string", "memoID": "string" }
Response Fields · Deposit Instructions
FieldTypeDescription
bankAccountstringDestination account number to deposit into (ACH / Wire / RTP).
routingstringDestination routing number.
bankNamestringReceiving bank name.
address / city / state / zipstringReceiving bank address.
memoIDstringMemo/reference to include with the deposit so it is attributed to the client.
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTAdd Funds from Bank Account/api/FE/AddFundsFromBankAccount
Usage Notes

Initiates an ACH debit from a linked bank account that is not the client's bank account. The fundingSourceID references a previously verified bank account (set up via offline process). Most commonly used for sweeping funds from a merchant account to RAMFi while simultaneously ledgering the transaction to the client. Initiates an ACH debit of the amount provided for the next available business day.

Request Body · application/json
JSON · AddFundsFromBankAccount { "clientID": "string", // REQUIRED "externalTransactionID": "string", // REQUIRED "amount": 0.00, "fundingSourceID": 0 // REQUIRED }
Request Body Parameters — enter values to build the request
FieldTypeRequiredDescriptionValue
clientIDstringREQUIREDThe client whose ledger to credit.
externalTransactionIDstringREQUIREDYour external transaction reference.
amountnumberREQUIREDAmount to move into the client ledger.
fundingSourceIDnumber (int)REQUIREDReference to a bank-account-on-file record for the sending company/payee account.
Example Responses
200 OKSuccess

Success - no response body is returned.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTWithdraw Client Funds/api/FE/WithdrawClientFunds
Usage Notes

Withdraws USD funds from a client's available balance, typically via ACH to their linked bank account. The externalReference should track this withdrawal in your system for reconciliation.

Request Body · application/json
JSON · WithdrawFunds { "clientID": "string", "amount": 0.00, "externalReference": "string", // REQUIRED "notes": "string" }
Request Body Parameters — enter values to build the request
FieldTypeRequiredDescriptionValue
clientIDstringREQUIREDThe client to withdraw from.
amountnumberREQUIREDAmount to withdraw. Digital-asset withdrawals are backed by a custody transfer.
externalReferencestringREQUIREDYour unique reconciliation key.
notesstringoptionalFree-form notes recorded with the withdrawal.
Example Responses
200 OKSuccess
JSON 1024

Returns a number (double) - Withdrawal ID. The value shown is illustrative.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTTransfer Client Funds/api/FE/TransferClientFunds
Usage Notes

Moves funds directly between two clients' RAMFi balances within the same company. This is an internal book transfer - it does not touch any external rail (no ACH, card, or on-chain movement). Both clients must belong to the calling company, and the sender must have sufficient available balance in the given currency.

Request Body · application/json
JSON · TransferFunds { "fromClientID": "string", "fromUserID": "guid", "toClientID": "string", "toUserID": "guid", "amount": 0.00, // REQUIRED "currency": "USD", // REQUIRED - CurrencyType "externalReference": "string" // REQUIRED }

Identify each side by fromClientID/toClientID (or the corresponding UserID). See CurrencyType for currency.

Request Body Parameters — enter values to build the request
FieldTypeRequiredDescriptionValue
fromClientIDstringREQUIREDSource client (sending funds).
fromUserIDstring (GUID)optionalAlternate lookup for the source client.
toClientIDstringREQUIREDDestination client (receiving funds).
toUserIDstring (GUID)optionalAlternate lookup for the destination client.
amountnumberREQUIREDAmount to transfer.
currencyCurrencyTypeREQUIREDCurrency to move. Supports fiat and digital assets, transferred as-is with no conversion (e.g. BTC to BTC between users).
externalReferencestringREQUIREDYour unique reconciliation key.
Example Responses
200 OKSuccess

No content on success - the response envelope's isSuccess indicates the transfer completed.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "Transfer failed." }

Returned when fromClientID/toClientID is missing or invalid, on insufficient balance, or when the transfer otherwise fails. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

PATCHCancel Bank Draft/api/FE/CancelBankDraft
Request Parameters — enter values to build the request
Usage Notes

Cancels a pending ACH draft before it processes. This can only be done before the draft is processed and only applies to transactions set up using AddClientFunds.

Query Parameters
ParameterTypeRequiredDescription
clientIdstringOPTIONALThe client ID. Obtain via Create Client.
draftIdintegerOPTIONALThe draft/payment ID to cancel.
Example Responses
200 OKSuccess

Success - no response body is returned.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

Card Transaction
POSTPull from CardComing soon/api/FE/Card/PullFromCard
Coming soon — not yet enabled. The request schema below is confirmed, but this endpoint is not live yet and its response shape may still change before release. Contact your RAMFi integration specialist about availability and timing.
Request Body — edit the JSON to build the request
Usage Notes

Initiates an instant debit pull from a customer's card - debiting their card account and crediting the client's RAMFi USD balance. The card must be referenced by a tokenized cardId (never a raw PAN), and the externalReference must be a unique value per transaction in your system for reconciliation.

Note: clientID is passed in the request body following RAMFi's standard POST convention - not as a path parameter. All POST endpoints in the RAMFi API use the request body for client identification.

Request Body · application/json
JSON { "clientID": "string", // REQUIRED - RAMFi clientID of the end user "cardId": "string", // REQUIRED - tokenized card identifier, never a raw PAN "amount": 0.00, // REQUIRED "externalReference": "string", // REQUIRED - unique ID from your system "currency": "USD", "memo": "string" }
Request Body Parameters
ParameterTypeRequiredDescription
clientID string REQUIRED The RAMFi clientID of the end user whose account will be credited.
cardId string REQUIRED The tokenized card ID returned from the Card Capture SDK or GetCardOnFile. Never pass raw card numbers.
amount number REQUIRED Transaction amount.
externalReference string REQUIRED Unique transaction ID from your system, used for reconciliation. Character limit not yet confirmed.
currency string OPTIONAL ISO 4217 currency code.
memo string OPTIONAL Optional descriptor.
Request Body Parameters
ParameterTypeRequiredDescription
clientID string REQUIREDThe RAMFi clientID of the end user whose account will be credited. Obtain via Create Client.
cardId string REQUIREDThe tokenized card identifier (never a raw PAN), retrieved via GetCardOnFile. Never pass raw card numbers.
amount number REQUIREDTransaction amount.
externalReference string REQUIREDUnique transaction ID from your system, used for reconciliation. Character limit not yet confirmed.
currency string OPTIONALISO 4217 currency code.
memo string OPTIONALOptional descriptor.
Example Responses
200 OKSuccess
JSON { "isSuccess": true, "errorMessage": "", "result": { "transactionID": "string", "status": "Approved|Declined", "amount": 0.00, "externalReference": "string" } }
AccountHolder Schema
PropertyTypeDescription
linkedAccountIdstring (UUID)Identifier of the bank account this record represents.
namestringFull name or business name on the bank account.
addressobjectStreet address on the account (streetAddress, additionalAddress, city, state, country, zip).

Endpoint returns an array of these objects — one per linked account.

StatusDescription
401Unauthorized - invalid or expired token
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTPush to CardComing soon/api/FE/Card/PushToCard
Coming soon — not yet enabled. The request schema below is confirmed, but this endpoint is not live yet and its response shape may still change before release. Contact your RAMFi integration specialist about availability and timing.
Request Body — edit the JSON to build the request
Usage Notes

Sends funds to a customer's debit card - debiting the client's RAMFi USD balance and crediting the cardholder. The card must be referenced by a tokenized cardId (never a raw PAN).

Note: clientID is passed in the request body following RAMFi's standard POST convention - not as a path parameter. All POST endpoints in the RAMFi API use the request body for client identification.

Request Body · application/json
JSON { "clientID": "string", // REQUIRED - RAMFi clientID of the end user "cardId": "string", // REQUIRED - tokenized card identifier, never a raw PAN "amount": 0.00, // REQUIRED "externalReference": "string", // REQUIRED - unique ID from your system "currency": "USD", "memo": "string" }
Request Body Parameters
ParameterTypeRequiredDescription
clientID string REQUIRED The RAMFi clientID of the end user whose card will receive funds.
cardId string REQUIRED The tokenized card ID from the Card Capture SDK.
amount number REQUIRED Amount to send.
externalReference string REQUIRED Unique transaction ID from your system, used for reconciliation. Character limit not yet confirmed.
currency string OPTIONAL ISO 4217 currency code.
memo string OPTIONAL Optional descriptor.
Request Body Parameters
ParameterTypeRequiredDescription
clientID string REQUIREDThe RAMFi clientID of the end user whose card will receive funds. Obtain via Create Client.
cardId string REQUIREDThe tokenized card identifier (never a raw PAN), retrieved via GetCardOnFile.
amount number REQUIREDAmount to send.
externalReference string REQUIREDUnique transaction ID from your system, used for reconciliation. Character limit not yet confirmed.
currency string OPTIONALISO 4217 currency code.
memo string OPTIONALOptional descriptor.
Example Responses
200 OKSuccess
JSON { "isSuccess": true, "errorMessage": "", "result": { "transactionID": "string", "status": "Approved|Declined", "amount": 0.00, "externalReference": "string" } }
AccountHolder Schema
PropertyTypeDescription
linkedAccountIdstring (UUID)Identifier of the bank account this record represents.
namestringFull name or business name on the bank account.
addressobjectStreet address on the account (streetAddress, additionalAddress, city, state, country, zip).

Endpoint returns an array of these objects — one per linked account.

StatusDescription
401Unauthorized - invalid or expired token
400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

W2W Transfer
POSTSend Funds to Address/api/FE/SendFundsToAddress
Request Parameters — enter values to build the request
Usage Notes
Validation enforced at the controller. amount must be > 0.00000001; currency cannot be USD/PUSD or the unset default; externalReference is required and capped at 50 characters; the destination address must be whitelisted first.

Sends digital assets from a client's balance to an external wallet address, initiating a blockchain transaction. Ensure the address is valid and on the correct network before calling. Any destination address must first be whitelisted using AddWalletAddress or the transaction request will fail.

Query Parameters
ParameterTypeRequiredDescription
addressstringREQUIREDDestination wallet address. Must already be whitelisted via Add Wallet Address.
clientIdstringOPTIONALThe client ID. Obtain via Create Client.
amountnumber (double)REQUIREDAmount to send. Must be greater than 0.00000001 (the smallest tradeable BTC unit).
currencyCurrencyTypeREQUIREDDigital-asset currency. Cannot be USD (1) or PUSD (2), and cannot be the unset default (0). See CurrencyType.
externalReferencestringREQUIREDYour transaction reference. Maximum 50 characters.
Example Responses
200 OKSuccess

Success - no response body is returned.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTAdd Funds from Wallet Address/api/FE/AddFundsFromAddress
Usage Notes

Ledgers an expected deposit of digital assets from an external wallet address. The externalTransactionID should be the transaction hash for verification. Addresses must first be whitelisted using AddWalletAddress before funds can be received from an address and applied to a client account.

Request Body · application/json
JSON · AddFundsFromAddress { "clientID": "string", // REQUIRED "externalTransactionID": "string", // REQUIRED "amount": 0.00, "fromAddress": "string", // REQUIRED "toAddress": "string", // REQUIRED "fundsType": "BTC" // REQUIRED - CurrencyType enum }
Request Body Parameters — enter values to build the request
FieldTypeRequiredDescriptionValue
clientIDstringREQUIREDThe client the deposit is for.
externalTransactionIDstringREQUIREDYour external transaction reference.
amountnumberREQUIREDExpected deposit amount.
fromAddressstringREQUIREDExternal whitelisted source address.
toAddressstringREQUIREDRAMFi custody receiving address (must be whitelisted).
fundsTypeCurrencyTypeREQUIREDDigital-asset currency of the deposit (CurrencyType enum, e.g. 6 = BTC).
Example Responses
200 OKSuccess

Success - no response body is returned.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "result": null, "errorMessage": "a required field is required." }

Returned when the request fails validation - for example a missing or malformed field. The errorMessage explains what was invalid. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "result": null, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

Disbursements
Campaign-based payouts on the api/Disbursement controller: read your company’s payout campaigns and their per-rail fees, provision payees (consumers) in a batch, and update a payee’s details. All calls use the short-term bearer token plus X-OTP, and return the standard { resultModel, isSuccess, errorMessage } envelope.
GETGet Campaign/api/Disbursement/Campaign
Request Parameters — enter values to build the request
Usage Notes

Returns the payout campaign(s) configured for your company — each campaign lists its enabled payout rails (ACH, prepaid card, check-by-mail, real-time payment, Venmo, PayPal, international) and the per-rail fees (percentage and flat). Pass payeeId to return the single campaign for that payee; omit it to return all campaigns. Campaigns are created and updated by Reliant administrators, so this API is read-only for campaigns.

Query Parameters
ParameterTypeRequiredDescription
payeeIdintegeroptionalFilter to a single campaign by payee ID. When omitted, all campaigns for the authenticated company are returned.
Example Responses
200 OKSuccess

Returns: CampaignInformation (an array; a single object when payeeId is supplied), wrapped in the standard envelope.

JSON { "resultModel": [ { "campaignGuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "payeeId": 1024, "disbursementAmount": 250.00, "numberOfBeneficiaries": 3, "achBankTransfer": true, "achBankTransferFeePct": 0.5, "achBankTransferFeeFlat": 0.25, "prePaidCard": true, "prePaidCardFeePct": 1.0, "prePaidCardFeeFlat": 0.50, "checkByMail": false, "checkByMailFeePct": null, "checkByMailFeeFlat": null, "realTimePayment": true, "realTimePaymentFeePct": 1.5, "realTimePaymentFeeFlat": 0.00, "venmo": true, "venmoFeePct": 1.0, "venmoFeeFlat": 0.00, "paypal": true, "paypalFeePct": 1.0, "paypalFeeFlat": 0.00, "internationalTransfer": false, "internationalTransferFeePct": null, "internationalTransferFlat": null, "advertisement": false, "advertisementUrl": null, "advertisementImageUrl": null, "hyperwalletPayeeId": 55012, "destinationCurrency": "USD", "purpose": "string", "hwInstantTransfer": false, "prefundAmount": 750.00 } ], "isSuccess": true, "errorMessage": null }
Response Fields · CampaignInformation
FieldTypeDescription
campaignGuidstring (UUID)Unique campaign identifier; use with Add Consumers.
payeeIdintegerPayee ID for this campaign (matches a consumer's dscid).
disbursementAmountdecimalConfigured disbursement amount.
numberOfBeneficiariesintegerNumber of payees on the campaign.
achBankTransfer / prePaidCard / checkByMail / realTimePayment / venmo / paypal / internationalTransferbooleanWhether each payout rail is enabled.
…FeePct / …FeeFlat (per rail)decimalPercentage and flat consumer fee for each enabled rail.
destinationCurrencystringPayout currency.
purposestringCampaign purpose.
hwInstantTransferbooleanWhether instant transfer is enabled.
prefundAmountdecimalPre-funded amount, if any.

Each rail toggle (achBankTransfer, prePaidCard, venmo, paypal, …) has a matching …FeePct and …FeeFlat. Values are illustrative.

400 Bad RequestValidation Error
JSON { "resultModel": null, "isSuccess": false, "errorMessage": "A positive amount is required." }

Returned when the request fails validation. The errorMessage explains what was invalid; some failures return a plain string instead of the envelope. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "resultModel": null, "isSuccess": false, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

POSTAdd Consumers/api/Disbursement/Consumers
Request Body — edit the JSON to build the request
Usage Notes

Provisions one or more payees (consumers) into a campaign in a single batch. Supply the target campaignGuid and an array of consumers. Each consumer’s eligible payout rails are indicated with the ach, checkMail, and prepaidCard flags; routingNumber / accountNumber apply when ach is selected. The response reports success or failure per consumer, so a partial batch can succeed.

Request Body · application/json
JSON · AddConsumersRequest { "campaignGuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6", // REQUIRED "consumers": [ { "firstName": "string", "lastName": "string", "middleInitial": "string", "email": "string", "phone": "string", "streetAddress1": "string", "streetAddress2": "string", "city": "string", "state": "string", "zip": "string", "taxId": "string", "miscellaneous": "string", "amount": 0.00, "ach": true, "checkMail": false, "prepaidCard": false, "routingNumber": "string", "accountNumber": "string" } ] }
Request Body Parameters
FieldTypeRequiredDescription
campaignGuidstring (UUID)REQUIREDThe campaign to add the payees to (from Get Campaign).
consumersarray<Consumer>REQUIREDOne or more payees to provision — see the Consumer fields below.
consumers[] · Consumer object
FieldTypeRequiredDescription
firstNamestringREQUIREDPayee first name.
lastNamestringREQUIREDPayee last name.
emailstringREQUIREDWhere Reliant sends the payout-method selection link.
amountnumber (decimal)REQUIREDGross payout amount for this payee.
middleInitial / phonestringoptionalOptional contact details.
streetAddress1 / streetAddress2 / city / state / zipstringoptionalMailing address (required for check-by-mail).
taxIdstringoptionalTax identifier, where required for reporting.
miscellaneousstringoptionalFree-form reference on the payee.
ach / checkMail / prepaidCardbooleanoptionalEligible payout rails to offer this payee.
routingNumber / accountNumberstringoptionalBank details; apply when ach is enabled.
Example Responses
200 OKBatch Result

Returns: ConsumerBatchResult — a per-consumer result list, wrapped in the standard envelope.

JSON { "resultModel": { "isSuccess": true, "results": [ { "isSuccess": true, "errorMessages": [], "request": { /* echoes the submitted consumer */ }, "response": { "id": "string", "consumerID": 90231, "username": "string", "email": "string", "firstName": "string", "lastName": "string" } } ] }, "isSuccess": true, "errorMessage": null }
Response Fields · ConsumerBatchResult
FieldTypeDescription
resultModel.isSuccessbooleanWhether the batch overall succeeded.
resultModel.results[]arrayOne entry per submitted consumer, in request order.
results[].isSuccessbooleanWhether this individual payee was provisioned.
results[].errorMessagesarray<string>Reasons this payee failed (empty on success).
results[].response.consumerIDintegerRAMFi consumer ID assigned.
results[].response.username / email / firstName / lastNamestringEchoed identity of the provisioned payee.

Inspect each element of results: a failed consumer has isSuccess: false and populated errorMessages while others in the same batch may still succeed. Values are illustrative.

400 Bad RequestValidation Error
JSON { "resultModel": null, "isSuccess": false, "errorMessage": "A positive amount is required." }

Returned when the request fails validation. The errorMessage explains what was invalid; some failures return a plain string instead of the envelope. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "resultModel": null, "isSuccess": false, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

GETGet Consumers/api/Disbursement/Consumers
Request Parameters — enter values to build the request
Usage Notes

Returns the consumers (payees) for your company. All filters are optional and combine: pass campaignGuid to scope to one campaign, consumerId to fetch a single consumer, and/or email to match by address. With no filters, all consumers for the authenticated company are returned.

Query Parameters
ParameterTypeRequiredDescription
campaignGuidstring (UUID)optionalScope results to a single campaign.
consumerIdintegeroptionalFetch a single consumer by ID.
emailstringoptionalMatch consumers by email address.
Example Responses
200 OKSuccess

Returns: ConsumerInformation array, wrapped in the standard envelope.

JSON { "resultModel": [ { "userId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "clientfname": "string", "clientlname": "string", "clhomephone": "string", "vendoraccountnumber": "string", "vendorid": 42, "savingsBalance": 120.00, "dscid": 1024 } ], "isSuccess": true, "errorMessage": null }
Response Fields · ConsumerInformation
FieldTypeDescription
userIdstring (UUID)RAMFi user ID for the consumer.
clientfname / clientlnamestringConsumer first / last name.
clhomephonestringConsumer phone.
vendoraccountnumberstringVendor account number.
vendoridintegerVendor ID.
savingsBalancedecimalCurrent balance held for the consumer.
dscidintegerPayee ID — pass to Get Campaign's payeeId filter.

dscid is the payee ID used by Get Campaign’s payeeId filter. Values are illustrative.

400 Bad RequestValidation Error
JSON { "resultModel": null, "isSuccess": false, "errorMessage": "A positive amount is required." }

Returned when the request fails validation. The errorMessage explains what was invalid; some failures return a plain string instead of the envelope. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "resultModel": null, "isSuccess": false, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

PATCHUpdate Consumer/api/Disbursement/Consumers
Usage Notes

Updates mutable profile fields on an existing consumer, identified by consumerId. Only the fields you send are changed; omit a field to leave it unchanged.

Request Body · application/json
JSON · UpdateConsumerRequest { "consumerId": 0, // REQUIRED "firstName": "string", "lastName": "string", "middleInitial": "string", "phone": "string", "streetAddress1": "string", "city": "string", "state": "string", "zip": "string" }
Request Body Parameters — enter values to build the request
FieldTypeRequiredDescriptionValue
consumerIdnumber (int)REQUIREDThe consumer to update.
firstNamestringoptionalUpdated first name.
lastNamestringoptionalUpdated last name.
middleInitialstringoptionalUpdated middle initial.
phonestringoptionalUpdated phone.
streetAddress1stringoptionalUpdated street address.
citystringoptionalUpdated city.
statestringoptionalUpdated state.
zipstringoptionalUpdated ZIP.
Example Responses
200 OKSuccess
JSON { "isSuccess": true, "errorMessage": null }

A bare ResultViewModel envelope (no resultModel) — isSuccess: true confirms the update.

400 Bad RequestValidation Error
JSON { "isSuccess": false, "errorMessage": "A positive amount is required." }

Returned when the request fails validation. The errorMessage explains what was invalid; some failures return a plain string instead of the envelope. Error text is illustrative; the envelope shape is authoritative.

401 UnauthorizedAuthentication Failure
JSON { "isSuccess": false, "errorMessage": "Authorization token is invalid or expired." }

Returned when the short-term bearer token is missing, expired, or invalid, or the X-OTP header fails verification. Provision a new token via Provision Token.

RAMFi Developer Documentation · Version 1.1