Skip to main content
This is the fastest path to a live payment with Payment Links: create a link, open it, pay with a test card, and see the result. One path, no options to weigh. For embedding card fields directly in your own checkout instead, see the JavaScript SDK quickstart.
1

Create a payment link

Call POST /payment-links with your API key. Idempotency-Key is required on create. Amounts are integers in the currency’s smallest unit; for PHP that is centavos (150000 is PHP 1,500.00).
merchant_branch_reference_number is required when your key is scoped to a partner or merchant. Branch-scoped keys can omit it. When line_items are supplied, amount must equal their sum (unit_price times quantity).
2

Share the returned URL

The 201 response contains the hosted checkout url. Send it to your customer.
3

Pay with a test card

Open the url and pay with a sandbox card. Use a 3DS challenge card and enter OTP 1234:4000 0000 0000 2503   exp 12/28   CVC 123   OTP 1234No real money moves. The full card set is on the Testing page.
4

Confirm and reconcile

After payment, the customer is returned to your redirect_urls.success. Confirm the result server-side by retrieving the payment link and reading its status and successful_payment_count. Match it to your order with the order_reference you set at creation.
The snippets above show the complete request and response. Add your sandbox API key (and a merchant_branch_reference_number if your key is partner- or merchant-scoped) to run them.
Building with an AI agent? Point Claude Code, Cursor, or any AI agent at these docs to scaffold the integration. See Build with AI.

Next steps

API Reference

Every field on every Payment Links endpoint

Authentication

Keys, entity scoping, and idempotency

JavaScript SDK

Collect cards inside your own checkout

Testing

Test cards and scenarios