{
	"info": {
		"_postman_id": "8f4bcd14-5647-4fbc-85d9-d14a72b59563",
		"name": "PartnerAPI",
		"description": "### Welcome to Postman! This is your first collection. \n\nCollections are your starting point for building and testing APIs. You can use this one to:\n\n• Group related requests\n• Test your API in real-world scenarios\n• Document and share your requests\n\nUpdate the name and overview whenever you’re ready to make it yours.\n\n[Learn more about Postman Collections.](https://learning.postman.com/docs/collections/collections-overview/)",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"item": [
		{
			"name": "Key Generation + Webhook",
			"item": [
				{
					"name": "Generate the API Key + Secret Key",
					"request": {
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"businessName\": \"Kavodax Test Partner\",\n  \"email\": \"partner@example.com\",\n  \"contactName\": \"Emmanuel Erinle\"\n}\n",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/auth/register",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"auth",
								"register"
							]
						}
					},
					"response": []
				},
				{
					"name": "Register Webhook",
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"webhookUrl\": \"https://your-webhook-url.com/webhook\",\n    \"events\": [\n      \"customer.kyc_approved\",\n      \"offramp.fee_received\",\n      \"offramp.completed\",\n      \"offramp.failed\"\n    ]\n  }\n",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/webhooks/register",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"webhooks",
								"register"
							]
						}
					},
					"response": []
				}
			]
		},
		{
			"name": "Customer creation + KYC",
			"item": [
				{
					"name": "Create Customer & Initiate KYC",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const res = pm.response.json();",
									"",
									"if (res?.success && res?.customer?.id) {",
									"  pm.environment.set(\"customerId\", res.customer.id);",
									"  pm.environment.set(\"partnerCustomerId\", res.customer.partnerCustomerId || \"\");",
									"  console.log(\"✅ Saved customerId:\", res.customer.id);",
									"}",
									"",
									"if (res?.success && res?.kyc?.sessionId) {",
									"  pm.environment.set(\"kycSessionId\", res.kyc.sessionId);",
									"  console.log(\"✅ Saved kycSessionId:\", res.kyc.sessionId);",
									"}",
									"",
									"if (res?.success && res?.kyc?.kycUrl) {",
									"  pm.environment.set(\"kycUrl\", res.kyc.kycUrl);",
									"  console.log(\"✅ Saved kycUrl:\", res.kyc.kycUrl);",
									"}",
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"customerType\": \"individual\",\n  \"partnerCustomerId\": \"customer-001\",\n  \"email\": \"john.doe@example.com\",\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"dateOfBirth\": \"1990-06-20\",\n  \"phoneNumber\": \"+14165551234\",\n  \"address\": {\n    \"street\": \"456 Queen St W\",\n    \"city\": \"Toronto\",\n    \"province\": \"ON\",\n    \"postalCode\": \"M5V 2B4\",\n    \"country\": \"CA\"\n  },\n  \"redirectUrl\": \"https://yourapp.com/kyc/complete\",\n  \"walletAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\"\n}\n",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/customers/kyc/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"customers",
								"kyc",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate KYC Approval",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"customerId\": \"{{customerId}}\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/simulate-kyc-approval",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"simulate-kyc-approval"
							]
						}
					},
					"response": []
				}
			]
		},
		{
			"name": "On-ramp Bank",
			"item": [
				{
					"name": "Initiate On-Ramp - Bank (USD)",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									"  if (response.success && response.transaction) {",
									"      pm.environment.set(\"onrampTransactionId\", response.transaction.id);",
									"      console.log(\"✅ On-ramp transaction ID saved:\", response.transaction.id);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n      \"method\": \"bank\",\n      \"customerId\": \"{{customerId}}\",\n      \"fiatAmount\": 100.00,\n      \"fiatCurrency\": \"USD\",\n      \"cryptoCurrency\": \"USDC\",\n      \"network\": \"ethereum\",\n      \"walletAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/onramp/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"onramp",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Check On-Ramp Transaction Status",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/onramp/{{onrampTransactionId}}/status",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"onramp",
								"{{onrampTransactionId}}",
								"status"
							]
						}
					},
					"response": []
				},
				{
					"name": "Check Customer Balance (Sandbox)",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/customers/{{customerId}}/balance",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"customers",
								"{{customerId}}",
								"balance"
							]
						}
					},
					"response": []
				}
			]
		},
		{
			"name": "On-ramp Interac",
			"item": [
				{
					"name": "Test Interac On-Ramp (CAD → USDC)",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									"  if (response.success && response.transaction) {",
									"      pm.environment.set(\"paytrieTransactionId\", response.transaction.id);",
									"      console.log(\"✅ Paytrie transaction ID saved:\", response.transaction.id);",
									"  }",
									"",
									"  if (response.paytrie) {",
									"      pm.environment.set(\"paytrieTxId\", response.paytrie.txId);",
									"      pm.environment.set(\"paytrieCode\", response.paytrie.code);",
									"      console.log(\"✅ Paytrie details saved!\");",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n      \"method\": \"interac\",\n      \"customerId\": \"{{customerId}}\",\n      \"fiatAmount\": 100.00,\n      \"fiatCurrency\": \"CAD\",\n      \"cryptoCurrency\": \"USDC\",\n      \"network\": \"ethereum\",\n      \"walletAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/onramp/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"onramp",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Interac Accept",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{paytrieTransactionId}}\",\n    \"code\": \"1234\"\n  }",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/paytrie/simulate-interac-accept",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"paytrie",
								"simulate-interac-accept"
							]
						}
					},
					"response": []
				},
				{
					"name": "Check Customer Balance (Sandbox) Copy",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/customers/{{customerId}}/balance",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"customers",
								"{{customerId}}",
								"balance"
							]
						}
					},
					"response": []
				}
			]
		},
		{
			"name": "Transactions",
			"item": [
				{
					"name": "Get ALL transactions for the customer",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/customers/{{customerId}}/transactions",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"customers",
								"{{customerId}}",
								"transactions"
							]
						}
					},
					"response": []
				}
			]
		},
		{
			"name": "On ramp failure & pending patterns",
			"item": [
				{
					"name": "Initiate On-Ramp - Bank (USD) failure",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									"  if (response.success && response.transaction) {",
									"      pm.environment.set(\"onrampTransactionId\", response.transaction.id);",
									"      console.log(\"✅ On-ramp transaction ID saved:\", response.transaction.id);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"method\": \"bank\",\n    \"customerId\": \"{{customerId}}\",\n    \"fiatAmount\": 999.99,\n    \"fiatCurrency\": \"USD\",\n    \"cryptoCurrency\": \"USDC\",\n    \"network\": \"ethereum\",\n    \"walletAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/onramp/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"onramp",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Initiate On-Ramp - Bank (USD) pending",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									"  if (response.success && response.transaction) {",
									"      pm.environment.set(\"onrampTransactionId\", response.transaction.id);",
									"      console.log(\"✅ On-ramp transaction ID saved:\", response.transaction.id);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"method\": \"bank\",\n    \"customerId\": \"{{customerId}}\",\n    \"fiatAmount\": 50.00,\n    \"fiatCurrency\": \"USD\",\n    \"cryptoCurrency\": \"USDC\",\n    \"network\": \"ethereum\",\n    \"walletAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/onramp/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"onramp",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Test Interac On-Ramp Failure Using wallet pattern",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									"  if (response.success && response.transaction) {",
									"      pm.environment.set(\"paytrieTransactionId\", response.transaction.id);",
									"      console.log(\"✅ Paytrie transaction ID saved:\", response.transaction.id);",
									"  }",
									"",
									"  if (response.paytrie) {",
									"      pm.environment.set(\"paytrieTxId\", response.paytrie.txId);",
									"      pm.environment.set(\"paytrieCode\", response.paytrie.code);",
									"      console.log(\"✅ Paytrie details saved!\");",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"method\": \"interac\",\n    \"customerId\": \"{{customerId}}\",\n    \"fiatAmount\": 75.00,\n    \"fiatCurrency\": \"CAD\",\n    \"cryptoCurrency\": \"USDC\",\n    \"network\": \"ethereum\",\n    \"walletAddress\": \"0x0000000000000000000000000000000000000000\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/onramp/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"onramp",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Test Interac On-Ramp Failure Using amount pattern",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									"  if (response.success && response.transaction) {",
									"      pm.environment.set(\"paytrieTransactionId\", response.transaction.id);",
									"      console.log(\"✅ Paytrie transaction ID saved:\", response.transaction.id);",
									"  }",
									"",
									"  if (response.paytrie) {",
									"      pm.environment.set(\"paytrieTxId\", response.paytrie.txId);",
									"      pm.environment.set(\"paytrieCode\", response.paytrie.code);",
									"      console.log(\"✅ Paytrie details saved!\");",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"method\": \"interac\",\n    \"customerId\": \"{{customerId}}\",\n    \"fiatAmount\": 99.99,\n    \"fiatCurrency\": \"CAD\",\n    \"cryptoCurrency\": \"USDC\",\n    \"network\": \"ethereum\",\n    \"walletAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/onramp/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"onramp",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Interac Accept invalid code",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{paytrieTransactionId}}\",\n    \"code\": \"1234\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/paytrie/simulate-interac-accept",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"paytrie",
								"simulate-interac-accept"
							]
						}
					},
					"response": []
				}
			]
		},
		{
			"name": "Off ramp USA + simulation",
			"item": [
				{
					"name": "Get Form Schema",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/recipients/form-schema?region=africa",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"recipients",
								"form-schema"
							],
							"query": [
								{
									"key": "region",
									"value": "africa"
								}
							]
						}
					},
					"response": []
				},
				{
					"name": "Create Recipient USA",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									" if (response.success && response.recipient) {",
									"      pm.environment.set(\"usa_recipientId\", response.recipient.recipientId); ",
									"      console.log(\"✅ USA recipient ID saved:\", response.recipient.recipientId);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"customerId\": \"{{customerId}}\",\n    \"recipientId\": \"usa_recipient_001\",\n    \"country\": \"US\",\n    \"recipientType\": \"individual\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"streetAddress\": \"123 Main Street\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"bankAccount\": {\n      \"accountNumber\": \"123456789\",\n      \"routingNumber\": \"021000021\",\n      \"accountType\": \"checking\",\n      \"accountHolderType\": \"individual\",\n      \"accountHolderName\": \"John Doe\"\n    },\n    \"email\": \"john.doe+success@example.com\"\n  }",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/recipients/create",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"recipients",
								"create"
							]
						}
					},
					"response": []
				},
				{
					"name": "Get Quote",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"recipientId\": \"usa_recipient_001\",\n    \"cryptoAmount\": \"100\",\n    \"cryptoCurrency\": \"USDC\",\n    \"network\": \"ethereum\"\n  }",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/quote",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"quote"
							]
						}
					},
					"response": []
				},
				{
					"name": "Initiate Off-ramp",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									"  if (response.success && response.transaction) {",
									"      pm.environment.set(\"usa_transactionId\", response.transaction.id);",
									"      console.log(\"✅ USA transaction ID saved:\", response.transaction.id);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"customerId\": \"{{customerId}}\",\n    \"recipientId\": \"{{usa_recipientId}}\",\n    \"cryptoAmount\": \"100\",\n    \"cryptoCurrency\": \"USDC\",\n    \"fiatCurrency\": \"USD\",\n    \"country\": \"US\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Fee Payment",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{usa_transactionId}}\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/simulate-fee-payment",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"simulate-fee-payment"
							]
						}
					},
					"response": []
				},
				{
					"name": "Check Status",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/{{usa_transactionId}}/status",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"{{usa_transactionId}}",
								"status"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Crypto Deposit",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{usa_transactionId}}\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/simulate-crypto-deposit",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"simulate-crypto-deposit"
							]
						}
					},
					"response": []
				}
			]
		},
		{
			"name": "Off ramp France + simulation",
			"item": [
				{
					"name": "Get Form Schema",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/recipients/form-schema?region=africa",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"recipients",
								"form-schema"
							],
							"query": [
								{
									"key": "region",
									"value": "africa"
								}
							]
						}
					},
					"response": []
				},
				{
					"name": "Create Recipient France",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									"  if (response.success && response.recipient) {",
									"      pm.environment.set(\"france_recipientId\", response.recipient.recipientId);",
									"      console.log(\"✅ France recipient ID saved:\", response.recipient.recipientId);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"customerId\": \"{{customerId}}\",\n    \"recipientId\": \"france_recipient_001\",\n    \"country\": \"FR\",\n    \"recipientType\": \"individual\",\n    \"firstName\": \"Jean\",\n    \"lastName\": \"Dupont\",\n    \"streetAddress\": \"15 Rue de la Paix\",\n    \"city\": \"Paris\",\n    \"state\": \"Île-de-France\",\n    \"postalCode\": \"75002\",\n    \"bankAccount\": {\n      \"iban\": \"FR1420041010050500013M02606\",\n      \"accountHolderName\": \"Jean Dupont\",\n      \"accountType\": \"checking\",\n      \"accountHolderType\": \"individual\"\n    },\n    \"email\": \"jean.dupont+success@example.com\"\n}\n",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/recipients/create",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"recipients",
								"create"
							]
						}
					},
					"response": []
				},
				{
					"name": "Get Quote",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"recipientId\": \"{{france_recipientId}}\",\n    \"cryptoAmount\": \"100\",\n    \"cryptoCurrency\": \"USDC\",\n    \"network\": \"ethereum\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/quote",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"quote"
							]
						}
					},
					"response": []
				},
				{
					"name": "Initiate Off-ramp",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									"  if (response.success && response.transaction) {",
									"      pm.environment.set(\"france_transactionId\", response.transaction.id);",
									"      console.log(\"✅ France transaction ID saved:\", response.transaction.id);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"customerId\": \"{{customerId}}\",\n    \"recipientId\": \"{{france_recipientId}}\",\n    \"cryptoAmount\": \"100\",\n    \"cryptoCurrency\": \"USDC\",\n    \"fiatCurrency\": \"EUR\",\n    \"country\": \"FR\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Fee Payment",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{france_transactionId}}\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/simulate-fee-payment",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"simulate-fee-payment"
							]
						}
					},
					"response": []
				},
				{
					"name": "Check Status",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/{{france_transactionId}}/status",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"{{france_transactionId}}",
								"status"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Crypto Deposit",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{france_transactionId}}\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/simulate-crypto-deposit",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"simulate-crypto-deposit"
							]
						}
					},
					"response": []
				}
			]
		},
		{
			"name": "Off ramp Nigeria + simulation",
			"item": [
				{
					"name": "Get Form Schema",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/recipients/form-schema?region=africa",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"recipients",
								"form-schema"
							],
							"query": [
								{
									"key": "region",
									"value": "africa"
								}
							]
						}
					},
					"response": []
				},
				{
					"name": "Create Recipient Nigeria",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									"  if (response.success && response.recipient) {",
									"      pm.environment.set(\"nigeria_recipientId\", response.recipient.recipientId);",
									"      console.log(\"✅ Nigeria recipient ID saved:\", response.recipient.recipientId);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"customerId\": \"{{customerId}}\",\n    \"recipientId\": \"nigeria_recipient_001\",\n    \"country\": \"NG\",\n    \"recipientType\": \"individual\",\n    \"firstName\": \"Chinedu\",\n    \"lastName\": \"Okeke\",\n    \"phoneNumber\": \"+2348012345678\",\n    \"email\": \"chinedu.okeke+success@example.com\",\n    \"paymentMethod\": \"bank\",\n    \"bankAccount\": {\n      \"bankCode\": \"058\",\n      \"accountNumber\": \"0123456789\",\n      \"accountHolderName\": \"Chinedu Okeke\"\n    },\n    \"senderIdType\": \"NIN\",\n    \"senderIdNumber\": \"12345678901\",\n    \"bvn\": \"22334455667\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/recipients/create",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"recipients",
								"create"
							]
						}
					},
					"response": []
				},
				{
					"name": "Get Quote",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"recipientId\": \"{{nigeria_recipientId}}\",\n    \"cryptoAmount\": \"100\",\n    \"cryptoCurrency\": \"USDC\",\n    \"network\": \"ethereum\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/quote",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"quote"
							]
						}
					},
					"response": []
				},
				{
					"name": "Initiate Off-ramp",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"",
									"  if (response.success && response.transaction) {",
									"      pm.environment.set(\"nigeria_transactionId\", response.transaction.id);",
									"      console.log(\"✅ Nigeria transaction ID saved:\", response.transaction.id);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"customerId\": \"{{customerId}}\",\n    \"recipientId\": \"{{nigeria_recipientId}}\",\n    \"cryptoAmount\": \"100\",\n    \"cryptoCurrency\": \"USDC\",\n    \"fiatCurrency\": \"NGN\",\n    \"country\": \"NG\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Fee Payment",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{nigeria_transactionId}}\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/simulate-fee-payment",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"simulate-fee-payment"
							]
						}
					},
					"response": []
				},
				{
					"name": "Check Status",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/{{nigeria_transactionId}}/status",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"{{nigeria_transactionId}}",
								"status"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Crypto Deposit",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{nigeria_transactionId}}\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/simulate-crypto-deposit",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"simulate-crypto-deposit"
							]
						}
					},
					"response": []
				}
			]
		},
		{
			"name": "Off ramp Failure Pattern 1 (email)",
			"item": [
				{
					"name": "Create Recipient USA",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"  if (response.success && response.recipient) {",
									"      pm.environment.set(\"usa_recipientId_fail\", response.recipient.recipientId);",
									"      console.log(\"✅ USA Fail recipient ID saved:\", response.recipient.recipientId);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"customerId\": \"{{customerId}}\",\n    \"recipientId\": \"usa_recipient_fail_v4\",\n    \"country\": \"US\",\n    \"recipientType\": \"individual\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"streetAddress\": \"123 Main Street\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"bankAccount\": {\n      \"accountNumber\": \"123456789\",\n      \"routingNumber\": \"021000021\",\n      \"accountType\": \"checking\",\n      \"accountHolderType\": \"individual\",\n      \"accountHolderName\": \"John Doe\"\n    },\n    \"email\": \"john.doe+fail@example.com\"\n  }",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/recipients/create",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"recipients",
								"create"
							]
						}
					},
					"response": []
				},
				{
					"name": "Get Quote",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"recipientId\": \"usa_recipient_fail\",\n    \"cryptoAmount\": \"100\",\n    \"cryptoCurrency\": \"USDC\",\n    \"network\": \"ethereum\"\n  }",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/quote",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"quote"
							]
						}
					},
					"response": []
				},
				{
					"name": "Initiate Off-ramp",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"  if (response.success && response.transaction) {",
									"      pm.environment.set(\"usa_transactionId_fail\", response.transaction.id);",
									"      console.log(\"✅ USA Fail transaction ID saved:\", response.transaction.id);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"customerId\": \"{{customerId}}\",\n    \"recipientId\": \"{{usa_recipientId_fail}}\",\n    \"cryptoAmount\": \"100\",\n    \"cryptoCurrency\": \"USDC\",\n    \"fiatCurrency\": \"USD\",\n    \"country\": \"US\"\n  }",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Fee Payment",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{usa_transactionId_fail}}\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/simulate-fee-payment",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"simulate-fee-payment"
							]
						}
					},
					"response": []
				},
				{
					"name": "Check Status",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/{{usa_transactionId_fail}}/status",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"{{usa_transactionId_fail}}",
								"status"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Crypto Deposit",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{usa_transactionId_fail}}\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/simulate-crypto-deposit",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"simulate-crypto-deposit"
							]
						}
					},
					"response": []
				}
			]
		},
		{
			"name": "Off ramp Failure Pattern 2 (fee)",
			"item": [
				{
					"name": "Create Recipient USA",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"  if (response.success && response.recipient) {",
									"      pm.environment.set(\"usa_recipientId_fail_amount\", response.recipient.recipientId);",
									"      console.log(\"✅ USA Fail Amount recipient ID saved:\", response.recipient.recipientId);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"customerId\": \"{{customerId}}\",\n    \"recipientId\": \"usa_recipient_fail_amount\",\n    \"country\": \"US\",\n    \"recipientType\": \"individual\",\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Smith\",\n    \"streetAddress\": \"456 Second Ave\",\n    \"city\": \"Los Angeles\",\n    \"state\": \"CA\",\n    \"postalCode\": \"90001\",\n    \"bankAccount\": {\n      \"accountNumber\": \"987654321\",\n      \"routingNumber\": \"021000021\",\n      \"accountType\": \"checking\",\n      \"accountHolderType\": \"individual\",\n      \"accountHolderName\": \"Jane Smith\"\n    },\n    \"email\": \"jane.smith@example.com\"\n  }",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/recipients/create",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"recipients",
								"create"
							]
						}
					},
					"response": []
				},
				{
					"name": "Get Quote",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"recipientId\": \"usa_recipient_fail_amount\",\n    \"cryptoAmount\": \"100\",\n    \"cryptoCurrency\": \"USDC\",\n    \"network\": \"ethereum\"\n  }",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/quote",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"quote"
							]
						}
					},
					"response": []
				},
				{
					"name": "Initiate Off-ramp",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"const response = pm.response.json();",
									"  if (response.success && response.transaction) {",
									"      pm.environment.set(\"usa_transactionId_fail_amount\", response.transaction.id);",
									"      console.log(\"✅ USA Fail Amount transaction ID saved:\", response.transaction.id);",
									"  }"
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"customerId\": \"{{customerId}}\",\n    \"recipientId\": \"{{usa_recipientId_fail_amount}}\",\n    \"cryptoAmount\": \"99.99\",\n    \"cryptoCurrency\": \"USDC\",\n    \"fiatCurrency\": \"USD\",\n    \"country\": \"US\"\n  }",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/initiate",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"initiate"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Fee Payment",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{usa_transactionId_fail_amount}}\"\n  }",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/simulate-fee-payment",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"simulate-fee-payment"
							]
						}
					},
					"response": []
				},
				{
					"name": "Check Status",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/offramp/{{usa_transactionId_fail_amount}}/status",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"offramp",
								"{{usa_transactionId_fail_amount}}",
								"status"
							]
						}
					},
					"response": []
				},
				{
					"name": "Simulate Crypto Deposit",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									""
								],
								"type": "text/javascript",
								"packages": {},
								"requests": {}
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"transactionId\": \"{{usa_transactionId_fail_amount}}\"\n  }\n",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/sandbox/simulate-crypto-deposit",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"sandbox",
								"simulate-crypto-deposit"
							]
						}
					},
					"response": []
				}
			]
		},
		{
			"name": "Helper Functions",
			"item": [
				{
					"name": "Delete Recipient",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{baseUrl}}/api/partner/v1/recipients/usa_recipient_fail",
							"host": [
								"{{baseUrl}}"
							],
							"path": [
								"api",
								"partner",
								"v1",
								"recipients",
								"usa_recipient_fail"
							]
						}
					},
					"response": []
				}
			]
		}
	],
	"event": [
		{
			"listen": "prerequest",
			"script": {
				"type": "text/javascript",
				"packages": {},
				"requests": {},
				"exec": [
					"// Kavodax Partner HMAC auth (KavodaxHmacV1)",
					"// data = timestamp + path + method (+ bodyHash for POST/PUT)",
					"// bodyHash = base64(sha256(bodyToHash))",
					"",
					"function toBase64WordArray(wordArray) {",
					"  return CryptoJS.enc.Base64.stringify(wordArray);",
					"}",
					"",
					"function sha256Base64(str) {",
					"  const hash = CryptoJS.SHA256(str);",
					"  return toBase64WordArray(hash);",
					"}",
					"",
					"function hmacSha256Base64(data, secret) {",
					"  const mac = CryptoJS.HmacSHA256(data, secret);",
					"  return toBase64WordArray(mac);",
					"}",
					"",
					"// ISO timestamp",
					"const timestamp = new Date().toISOString();",
					"",
					"// ✅ Request path (IMPORTANT: must be ONLY the path, not full URL)",
					"let path = \"/\" + pm.request.url.path.join(\"/\");",
					"",
					"// ✅ Resolve Postman variables in path (e.g., {{customerId}}, {{onrampTransactionId}})",
					"path = pm.variables.replaceIn(path);",
					"",
					"// Method",
					"const method = pm.request.method.toUpperCase();",
					"",
					"// ✅ ENDPOINTS THAT DO NOT REQUIRE AUTH (Step 1)",
					"const UNAUTH_PATHS = new Set([",
					"  \"/api/partner/v1/auth/register\"",
					"]);",
					"",
					"// Always ensure JSON content-type for POST/PUT (even for unauth)",
					"if (method === \"POST\" || method === \"PUT\") {",
					"  pm.request.headers.upsert({ key: \"Content-Type\", value: \"application/json\" });",
					"}",
					"",
					"// If this is the register endpoint, skip signing entirely",
					"if (UNAUTH_PATHS.has(path)) {",
					"  console.log(`[KavodaxHmacV1] Skipping auth for ${path}`);",
					"  return;",
					"}",
					"",
					"// ✅ For all other endpoints, require creds",
					"const apiKey = pm.environment.get(\"apiKey\");",
					"const secretKey = pm.environment.get(\"secretKey\");",
					"if (!apiKey || !secretKey) {",
					"  throw new Error(\"Missing apiKey/secretKey in environment\");",
					"}",
					"",
					"// Raw body (for POST/PUT only)",
					"let hmacData = `${timestamp}${path}${method}`;",
					"",
					"if (method === \"POST\" || method === \"PUT\") {",
					"  let rawBody =",
					"    pm.request.body && pm.request.body.mode === \"raw\"",
					"      ? (pm.request.body.raw || \"\")",
					"      : \"\";",
					"",
					"  // ✅ Resolve {{vars}} in body before hashing",
					"  rawBody = pm.variables.replaceIn(rawBody);",
					"",
					"  // ✅ Parse and re-stringify to match server's JSON.stringify()",
					"  let bodyToHash = rawBody;",
					"  if (rawBody) {",
					"    try {",
					"      const parsed = JSON.parse(rawBody);",
					"      bodyToHash = JSON.stringify(parsed); // minified JSON",
					"    } catch (e) {",
					"      bodyToHash = rawBody; // fallback",
					"    }",
					"  }",
					"",
					"  const bodyHash = sha256Base64(bodyToHash);",
					"  hmacData += bodyHash;",
					"",
					"  console.log(`[DEBUG] Path used for HMAC: ${path}`);",
					"  console.log(`[DEBUG] Body to hash: ${bodyToHash.substring(0, 120)}...`);",
					"  console.log(`[DEBUG] Body hash: ${bodyHash}`);",
					"} else {",
					"  console.log(`[DEBUG] Path used for HMAC: ${path}`);",
					"}",
					"",
					"// Signature",
					"const signature = hmacSha256Base64(hmacData, secretKey);",
					"",
					"// Set headers",
					"pm.request.headers.upsert({ key: \"X-Kavodax-Timestamp\", value: timestamp });",
					"pm.request.headers.upsert({",
					"  key: \"Authorization\",",
					"  value: `KavodaxHmacV1 ${apiKey}:${signature}`",
					"});",
					"",
					"console.log(`[KavodaxHmacV1] Signed ${method} ${path}`);",
					"console.log(`[DEBUG] HMAC data (prefix): ${hmacData.substring(0, 180)}...`);",
					"console.log(`[DEBUG] Signature: ${signature}`);",
					""
				]
			}
		},
		{
			"listen": "test",
			"script": {
				"type": "text/javascript",
				"packages": {},
				"requests": {},
				"exec": [
					""
				]
			}
		}
	]
}