Payments API

Automate phone payments.

Send an amount and a number — our agent calls and pays with a single-use card, and provides confirmation once done. No manual calling, no card read aloud, and no merchant integration.

Private beta · For bill-pay, AP, and payout teams

Merchant IVR
Enter your card number, expiration, then the 3-digit code.
Voicepay Agent
Entered card •••• •••• •••• •••• · exp ••/•• · CVV •••
Merchant IVR
Payment complete. Your confirmation number is S27132.
Voicepay Agent
🎉 Payment complete
IVR announced the payment processed; confirmation number read.
Paid in 2m 41s

Built for teams that pay vendors & billers

The problem

Paying a merchant outside your network is manual work — until now.

Integrated rails only reach the vendors and billers you've onboarded. For the long tail outside your network, the phone line is the one channel that always works — a more reliable way to pay them than checks, ACH, or mail. Today it just takes a person to do it.

Paper checks

Days of float, postage, and reconciliation for a payment you could have settled in minutes.

Call-center labor

Staff navigating phone trees and keying cards by hand — slow, error-prone, and it doesn't scale.

Dropped coverage

The payee your STP rails can't reach is exactly the one your users still can't pay through you.

How it works

One endpoint. Any phone tree.

No telephony to run, no IVR maps to maintain, no one on hold. A single API call in, a confirmation number out.

01

Send a payment

POST an amount and the payee's phone line. That's the whole integration — no per-payee scripts to build.

02

The agent calls

Voicepay dials in and navigates the IVR like a person would — through disclaimers, menus, and read-backs.

03

Paid & confirmed

It keys a single-use card as touch-tones, captures the confirmation number, and webhooks you the result.

It all starts with one request

pay.sh
POST api.getvoicepay.com/v1/payments
{
"amount": 4200, // $42.00
"max_overage": 400, // allow ≤ $4 fees
"payee": {
"name": "Acme Utility",
"phone": "+18889630909",
"account": "6714‑33052"
},
"card": { // yours, or omit to mint one
"number": "4242 4242 4242 7141",
"exp": "12/27", "cvc": "•••", "zip": "94607"
}
}
200 OK
{ "status": "paid", "charged": 4550,
"confirmation": "REMITCTR‑91X" }

The API

Replace phones desk with one endpoint.

Your team stops dialing, navigating menus, and keying cards by hand. You POST a payment; we return a confirmation.

  • A single /payments call — amount, payee, and the card to key
  • Bring your own virtual card, or let Voicepay mint a single-use one
  • Handles disclaimers, retries, and field-by-field read-backs
  • Webhook with status, amount charged, and confirmation
  • Drop-in fallback for the payees your rails can't reach
webhook.json
{
"id": "vp_3Nf8a2kZ",
"status": "paid",
"amount": 4200,
"amount_charged": 4550,
"fee_seen": 350,
"confirmation": "REMITCTR‑91X",
"card": "•••7141",
"completed_in": "2m41s"
}

Safety

Safe by construction.

Moving money over a phone call only works if it can't go wrong. Every payment is fenced in before the agent ever dials.

  • Single-use virtual cards — yours or ours; never a real account number
  • Hard amount cap: the agent won't confirm a total above your limit
  • Every digit and prompt redacted in logs and recordings
  • Full per-call audit trail — what it heard, what it pressed
Single-use cardMinted per payment, scoped to one payee, then dead.
Amount railStated $45.50 ≤ cap $46.00 → confirm. Higher → abort.
RedactionCard, CVV, and account read-backs masked everywhere.
Audit trailEvery prompt and keypress, timestamped per call.

Proof

This isn't a concept. It paid a real bill.

Voicepay called a live utility IVR, sat through the disclaimer, entered the account, keyed a single-use card as touch-tones, and returned a confirmation number — end to end, no human on the line.

Real payee, real IVR, real authorization
Card kept intact — 16 digits, plus exp, CVV, ZIP
Refused to confirm until the total was within cap

Use cases

Wherever a payment still means a phone call.

If part of your flow ends with someone dialing a number and reading a card, Voicepay is the API for it.

AP automation

Pay vendors and suppliers that only take a phone call — no checks to mail, no phones desk to staff.

Travel supplier payments

OTAs, tour operators, and DMCs paying hotels, transfers, and activity suppliers by phone or fax.

Insurance payments

Claims paid to providers, repair shops, and contractors that are reachable only by phone.

Consumer bill pay

Bill-pay apps reaching the long-tail billers your electronic rails quietly drop.

Utilities & government

Water, power, and municipal fees locked behind pay-by-phone IVRs.

Healthcare

Provider, lab, and facility payments that still run over a phone line.

Built for money movement

The boring parts, done right.

If your product moves money, your vendors have to be careful with it. Voicepay is designed for that scrutiny.

Single-use cards

Each payment uses a fresh virtual card scoped to one payee and amount.

Amount guardrails

A hard ceiling per call. The agent aborts rather than overpay.

Redaction & audit

Sensitive digits masked in logs; a full trail of every call.

Human-in-the-loop

Optional approval before any payment leaves — your policy, your call.

Stop mailing checks to payees that have a phone.

If your product pays vendors or bills, we'll cover the ones you can't reach by API. We're onboarding a handful of design partners for the private beta.

Prefer to look first? See how it works