Accept cards, wallets, and local payment methods through one API

Accept cards, wallets, and local payments while your servers handle only tokens and payment statuses, since the payment processor of your billing entity receives the card data directly. Billing emails the customer a receipt for each successful charge.

One charge API in front of the payment processor for your billing entity

Your application makes every charge through the same API, whichever payment method the customer picks. Billing keeps the status, the receipt, and any refund of each charge on one payment record, while your payment processor stores the card data under its own PCI DSS compliance.

How Billing takes a payment from the charge call to the refund

Card payments

Accept Visa, Mastercard, American Express, and other major cards. Billing validates each card, checks it for fraud, and requests 3D Secure authentication when the issuer requires it.

Digital wallets

Accept Apple Pay, Google Pay, and other wallet payments, so a returning customer can check out with one tap.

Local payment methods

Accept region-specific methods such as SEPA in Europe, Alipay in China, and mobile money in Africa.

PCI compliance

When you collect card details through the hosted checkout or tokenization, only the payment processor receives each card number, so the PCI self-assessment that you complete covers fewer requirements. Conjoin keeps no card numbers on its own servers either.

Payment intents

Billing records each payment as a payment intent, from authentication and any retries through to confirmation. Query the intent at any point to get the current state of the payment.

Refunds

Issue a full or a partial refund through the API. Billing reports the status of each refund both through the API and through a webhook.

1 API
Every payment method

Cards, wallets, and local methods through one charge call

< 2s
Charge time

Target time for a charge call to return its status

PCI DSS
Compliance

Your processor stores card data under PCI DSS

Build faster with solutions designed for real-world needs

Charge an order and receive the payment status in the same response

Create a payment intent with the amount, the currency, and the payment method. Within that one request, Billing validates the card, screens it for fraud, starts 3D Secure where the issuer asks for it, and emails the receipt once the charge succeeds. Billing then returns the status of the payment in its response to that same request.

Impact

In the sample, an API route on the Quillshade Press server charges $120.00 for a hardcover order and puts the order ID in the reference_id of the intent, so the Conjoin API key stays off the phone. When Billing reports a failed or pending status, the route returns that status as an error, which the app shows to the customer in an alert.

Prompt for a coding agent: Charge $120 for the hardcover order from the server, and show any failure in an alert.

Conjoin IDE

Select a file to view its contents

Finish a 3D Secure payment by verifying the intent after the bank check

Create the payment intent and read the status that Billing returns. When the card's bank requires 3D Secure, the customer approves the payment through the bank's check, after which your verify route asks Billing for the intent again. You can use the same flow for the Strong Customer Authentication that card payments in Europe require.

Impact

In the sample, Vetiver & Stone charges €87.50 for a perfume sample box. When Billing returns a status other than succeeded, the page asks the customer to approve the payment in their banking app. Once the customer approves the payment, the verify route checks the intent with Billing and redirects to the success page if the payment succeeds, or otherwise back to checkout with the status in the error parameter.

Prompt for a coding agent: Charge €87.50 with 3D Secure, and check the payment again after the customer approves it.

Conjoin IDE

Select a file to view its contents

Issue refunds straight from your own code

Issue a full or a partial refund through the API with a reason code for your reports. Billing refunds the charge to the original payment method through your processor and sends a webhook once the processor confirms the refund.

Impact

In the sample, the Cobblestone support tool refunds part of one charge and stores the support ticket number in reference_id. The call returns the refund ID, the status, and the refunded amount, which the tool logs against that ticket.

Prompt for a coding agent: Refund part of this charge from our support tool, and log the refund against the ticket.

Conjoin IDE

Select a file to view its contents

List payments by reference and date with one filtered query

Each payment intent holds the amount, the currency, the status, the customer, the payment method, and your reference ID. List intents with a filter on the reference ID or on a date range, then page through the results with a cursor.

Impact

For the query in the sample, Billing returns up to 50 intents with the reference cobblestone_orders_2026 from April 1, 2026 onward, along with the cursor for the next page.

Prompt for a coding agent: List the order payments since April 1, 50 at a time.

Conjoin IDE

Select a file to view its contents

Build your next app on Conjoin

Conjoin will open with a free Build tier, while the pricing page already lists the launch prices for Pro and Business. If you tell us what you're building, we'll talk you through early access.