Send your first Onerway API request

Get started with the Onerway API by creating your first payment order.

All Onerway API requests require authentication using merchant credentials. When you create a Onerway account, we provide you with a complete set of credentials—merchant number, secret key, and store ID—for both sandbox and production environments. The sandbox environment lets you safely test Onerway features without processing real money, while the production environment handles live transactions.

Before you begin

This guide walks you through a simple Onerway API interaction: creating a payment order. For a deeper dive into our API architecture and design principles, see the API OverviewPayments API. If you're ready to start accepting real payments, check out our Payments quickstart.

Manage your API credentials

Every account comes with complete API credential sets for both sandbox and production environments.

Can't see your API credentials? Ask your account owner to add you to their team with the appropriate permissions.

Send your first API request

The easiest way to explore the Onerway API is through Apifox, which lets you make API requests directly from your browser. Since it runs in sandbox mode, you can experiment without any risk to real funds.

  1. Open the Card Checkout endpoint in Apifox
  2. Click the Run in Apifox button
  3. Use the preset sandbox environment variables (already configured for you)
  4. Click Send to make the request

You should see a response like this:

{
    "respCode": "20000",
    "respMsg": "Success",
    "data": {
        "transactionId": "1967964791566110720",
        "merchantTxnId": "268b51e4-cbef-4a39-856b-dcc18f3f6805",
        "merchantNo": "800209",
        "responseTime": "",
        "txnTime": "",
        "orderAmount": "0.50",
        "orderCurrency": "USD",
        "txnAmount": "",
        "txnCurrency": null,
        "txnTimeZone": null,
        "status": "U",
        "reason": null,
        "redirectUrl": "https://sandbox-checkout.onerway.com/checkout?key=c716f87fbf4c473f93948c618c507126&checkoutDetail=H4sIAAAAAAAAAMVXTXPbNhD9Kx6eLRkESRD0qQrtTJWxnYzkpNN2cgCBpcSUIlgQlKJm8t%2B74IcsOWrS5pBeNMQDFti3%2B7ALffJEXc%2BVd%2B35MY05JzxkQcxD4scJ9S69DRi5FpV90N41J4SS5AgTG0DDWQbl0crHj1W3H2U8i3wIJzKDfBKKIJnwiGUTJaXP8yBnnESnZo9Ftx8lNJqQZOKzC0qvI3rtJ1%2Bu%2B01XuLZqy%2FLSswjta2e6nN3deh0w2%2Bi2sgiRaUR6KG2NgUruEXy7vEGsabM3RqtW2sH8Zr64TR9xRgqjHDavcuT9%2ByevQEZ%2ByANGKYsTzkIWRTymTyvR%2Bt18OUPb%2BmTLdLZwR5V6pd8Iu0ZkbW3dXF9dGV0hHwVbXTeqEKtpVupsKrWB6a6olN410wrsld6Cwd8ajLCFriY7yCaNyj5ejSff4dZXsZ9DKCTPgUkIZBxmIfUh5jnNOFOUT%2BtqdcRryNzgMcYhHSaaPqafL08oR5QmScw4o88o38%2BWj7eLgeP%2FQpznOfFJwIRQICFKgKpc%2BQmKOctzn8fniZ%2F4%2FVX6IUkikgQBi%2FGDJuyE%2Fuz2P9CuhdzXYv8VxsMK6mZPWYYZCRQjwEGoIJSCBjLLMz8TVElfJNF5lp1730puQIIoIgHnDEmesLuZL9PX724XP4gjD8KcKyJ5LCmHhEDsx0wJLmmcyzgh0w%2F1GY5HTn5TxjThfhjRMPCfMX2VvvhBJOMAfMpoJGXIpGAKSALKDylVTNBQhOdJ9v59S6f4E3CfRwlWaf4skw%2B3i2V69%2FZH0SQhZRmLmZ9RTnyfYN3IGAjJcgVOsuf1euLmGbbvLz0sAk1h4chNBRs9xWZgdmKPLm6u0DYryrKoVjOlDDRo7e12u6mFxroFw7l9ae8bCOQ5SFts4b6oWuvOC0jXMl4bBea%2BWY0Lh42drdl0Zcm7%2FuTlhWnGZvhKVFCW4EIqDuBdm%2BldYf9y0V93jcvzOUn8KOA0dE0QNqIo3Y1VRhRVRH9aOWDwttaNFWWqlbOLWMRcXxYHbhGmm1zcF43dXywEpss1Y%2Bm6n%2BlbXZ%2FzbVHJLuGv3XRh3dyDNnZ9MVO6rNcllmQXdmsA7Mi3ajcZmHFUKKgsWj4MqBdSEsWouSBmXdRxtxthD335Q%2F3yKTIjdCeOkc9dohtpirqPZr%2FMgCoMpuStKUcIY2Bbx3fZPQaaRqwOuza6NRJS7CoYfFwi1yD%2F0K3t%2B37%2Fukmwb7MwxqAzhoqMqXsVGLCtqbpTngSlZfNcUFJg8Mojb6wRVSOk87nTyMNBS3ghNhim9DQBo0f3mMWyGdfmBZQq1VVerFojjgOAbFfQnOhsyAjs0pHd8xOP9nnpdm66p0vVa9Bp%2FmddOl8d4Lj%2F2WKQcepXHG1F2bpv%2FFRFU5di3024CnO0AWb%2Beyy32%2B%2BwOlzKTlL%2F1v59f0nPBwMn1yjiF2ducS7KBvrpX8YaM2CY%2FHnlrmDpwnyAM5TAkDxXBLrhmBJXTuebI4VmogEWuto4IlKX%2BnCztgXshnfzE5B2onthqxOw19URKlqrF8N9OVwqFLYT33ibcDBT20LCFxVvXlkwGMzuD0DCue%2BKizSAMf%2Bn5zgNvM9%2FA2ZV27c3DAAA", // Checkout payment link
        "sign": "4585af83d9804c2fdbb144832735544688e323483a01b4a3fab4948c694c118c",
        "contractId": "",
        "tokenId": null,
        "eci": null,
        "transactionOrderNo": null,
        "periodValue": null,
        "lpmsType": null,
        "qrCode": null,
        "subscriptionManageUrl": null
    }
}

