Hanzo Pay
Crypto payments made simple
A complete payment gateway bridging fiat and crypto. Accept stablecoins, process card payments, enable on/off-ramps, and handle compliance—all through a single API.
Crypto Checkout
Accept USDC, USDT, ETH, and 100+ tokens. Embeddable checkout widget included.
Card Payments
Traditional card processing with instant crypto settlement.
On/Off Ramps
Let users buy crypto with cards or sell crypto to their bank account.
Multi-Currency
Accept payments in 50+ fiat currencies with automatic conversion.
Get Your API Key
Start building in under 5 minutes
No credit card required. Free tier includes 300M compute units/month.
Trusted by developers building:
Key Capabilities
Everything you need, nothing you don't.
Crypto Checkout
Accept USDC, USDT, ETH, and 100+ tokens. Embeddable checkout widget included.
Card Payments
Traditional card processing with instant crypto settlement.
On/Off Ramps
Let users buy crypto with cards or sell crypto to their bank account.
Multi-Currency
Accept payments in 50+ fiat currencies with automatic conversion.
KYC/AML Built-In
Integrated compliance checks. Stay compliant in 100+ countries.
Invoicing
Generate and send crypto invoices. Track payment status automatically.
Instant Settlement
Receive funds instantly in your preferred currency—crypto or fiat.
QR Payments
Generate QR codes for in-person payments. Mobile-optimized flows.
Business Dashboard
Track revenue, refunds, and disputes. Export reports for accounting.
Simple to Integrate
Get started with just a few lines of code. SDKs for every language.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import "@hanzo/pay/IHanzoPay.sol";
import "@hanzo/pay/IPaymentReceiver.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
contract MerchantContract is IPaymentReceiver {
IHanzoPay public hanzoPay;
mapping(bytes32 => bool) public processedPayments;
event PaymentReceived(bytes32 indexed paymentId, address token, uint256 amount);
constructor(address _hanzoPay) {
hanzoPay = IHanzoPay(_hanzoPay);
}
// Receive payment callback from HanzoPay
function onPaymentReceived(
bytes32 paymentId,
address payer,
address token,
uint256 amount,
bytes calldata metadata
) external override {
require(msg.sender == address(hanzoPay), "Only HanzoPay");
require(!processedPayments[paymentId], "Already processed");
processedPayments[paymentId] = true;
// Decode order info from metadata
(string memory orderId) = abi.decode(metadata, (string));
// Process order fulfillment
_fulfillOrder(orderId, payer, amount);
emit PaymentReceived(paymentId, token, amount);
}
// Create payment intent on-chain
function createPaymentIntent(
uint256 amount,
address[] calldata acceptedTokens
) external returns (bytes32 paymentId) {
paymentId = hanzoPay.createIntent(
amount,
acceptedTokens,
address(this),
abi.encode("order_123")
);
}
function _fulfillOrder(string memory orderId, address buyer, uint256 amount) internal {
// Custom fulfillment logic
}
}Built For
E-Commerce
Accept crypto alongside traditional payments. Automatic conversion to your preferred currency.
SaaS Subscriptions
Recurring crypto payments with automatic retry and dunning.
Marketplaces
Split payments, escrow, and multi-party settlements for marketplace transactions.
In-Person Retail
POS integration with QR payments. Instant settlement to your bank.
Supported Chains
Start Building with Hanzo Pay
Get your free API key and ship your first request in under 5 minutes. No credit card required.