Get Payin
curl --request GET \
--url https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"object": "<string>",
"account_id": "<string>",
"amount": "<string>",
"currency": "<string>",
"network": "<string>",
"amount_in_usd": "<string>",
"status": "<string>",
"payment_rail": "<string>",
"note": "<string>",
"txn_hash": "<string>",
"destination_wallet_id": "<string>",
"destination_address": "<string>",
"source_address": "<string>",
"sender_name": "<string>",
"sender_account_masked": "<string>",
"sender_bank_code": "<string>",
"sender_country": "<string>",
"deposit_destination": {},
"payin_type": "<string>",
"initiated_at": "<string>",
"completed_at": "<string>",
"failed_at": "<string>",
"failed_reason": "<string>",
"voided_at": "<string>",
"voided_reason": "<string>",
"created": "<string>",
"updated": "<string>",
"created_by": "<string>",
"updated_by": "<string>"
}Payins
Get Payin
Retrieve detailed information about a specific incoming payment
GET
/
v1
/
accounts
/
{account_id}
/
payins
/
{payin_id}
Get Payin
curl --request GET \
--url https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hopnow.io/v1/accounts/{account_id}/payins/{payin_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"object": "<string>",
"account_id": "<string>",
"amount": "<string>",
"currency": "<string>",
"network": "<string>",
"amount_in_usd": "<string>",
"status": "<string>",
"payment_rail": "<string>",
"note": "<string>",
"txn_hash": "<string>",
"destination_wallet_id": "<string>",
"destination_address": "<string>",
"source_address": "<string>",
"sender_name": "<string>",
"sender_account_masked": "<string>",
"sender_bank_code": "<string>",
"sender_country": "<string>",
"deposit_destination": {},
"payin_type": "<string>",
"initiated_at": "<string>",
"completed_at": "<string>",
"failed_at": "<string>",
"failed_reason": "<string>",
"voided_at": "<string>",
"voided_reason": "<string>",
"created": "<string>",
"updated": "<string>",
"created_by": "<string>",
"updated_by": "<string>"
}Returns one payin belonging to the account, with the sender details the receiving bank reported and the balance the money was credited to. A voided payin is still retrievable by id even though List Payins hides it by default.
Requires an API key with
read access on the payments scope.
Path Parameters
string
required
The account’s external ID (starts with
acct_)string
required
The payin’s external ID (starts with
pi_)Response
string
Payin identifier (starts with
pi_)string
Always returns
"payin"string
Account ID (starts with
acct_)string
Payin amount (decimal)
string
Currency code: a supported fiat code or one of
USDC, USDTstring
Blockchain network for a crypto payin, otherwise
nullstring
Amount converted to USD, or
null when no rate was availablestring
Payin status:
pending, completed, failed or voided. A payin moves pending → completed or pending → failed; a completed payin can later be voided. failed and voided are terminal.string
Rail the money arrived on:
swift, ach, ach_same_day, fedwire, fednow, rtp, sepa, sepa_instant, faster_payments, chaps, spei, pix, crypto or manual. null when the bank reported no rail, for example an internal transfer.string
Remittance reference attached by the sender. Read-only.
null when none was provided.string
Blockchain transaction hash for a crypto payin, otherwise
nullstring
Hop wallet the crypto payin was credited to (starts with
wal_), otherwise nullstring
On-chain address the crypto payin was sent to, otherwise
nullstring
On-chain address the crypto payin was sent from, otherwise
null. Also null when no sender address was reported for the deposit.string
Sender name as reported by the bank, or
nullstring
Masked sender account. An IBAN is masked as first 4 +
**** + last 4 (GB29****6819); an account number as **** + last 4 (****4412). null when the bank reported neither.string
Sender bank BIC, or
nullstring
Sender country as an ISO 3166-1 alpha-2 code, or
nullobject
Which balance was credited:
{"type": "trading_account"} or {"type": "virtual_account", "virtual_account_id": "va_…"}string
Payin type:
standard or manual (booked by Hop)string
ISO 8601 timestamp when the payin was initiated
string
ISO 8601 timestamp when the payin completed, or
nullstring
ISO 8601 timestamp when the payin failed, or
nullstring
Reason for failure, or
nullstring
ISO 8601 timestamp when the payin was voided, or
nullstring
Reason the payin was voided, or
nullstring
ISO 8601 timestamp when created
string
ISO 8601 timestamp when last updated
string
Actor that created the payin: the API key id (starts with
ak_), or hop_admin for a manual payinstring
Actor that last updated the payin, or
nullErrors
| Status | code | When |
|---|---|---|
404 | RESOURCE_NOT_FOUND | payin_id is unknown or the payin belongs to another account |
Request Example
curl "https://api.hopnow.io/v1/accounts/acct_ka44qsvpo8q3wtzuwfqf0h6u/payins/pi_uh0p51dqek7qes5e52a6x7of" \
-H "X-API-Key: your_api_key" \
-H "X-Signature: hmac_signature" \
-H "X-Timestamp: 1234567890" \
-H "X-Nonce: abc123"
Response Example
{
"id": "pi_uh0p51dqek7qes5e52a6x7of",
"object": "payin",
"account_id": "acct_ka44qsvpo8q3wtzuwfqf0h6u",
"amount": "1000.00",
"currency": "USD",
"network": null,
"amount_in_usd": "1000.00",
"status": "completed",
"payment_rail": "swift",
"note": "INV-2291",
"txn_hash": null,
"destination_wallet_id": null,
"destination_address": null,
"source_address": null,
"sender_name": "ACME TRADING LTD",
"sender_account_masked": "GB29****6819",
"sender_bank_code": "NWBKGB2L",
"sender_country": "GB",
"deposit_destination": {"type": "virtual_account", "virtual_account_id": "va_2w9e4r7t1y5u8i3o6p0a5s2d"},
"payin_type": "standard",
"initiated_at": "2026-01-15T10:00:00Z",
"completed_at": "2026-01-15T10:05:00Z",
"failed_at": null,
"failed_reason": null,
"voided_at": null,
"voided_reason": null,
"created": "2026-01-15T10:00:00Z",
"updated": "2026-01-15T10:05:00Z",
"created_by": "ak_3f7k9m2p5r8t1v4x6z0b3n5q",
"updated_by": null
}