Using test card numbers

To test different payment scenarios, you can use the following test card numbers:

Card NumberBrandResult
4761 3441 3614 1390VisaPayment successful
4000 0209 5159 5032VisaRequires 3DS verification
4000 1284 4949 8204VisaCard declined
For more test card numbers, see Test CardPayments API

Common error handling

You might encounter these common errors during testing:

Error CodeDescriptionHandling Suggestion
40013Abnormal parameters (cannot be read)Check if environment variables are properly configured
70002Unknown declineContact technical support
For more error codes, see Error Code

View transaction data

Every payment order you create generates a complete transaction record. View and manage your transactions in the .

Transaction list

  1. Access your
  2. Navigate to Transactions to see all payment activity
  3. Filter and search by date, status, or other criteria

Transaction details

Click any transaction ID to see detailed information across these sections:

  • Transaction ID: Unique identifier for this transaction
  • Transaction Type: Sale, Auth, etc.
  • Order Amount: Original transaction amount
  • Processing Time: When the transaction was processed
  • Response Code & Message: Status and description from the payment processor

After your payment

Redirect customers to a return page

Customize where customers land after completing their payment.

Set up landing page

Add a returnUrl to your payment request:

{
  "txnOrderMsg": {
    // ...other fields...
    "returnUrl": "https://your-domain.com/payment/landing_page"
  }
}
Don't rely solely on returnUrl for payment confirmation. Customers might close their browser or lose internet connection before reaching your landing page. Set up a webhook event handler so Onerway can send payment events directly to your server, bypassing the client entirely. If webhook notification , Onerway will retry multiple timesPayments API.

Set up webhook handler

Webhooks notify your server about payment events in real-time, independent of the customer's browser.

Set up webhook endpoint

Add a notifyUrl to your payment request:

{
  "txnOrderMsg": {
    // ...other fields...
    "notifyUrl": "https://your-domain.com/webhook/onerway"
  }
}

Webhook handling

Learn how to process webhook events in our Webhooks guidePayments API.