Stablecoin API for global payments

Power instant global transfers with a single integration.

Grow more, pay less, move faster.

BlindPay App & Dashboard

Process payments 24/7, anywhere.

Enable instant settlements and expand your global reach.

We take care of the compliance and tech.

Easy stablecoin integration

Quickly integrate stablecoins into your existing payment flow using our developer-friendly APIs.

Offer instant onramp and offramp

Connect any blockchain wallet, get real-time quotes and enjoy low fees for a smooth user experience.

Stay compliant everywhere

We handle all regulatory, compliance, and technical hurdles. Concentrate on your core business.

As partners of industry leaders, we deliver the highest quality services.

Powering next-gen companies.

Enabling secure international payments in under 60 seconds, cutting traditional transaction times by 80%.

Global Payroll

Pay your contractors in any currency, no matter where they are.

Enterprise Payouts

Efficiently manage mass global payments with ease.

Merchant Settlement

Expedite payouts with automatic currency consolidation.

Business Invoicing

Streamline your invoicing process with stablecoin transactions.

Remittances

Offer fast and affordable remittance solutions to your customers.

Secure by design, across all stacks.

Add fiat gateways to your apps with minimal code. Our SDKs support multiple languages and frameworks, backed by a developer-friendly REST API with public OpenAPI documentation.

KYC/B
Bank Accounts
Crypto to Fiat
Blockchain Wallets
Fiat to Crypto
import { BlindPay } from 'blindpay';

const blindpay = new BlindPay('<api_key>');

(async function() {
  // Light KYC
  await blindpay.customers.create('<instance_id>', {
     type: "individual",
     kyc_type: "light",
     email: "[email protected]",
     tax_id: "12345678",
     country: "US",
     first_name: "John",
     last_name: "Doe",
     date_of_birth: "1998-01-01T00:00:00Z",
  });

  // Standard KYC
  await blindpay.customers.create('<instance_id>', {
     type: "individual",
     kyc_type: "standard",
     email: "[email protected]",
     tax_id: "12345678",
     address_line_1: "8 The Green",
     address_line_2: "#12345",
     city: "Dover",
     state_province_region: "DE",
     country: "US",
     postal_code: "02050",
     ip_address: "127.0.0.1",
     phone_number: "+1234567890",
     proof_of_address_doc_type: "UTILITY_BILL",
     proof_of_address_doc_file: "https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/v4-460px-Get-Proof-of-Address-Step-3-Version-2.jpg.jpeg",
     first_name: "John",
     last_name: "Doe",
     date_of_birth: "1998-01-01T00:00:00Z",
     id_doc_country: "US",
     id_doc_type: "PASSPORT",
     id_doc_front_file: "https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/1000_F_365165797_VwQbNaD4yjWwQ6y1ENKh1xS0TXauOQvj.jpg"
  });
})
import { BlindPay } from 'blindpay';

const blindpay = new BlindPay('<api_key>');

(async function() {
  // ACH
  await blindpay.bankAccounts.add('<instance_id>', '<customer_id>', {
    type: "ach",
    name: "Display Name",
    beneficiary_name: "<Replace this>",
    routing_number: "<Replace this>",
    account_number: "<Replace this>",
    account_type: "checking",
    account_class: "individual"
  });

  // Domestic Wire
  await blindpay.bankAccounts.add('<instance_id>', '<customer_id>', {
    type: "wire",
    name: "Display Name",
    beneficiary_name: "<Replace this>",
    routing_number: "<Replace this>",
    account_number: "<Replace this>",
    address_line_1: "8 The Green",
    address_line_2: "#12345",
    city: "Dover",
    state_province_region: "DE",
    country: "US",
    postal_code: "02050"
  });

  // PIX (Brazil)
  await blindpay.bankAccounts.add('<instance_id>', '<customer_id>', {
    type: "wire",
    name: "Display Name",
    pix_key: "<Replace this>",
  });

  // SPEI (Mexico)
  await blindpay.bankAccounts.add('<instance_id>', '<customer_id>', {
    type: "spei_bitso",
    name: "MXN Account",
    spei_protocol: "debitcard",
    spei_clabe: "5482347403740546",
    spei_institution_code: "40002",
    beneficiary_name: "Juan Pérez"
  });

  // ACH COP (Colombia)
  await blindpay.bankAccounts.add('<instance_id>', '<customer_id>', {
    type: "ach_cop_bitso",
    name: "COP Account",
    ach_cop_beneficiary_first_name: "Fernando",
    ach_cop_beneficiary_last_name: "Guzman Alarcón",
    ach_cop_document_id: "1661105408",
    ach_cop_document_type: "CC",
    ach_cop_email: "[email protected]",
    ach_cop_bank_code: "051",
    ach_cop_bank_account: "12345671",
    account_type: "saving"
  });

  // Transfers 3.0 (Argentina)
  await blindpay.bankAccounts.add('<instance_id>', '<customer_id>', {
    type: "transfers_bitso",
    name: "ARS Account",
    transfers_type: "ALIAS",
    transfers_account: "BM123123123123",
    beneficiary_name: "Bryan Montes"
  });
})
import { BlindPay } from 'blindpay';

const blindpay = new BlindPay('<api_key>');

(async function() {
  // Request a quote
  const { id } = await blindpay.payouts.getQuote('<instance_id>', '<bank_account_id>', {
    currency_type: "sender",
    cover_fees: true,
    request_amount: 1000,
    network: "base",
    token: "USDC"
  });

  // Execute payout
  await blindpay.payouts.executeEvm('<instance_id>', '<quote_id>', {
    sender_wallet_address: '0x...'
  });
})
import { BlindPay } from 'blindpay';
import { http, createConfig, wagmiConfig } from 'wagmi'
import { base, arbitrum, polygon } from 'wagmi/chains'

export const config = createConfig({
  chains: [base, arbitrum, polygon],
  transports: {
    [base.id]: http(),
    [arbitrum.id]: http(),
    [polygon.id]: http(),
  },
})

const blindpay = new BlindPay('<api_key>');

(async function() {
  // Request message to sign
  const { message } = await blindpay.blockchainWallets.getMessage();

  // Sign message on chain
  const signature_tx_hash = await signMessage(wagmiConfig, {
    message,
  })

  await blindpay.blockchainWallets.add('<instance_id>', '<customer_id>', {
    name: "Display Name",
    network: "base",
    token: "USDC",
    signature_tx_hash,
  });
})
import { BlindPay } from 'blindpay';

const blindpay = new BlindPay('<api_key>');

(async function() {
  // Request a quote
  const { id } = await blindpay.payins.getQuote('<instance_id>', '<blockchain_wallet_id>', {
    currency_type: "sender",
    cover_fees: true,
    request_amount: 1000,
    network: "base",
    token: "USDC"
  });

  // Execute payin
  await blindpay.payins.getTransferDetails('<instance_id>', '<quote_id>');
})

One API.
Multiple payment rails.

BlindPay, Inc. is a financial technology company and is a registered Money Services Business with the US Treasury's Financial Crimes Enforcement Network, also known as FinCEN. We are not a bank. By creating and using your account at BlindPay, you agree to BlindPay, Inc.'s Terms of Service, to all applicable laws and regulations, and agree that you are responsible for compliance with any and all applicable local laws.