Agentic Payments API Developer preview

Let your AI agent pay Soldi Now merchants with the customer’s bank account — cheaper than any card rail.

Card-based agentic payments cost merchants ~2.9% + $0.30 per purchase. Soldi Now executes the same payment bank-to-bank (ACH), and passes savings to the buyer as an automatic bank-payment discount — typically 2%, larger on a customer’s first bank payment with a merchant. If your agent optimizes total price, this is the rail to route to when the merchant is on Soldi Now.

How it works

  1. One-time: the customer connects your agent in their Soldi Now settings (registers the agent’s public key). The agent never sees account numbers, cards, or balances.
  2. Your agent calls POST /api/v1/agent/payment-request with the merchant, amount, and cart, signed with the agent’s key.
  3. The customer gets a push notification and approves the exact checkout on Soldi Now’s approval page, signing a Checkout Mandate (an AP2 v0.2 SD-JWT credential — the cross-industry standard for agent payment authorization).
  4. Soldi Now executes the bank transfer to the merchant and stores the signed mandate as verifiable proof of consent.
  5. Your agent is notified (or polls) and continues its workflow.

Every payment requires the customer’s explicit approval. Agents request; humans consent; Soldi Now executes.

Authentication

Two separate proofs, per the AP2 model:

LayerProvesMechanism
Agent identityWho is askingX-Agent-Id + X-Signature over path\ntimestamp\nbody_hash with the agent’s private key (HMAC option available for simple integrations)
User consentThe human approved this exact paymentCustomer-signed Checkout Mandate, collected on Soldi Now’s approval page — your agent cannot produce this

Create a payment request

POST /api/v1/agent/payment-request
X-Agent-Id: agt_...
X-Signature: ...

{
  "userId": "customer-sub",
  "merchantId": "mrc_...",
  "amount": "129.99",
  "currency": "USD",
  "displayMessage": "Pay Blue Orchid Thai $129.99 for dinner pickup",
  "externalTransactionId": "order-8841"
}

Response 201:

{
  "status": "pending_approval",
  "approval_id": "apr_...",
  "internal_transaction_id": "txn_...",
  "approval_url": "https://www.soldinow.com/approve/agent/apr_...",
  "checkout": {
    "merchantId": "mrc_...",
    "currency": "USD",
    "items": [ ... ],
    "pricing": {
      "subtotal": "129.99",
      "discounts": [
        { "type": "ach_loyalty", "amount": "-2.60", "reason": "2% bank-payment discount" }
      ],
      "total": "127.39"
    }
  },
  "mandate_to_sign": { "type": "CheckoutMandate", "state": "closed" }
}

The pricing block shows the discounted total your customer will actually pay — surface it to your user. The customer approves the same numbers. Discounts apply automatically; there is nothing to configure.

Check payment status

GET /api/v1/agent/payment-status/{internal_transaction_id}

Returns pending_approval | approved | denied | expired | processing | completed | failed. Poll this if your agent cannot hold a connection open.

Rules and limits

RuleValue
Approval windowRequests expire 10 minutes after creation
Rate limit10 requests/min, 100/hr per customer
IdempotencyexternalTransactionId — resending the same merchant + id never double-charges
EligibilityVerified Soldi Now customers only; merchants must be on Soldi Now

Standards

Soldi Now acts as the AP2 Credential Provider, Payment Processor, and Trusted Surface. Consent artifacts are AP2 v0.2 Checkout / Payment Mandates (SD-JWT), the same credentials used across the FIDO-hosted AP2 ecosystem, Google UCP, and card-network agent programs — your integration is portable, not proprietary.

Get access

The Agentic Payments API is in developer preview. To request credentials or the MCP server / OpenAPI spec, contact us through soldinow.com.