Skip to main content
Voice allows you to take card payments in a PCI compliant manner. Voice agents typically run cloud hosted LLMs, telephony, STT/TTS, and logging, making cardholder data infamously hard to capture due to PCI-DSS standards. Voice runs a locally hosted PCI-compliant voice agent that allows inbound SIP transfers to make voice payments on. It can be configured to transfer back to the original call or ended upon completion, with redacted transcripts available and realtime webhooks.
Natural admits calls only from IP ranges it knows. Before your first call, email hi@natural.com the public IP ranges your voice platform signals from, and any target you transfer calls back to. The full SIP requirements are on the voice sessions overview.
Taking the payment for a customer? Pass their party ID as customerPartyId when creating the intent and as merchantPartyId when creating the session.

Create the voice session

Voice sessions are tied to payment intents. First create a payment intent for the full total. The charge captures exactly that amount. Use the payment intent to create a voice session via POST /voice/sessions.
cURL
callerPhone lets Natural text the caller a checkout link if their card is refused. returnTarget is the SIP URI Natural sends the caller back to when the call ends, whatever the outcome; leave it out and Natural hangs up instead. Natural places a new call to that URI, so put your own call identifier in it to route the caller back to the right agent.

Transfer the caller

Place one SIP call to dialUri before dialExpiresAt, 15 minutes from creation. Natural’s agent names the business, reads the total, and takes the card by speech or keypad. When the call ends, the agent transfers the caller to your returnTarget. A session accepts one call. If the transfer fails or the window passes, create a new session for the same intent.

Read the result

Read the intent with GET /payment-intents/{paymentIntentId}. A paid intent reads completed, and its cardPayment carries the card brand, last four, and "channel": "voice".
cURL
For the call itself, see Call log and transcripts.