Account-to-Account (Open Banking) Payments
Accept payments directly from customer bank accounts using Open Banking. This integration enables secure bank-to-bank transfers with real-time authorization.
Process Overview
- Create Transaction - Call the Create Bank Transfer endpoint to initiate a payment
- Generate Payment Link - Generate a payment authorization link via API or Yugo Web UI
- User Authorization - Redirect the user to the payment link to initiate authorization
- Monitor Status - Use webhooks or polling to track transaction status
- Payment Completion - User completes authorization through their bank
- Settlement - Funds are transferred to the recipient's IBAN
API Endpoints
Create Bank Transfer
Initiate an Account-to-Account payment.
POST https://api.yugo.finance/transaction/create-bank-transfer
Headers
| Header | Value |
|---|---|
x-api-key | Your API key |
Request Body
json
{
"amount": "100.00",
"names": "John Doe",
"userId": "unique-user-id-in-your-system",
"userAddress1": "bul. Vitosha 1, 1000 Sofia Center, Sofia, Bulgaria",
"userIpAddress": "87.126.116.201",
"userPassedKyc": true,
"userPassedAml": true,
"currency": "EUR",
"callbackChromeUrl": "yugofinance://",
"callbackSafariUrl": "https://checkout.yugo.finance/",
"revision": "your-transaction-id",
"webhookUrl": "https://your-domain.com/webhook",
"webhookPayload": "your-transaction-id"
}Parameters
| Field | Type | Required | Description |
|---|---|---|---|
amount | string/number | ✅ | Transaction amount. Minimum: 2. Max 2 decimal places. Can be string or number (e.g., "100.00" or 100.00) |
names | string | ✅ | User's first and last name |
userId | string | ✅ | Unique user ID in your system. Format: {companyName}{clientId} |
userAddress1 | string | ✅ | User's address (street and number) |
userIpAddress | string | ✅ | User's IP address |
userPassedKyc | boolean | ✅ | User's KYC verification status |
userPassedAml | boolean | ✅ | User's AML screening status |
currency | string | ❌ | Transaction currency. Defaults to EUR |
callbackChromeUrl | string | ❌ | Redirect URL for Chrome. Chrome sometimes allows deep linking via yugofinance:// if triggered correctly |
callbackSafariUrl | string | ❌ | Redirect URL for Safari. Safari restricts automatic redirects to custom URL schemes |
revision | string | ❌ | Version identifier for tracking. Max 255 characters |
webhookUrl | string | ❌ | Webhook listener URL for status notifications |
webhookPayload | string | ❌ | String returned in webhook requests. Max 255 characters |
Response
json
{
"transactionId": "5d141fb0-dea0-4499-8361-0915807d1151"
}Get Transaction
Retrieve details of an existing transaction.
GET https://api.yugo.finance/transaction/?transactionId={transactionId}
Headers
| Header | Value |
|---|---|
x-api-key | Your API key |
Response
json
{
"uuid": "5d141fb0-dea0-4499-8361-0915807d1151",
"amount": "100.00",
"currency": "EUR",
"paymentStatus": "AUTHORIZED",
"type": "BankTransfer",
"names": "John Doe",
"userId": "yugo-finance-1",
"userAddress1": "bul. Vitosha 1, 1000 Sofia Center, Sofia, Bulgaria",
"userIpAddress": "87.126.116.201",
"userPassedKyc": true,
"userPassedAml": true,
"addressPassedKyt": false,
"payerBankAccount": {
"iban": "DE89370400440532013000",
"holderNames": "John Doe",
"bank": "Revolut"
},
"revision": "your-transaction-id",
"callbackChromeUrl": "yugofinance://",
"callbackSafariUrl": "https://checkout.yugo.finance/",
"webhookUrl": "https://your-domain.com/webhook",
"webhookPayload": "your-transaction-id",
"createdAt": "2025-03-18T18:55:33.872Z",
"lastUpdated": "2025-03-18T18:55:33.872Z"
}Note: The
payerBankAccountfield is included once the payment is authorized and bank account details are available.
Generate Payment Link
Generate a payment authorization link for the user.
POST https://api.yugo.finance/transaction/generatePaymentLink
Headers
| Header | Value |
|---|---|
x-api-key | Your API key |
Request Body
json
{
"transactionId": "5d141fb0-dea0-4499-8361-0915807d1151"
}Response
json
{
"paymentLink": "https://oba.revolut.com/ui/index.html?response_type=code..."
}Update Transaction Status
Manually trigger a status check and webhook notification.
POST https://api.yugo.finance/transaction/update-status
Headers
| Header | Value |
|---|---|
x-api-key | Your API key |
Request Body
json
{
"transactionId": "5d141fb0-dea0-4499-8361-0915807d1151"
}Response
json
{
"paymentStatus": "AUTHORIZED"
}Note: Calling this endpoint will also trigger the webhook notification.
Webhooks
Receiving Status Updates
When creating a transaction with a webhookUrl, Yugo sends status updates automatically.
Webhook Payload
json
{
"status": "AUTHORIZED",
"webhookPayload": "your-transaction-id",
"payerBankAccount": {
"iban": "DE89370400440532013000",
"holderNames": "John Doe",
"bank": "Revolut"
}
}Note: The
payerBankAccountfield is included once the payment is authorized and bank account details are available.
Payment Status Reference
| Status | Description |
|---|---|
INTENT | Transaction created, authorization not started |
STARTED | Authorization process started (authorization link generated) |
AUTHORIZED | Payment authorized by bank |
FAILED_INTENT | Authorization failed or rejected by bank |
Important Notes
- Yugo is not notified after the bank completes the final money transfer
- It typically takes 2-3 hours for the sender's bank to send the payment
- It can take up to 24 hours for the recipient bank to display the funds