Get Started in 8 Minutes
From login to your first intelligent payment routing in under 8 minutes. This guide walks you through accessing your account, getting your API keys, and executing your first smart router payment.
What You'll Build
By the end of this guide, you'll have executed your first intelligent payment routing—a smart router call that automatically selects the optimal payment provider based on multiple factors like geography, cost, and success rates.
Learning Outcomes
Prerequisites
Before you begin, ensure you have the following:
Account Credentials
Login credentials provided by Corridorly during onboarding
Command Line
Access to a terminal with cURL installed (or any HTTP client like Postman)
8 Minutes
Set aside uninterrupted time to complete the full setup
Account Setup: Your Corridorly account, including your genesis user credentials and initial configuration, is created for you during the onboarding process after contract signing. This guide assumes you've already received your login details from the Corridorly team.
Access Your Account1 min
Log in to your Corridorly dashboard using the credentials provided by the Corridorly team during onboarding.
First Login
Enter Genesis User Credentials
Use the email and temporary password provided by Corridorly in your welcome email. You'll be prompted to set a new secure password on first login.
Explore Your Dashboard
Once logged in, you'll see your dashboard with your pre-configured tenant and development environment. Your account has admin privileges to manage API keys, team members, and settings.
Logged in! You're now ready to generate API keys and start using the Corridorly platform.
Generate API Keys1 min
API keys authenticate your requests to Corridorly. You'll need both a public key (for client-side operations) and a secret key (for server-side API calls).
Create Your API Keys
Navigate to Settings
- 1.Click Settings in the sidebar
- 2.Select API Keys
- 3.Ensure you're in the Development environment (check the environment selector)
Create New API Key
- Name: "Development Testing" (or similar)
- Permissions: Select "Full Access" for testing
- Expiry: Set to 90 days (or "Never" for development)
Save Your Secret Key
After creation, you'll see both keys. Copy and save your secret key immediately—it won't be shown again.
Ready to authenticate! You now have API keys to make requests to Corridorly.
Understand the Smart Router1 min
The Smart Router is Corridorly's intelligent payment routing engine that automatically selects the optimal payment provider for each transaction based on multiple factors.
Multi-Factor Optimization
Evaluates all payment providers simultaneously, scoring each against cost, success rates, geographic performance, and compliance requirements.
Real-Time Decisions
Makes routing decisions in milliseconds based on current provider health, transaction characteristics, and your business rules.
How Smart Routing Works
Geographic Optimization
Providers are scored based on their performance in the customer's region. Local providers often have higher success rates and lower costs.
Cost Efficiency
Compares provider fees, currency conversion costs, and cross-border charges to minimize total transaction cost.
Historical Success Rates
Analyzes past transaction data to identify which providers have the highest approval rates for similar transactions.
Provider Health
Monitors real-time provider status, latency, and error rates to avoid routing to degraded systems.
Compliance & Currency Support
Ensures the selected provider supports the transaction currency and meets regional compliance requirements (SCA, PSD2, etc.).
The Result: Every payment is automatically routed to the provider with the best combination of cost, success probability, and compliance—no manual if-statements required.
Execute Your First Smart Routed Payment3 min
Now for the exciting part—execute an intelligent payment routing via the REST API. This single request triggers the smart router to select the optimal provider and process the payment.
Make Your First API Call
API Endpoint
The smart_global_router symphony ID is used to execute intelligent payment routing.
Request Headers
Replace sk_dev_your_secret_key with your actual secret key from Step 2, and your_tenant_id with your tenant ID from your dashboard.
Request Body
{
"context": {
"amount": 9900,
"currency": "GBP",
"customer": {
"id": "cust_12345",
"email": "user@example.com",
"country": "GB"
},
"paymentMethod": {
"type": "card",
"token": "pm_test_card_visa"
},
"metadata": {
"orderId": "order_789",
"product": "Professional Plan - Monthly"
}
}
}The context object contains all transaction details. The smart router uses these details to automatically select the optimal payment provider.
Complete cURL Command
curl -X POST https://api.corridorly.com/symphony/execute/marketplace/smart_global_router \
-H "Content-Type: application/json" \
-H "X-Api-Key: sk_dev_your_secret_key" \
-H "X-Tenant-Id: your_tenant_id" \
-d '{
"context": {
"amount": 9900,
"currency": "GBP",
"customer": {
"id": "cust_12345",
"email": "user@example.com",
"country": "GB"
},
"paymentMethod": {
"type": "card",
"token": "pm_test_card_visa"
},
"metadata": {
"orderId": "order_789",
"product": "Professional Plan - Monthly"
}
}
}'Expected Response
{
"executionId": "exec_abc123def456",
"symphonyId": "smart_global_router",
"status": "success",
"stages": [
{
"stageName": "payment_classifier",
"recipeId": "recipe_payment_classifier",
"status": "success",
"executionTimeMs": 45,
"output": {
"paymentType": "card",
"riskScore": 0.15,
"region": "GB"
}
},
{
"stageName": "uk_router",
"recipeId": "recipe_uk_payment_router",
"status": "success",
"executionTimeMs": 230,
"output": {
"selectedProvider": "stripe",
"routingScore": 0.985,
"routingFactors": {
"geographicMatch": 0.98,
"costEfficiency": 0.92,
"successRate": 0.985,
"providerHealth": 1.0,
"complianceSupport": 1.0
}
}
},
{
"stageName": "compliance_check",
"recipeId": "recipe_compliance_validator",
"status": "success",
"executionTimeMs": 78,
"output": {
"compliant": true,
"scaRequired": true,
"psd2Compliant": true
}
}
],
"context": {
"amount": 9900,
"currency": "GBP",
"customer": {
"id": "cust_12345",
"email": "user@example.com",
"country": "GB"
},
"paymentMethod": {
"type": "card",
"token": "pm_test_card_visa"
},
"selectedProvider": "stripe",
"routingScore": 0.985,
"compliant": true
},
"totalExecutionMs": 353
}Understanding the Response
Unique identifier for this symphony execution
The symphony that was executed (smart_global_router)
Execution status (success, failed, partial)
Array of all stages executed with their results and timing
Final execution context with enriched data from all stages
Total time taken to execute the entire symphony
Congratulations! You've successfully executed your first smart router symphony. The system classified the payment, routed it through the UK router which selected Stripe with a score of 0.985 (98.5% optimal), validated compliance, and completed in 353ms.
Set Up Webhooks2 min
Webhooks let you receive real-time notifications when symphonies complete, payments succeed or fail, and other important events occur.
Configure Webhook Endpoints
Navigate to Webhook Settings
- 1.Go to Settings → Webhooks
- 2.Click "Add Webhook Endpoint"
Configure Your Endpoint
Enter your webhook URL and select events to receive:
Test Your Webhook
Use the "Send Test Event" button to verify your endpoint is receiving webhooks correctly. You should see a 200 OK response.
Verify Webhook Signatures
For security, always verify webhook signatures. Here's a Node.js example:
const crypto = require('crypto');
function verifyWebhookSignature(payload, signature, secret) {
const hmac = crypto
.createHmac('sha256', secret)
.update(JSON.stringify(payload))
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(hmac)
);
}
// In your webhook handler
app.post('/api/webhooks/corridorly', (req, res) => {
const signature = req.headers['x-corridorly-signature'];
const webhookSecret = process.env.CORRIDORLY_WEBHOOK_SECRET;
if (!verifyWebhookSignature(req.body, signature, webhookSecret)) {
return res.status(401).send('Invalid signature');
}
// Process the webhook...
const event = req.body;
console.log('Event type:', event.type);
console.log('Event data:', event.data);
res.status(200).send('Received');
});Webhooks configured! You'll now receive real-time notifications for symphony executions and payment events.
What's Next?
You've completed the quickstart! Here are recommended next steps to deepen your integration and explore advanced features.
Complete Integration Guide
Deep dive into production-ready integration patterns, error handling, idempotency, and best practices.
15-30 min readAPI Reference
Explore all available endpoints, request/response schemas, authentication methods, and error codes.
Interactive docsB2B SaaS Use Cases
Learn how to solve trial conversions, usage billing, global expansion, dunning, and more with real examples.
Real scenariosRouting Engine Deep Dive
Understand how Corridorly's multi-factor routing engine optimises payment provider selection.
TechnicalAdditional Resources
Troubleshooting
Common issues and their solutions when getting started with Corridorly.
401 Unauthorized - Authentication Failed
Cause: Invalid or missing API key in the X-Api-Key header.
Solution:
- Verify you're using the secret key (starts with
sk_dev_), not the public key - Check the X-Api-Key header format:
X-Api-Key: sk_dev_... - Ensure the API key hasn't been revoked or expired
- Confirm you're in the correct environment (dev/staging/prod)
400 Bad Request - Invalid Symphony ID
Cause: The symphony_id doesn't exist or isn't available in your environment.
Solution:
- Double-check the symphony ID from the marketplace
- Verify the symphony is enabled for your tenant
- Ensure you're using the correct environment-specific ID
422 Unprocessable Entity - Missing Required Fields
Cause: The execution_context is missing required fields for the symphony.
Solution:
- Review the symphony documentation for required fields
- Check the error response for specific missing field names
- Validate field types match the schema (strings, numbers, objects)
Webhook Not Receiving Events
Cause: Webhook endpoint is unreachable or returning errors.
Solution:
- Use "Send Test Event" to verify endpoint connectivity
- Check webhook endpoint logs for incoming requests
- Ensure your server responds with 200 OK within 5 seconds
- For local development, use ngrok or webhook.site for testing
- Verify firewall rules allow Corridorly webhook IPs
Symphony Execution Failed
Cause: A stage within the symphony failed (compliance, routing, payment).
Solution:
- Check the
stages_executedarray in the response - Review the failed stage's error message and reason
- Common causes: payment provider credentials, insufficient balance, blocked transaction
- View execution details in Dashboard → Executions for full logs
Need More Help?
If you're still experiencing issues, we're here to help:
You're All Set!
You've successfully completed the Corridorly quickstart. You can now execute symphonies, receive webhooks, and build production-ready payment orchestration.