Making Your First Payment

This guide walks you through sending your first payment using the Luqra Now API, from obtaining credentials to tracking a completed transfer.

Prerequisites

  • A Luqra Now account with sandbox access
  • A sandbox API key (prefixed luqra-now.org.test)
  • At least one originator ID that can be used as the originator of the payment request (provided during onboarding)

1. Verify your API key

Confirm your key works by listing your originators:

curl "https://staging.api.now.luqra.com/v1/originators/" \
  -H "Authorization: Bearer luqra-now.org.test.YOUR_API_KEY"

A successful response looks like:

{
  "data": [ ... ],
  "meta": { "timestamp": "2026-02-26T12:00:00.000Z" }
}

If you receive a 401 error, double-check that your key is active and correctly formatted in the Authorization header.

2. Create a contact

Before you can send a payment, you need a beneficiary. Create a contact with their name, address, and bank account details.

curl -X POST https://staging.api.now.luqra.com/v1/contacts/ \
  -H "Authorization: Bearer luqra-now.org.test.YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "originatorId": "ORIGINATOR_ID",
    "entityType": "INDIVIDUAL",
    "firstName": "Jane",
    "lastName": "Smith",
    "email": "jane@example.com",
    "phoneNumber": "+19497037012",
    "legalAddress": {
      "addressLine1": "123 Main St",
      "city": "Springfield",
      "state": "IL",
      "postalCode": "62701",
      "countryCode": "US"
    },
    "bankAccount": {
      "subType": "CHECKING",
      "achRoutingNumber": "021000021",
      "achAccountNumber": "123456789"
    }
  }'

Save the contactId from the response -- you'll need it in the next step.

{
  "data": {
    "contactId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
    "createdAt": "2026-02-26T12:00:00.000Z"
  },
  "meta": { "timestamp": "2026-02-26T12:00:00.000Z" }
}

3. Send a payment

Create a payment to transfer funds to your new contact. The paymentAmount is specified in minor units (cents for USD). In the example, it's 5000 which is $50.00.

The Idempotency-Key header is required. A fresh UUID per request is the recommended shape -- it makes retries safe without creating duplicates. See Idempotency and Retries for details.

curl -X POST https://staging.api.now.luqra.com/v1/payments/ \
  -H "Authorization: Bearer luqra-now.org.test.YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "originatorId": "ORIGINATOR_ID",
    "contactId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
    "paymentAmount": 5000,
    "direction": "OUTBOUND",
    "paymentNote": "First test payment"
  }'

The response contains the new payment ID:

{
  "data": {
    "paymentId": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
  },
  "meta": { "timestamp": "2026-02-26T12:00:05.000Z" }
}

Behind the scenes, Luqra Now creates the payment and begins executing it on the appropriate rail.

4. Verify the contact was created

List contacts for your originator to confirm everything is set up:

curl "https://staging.api.now.luqra.com/v1/contacts/?originatorId=ORIGINATOR_ID" \
  -H "Authorization: Bearer luqra-now.org.test.YOUR_API_KEY"

What's next