Verify Bitcoin Payments via API — Real-Time, Non-Custodial

Quick Answer: ShegerPay verifies Bitcoin (BTC) payments through native on-chain verification via one REST API call. The customer sends BTC to the merchant's Bitcoin address, the chain confirms, and ShegerPay's webhook fires with payment.verified. Default confirmation count is 12. ShegerPay never holds the funds — no merchant license required.

What is Bitcoin?

Bitcoin (BTC) is the first and largest cryptocurrency by market cap, launched in 2009 by Satoshi Nakamoto. It is a decentralized peer-to-peer digital currency secured by proof-of-work and is widely accepted as a store of value and global payment rail. Bitcoin is used by Ethiopian crypto users for savings, cross-border transfers, and merchant payments.

How Bitcoin verification works with ShegerPay

  1. Customer sends BTC from their wallet/exchange to the merchant's Bitcoin address
  2. The Bitcoin network broadcasts and confirms the transfer (~10 min/block)
  3. Merchant backend POSTs to /api/v1/verify with provider=bitcoin and the tx hash
  4. ShegerPay reads the chain via its full-node infrastructure, returns verified=true once the confirmation threshold is met, then fires the webhook

Code example

curl -X POST https://api.shegerpay.com/api/v1/verify \
  -H "X-API-Key: sk_test_demo" \
  -H "Content-Type: application/json" \
  -d '{"provider":"bitcoin","transaction_id":"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b","amount":0.005}'
import ShegerPay from '@shegerpay/sdk';
const sp = new ShegerPay('sk_test_demo');
const result = await sp.verify({
  provider: 'bitcoin',
  transactionId: '4a5e1e4b...',
  amount: 0.005
});
from shegerpay import ShegerPay
sp = ShegerPay('sk_test_demo')
result = sp.verify(provider='bitcoin', transaction_id='4a5e1e4b...', amount=0.005)
$sp = new ShegerPay\Client('sk_test_demo');
$result = $sp->verify([
  'provider' => 'bitcoin',
  'transaction_id' => '4a5e1e4b...',
  'amount' => 0.005
]);

Bitcoin-specific features

  • Native on-chain verification — ShegerPay runs Bitcoin full-node infrastructure; no third-party explorer dependency
  • 12 confirmations default — configurable per integration (1 for low-value, 6 standard, 12+ high-value)
  • Address validation — P2PKH, P2SH, Bech32 (native SegWit), and Taproot all supported
  • Mempool visibilitypending state surfaced before first confirmation so you can show "received, awaiting confirmations" UX
  • Reorg-safe — verification re-checks if a reorg invalidates the tx and reverts to pending

Why ShegerPay for Bitcoin

  • Non-custodial — funds settle directly to your Bitcoin address
  • No merchant license required
  • Configurable confirmation threshold (default 12)
  • Crypto verifications included on Business plan
  • HMAC-SHA256 webhook signatures
  • 12 official SDKs

Pricing for Bitcoin verification

  • Free: 100 verifications/month (fiat)
  • Startup ($9/mo): 2,000 verifications
  • Business ($29/mo): 10,000 verifications + crypto (BTC, ETH, USDT, Binance, Bybit)
  • Enterprise: custom

Comparison

Feature ShegerPay Chapa Arifpay Manual
Bitcoin supported Yes No No Yes
Native full-node Yes
Configurable confs Yes
Non-custodial Yes No No
Verification time ~10m/conf Hours

FAQ

How fast is Bitcoin verification with ShegerPay? End-to-end latency depends on confirmation count and block timing. Bitcoin produces ~1 block per 10 minutes, so 6 confirmations is ~60 minutes; 12 confirmations is ~120 minutes. The first-seen pending state is reported within seconds of broadcast.

Why does Bitcoin take longer than USDT? Bitcoin block time is ~10 minutes vs Tron's ~3 seconds. For faster crypto verification, customers can pay in USDT TRC20 or BEP20.

Can I lower the confirmation requirement? Yes — set confirmations in the request (e.g., 1 for low-value, 6 standard). Default is 12.

Does ShegerPay hold Bitcoin? No — BTC settles directly to your address. ShegerPay is non-custodial.

Is there a sandbox/demo for Bitcoin? Yes — use sk_test_demo with a testnet tx hash, no signup required.

What happens if Bitcoin verification fails? API returns verified=false with reason: not_found, pending, insufficient_confirmations, wrong_recipient, amount_mismatch, or reorged.

Related: Pricing · Docs · Verify USDT · Verify Ethereum · Verify Binance

Contact: [email protected] · +251 998 169 242